欢迎来到天天文库
浏览记录
ID:50166108
大小:981.50 KB
页数:51页
时间:2020-03-09
《单片机原理 接口技术及应用 教学课件 作者 黄建新 编10 单片机典型外围接口技术.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、10单片机典型外围接口技术10.1键盘接口键盘由一组常开的按键组成,操作人员可以通过键盘输入数据或命令以干预计算机的工作。每个按键都被赋予一个代码,称为键码。键盘分为编码键盘和非编码键盘。编码键盘是通过一个编码电路来识别闭合键的键码,较多,具有去抖动功能,但硬件较复杂,PC机所用的键盘就属于这种;非编码键盘是通过软件来识别键码,须占用一定的CPU时间,但硬件简单,可以方便地增减键的数量,因此在单片机应用系统中得到广泛的应用。本节仅介绍非编码键盘的原理和接口电路。10.1.1按键去抖动图10-1按键连接图图10-2按键按下、释放时的电压抖动抖动持续的时间随开关特性的不同而不同,一般在5
2、~10ms之间。抖动现象会引起CPU对一次键操作进行多次处理,从而可能产生错误。因此,必须采取措施消除抖动。消除抖动的方法有两种:硬件去抖动法和软件去抖动法。硬件去抖动一股采用双稳电路,如图10-3所示。图10-3双稳态去抖动电路软件去抖动方法是通过执行延时程序来避开按键时产生机械抖动的方法。具体做法是,根据抖动的特性,在第一次检测到按键按下后,延时10ms左右再判断与该键相对应的电平信号是否仍然保持在闭合状态,如是,则确认为有键按下。由于键松开也有抖动,因此,如有必要也可采用类似的方法检测按键是否松开。10.1.2独立式键盘及其接口按照与CPU的连接方式,非编码键盘可分为独立式键盘
3、和矩阵式键盘。图10-4独立式键盘接口电路独立式键盘的特点是电路结构简单,但每个按键必须占用一根I/O线。对于图10-4,其键盘扫描程序如下:KEYSCAN:MOVP1,#0FFH;置P1口为输入态MOVA,P1;读入键值LCALLD10ms;延时10msMOVB,P1;再读键值CJNEA,B,GORET;两次键值不一致,直接返回JNBACC.0,KEY0;0号键按下,转0号键功能程序JNBACC.1,KEY1;1号键按下,转1号键功能程序JNBACC.2,KEY2;2号键按下,转2号键功能程序GORET:RET;从键盘服务子程序返回KEY0:LCALLFUNC0;执行0号键功能服务
4、程序RET;从键盘服务子程序返回KEY1:LCALLFUNC1;执行1号键功能服务程序RET;从键盘服务子程序返回KEY2:LCALLFUNC2;执行2号键功能服务程序RET;从键盘服务子程序返回从程序中可以看出,当有2个以上的键被同时按下时,只有键号最小的按键所对应的功能被执行。10.1.3矩阵式键盘矩阵式键盘又称行列式键盘,它是将I/O线的一部分作为行线,另一部分作为列线,按键设置在行线和列线的交叉处。当无键按下时,列线处于高电平状态;当有键按下时,行、列线将导通,此时,列线电平将由与此列线相连的行线电平决定。利用这一点,通过编程即可确定哪一个按键被按下。具体确定按下按键的键值的
5、过程如下:①判别是否有键按下首先使所有行线为低电平,当键盘上没有键按下时,所有列线为高电平;当有任一键被按下时,总有一根列线为低电平。图10-54×4矩阵键盘电路图处于m行、n列的按键的键值为4×m+n。②识别按键位置(行扫描法)当键盘上某一个按键闭合时,则该按键所对应的列线与行线短路。例如,键盘中6号键按下时,行线x1与列线y2短路,y2的电平由x1送出的电平所决定。如果将列线y0~y3(P1.4~P1.7)作为微处理器的输人线,将行线x0~x3(P1.0~P1.3)作为微处理器的输出线,则行扫描法识键的过程为:在键盘扫描程序的控制下,先使行线的x0为低电平,x1、x2、x3为高电
6、平,接着读取列线y0~y3的电平;假如y0~y3都呈高电平,则说明x0这一行没有按键闭合。然后,使行线x1为低电平,x0,x2、x3为高电平,再读取列线y0~y3的电平。在6号键按下的情况下,读取的列线y0~y3中的y0、y1、y3为高电平,而y2为低电平。这样,微处理器就得到一组与6号键按下时相对应的唯一的输出一输入码1011(y3~y0)—1101(x3~x0)。由于这组码与按键所在的列行位置相对应,因此,常被称为键位置码。③键值的计算设键盘为KH×KL矩阵键盘,其中KH为行数,KL列数。如果由行扫描法得按下按键的行号和列号分别为m和n,则所按下按键的键值为:m×KL+n。对于图
7、10-5,其键盘扫描程序如下:KEYSCAN:ACALLKSCAN;查有没有键按下JZGORET;(A)=0表示没有键按下,返回LCALLD10ms;有键按下,延时10msACALLKSCAN;再查有没有键按下JZGORET;(A)=0表示没有键按下,返回ACALLKEYNUM;有键按下,行扫描法确定键值CLRCRLCARLCA;键值×4MOVDPTR,#FTABJMP@A+DPTR;散转,执行相应功能子程序GORET:RETFTAB:LCALLFUNC0
此文档下载收益归作者所有