单片机中断在矩阵式键盘中的应用

2013-09-13 02:30
电子测试 2013年17期
关键词:矩阵式计数器中断

张 丽

(陕西职业技术学院,陕西 西安 710100)

0 引言

随着社会的发展,大量的电子设备进入到我们的日常生活中,比如全自动的洗衣机,汽车的电子控制系统等等。在使用这些设备的过程中,我们需要传达指令,而指令的传达都离不开一个关键部件——键盘。这里的键盘不只包含计算机的键盘,而是更广义的键盘:只要一个电子设备需要我们传达指令,那么在这个设备上都有键盘。

1 单片机键盘的分类

单片机键盘根据不同的驱动控制方式,大体可分为两大类,一类是独立式键盘;一类是矩阵式键盘。

独立式键盘是键盘发展的早期阶段,应用在对按键复杂度要求较低的设备上。独立式键盘的原理非常简单,就是将单片机的I/O口(输入/输出口)与按键物理连接起来,键盘有多少按键,每个按键都要和单片机的一个I/O口相连。这样设计的优点是结构简单,不需要过多的连线。但是缺点也非常明显:常见的80系列单片机总共只有四十个端口,而I/O口只有三十二个,一个键盘就占去了其中大部分的I/O口,那单片机就没有足够的端口去控制其它设备了。

在独立式键盘的基础上,通过技术的不断完善,最终发展到比较成熟的矩阵式键盘。矩阵式键盘是将单片机的I/O口分成行线和列线两类,通过的矩阵式排列,在行线和列线的交汇点接上按键,这样,最大程度的减少了对单片机I/O口的占用,并组成按键相对较多的键盘。例如,如果用8个I/O口,4条做行线,4条做列线,就构成了一共有十六个按键的4×4矩阵式键盘,矩阵式键盘电路如图1所示。

矩阵式键盘根据不同的软件扫描方式,可以分为循环扫描法和线反转法。循环扫描法的原理是让单片机的CPU不停的去扫描键盘的行线和列线,如果发现行线和列线的电平相对于初始值发生改变,就判断有按钮被按下,然后调用键盘扫描程序确立按键,这种方法程序结构简单,易于实现,但是扫描一次耗费较多时间,占用CPU的资源过大。线反转法的原理是通过行线和列线的互换来确立按键,相比较循环扫描法,不但速度快,而且准确度更高。但是不管采用哪种方法,不管有没有按键被按下,都需要程序从系统通电开始,就时时刻刻不停的扫描键盘端口,这样,不但效率较低,而且占用大量CPU资源,降低整个系统的运行速度。所以,理想的键盘是每当有按键被按下时,系统调用键盘扫描程序,确立按键的位置。这样,就必须引入单片机的中断系统。

图1 矩阵式键盘原理图

2 单片机的中断

中断是指计算机在执行程序的过程中,当出现异常情况或特殊请求时,计算机停止现行程序的运行,转向对这些异常情况或特殊请求的处理,处理结束后再返回现行程序的间断处,继续执行原程序。中断是单片机实时地处理内部或外部事件的一种内部机制。当某种内部或外部事件发生时,单片机的中断系统将迫使CPU暂停正在执行的程序,转而去进行中断事件的处理,中断处理完毕后,又返回被中断的程序处,继续执行下去。

单片机的内部一共包含五个中断源:外部中断0、外部中断1、定时器/计数器T0、 定时器/计数器T1和串口。单片机给这五个中断源分配了各自的入口地址。其中两个外部中断源用来反馈外电路传递的中断信号;定时器/计数器T0、 定时器/计数器T1这两个中断源用来控制系统的定时和计数,串口中断源用来控制系统与外部的信息交换。

a.外部中断源

单片机有两个外部中断源,分别称为外部中断0和外部中断1。单片机给这两个中断源分配了端口,分别是P3.2和P3.3。P3.2是外部中断0的中断信号输入端,被称为INT0;P3.3是外部中断1的中断信号输入端,被称为INT1。它们有两种触发方式,低电平有效或下降沿有效。也就是当这两个端口收到来自外电路的低电平或者下降沿的时候,就会触发中断响应,主程序就停下来,跳入外部中断0或外部中断1的中断程序中。

b.定时器/计数器T0、 定时器/计数器T1中断源

