- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第27-28讲
第27讲
第8章 常用外围设备接口
本章重点:① ;
② 后再确认K3键处理程序
LJMP KEY4
Prog0:… ;K0键处理程序
LJMP KEY4
Prog1:… ;K1键处理程序
LJMP KEY4
Prog2:… ;K2键处理程序
KEY4: MOV A,P1 ;读键盘
ORL A,#0F0H
CPL A
JNZ KEY4 ;键未释放,再读键盘
ACALL DEL10ms ;延时
KEY5: RET
第28讲
8.1.4 矩阵式键盘
当按键数量较多时,独立式按键就要占用较多的I/O口资源。此时应采用矩阵式键盘,也称为行列式键盘。
4×4的矩阵式键盘电路结构如图8-7所示。按键跨接在行线和列线上,按键按下时,行线与列线接通。
图中P1.0~P1.3为输入口,P1.4~P1.7为输出口。键盘扫描子程序中完成下述几种操作:
判断有无键被按下:在P1.4~P1.7输出全“0”,读P1.0~P1.3的状态,若为全“1”则无键按下。若不全为“1”则有键按下。
消除抖动:矩阵式键盘也需要消除抖动。由于按键数量较多,一般采用软件延时的方法来躲过抖动过程。
确定键号:首先确定被按键的物理位置,是通过列线逐列置低电平后检查行线的状态来确定。具体方法是:先令P1.4=0,P1.5~P1.7=1,读P1.0~P1.3的状态,若读得某行线为“0”,则可确认对应于该行线与列线相交处的键被按下,否则,说明P1.4列上无键按下。若P1.4列上无键按下,接着令P1.5=0,其余列线为“1”,再读P1.0~P1.3的状态,判断其是否全为“1”,若是,表示被按下的键也不在此列,依次类推直至列线P1.7。这种逐列检查键盘状态的过程称为键盘扫描。
键号按从左至右,从上至下的顺序编排,各行的行首键号为0、4、8、12,并作为该行的行号;列号依列线顺序为0~3,根据被按下键的物理位置,可得被按下键的键号的计算公式:
键号=行号+列号
由此可得图8-7各键的键号为:00H 01H 02H 03H
04H 05H 06H 07H
08H 09H 0AH 0BH
0CH 0DH 0EH 0FH
得到键号后,通过散转表进入各按键的处理程序。
键闭合一次仅作一次处理:方法与独立式键盘相同,一般采用等待键释放后去除键的抖动再将键号送累加器A,再用散转程序转去执行相应的键处理程序。
键扫描子程序流程图如附图8-2所示。
键扫描子程序参考程序如下:
ORG 0200H
KEY0: ACALL KS ;调KS判断是否有键按下
JNZ KEY1 ;有键按下则转移
LJMP FANH ;无键按下则返回
KEY1: ACALL DELAY ;调延时子程序消抖
ACALL KS ;调KS判断是否有键按下
JNZ KEY2
FANH: RET ;无键按下,返回
KEY2: MOV R4,#00H ;首列号送R4
MOV R2,#0EFH ;送首列扫描代码
KEY3: MOV P1,R2 ;列扫描代码送P1口
MOV A,P1 ;读行线状态值
ORL A,#0F0H ;屏蔽列扫描代码
CPL A
JZ NEXT ;A=0,本列未按下
JB ACC.0,KEY4;当前列0行未按下
MOV A,#00H ;送行号0到A
LJMP KEY7 ;转求键号
KEY4: JB ACC.1,KEY5;当前列1行未按下
MOV A,#4 ;送行号4到A
LJMP KEY7 ;转求键号
KEY5: JB ACC.2,KEY6;当前列2行未按下
MOV A,#8 ;送行号8到A
LJMP KEY7 ;转求键号
KEY6: MOV A,#12 ;送行号12到A
KEY7: ADD A,R4 ;求键号送A
PUSH ACC ;键号进栈保护
KEY8: ACALL DELAY
ACALL KS ;等待按键释放
JNZ KEY8
POP ACC ;按键释放,恢复键号
MOV DPTR,#TAB ;DPTR指向散转表首址
ADD A,ACC
原创力文档


文档评论(0)