版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、学号:0121309341511实验课成绩学生实验报告书实验课程名称监测控制系统应用开课学院信息工程学院指导老师姓名祝立华学生姓名学生专业班级电信13012015-2016学年 第二学期实验课程名称:监测控制系统应用 实验一实验项目名称:键盘接口电路的设计与实现 实验成绩: 100实验者: 专业班级: 电信1301班 同组者: 111 实验日期: 周四34节课 一实验目的1 键盘是微机应用系统中必不可少的输入设备,通过本次实验掌握键盘电路硬件和软件的设计技巧,能够设计出满足各种需要、适应各种场合的键盘电路。2 通过键盘扫描工作与其它工作的合理安排,熟悉微机系统中键盘监控程序的设计原理。二探究内
2、容1 键盘设计需要考虑那些问题(按键识别、消抖、键值)2 键盘硬件电路的设计方法3 键盘软件设计方法(软件实现哪些功能)4 比较独立键盘和矩阵键盘的特点5 比较查询法和中断法识别按键性能上的不同3 实验设计:1.设计要求3.1.1独立键盘查询法:使用查询法对八个独立按键进行查询扫描,并通过8个独立按键的状态来控制数码管的数字显示 。3.1.2独立按键中断法:通过与门将八个独立按键接到P3.2口,通过外部中断响应来对键盘做出响应。不同的键按下对应不同的LED灯亮,并且数码管显示响相应的数字,待中断相应完后回到初态。设计中可以使CPU一直处于工作状态,方便与查询法作比较。3.1.3矩阵键盘查询法:
3、使用查询法对4*4矩阵键盘进行扫描分析,并通过八段数码管显示按键是否按下的情况,不同的按键按下会有不同的符号显示。此时有16个按键分别对应显示0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F。3.1.4矩阵键盘中断法:使用查询法对4*4矩阵键盘进行扫描分析,并通过八段数码管显示按键是否按下的情况,不同的按键按下会有不同的符号显示。此时有16个按键分别对应显示0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F。2.设计电路图及设计思路3.2.1独立键盘查询法3.1独立按键查询法电路图八个独立按键分别与P2.0P2.7相连,P1口与7段数码管相连。没有键按下时,P2口均为
4、高电平,数码管显示8,有键按下时,数码管显示的数字与按下的键相对应。例如P2.0口连接的按键按下时,数码管显示0,P2.1相连的按键按下时,数码管显示1,依次类推。在键盘查询法的程序设计中,MAIN主函数里面除查询语句外的其他语句的执行时间不能太久,不然会产生有键按下却不能及时相应的情况。因为机械按键有抖动的情况,还要考虑消抖。按键消抖既可以采用RS触发器硬件消抖,也可以通过延时来软件消抖。此次设计中采用的就是软件消抖。单片机内部P0口没有接上拉电阻,所以不能保存高电平,设计中若要选择P0口驱动数码管,可以选择373等锁存器,也可以简单的通过接上拉电阻,也能实现。3.2.2独立键盘中断法通过外
5、部中断响应在中断响应程序中响应键盘程序,八个独立按键接在P0口,P0口还接了上拉电阻,共阴数码管接在P1口,8个LED灯接在P2口。在没有中断进入时,数码管显示数字0,LED灯依次点亮。当P0.0口接的按键按下时,触发中断,数码管显示数字1,第一个LED灯点亮,中断相应大约持续2S钟的时间,退出中断,数码管继续显示数字0,LED灯继续流水灯作业。3.2.3矩阵键盘查询法此次设计是线反转法。矩阵键盘接在P3口,首先给P3赋值#0FH,即高位为1,低位为0,图中低位对应列,高位对应行。当有键按下时,高位会有键被拉低为低电平,此时可以对高位取反,保存高位键码数值。同理,可以有同样的方法保存低位键码。
6、然后就高位键码和低位键码相与就可以得到总的键码。很方便可以通过查表法控制数码管上的数字显示。3.2.4矩阵键盘中断法4 实验内容及现象: 1.独立键盘查询法CPU始终在扫描键盘的按键状态,有键按下时,执行相应的操作,例如按下第一个按键的时候,数码管显示0,按下第二个按键的时候显示1。CPU在此种状态下,除了响应按键响应外,就一直处在扫描状态。只有这样才能及时扫描到是否有键按下。以下就是按下第二个按键时的响应状态。2.独立按键中断法此种情况,CPU不用时常查询键盘的情况,可以被其他的功能程序所占用。例如此次设计中,为了方便的模拟出CPU处于忙碌状态,在没有按键按下时,数码管显示0,并且LED灯依
7、次轮流点亮。在有按键按下时,外部中断INT0入口产生中断信号,此时CPU在保护现场的同时,来响应中断程序。中断响应程序是有相应的键按下,对应的LED灯亮,并且在数码管上显示响应的数字,为了体现中断的保护,在响应中断程序1.5s左右退出中断,LED灯继续循环点亮,数码管显示0。第三个按键按下时,中断响应状态:数码管显示3,第三个LED灯亮。退出中断后的状态:3.矩阵键盘查询法原理和独立键盘类似,只是矩阵键盘在键码的读取的时候比独立按键复杂,需要分别读出行键码和列键码,最后确定是哪个按键按下,并执行相应的操作。在此种状态中,CPU也需要一直查询键盘,否则可能造成不能及时响应的情况。第一行四个按键从
8、左到右依次是0、1、2、3,第二行依次是4、5、6、7,第三行依次是8、9、A、B,第四行依次是C、D、E、F。由实验结果知设计成功。下面显示按下第一行第二列按键的响应结果。4.矩阵键盘中断法原理和独立键盘中断类似,读取键盘的原理和矩阵键盘查询法类似,此次不再赘述。下面显示的是按下第一行第二列的显示结果。5 结果分析及研究结论:由实验可以看出,当查询法和中断法的主函数中加入延时程序,在延时的时间变长的过程中,查询法中的按键就会变的不灵敏,很久才能显示出相应的符号,而用中断法则不受影响。则综上,中断法法能够及时响应按键,CPU利用率高,有键按下CPU才响应按键程序,没键按下时可以不被键盘查询程序
9、占用资源。6 收获:附录:独立键盘查询法程序:ORG 0000HLJMP MAINORG 0030HMAIN:MOV P2,#0FFH ;P2口置高电平MOV A,P2 ;读键盘CPL A;对A取反JZ MAIN ;若没键按下,返回主函数继续查询,若有键按下,继续执行LCALL DELAY ;调用延时函数MOV A,P2 ;再读键盘CPL A ;对A取反JZ MAIN ;若是按键抖动则返回主函数 MOV R2 ,A ;缓存键码WAIT:MOV A,P2CPL AJNZ WAIT ;消抖 MOV R3,#00H ;设置扫描的初始位置,从第一个按键开始扫描MOV R4,#08H ;设置每次扫描的个
10、数,有八个按键,扫描八次LOOP2:JB ACC.0,L2 ;若改位键盘按下,转键码处理程序RR A ;右移一位,继续扫描INC R3 ;缓存的键码加一DJNZ R4,LOOP2 ;若没有扫描完一轮,继续扫描L2:MOV A,R3 ;将键码传递给AMOV DPTR,#TABLE ;把键码表的表头赋给DPTRMOVC A,A+DPTR ;寄存器偏移寻址MOV P1,A ;将键码对应的数码管显示编码从P1输出,数码管显示相应的数字LJMP MAIN ;返回主函数继续查询DELAY:MOV R2,#10H ; 延时函数,延时5msLOOP3:MOV R1,#250LOOP4:NOPNOPDJNZ R
11、1,LOOP4DJNZ R2,LOOP3RETTABLE:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH;键码表END独立按键中断法:ORG0000H SJMPSTART ;转主函数ORG0013H ;中断程序入口SJMPKEYS ;转中断程序ORG0030HSTART:MOVSP,#20H ;设置中断优先级SETBIT1 ;允许外部中断INT0,并设置触发方式为下跳沿SETBEX1 SETBEA ;允许中断MOVA,#01H ;给A赋初值,为#01HL1:MOVP1,#3FH ;数码管显示0MOVP2,A ;LED灯显示第一个RLA ;LED灯循环左移一
12、位 LCALLDAY ;调用延时SJMPL1 ;LED灯循环KEYS: ;中断响应入口MOVR7,#20H ;延时防抖K1:MOVR6,#0FFHDJNZR7,K1JBP3.3,K2;若是按键抖动,退出中断KEY0:;若是第一个按键按下,第1个灯亮,数码管显示1JBP0.0,KEY1MOVP2,#01HMOVP1,#06HLCALLDAY2RETIKEY1:JBP0.1,KEY2 ;若是第一个按键按下,第2个灯亮,数码管显示2MOVP2,#02HMOVP1,#5BHLCALLDAY2RETIKEY2:JBP0.2,KEY3 ;若是第一个按键按下,第3个灯亮,数码管显示3MOVP2,#04HMO
13、VP1,#4FHLCALLDAY2RETIKEY3:JBP0.3,KEY4 ;若是第一个按键按下,第4个灯亮,数码管显示4MOVP2,#08HMOVP1,#66HLCALLDAY2RETIKEY4:JBP0.4,KEY5 ;若是第一个按键按下,第5个灯亮,数码管显示5MOVP2,#10H MOVP1,#6DHLCALLDAY2RETIKEY5:JBP0.5,KEY6 ;若是第一个按键按下,第6个灯亮,数码管显示6MOVP2,#20HMOVP1,#7DHLCALLDAY2RETIKEY6:JBP0.6,KEY7 ;若是第一个按键按下,第7个灯亮,数码管显示7MOVP2,#40HMOVP1,#07
14、HLCALLDAY2RETIKEY7:JBP0.7,K2 ;若是第一个按键按下,第8个灯亮,数码管显示8MOVP2,#80HMOVP1,#7FHLCALLDAY2K2:RETI ;退出中断DAY: ;延时程序MOVR7,#0FFHL3:MOVR6,#0FFHL2:DJNZR6,L2DJNZR7,L3RETDAY2:;防抖延时程序MOVR5,#0FHWAIT:ACALLDAYDJNZR5,WAITRETEND矩阵键盘查询法:ORG 00HLJMP MAINMAIN:MOV R0,#00HMOV R1,#00HMOV R2,#00HMOV R3,#00HMOV A,#00HAJMP KEYSCAN
15、;键盘扫描程序KEYSCAN:MOV P3,#0F0H;P3高位置高电平,低四位置低电平MOV A,P3;读键盘ANL A,#0F0H;屏蔽高四位,保留低四位XRL A,#0F0H;查询是否有键按下JNZ DELAY;有键按下,调用延时DELAY:MOV R2,#05H;延时程序LOOP1:MOV R3,#0FAHLOOP2:DJNZ R3,LOOP2DJNZ R2,LOOP1MOV A,P3;再读键盘ANL A,#0F0HMOV R0,AXRL A,#0F0HJNZ KEYSCAN1;确定行键码后转至列键码查询函数LJMP KEYSCAN ;没键按下继续查询KEYSCAN1:MOV A,#0
16、0H ;重新初始化AMOV P3,#0FH;将P3高四位置低电平,低四位置高电平MOV A,P3;再读键盘ANL A,#0FH;屏蔽低四位MOV R1,A;缓存键值XRL A,#0FH;若不是按键抖动,转移到键码处理程序JNZ NUMLJMP KEYSCAN;键盘抖动则返回查询程序NUM:MOV A,R0;将列键码给AMOV B,R1;行键码给BORL A,B;将行列键码相与,并存至AMOV DPTR,#TAB;查询键码对应的数码管显示编码SJMP DISP0;转移至显示程序DISP0:CJNE A,#0EEH,DISP1;相应的键码对应相应的显示MOV A,#00HMOVC A,A+DPTR
17、MOV P0,ALCALL DELAY1LJMP KEYSCANDISP1:CJNE A,#0EDH,DISP2MOV A,#01HMOVC A,A+DPTRMOV P0,ALCALL DELAY1LJMP KEYSCANDISP2:CJNE A,#0EBH,DISP3MOV A,#02HMOVC A,A+DPTRMOV P0,ALCALL DELAY1LJMP KEYSCANDISP3:CJNE A,#0E7H,DISP4MOV A,#03HMOVC A,A+DPTRMOV P0,ALCALL DELAY1LJMP KEYSCANDISP4:CJNE A,#0DEH,DISP5MOV A,#
18、04HMOVC A,A+DPTRMOV P0,ALCALL DELAY1LJMP KEYSCANDISP5:CJNE A,#0DDH,DISP6MOV A,#05HMOVC A,A+DPTRMOV P0,ALCALL DELAY1LJMP KEYSCANDISP6:CJNE A,#0DBH,DISP7MOV A,#06HMOVC A,A+DPTRMOV P0,ALCALL DELAY1LJMP KEYSCANDISP7:CJNE A,#0D7H,DISP8MOV A,#07HMOVC A,A+DPTRMOV P0,ALCALL DELAY1LJMP KEYSCANDISP8:CJNE A,#0
19、BEH,DISP9MOV A,#08HMOVC A,A+DPTRMOV P0,ALCALL DELAY1LJMP KEYSCANDISP9:CJNE A,#0BDH,DISPAMOV A,#09HMOVC A,A+DPTRMOV P0,ALCALL DELAY1LJMP KEYSCANDISPA:CJNE A,#0BBH,DISPBMOV A,#0AHMOVC A,A+DPTRMOV P0,ALCALL DELAY1LJMP KEYSCANDISPB:CJNE A,#0B7H,DISPCMOV A,#0BHMOVC A,A+DPTRMOV P0,ALCALL DELAY1LJMP KEYSCA
20、NDISPC:CJNE A,#07EH,DISPDMOV A,#0CHMOVC A,A+DPTRMOV P0,ALCALL DELAY1LJMP KEYSCANDISPD:CJNE A,#07DH,DISPEMOV A,#0DHMOVC A,A+DPTRMOV P0,ALCALL DELAY1LJMP KEYSCANDISPE:CJNE A,#07BH,DISPFMOV A,#0EHMOVC A,A+DPTRMOV P0,ALCALL DELAY1LJMP KEYSCANDISPF:CJNE A,#077H,KEYMOV A,#0FHMOVC A,A+DPTRMOV P0,ALCALL DELAY1LJMP KEYSCANDELAY1:;延时程序MOV R2,#0FHLOOP10:MOV R3,#0FAHLOOP20:DJNZ R3,LOOP20DJNZ R2,LOOP10RETKEY:LJMP MAINTAB:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H;EN
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 制漆配色调制工安全宣贯强化考核试卷含答案
- 石灰煅烧工岗中协同实操考核试卷含答案
- 初二【物理(北京版)】连通器 学习任务单
- 2022考研浙江大学数学分析习题集(真题+答案对照)
- 别克认证试题全解及对应答案
- 2.1.1有理数的加法 同步练习(含解析)-人教版数学七年级上册
- 2023 基础设施监控系统北向接口规范
- 公共财务基础试题及答案
- 2026年春招:中国民航信息真题及答案
- 病原真菌学试题及答案
- 设计开发变更管理制度
- GB/T 18462-2025激光加工机械金属切割的性能规范
- 2025年云上贵州大数据(集团)有限公司招聘笔试参考题库含答案解析
- 电路中电位的概念及计算(电工基础课件)
- DB51∕T 2512-2018 ACMP温拌改性沥青应用技术
- Unit-2-A-great-picture(课件)-二年级英语上学期(人教PEP版2024)
- 色盲检测图(俞自萍第五版)课件
- 色盲检测图(俞自萍第六版)
- GB/T 3836.34-2021爆炸性环境第34部分:成套设备
- GB/T 28732-2012固体生物质燃料全硫测定方法
- 设计艺术学研究方法-第四章-课件
评论
0/150
提交评论