这两个中断源不需要输入端,每当定时器/计数器T0或定时器/计数器T1定时或者计数结束的时候,会自动触发中断响应。主程序会停下,跳入定时器/计数器T0或 定时器/计数器T1的中断程序中。

c.串口中断源

串口中断源同样不需要输入端,每当单片机发送完一组数据,或者接收完一组数据的时候,串口中断就会启动,主程序会停下,转而跳入串口的中断程序中。

3 用中断法实现矩阵式键盘

3.1 矩阵式键盘设计

中断法矩阵式键盘的硬件电路和其它矩阵式键盘没有任何区别,只需要在普通的矩阵式键盘上引入一个多输入与门,将所有行线或者列线作为多输入与门的输入端,与门的输出接到外部中断0或者外部中断1上。当有按键按下时,与门的输出电平就会由原本的高电平跳转为低电平,从而在P3.2或者P3.3上产生一个负跃变,此时主程序会停止,转入外部中断0或者外部中断1的中断程序中。我们只需将键盘扫描程序放在中断程序内,便实现了中断法的矩阵式键盘设计。

3.2 键盘防抖动设计

键盘作为向系统操作人员的干预指令的接口,以其特定的按键序列代表着各种确定的操作命令,所以,准确无误的辨认每个键的动作和其所处的状态,是系统能否正常工作的关键。

多数键盘的按键多使用机械式弹性开关,一个电信号通过机械触点的断开,闭合过程完成高低电平的切换。由于机械触点的弹性作用,一个按键开关在闭合及断开的瞬间必然伴随着一连串的抖动。

抖动过程的长短是由按键的机械特性决定,一般是10~20ms。 为了使CPU对一次按键动作只确认一次,必须消除抖动的影响,抖动的防治分为硬件和软件两种方式。

硬件防抖动方法:通过硬件电路消除按键过程中的抖动的影响是一种广为采用的措施。这种做法,工作可靠且节省机时,硬件防抖动电路如图2所示。

软件防抖动方法:如前所述,若采用硬件消抖电路,那么N个键就必须配有N个防抖电路。因此,当按键的个数比较多时,硬件防抖将无法胜任。在这种情况下,可以采用软件的方法进行防抖。当第一次检测到有建按下时,先用软件延时(10~20ms),而后再确认键电平是否依旧维持闭合状态的电平。若保持闭合状态电平,则确认此间已按下,从而消除抖动影响。

软件防抖动通过延迟程序完成,将延迟程序声明在函数体内,在需要的时候调用。延迟程序如下所示:

程序由两层for循环组成,内层200次,外层100次,总循环次数20000次。可以看到,循环的主题语句为空,所以每次循环不做任何动作,只是达到了延时的目的。

图2 防抖动电路

4 结束语

键盘是人机交互中信息输入的重要入口,设计合理的键盘要求反映快速、按键判断准确、系统资源占用合理。用单片机的中断法实现的矩阵式键盘符合这些要求,是目前键盘设计中最常用的方式。

[1]郭天祥.51单片机C语言教程[M],北京:电子工业出版社,2005

[2]任克强,王新勇.基于S3C2440A的液晶触摸乱序密码键盘设计[J].计算机安全.2010(11)

[3]邬正义,范瑜,徐惠钢等.现代无线通信技术[M].北京:高等教育出版社,2006.

[4]唐述凯.8086/806616位微机处理器入门 第六章8086/8088支持电路[J].微处理机.1984(04)

[5]蔡卓恩,李小青.基于TMS320F2812的双DSP芯片并行处理系统设计[J].机械研究与应用.2010(02)

[6]陈平.基于PWM技术的A/D转换电路的设计[J].微计算机信息.2007(29)

[8]张喜红,祁怀远,李鹏.C8051F系列单片机开发与C语言编程[J].电子产品可靠性与环境试验.2011(03)

猜你喜欢
矩阵式计数器中断
采用虚拟计数器的电子式膜式燃气表
奥迪e-tron
电除尘矩阵式电磁振打器控制系统改进优化
关于74LS90计数器的Multisim仿真分析
基于FPGA的中断控制器设计*
跟踪导练(二)(5)
千里移防,卫勤保障不中断
算盘是个“小气鬼”
四川省某医学院矩阵式临床素质团队教育模式下培养时间与科研产出关系的探讨
光电脉冲计数器的制作与性能优化