第7讲矩阵键盘电路仿真实验_第1页
第7讲矩阵键盘电路仿真实验_第2页
第7讲矩阵键盘电路仿真实验_第3页
第7讲矩阵键盘电路仿真实验_第4页
第7讲矩阵键盘电路仿真实验_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、7.1 矩阵键盘电路的原理介绍矩阵键盘电路的原理介绍7.2 矩阵键盘硬件电路的设计矩阵键盘硬件电路的设计7.3 软件编程实现矩阵键盘的处理软件编程实现矩阵键盘的处理 7.4 矩阵键盘电路在矩阵键盘电路在Proteus中的验证中的验证7.5 实例讲解实例讲解第七讲第七讲 矩阵键盘电路的仿真实验矩阵键盘电路的仿真实验 7.1 矩阵键盘电路的原理介绍矩阵键盘电路的原理介绍v键盘功能:向单片机输入数据、命令等,是键盘功能:向单片机输入数据、命令等,是人与单片机对话的主要手段。人与单片机对话的主要手段。7.1.1 键盘接口应解决的问题键盘接口应解决的问题1键盘的任务键盘的任务任务有任务有3项:项:(1)

2、首先判别是否有键按下?若有,进入下一步。)首先判别是否有键按下?若有,进入下一步。(2)识别哪一个键被按下,并求出相应的键值。)识别哪一个键被按下,并求出相应的键值。(3)根据键值,找到相应键值的处理程序入口。)根据键值,找到相应键值的处理程序入口。 32. 键盘输入的特点键盘输入的特点v常见键盘包括触摸式键盘、薄膜键盘和按键式键盘,最常用常见键盘包括触摸式键盘、薄膜键盘和按键式键盘,最常用的是的是按键式键盘按键式键盘。v键盘按键实质上是一个开关。如图键盘按键实质上是一个开关。如图7-1(a)所示,按键开关的所示,按键开关的两端分别连接在行线和列线上,通过键盘开关机械触点的断开、两端分别连接在

3、行线和列线上,通过键盘开关机械触点的断开、闭合,其行线电压输出波形如图闭合,其行线电压输出波形如图7-1(b)所示。所示。v图图7-1(b)所示的所示的t1和和t3分别为键的闭合和断开过程中的分别为键的闭合和断开过程中的抖动抖动期期(呈现一串负脉冲),抖动时间长短与开关的机械特性有关,(呈现一串负脉冲),抖动时间长短与开关的机械特性有关,一般为一般为510ms,t2为稳定的为稳定的闭合期闭合期,其时间由按键动作确定,其时间由按键动作确定,一般为十分之几秒到几秒,一般为十分之几秒到几秒,t0、t4为为断开期断开期。 4图图7-1 键盘开关及其行线波形键盘开关及其行线波形 3按键的识别按键的识别v

4、按键的闭合与否,反映在行线输出电压上就是呈现按键的闭合与否,反映在行线输出电压上就是呈现高电平或低电平,通过对行线电平的高低状态的检测,高电平或低电平,通过对行线电平的高低状态的检测,便可确认按键是否按下以及是否释放。便可确认按键是否按下以及是否释放。v为确保单片机对一次按键动作只确认一次按键有效,为确保单片机对一次按键动作只确认一次按键有效,必须必须消除抖动期消除抖动期t1和和t3的影响的影响.64如何消除按键的抖动如何消除按键的抖动v去抖动的方法有两种,一种是用去抖动的方法有两种,一种是用软件延时软件延时来消除按键抖动。来消除按键抖动。v基本思想是:在检测到有键按下时,该键所对应的行线为低

5、基本思想是:在检测到有键按下时,该键所对应的行线为低电平,执行一段延时电平,执行一段延时10ms的子程序后,确认该行线电平是否的子程序后,确认该行线电平是否仍为低电平,如果仍为低电平,则确认该行确实有键按下。当仍为低电平,如果仍为低电平,则确认该行确实有键按下。当按键松开时,行线的低电平变为高电平,按键松开时,行线的低电平变为高电平,执行一段延时执行一段延时10ms10ms的的子程序后,检测该行线为高电平,说明按键确实已经松开。采子程序后,检测该行线为高电平,说明按键确实已经松开。采取以上措施,可消除两个抖动期取以上措施,可消除两个抖动期t t1 1和和t t3 3的影响。的影响。v另一种去除

