首页 理论教育 单片机操作与键值处理

单片机操作与键值处理

时间:2023-11-19 理论教育 版权反馈
【摘要】:2)定时扫描方式:定时扫描方法是单片机每隔一定的时间对键盘扫描一次,如发现有按键按下便进行键盘读取操作取得按键的键值以便后续处理。单片机响应中断后,即转到中断扫描程序,通过对端口1的扫描判断闭合键所在的列,并对端口2判断闭合键所在的行,查出对应的键值,并作相应处理。对于一键多义,在处理时使用状态变量法来进行。根据当前状态和当前按键这两个关键字,就能对当前键的含义作出正确的解释,因而简化了程序设计。

单片机操作与键值处理

在非编码键盘的使用过程中操作者可以通过键盘向单片机输入数据或命令,键盘上的每一个按键各自都有一个预先约定的、相异的编号,我们将这个编号称为按键的“键值”或者“键号”。通常这里所述的“键值”和前面介绍的按键“特征字”是表述的同一个含义。在操作过程中,单片机通过接收到的键值从而判断出哪一个按键被按下,这一过程也是非编码键盘编程过程中的一个重要步骤。

1.键操作

键操作是指对键盘按键的控制方法,在非编码键盘的键操作控制中可以通过以下3种方式进行。

1)循环扫描方式:该方式即查询方式,是指在程序中不停调用键盘扫描程序对按键轮流进行扫描以达到响应按键输入信号要求。程序控制扫描方式的按键处理固定在主程序的某个程序段,当主程序运行到该程序段时依次扫描键盘,判断是否有按键输入,若有则执行功能函数读取该按键的键值,若没有按下键则继续扫描。该方式对CPU执行效率影响较大,在使用时应考虑键盘处理程序运行的间隔周期不能太长,否则会影响对按键输入响应的实时性。

2)定时扫描方式:定时扫描方法是单片机每隔一定的时间(如10ms)对键盘扫描一次,如发现有按键按下便进行键盘读取操作取得按键的键值以便后续处理。定时扫描的间隔一般由单片机的定时器来完成,这样可以减少扫描键盘的时间,降低CPU的开销。定时扫描方式的具体做法是由定时器预先设定一个时间间隔,当设置的定时时间到达时定时器自动产生一个脉冲信号,让CPU转去执行键盘扫描程序。有一点需要指出的是,采用定时扫描方式时必须使其在程序初始化中写入定时器的相应指令,使之能产生中断,以便完成定时。

3)中断扫描方式:上面所述的定时扫描方式由于扫描会大量占用CPU的时间,因而在没有按键操作时,CPU也要在一定的时间内对键盘进行扫描,这对嵌入式系统来说是很不利的,为了进一步提高单片机CPU的执行效率,可使用中断扫描方式,即当有按键操作时,键盘向CPU提出中断申请,CPU响应中断后即跳转到相应的中断服务程序对键盘进行扫描,以便得到键盘上闭合按键的键值。

图5-23所示为包含16个按键的中断扫描方式电路连接图。在图中,当没有键按下时,所有列线的电平均为1,经8输入与非门及反相器,输出一高电平到单片机的外部中断引脚,此时没有中断申请。一旦某一个键按下后,则高电平经过按键加到该键所在行的二极管正端,使二极管导通,同时,该列线输出为低电平,从而使外部中断有效,向单片机申请中断。单片机响应中断后,即转到中断扫描程序,通过对端口1的扫描判断闭合键所在的列,并对端口2判断闭合键所在的行,查出对应的键值,并作相应处理。

978-7-111-50417-7-Chapter05-30.jpg

图5-23 包含16个按钮的中断扫描方式电路连接图(www.xing528.com)

中断扫描方式中只有当有键按下时才进行键盘扫描,若无键按下CPU会继续执行主程序或其他程序,这样可以节省大量的空扫描时间,提高CPU的工作效率。

2.同时按键处理

同时按键即两个或多个按键在同一时刻被按下的情况又称为“串键”,可以采用不同的方法来处理。最常用的方法为<n>键锁定技术,即只处理一个键,对任何其他按下又松开的键不进行处理。<n>键锁定技术又分为“先入有效”和“后留有效”两种处理方法。“先入有效”的方法是,当两个或多个按键被按下时,只有第一个按下的键是有效的,其余均无效;“后留有效”的方法是,当多个按键按下时,只有最后松开的键是有效的,其余均无效。

3.一键一义与一键多义

所谓一键一义是指一个按键代表一个确切的命令或一个数字,编程时无须知道在此之前的按键情况,只要根据当前按键的编码把程序直接分支到相应的处理模块入口。

所谓一键多义是指一个按键有多种功能,既可作多种命令键,又可作数字键或者按键功能会随着被下按的次数而切换。在一键多义的情况下,按键代表的功能不是由一次按键组成,而是由一个按键序列所组成。也就是说,对一个按键含义的解释不仅取决于本次按键,还取决于以前按了什么键。

对于一键多义,在处理时使用状态变量法来进行。用状态变量法设计键盘管理程序的实质是将键盘工作的整个过程划分为若干个“状态”,在任一状态下,每个按键都有一个确定的含义,即执行某一个子程序且变迁到下一状态(称为次态)。引入状态的概念后,就需要在存储器内开辟一个单元记住当前状态,而不必再记住以前各次按键的情况。根据当前状态和当前按键这两个关键字,就能对当前键的含义作出正确的解释,因而简化了程序设计。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