欢迎来到天天文库
浏览记录
ID:59939805
大小:795.00 KB
页数:34页
时间:2020-11-28
《键盘接口技术说课材料.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、键盘接口技术图8-2键闭合及断开时的电压抖动综上所述,对于非编码键盘,按键处理程序应具有如下四个功能:(1)判断键盘上有无键按下。(2)去除键的机械抖动。(3)求按下键的键码。(4)闭合一次,只进行一次键功能操作。8.1.2单片机对非编码键盘的控制方式1.查询方式这种方式是指在单片机完成其它工作后的空余时间,调用键盘扫描子程序,来响应键盘输入的要求,在执行键功能程序时,CPU不再响应键输入要求。[例8.1]用查询法按图8-1读取行列键盘键码,并将键码存入内部RAM32H单元。图中P1.4~P1.7用于控制行线,P1.0~P1.3用于控
2、制列线。行、列线通过上拉电阻接+5V,没有键按下时,被钳在高电平状态。通过发送扫描字确定键码,具体方法如下:(1)由列线输出0,然后读入P1口的值存入内部RAM30H单元。(2)由行线输出0,然后读入P1口的值存入内部RAM31H单元。(3)把30H的低4位与31H的高4位的值相加存入累加器A。(4)最后判断累加器A的值,如果累加器A的数据全为1,说明无键按下,否则说明有键按下,且累加器A的数据就是被按下键的键值(程序中对累加器A取反,目的是用JNZ指令判断是否有键按下)。如图中圆圈所指键的键值为10111110B。键扫描程序如下:B
3、OAD:LCALLBOADDJNZBOAD1;无键按下转BOADLCALLDELAY;调延时子程序AJMPBOAD;继续扫描键盘BOAD1:LCALLDELAY;消除键抖动(延时子程序略)LCALLBOADD;确认是否有键按下JNZBOAD2LCALLDELAYSJMPBOAD;转键扫描BOAD2:CPLAMOV32H,A;取键值BOAD3:LCALLDELAYLCALLBOADDJNZBOAD3;等待键松开B2:RET;返回;获取键值子程序BOADD:MOVP1,#0FH;置行线为0MOVA,P1MOV30H,AMOVP1,#0F0
4、H;置列线为0MOVA,P1MOV31H,AANL30H,#0FH;取列值MOVA,30HANL31H,#0F0H;取行值ADDA,31H;行值加列值CPLA;A全0无键按下RET2.定时扫描工作方式定时扫描工作方式是利用单片机内部定时器产生定时中断,CPU响应中断后对键盘进行扫描,当有键按下时,转入键功能的处理程序。定时扫描在本质上是中断方式,只不过是定时扫描键盘,以中断的方式处理键盘,它的硬件电路与编程扫描工作方式相同。3.中断工作方式单片机应用系统工作时,并不经常需要键输入。因此,无论是编程工作方式或是定时工作方式,CPU经常处
5、于空扫描状态。图8-3是AT89C51利用中断扫描方式实现的一个2×8矩阵式键盘的硬件接口电路。图8-3利用中断扩展2×8键盘电路图通过前面的原理分析可知,完成键盘管理的程序主要有主程序和中断服务程序,主程序主要完成初始化和键值处理任务,中断服务程序主要完成键盘扫描和键值读入任务。对应的程序流程图如图8-4所示(INT1中断流程图与INT0类似,略)。程序如下:ORG0000HLJMPBEGIN;转主程序ORG0003HLJMPWZD0;转外中断0程序ORG0013HLJMPWZD1;转外中断1程序BEGIN:ORG0100HMOVS
6、P,#60H;设置堆栈MOVR1,#00H;R1存放键值SETBIT1;设INT0、INT1为边沿触发SETBIT0SETBEA;开中断SETBEX0SETBEX1MOVP1,#00H键值处理程序(略)其它主程序(略)WZD0:PUSHPSW;保护现场PUSHACLREX0;关中断INT0LCALLDELAY;调延时程序去抖动JNBP3.2,WZD01;再次确认是INT0中断吗SETBEX0;不是,则恢复现场退出中断POPAPOPPSWRETIWZD01:MOVA,#01H;置S1键的键值为1MOVP1,#0FEH;扫描P1.0JNB
7、P3.2,KEYR1;是S1键则转移INCA;不是S1键,键值加1MOVP1,#0FDH;扫描P1.1,以下同P1.0类似JNBP3.2,KEYR1INCAMOVP1,#0FBHJNBP3.2,KEYR1INCAMOVP1,#0F7HJNBP3.2,KEYR1INCAMOVP1,#0EFHJNBP3.2,KEYR1INCAMOVP1,#0DFHJNBP3.2,KEYR1INCAMOVP1,#0BFHJNBP3.2,KEYR1INCAMOVP1,#7FHJNBP3.2,KEYR1LJMPKEYR2KEYR1:MOVR1,A;将键值存入R
8、1中KEYR2:CLRIE0;清中断标志(因扫描中可能使IE0置位)SETBEX0;开中断INT0POPA;恢复现场POPPSWRETI;中断返回WZD1:…;外中断1程序与中断0相似(略)DELAY:…;延时程序(略)
此文档下载收益归作者所有