6、按键抖动的方法是另一种去除按键抖动的方法是采用专用的键盘采用专用的键盘/ /显示器接口显示器接口芯片芯片,这类芯片中都有自动去抖动的硬件电路。,这类芯片中都有自动去抖动的硬件电路。77.1.2 键盘分类和设计方法键盘分类和设计方法v键盘分为两类,包括键盘分为两类,包括非编码键盘非编码键盘和和编码键盘编码键盘。v非编码键盘按键直接与单片机相连,通常使用在按非编码键盘按键直接与单片机相连,通常使用在按键数量较少的场合。用这种键盘,系统功能通常比较键数量较少的场合。用这种键盘,系统功能通常比较简单,需处理的任务较少,但可降低成本、简化电路简单,需处理的任务较少,但可降低成本、简化电路设计。按下按键的

7、键号信息通过软件来获取。设计。按下按键的键号信息通过软件来获取。v非编码键盘常见的为两种结构:非编码键盘常见的为两种结构:独立式键盘独立式键盘和和矩阵矩阵式键盘式键盘。1. 独立式键盘独立式键盘(1)查询方式的独立式键盘)查询方式的独立式键盘v特点特点:一键一线,键相互独立,每个按键各接一条:一键一线,键相互独立,每个按键各接一条I/O口线,通过检测口线,通过检测I/O输入线的电平状态,可很容易判断哪输入线的电平状态,可很容易判断哪个按键被按下,如图个按键被按下,如图7-2所示。图中的上拉电阻保证按键所示。图中的上拉电阻保证按键释放时,输入检测线上有稳定的高电平。释放时,输入检测线上有稳定的高

8、电平。v优点优点:电路简单,各条检测线独立,识别按键号的软:电路简单,各条检测线独立,识别按键号的软件编写简单。件编写简单。v不足不足:独立式键盘适用于按键数目较少的场合,在按:独立式键盘适用于按键数目较少的场合,在按键数目较多的场合,要占用较多的键数目较多的场合,要占用较多的I/O口线。口线。9图图7-2 独立式键盘的接口电路独立式键盘的接口电路 (2)中断扫描方式的独立式键盘)中断扫描方式的独立式键盘v为进一步提高扫描键盘工作效率,可采用中断扫描方为进一步提高扫描键盘工作效率,可采用中断扫描方式,如图式,如图7-3。v优点优点:键盘只有在键盘有按键按下时,才进行处理,:键盘只有在键盘有按键

9、按下时,才进行处理,所以实时性强,效率高。所以实时性强,效率高。v工作原理工作原理:当键盘中有按键按下时,:当键盘中有按键按下时,74LS30的输出经的输出经过过74LS04反相后向单片机的中断请求输入引脚反相后向单片机的中断请求输入引脚INT0*发发出中断请求信号,单片机响应中断,执行键盘扫描程序出中断请求信号,单片机响应中断,执行键盘扫描程序中断服务子程序,识别出按下按键的键号,并跳向该按中断服务子程序,识别出按下按键的键号,并跳向该按键的处理程序。键的处理程序。 1112图图7-3 独立式键盘的接口电路独立式键盘的接口电路2. 矩阵式键盘矩阵式键盘v矩阵式(也称行列式)键盘用于按键数目较

10、多场合,矩阵式(也称行列式)键盘用于按键数目较多场合,由由行线行线和和列线列线组成,一组为行线,另一组为列线,按组成,一组为行线,另一组为列线,按键位于行、列的交叉点上。如图键位于行、列的交叉点上。如图7-4所示,所示, 一个一个4 4的的行、列结构可以构成一个行、列结构可以构成一个16个按键的键盘。个按键的键盘。v优点优点:在按键数目较多的场合,与独立式键盘相比,:在按键数目较多的场合,与独立式键盘相比,要节省较多的要节省较多的I/O口线。口线。13图图7-4 矩阵式键盘接口矩阵式键盘接口查询方式的矩阵式键盘工作原理。查询方式的矩阵式键盘工作原理。v首先判键盘有无键按下,即把所有行线首先判键

