版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、单片机原理及应用技术键盘接口设计与编程任务一 独立式键盘的接口设计与编程任务二 矩阵式键盘的接口设计与编程Project 9任务1独立式键盘的接口设计与编程独立式键盘接口设计one独立式键盘相互独立,每个按键占用一根I/O口线,每根I/O口线上的按键工作状态不会影响其他按键的工作状态,CPU可直接读取该I/O线的高/低电平状态。这种按键硬件、软件结构简单,判键速度快,使用方便,但占用I/O口线较多,适用于按键数量较少的系统中。独立连接式键盘连接图如图所示。当没有键被按下时,所有的数据输入线均为高电平;当任意一个按键被按下时,与之相连的数据输入线将变为低电平;通过相应指令,可以判断是否有键被按下
2、。按键的抖动问题是指按键的触点在闭合和断开瞬间由于接触情况不稳定,从而导致电压信号的抖动现象(由按键的机械特性造成,不可避免)。如图所示为一次按键的抖动过程,在按键的前沿和后沿都会有510ms的抖动。按键抖动问题产生的原因及解决方法two对于时钟是微秒级的单片机而言,键盘的抖动有可能造成单片机对一次按键的多次处理。为了提高系统的稳定性,我们必须采用有效的方式消除抖动。去除抖动可以采用硬件方式和软件方式。硬件方式一般是在按键与单片机的输入通道上安装硬件去抖电路(如RS触发器)。软件方式的实现方法是:当查询到电路中有按键按下时,先不进行处理,而是先执行1020ms的延时程序,延时程序结束后,再次查
3、询按键状态,若此时按键仍为按下状态,则视为按键被按下。键盘扫描方式及相关程序three1查询方式键盘扫描程序【例9-1】这里按独立连接式键盘连接图的按键连接方式编写了查询方式的按键扫描程序。程序如下ORG0000HLJMPMAINORG0030HMAIN:JNBP1.0,KEY_0;判断与P1.0相接的按键是否被按下JNBP1.1,KEY_1;判断与P1.1相接的按键是否被按下JNBP1.2,KEY_2;判断与P1.2相接的按键是否被按下JNBP1.3,KEY_3;判断与P1.3相接的按键是否被按下LJMPMAIN;继续查询KEY_1:LCALLDL_20MS;调用延时子程序,去除机械抖动JB
4、P1.0,MAIN;去除抖动后,再次确认按键是否被按下LCALLPRO_1;若键按下,调用按键1的处理程序LJMPMAIN;执行结束,返回查寻循环KEY_2:LCALLDL_20MS;同上JBP1.1,MAINLCALLPRO_2LJMPMAINPRO_1:;按键1的处理程序RETPRO_2:;按键2的处理程序RETDL_20MS:;20毫秒延时子程序RETEND2中断方式键盘扫描程序除了查询方式,中断方式也常用于键盘扫描。硬件连接如图所示。P1口8个I/O信号经过与非门74LS30实现逻辑与非后,再经过非门74LS04反相,然后接至MCS-51的INT0引脚上。 在中断服务程序中,先延时20
5、ms消除键抖动,再对各键进行查询,找到所按键,并转到相应的处理程序中去。【例9-2】中断方式下的键盘扫描程序ORG0000HLJMPMAINORG0003H;外部中断0中断服务入口地址LJMPINT0;转中断服务ORG0100HMAIN:MOVP1,#0FFH;P1口做输入时,先送1SETBEA;开总中断允许SETBEX0;开INT0中断SETBIT0;下降沿有效;主程序其余部分;INT0:LCALLDL_20MS;延时去抖动MOVA,P1;读P1口各引脚CJNEA,#0FFH,CLOSE;验证是否确实有键闭合AJMPEXIT;无键按下(按键时间过短)则退出中断CLOSE:JNBACC.0,K
6、EY_0;查询0号键JNBACC.1,KEY_1;查询1号键JNBACC.2,KEY_2;查询2号键JNBACC.3,KEY_3;查询3号键JNBACC.4,KEY_4;查询4号键JNBACC.5,KEY_5;查询5号键JNBACC.6,KEY_6;查询6号键JNBACC.7,KEY_7;查询7号键EXIT:RETIKEY_0:;1号键处理程序RETI;其他键处理程序KEY_7:RETI;DL_20MS:RETEND任务2矩阵式键盘的接口设计与编程矩阵式键盘接口设计基于行反转法one44矩阵式键盘接口设计如图所示图中P1口的低4位作为行线,P2口的低4位作为列线。行线通过74LS21进行逻辑与
7、操作后作为单片机的外部中断源输入,当有键按下时以中断形式去执行相应的按键处理程序。行反转法因判键时将输入与输出线反转互换而得名,步骤如下:1首先将行线(P1)设为输入线,初值全为1,列线(P2)设为输出线,初值全为0。2若有按键被按下,将进入中断处理程序,通过读取P1端口值,确定按键所在行。接下来,P2设为输入线,值为全1,P1设为输出线,将原数据写入P1,读取P2,判断按键所在列。3将第一步读的值与第二步读的值进行运算,得到按键的特征值。【例9-3】行反转法判断按键编号,并存入40H单元,程序如下ORG0000HLJMPMAINORG0003H;外部中断0中断服务入口地址LJMPINT0;转
8、中断服务ORG0100HMAIN:MOVP1,0FFHMOVP2,00H;主程序其余部分;INT0:LCALLDL_20MS;延时去抖动MOVA,P1;读P1ANLA,#0FH;判断是否有键闭合提示由于P1的输出为高电平,P2的输出为低电平,故此,若按下某键,则P1相应输入引脚被拉低为低电平。CJNEA,#0FH,TEST;若有键闭合,转判断按键程序RETI;若无键闭合,返回TEST:;按键处理程序MOVB,A;暂存LCALLKEYR;调用读取子程序,结果保存在R3中(行号)MOV40H,R3;暂存在40H单元MOVP2,#0FFH;P2写1MOVP1,B;在P1中写入原数据MOVA,P2;读
9、P2LCALLKEYR;调用读取子程序,结果保存在R3中(列号)XCHA,R3;交换A与R3中数据SWAPA;将A的高四位与第四位交换ORL40H,A;将按键特征值存入40H(高四位为列号,第四位为行号)RETI;KEYR:CJNEA,#0FEH,TESTP11;测试P1.0MOVR3,#0;P1.0=0,说明被按键的输入线为P1.0LJMPFINISH;返回TESTP11:CJNEA,#0FDH,TESTP12;测试P1.1MOVR3,#1LJMPFINISHTESTP12:CJNEA,#0FBH,TESTP13;测试P1.2MOVR3,#2LJMPFINISHTESTP13:CJNEA,#
10、0F7H,FINISH;测试P1.3MOVR3,#3FINISH:RET;DL_20MS:RETEND矩阵式键盘接口设计基于扫描法two这里通过8255A连接一个48的矩阵键盘,PB口的低四位连接行线,8255A的PA口连接列线,如图所示。扫描法是指在判定按键时,通过逐行逐列进行扫描。例如,如果按行进行扫描,首先将列的全部输出设为高电平,行线的输出信号中总有一行为低电平,其余为高电平。如果某按键被按下,且按键所在行的输出信号为低电平,那么,列输出信号被拉低为低电平,即读取列值时该列的值为0。那么,通过输出的行值和读入的列值就可以确定被按键的行列值。扫描法具体分析如下:PB口作为扫描口需要设为输
11、出,PA口设为读入。逐行扫描时,PB口的状态为:PB7PB6PB5PB4PB3PB2PB1PB011111110(FEH)11111101(FDH)11111011(FBH)11110111(F7H)PB口作为扫描口需要设为输出,PA口设为读入。逐行扫描时,PB口的状态为:PB7PB6PB5PB4PB3PB2PB1PB011111110(FEH)11111101(FDH)11111011(FBH)11110111(F7H)11101111(EFH)11011111(DFH)10111111(BFH)01111111(7FH)例如,若当前PB口的输出状态为FEH,查询输入口PA的状态为EFH。那
12、么我们可以确定是PA0与PB4相交位置的按键被按下,即4号键。根据图3.11中各键的编号情况,按键键码可按如下公式计算:键码=行号列总数+列号【例9-4】利用扫描法判断按键,并将键码存入40H单元。分析8255A的PA、PB口的控制字。A口设为基本输入方式,B口设为基本输出方式,那么方式控制字为90H。关于8255A方式控制字的设定一般放到主程序中进行,这里只有对扫描过程进行编程。由矩阵式键盘接口设计图可知,8255A端口地址:A口为7FFCH,B口为7FFDH。NY结束逐行扫描开始是否有键按下?存入键号Y调用延时子程序是否有键按下?找到按键?YNN程序的流程图如图所示:扫描程序如下:SCAN
13、:ACALLP_KEY;调用“有无按键按下子程序”JNZT_KEY;若有键按下,进一步判断是否因抖动判错AJMPSCAN;若无键按下,则不断查询;T_KEY:ACALLDL_20MS;调用延时子程序ACALLP_KEY;再次调用“有无按键按下子程序”JNZIN_SCAN;若有键按下,则执行逐行扫描程序AJMPSCAN;若无键按下,则不断查询;IN_SCAN:MOVR2,#0FEH;将首次行扫描数据送R2MOVR4,#00H;将首行号送R4;ST_SCAN:MOVDPTR,#7FFDH;将PB口地址送DPTRMOVA,R2;将行扫描数据送AMOVXDPTR,A;将行扫描数据送PB口DECDPTR
14、;DPTR指向PA口MOVXA,DPTR;读取PA口的值;PA_0:JBAcc.0,PA_1;判断是否是第0列有按键MOVA,#00H;若该列有按键,将列号送AAJMPLKP;跳转至计算按键号程序;PA_1:JBAcc.1,PA_2MOVA,#01HAJMPLKP;PA_2:JBAcc.2,PA_3MOVA,#02HAJMPLKP;PA_3:JBAcc.3,PA_4MOVA,#03HAJMPLKP;PA_4:JBAcc.4,PA_5MOVA,#04HAJMPLKP;PA_5:JBAcc.5,PA_6MOVA,#05HAJMPLKP;PA_6:JBAcc.6,PA_7MOVA,#06HAJMPL
15、KP;PA_7:JBAcc.7,NEXT;若无按键按下,使用下一个行扫描值进行扫MOVA,#07HAJMPLKP;NEXT:INCR4;行号加1MOVA,R2JNBAcc.3,SCAN;判断行扫描是否结束。若结束,表示无键按下RLA;循环左移一位,产生下一个行扫描值MOVR2,AAJMPST_SCAN;继续扫描下一行;LKP:MOVB,R4;行号送BMOVR4,A;列号送R4暂存MOVA,8;将列总数8送AMULAB;计算键值ADDA,R4MOV40H,A;将键值存入40H单元RET;P_KEY:MOVDPTR,#7FFDH;将PB口地址送DPTRMOVA,#00H;将全扫描字送AMOVXDPTR,A;将全扫描字送PB口D
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年电气节能技术在户外照明中的应用
- 2026年冷热源系统的电气节能设计
- 2026年房地产资产证券化的市场创新案例
- 2026春招:文员真题及答案
- 贯口报花名课件
- 医院教育培训与学术研讨礼仪
- 医院导诊员服务礼仪标准
- 货柜安全检查培训知识课件
- 口腔种植手术技术进展
- 2026年合肥职业技术学院单招职业技能考试备考试题带答案解析
- 2025贵州贵阳产业发展控股集团有限公司招聘27人考试参考题库附答案
- 2026贵州省法院系统招聘聘用制书记员282人笔试参考题库及答案解析
- 自然资源部所属单位2026年度公开招聘工作人员备考题库(第一批634人)含答案详解
- 2025内蒙古交通集团有限公司社会化招聘168人笔试考试参考试题及答案解析
- 苏州工业园区领军创业投资有限公司招聘备考题库必考题
- 2025广东东莞市东城街道办事处2025年招聘23人模拟笔试试题及答案解析
- 2025年及未来5年市场数据中国硝基化合物行业投资研究分析及发展前景预测报告
- 陕西省咸阳市秦都区2024-2025学年七年级上学期1月期末考试语文试卷(无答案)
- AI虚拟数字人教学课件 第5章 腾讯智影:生成数字人视频与主播
- CJJT269-2017城市综合地下管线信息系统技术规范正式版
- 环保局基础知识考试题库100道及答案解析
评论
0/150
提交评论