11、盘有无键按下,即把所有行线P1.0P1.3均均置为低电平,然后检查各列线的状态,若列线不全为高置为低电平,然后检查各列线的状态,若列线不全为高电平,则表示键盘中有键被按下;若所有列线列均为高电平,则表示键盘中有键被按下;若所有列线列均为高电平,说明键盘中无键按下。电平,说明键盘中无键按下。v在确认有键按下后,即可进入确定具体闭合键的过程。在确认有键按下后,即可进入确定具体闭合键的过程。判断闭合键所在的位置,其方法是依次将行线置为低电判断闭合键所在的位置,其方法是依次将行线置为低电平,在逐行检查各列线的电平状态。若某列为低,则该平,在逐行检查各列线的电平状态。若某列为低,则该列线与行线交叉处的按

12、键就是闭合的按键。列线与行线交叉处的按键就是闭合的按键。157.2 矩阵键盘硬件电路的设计矩阵键盘硬件电路的设计v以以4*4矩阵键盘为例,介绍矩阵键盘电路的设矩阵键盘为例,介绍矩阵键盘电路的设计。计。v在在Proteus中,常用的按键是中,常用的按键是Button,它在,它在Proteus元件库元件库Switches & Relays类中,如类中,如图图7-5所示,也可以直接在所示,也可以直接在Keyword栏输入栏输入Button拾取。拾取。图图7-5 按键元器件按键元器件v除此以外,我们在本例中用到的条形除此以外,我们在本例中用到的条形LED,在在Proteus的元件库的元件库Op

13、toelectronics,子类,子类为为Bargraph Displays,里面包括两个元器,里面包括两个元器件,主要是显示的颜色的差异。件,主要是显示的颜色的差异。v这里我们选取的是这里我们选取的是2只条形只条形LED,显示颜色为,显示颜色为绿色,名称为绿色,名称为LED-BARGRAPH-GRN,显示,显示的原理是,引脚号小的一端接高电平,引脚的原理是,引脚号小的一端接高电平,引脚号大的一端接低电平,每个条形号大的一端接低电平,每个条形LED相当于相当于十个十个LED二极管并排放置在一起。二极管并排放置在一起。4*4矩阵键盘控制条形矩阵键盘控制条形LED显示显示v如图如图7-6所示为控制

14、电路。所示为控制电路。v图中,图中,4*4矩阵键盘的四条行线接到矩阵键盘的四条行线接到P1.0P1.3,四条列线接到,四条列线接到P1.4P1.7,注意,注意总线和标号的运用;条形总线和标号的运用;条形LED一块接到一块接到P2端端口和部分口和部分P3端口,另一块接到端口,另一块接到P3剩下部分端剩下部分端口。口。v4*4矩阵键盘节约了矩阵键盘节约了I/O口线,但是识别按键口线,但是识别按键的代码要比独立键盘复杂一些。的代码要比独立键盘复杂一些。图图7-6 矩阵键盘控制电路矩阵键盘控制电路7.3 软件编程实现矩阵键盘的处理软件编程实现矩阵键盘的处理 v以图以图7-6为例,我们要求电路运行时,点

15、亮的为例,我们要求电路运行时,点亮的LED个数与按键的键值相等,例如,按下个数与按键的键值相等,例如,按下K1时,第时,第1只只LED(最下方)点亮,按下(最下方)点亮,按下K2时,时,前前2只只LED点亮,点亮,按下,按下K16时,第时,第116只只LED被点亮。被点亮。v由原理图可知,矩阵键盘行线连接由原理图可知,矩阵键盘行线连接P1.0P1.3,列线连接列线连接P1.4P1.7,扫描过程如下。,扫描过程如下。v首先判断是否有键按下。为判断首先判断是否有键按下。为判断16个按键中是否有键个按键中是否有键按下,程序首先在按下,程序首先在4条行线上放置条行线上放置4个个0,即在,即在P1端口端

16、口输出输出0 xf0,如果有任一按键按下,则,如果有任一按键按下,则4条列线上必有一条列线上必有一位为位为0。v如果已有键按下,则判断按键所在行、列位置,并返如果已有键按下,则判断按键所在行、列位置,并返回按键序号。代码中行扫描码回按键序号。代码中行扫描码sCode初值为初值为0 xfe(1111 1110),通过将该值循环左移,可对,通过将该值循环左移,可对P1.0P1.3对应的对应的4行逐行发送行逐行发送0,每次发送扫描码后即判断高,每次发送扫描码后即判断高4位的位的4个个1中是否有中是否有0出现,如果出现出现,如果出现0则说明按键在该列上,这则说明按键在该列上,这时可将发送的低时可将发送

17、的低4位与读取的高位与读取的高4位取反,也就是位取反,也就是P1取取反,这样反,这样P1中将出现中将出现2个个1,其余位均变为,其余位均变为0,2个个1分分别处在低别处在低4位和高位和高4位中,高低位中,高低4位中位中1所处的位置各有所处的位置各有4种可能,共计种可能,共计16种,根据取反后的值查询矩阵键盘按种,根据取反后的值查询矩阵键盘按键特征码表,可得按键序号。键特征码表,可得按键序号。参考源代码为:参考源代码为:#include #include #define uchar unsigned char#define uint unsigned intuchar code KeyCodeT

18、able=0 x11,0 x12,0 x14,0 x18,0 x21, 0 x22,0 x24,0 x28,0 x41,0 x42,0 x44,0 x48,0 x81,0 x82,0 x84,0 x88; /矩阵键盘按键特征码表矩阵键盘按键特征码表void delay() uchar i;for(i=0;i200;i+);参考源代码为:参考源代码为:uchar Keys_Scan()uchar sCode,kCode,i,k;P1=0 xf0; /低低4位置位置0,放入四行,放入四行if(P1&0 xf0)!=0 xf0) /判断是否有键按下判断是否有键按下delay(); /延时去抖

19、动延时去抖动if(P1&0 xf0)!=0 xf0)sCode=0 xfe; /行扫描码初值行扫描码初值for(k=0;k4;k+) /对四行分别进行扫描对四行分别进行扫描P1=sCode;if(P1&0 xf0)!=0 xf0)kCode=P1;for(i=0;i16;i+) /查表得到按键序号并返回查表得到按键序号并返回 if(kCode = KeyCodeTablei) return i;else sCode=_crol_(sCode,1);return -1;参考源代码为:参考源代码为:void main()uchar KeyNo=-1; /-1表示无键按下表示无键按下

20、uchar i,P2_LED,P3_LED;while(1)KeyNo=Keys_Scan(); /扫描键盘获取按键序号扫描键盘获取按键序号KeyNoif(KeyNo!=-1)P2_LED=0 xff;P3_LED=0 xff;for(i=0;i=KeyNo;i+) /键值越大,点亮的键值越大,点亮的LED越多越多if(i=1;else P2_LED=1;P3=P3_LED;P2=P2_LED;7.4 矩阵键盘电路在矩阵键盘电路在Proteus中的验证中的验证7.4.1 Proteus电路设计电路设计1. 元件清单列表元件清单列表 打开打开Proteus ISIS编辑环境,按表编辑环境,按表7

21、-1所列的清单添加元件所列的清单添加元件 元元 件件 名名 称称所所 属属 类类所所 属属 子子 类类AT89C51Microprocessor ICs8051 FamilyCAPCapacitorsGenericCAP-ELECCapacitorsGenericCRYSTALMiscellaneousRESResistorsGenericRX8ResistorsResistor PacksLED-BARGRAPH-GRNOptoelectronicsBargraph DisplaysBUTTONSwitches & RelaysSwitches表表7-1 元元 件件 清清 单单2. 电路原理图电路原理图 元件全部添加后,在元件全部添加后,在Proteus ISIS的编辑区域中按图的编辑区域中按图7-7所示的原理图连接硬件电路。所示的原理图连接硬件电路。图图7-7 电路原理图电路原理图3、源程序的添加、源程序的添加参照第五讲在参照第五讲在Keil中建立工程,添加源程序文件、构中建立工程,添加源程序文件、构建建.hex文件,加载目标代码,执行程序,观察不同按键文件,加载目标代码,执行程序,观察不同按键被按下后被按下后LED灯的显示过程,如图灯的显示过程,如图7-8所示。所示。图图7-8 电路运行过程电路运行过程7.5 实例讲解实例讲解v参照之前的例子,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论