武汉理工大学-监测与控制课实验报告-实验1---键盘接口电路_第1页
武汉理工大学-监测与控制课实验报告-实验1---键盘接口电路_第2页
武汉理工大学-监测与控制课实验报告-实验1---键盘接口电路_第3页
武汉理工大学-监测与控制课实验报告-实验1---键盘接口电路_第4页
武汉理工大学-监测与控制课实验报告-实验1---键盘接口电路_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、学生学号 实验课成绩学 生 实 验 报 告 书实验课程名称监测控制系统应用开 课 学 院信息工程学院指导教师姓名×××学 生 姓 名×××学生专业班级×××2015-2016学年第2学期 实验课程名称: 监测控制系统应用 实验项目名称键盘接口电路的设计与实现实验成绩实 验 者专业班级组 别同 组 者实验日期 一、实验目的、意义:(1)键盘是微机应用系统中必不可少的输入设备,掌握键盘电路硬件和软件的设计技巧(2)学会设计出满足各种需要、适应各种场合的键盘电路。二、实验内容:(1) 设计8个按键的独立键盘和4

2、×4矩阵键盘的硬件电路和软件(2) 按键识别上分别采用查询法和中断方式(3) 在开发板上搭建电路,设计好的程序编译后写入开发板中,检验相应键盘的性能。具体任务是:(1)分别设计出独立键盘和4×4矩阵键盘的硬件电路和软件,并且这两种键盘又分别采用查询式和中断方式识别按键,即设计4种键盘;(2)选择开发板上的LED显示器或LED灯或其他作为检验键盘是否有效的输出设备,设计出完整的带检验电路的键盘实验电路系统(4套)。(3)用proteous仿真电路,保证设计的正确性;(4)基于开发板完成实物制作;3、 探究内容:(1)键盘设计需要考虑那些问题(按键识别、消抖、键值)(2)键盘硬

3、件电路的设计方法(3)键盘软件设计方法(软件实现哪些功能)(4)比较独立键盘和矩阵键盘的特点(5)比较查询法和中断法识别按键性能上的不同 基于以上探究内容,进行本次实验的设计4、 实验设计:1、键盘接口的基本任务:(1)判断是否有键按下(2)确定按键的键值(3)消除开关抖动,避免一次键重复读入(4)无论按键时间长短,只读取一次数据2、 独立键盘设计: 单片机控制系统中,往往只需要几个功能键,此时,可采用独立式按键结构。 独立式按键是直接用 I/O 口线构成的单个按键电路,其特点是每个按键单独占用一根 I/O 口线,每个按键的工作不会影响其它 I/O 口线的状态。独立式按键的典型应用如图1所示。

4、 独立式按键电路配置灵活,软件结构简单,但每个按键必须占用一根 I/O 口线,因此,在按键较多时, I/O 口线浪费较大,不宜采用。 图1 独立键盘电路连接a、 查询式电路连接如图2所示,P0与开关相连,P1与数码管相连用于显示。如何实现键盘的设计?先逐位查询每根 I/O 口线的输入状态,如某一根 I/O 口线输入为低电平,则可确认该 I/O 口线所对应的按键已按下,然后,再转向该键的功能处理程序。通过设计一个合适的延时程序来消除开关抖动,避免一次键重复读入,并且,保证无论按键时间长短,只读取一次数据。图2 独立键盘查询电路程序如下:org 0000hSTART:MOV A,#0FFH ; M

5、OV P0,A ;置P1口为输入状态 MOV A,P0 ;键状态输入 JNB ACC.0,K0 ;检测0号键是否按下,按下转 JNB ACC.1,K1 ;检测1号键是否按下,按下转 JNB ACC.2,K2 ;检测2号键是否按下,按下转 JNB ACC.3,K3 ;检测3号键是否按下,按下转 JNB ACC.4,K4 ;检测4号键是否按下,按下转 JNB ACC.5,K5 ;检测5号键是否按下,按下转 JNB ACC.6,K6 ;检测6号键是否按下,按下转 JNB ACC.7,K7 ;检测7号键是否按下,按下转 JMP START K0: ACALL DAY1 mov a,p0 JNB ACC

6、.0,PROM0 JMP PROM0K1:ACALL DAY1 mov a,p0 JNB ACC.1,START JMP PROM1k2:ACALL DAY1 mov a,p0 JNB ACC.2,START JMP PROM2k3:ACALL DAY1 mov a,p0 JB ACC.3,START JMP PROM3k4:ACALL DAY1 mov a,p0 JNB ACC.4,START JMP PROM4k5:ACALL DAY1 mov a,p0 JNB ACC.5,START JMP PROM5k6:ACALL DAY1 mov a,p0 JNB ACC.6,STARTJMP P

7、ROM6k7: ACALL DAY1 mov a,p0 JNB ACC.7,START JMP PROM7PROM0:MOVDPTR,#TAB MOVA,#00H MOVCA,A+DPTR MOVP1,A ACALLDAY2 JMP START prom1: MOVDPTR,#TAB MOVA,#01H MOVC A,A+DPTR MOV P1,A ACALL DAY2 JMP START prom2: MOVDPTR,#TAB MOVA,#02H MOVC A,A+DPTR MOVP1,A LCALLDAY2JMP START prom3: MOVDPTR,#TAB MOVA,#03H MO

8、VCA,A+DPTR MOVP1,ALCALLDAY2 JMP START prom4: MOVDPTR,#TAB MOVA,#04H MOVCA,A+DPTR MOVP1,A ACALLDAY2 JMP START prom5: MOVDPTR,#TAB MOVA,#05H MOVCA,A+DPTR MOVP1,A ACALLDAY2 JMP START prom6: MOVDPTR,#TAB MOVA,#06H MOVCA,A+DPTR MOVP1,A ACALLDAY2 JMP START prom7: MOVDPTR,#TAB MOVA,#07H MOVCA,A+DPTR MOVP1,

9、A ACALLDAY2 JMP START DAY1:MOVR0,#0AHDL2:MOVR1,#0FFHDL1:DJNZR1,DL1DJNZR0,DL2RETDAY2:MOVR4,#0FFHACALLDAY1DL00:MOVR5,#0FFHACALLDAY1DL11:DJNZR5,DL11DJNZR4,DL00RETTAB:DB0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H;共阳数码管ENDb、中断式 与独立键盘的查询式电路基本相同,不同的是,中断式的P0端8个口通过一个8输入与门相连,输出接至P3.2。当有按键按下时,P3.2会从高电平变为低电平,从而转去中断子程序执

10、行按键后的显示。图3 独立键盘中断式电路程序如下:org 0000hJMP MAINorg 0003hJMP INTV0ORG 0030H;主程序MAIN: MOV p0,#0FFH SETB IT0SETB EX0SETB EAMOVA,#3FH MOVP1,AHERE: SJMP HERE;中断子程序INTV0:ACALLDAY1 JB P3.2,HERE JNB ACC.0,K0 ;检测0号键是否按下,按下转 JNB ACC.1,K1 ;检测1号键是否按下,按下转 JNB ACC.2,K2 ;检测2号键是否按下,按下转 JNB ACC.3,K3 ;检测3号键是否按下,按下转 JNB AC

11、C.4,K4 ;检测4号键是否按下,按下转 JNB ACC.5,K5 ;检测5号键是否按下,按下转 JNB ACC.6,K6 ;检测6号键是否按下,按下转 JNB ACC.7,K7 ;检测7号键是否按下,按下转 JMPHEREK0: MOVDPTR,#TAB MOVA,#00H MOVC A,A+DPTR MOVP1,A ACALLDAY2 RETI K1: MOVDPTR,#TAB MOVA,#01H MOVC A,A+DPTR MOV P1,A ACALL DAY2 RETIK2: MOVDPTR,#TAB MOVA,#02H MOVC A,A+DPTR MOVP1,A ACALLDAY2

12、RETIK3: MOVDPTR,#TAB MOVA,#03H MOVCA,A+DPTR MOVP1,A ACALLDAY2 RETI K4: MOVDPTR,#TAB MOVA,#04H MOVCA,A+DPTR MOVP1,A ACALLDAY2 RETIK5: MOVDPTR,#TAB MOVA,#05H MOVCA,A+DPTR MOVP1,A ACALLDAY2 RETIK6: MOVDPTR,#TAB MOVA,#06H MOVCA,A+DPTR MOVP1,A ACALL DAY2 RETIK7: MOVDPTR,#TAB MOVA,#07H MOVCA,A+DPTR MOVP1,

13、A ACALLDAY2 RETI DAY1: ;延时子程序 MOVR0,#0AHDL2:MOVR1,#0FFHDL1: DJNZR1,DL1 DJNZR0,DL2 RETDAY2: MOVR4,#0FFH ACALLDAY1DL00: MOVR5,#0FFH ACALL DAY1DL11: DJNZR5,DL11 DJNZR4,DL00 RETTAB:DB 0f9H,0a4H,0b0H,99H,092H,82H,0f8H,80HEND3、 矩阵键盘设计: 矩阵式键盘中,行、列线分别连接到按键开关的两端,行线通过上拉电阻接到5V 上。当无键按下时,行线处于高电平状态;当有键按下时,行、列线将导通

14、,此时,行线电平将由与此行线相连的列线电平决定。a、 查询式: P0.0-P0.3为键盘的行输入线,P0.4-P0.7为列输出线,P0与数码管相连。对每个键的编码值进行编码,对应按键按下时数码管要显示的值送入该编码键地址。程序如下:ORG 0000HMOV A,#0C0HMOV R1,#0EEHMOV R1,AMOV A,#0F9HMOV R1,#0DEHMOV R1,AMOV A,#0A4HMOV R1,#0BEHMOV R1,AMOV A,#0B0HMOV 07EH,AMOV A,#99HMOV R1,#0EDHMOV R1,AMOV A,#92HMOV R1,#0DDHMOV R1,AM

15、OV A,#82HMOV R1,#0BDHMOV R1,AMOV A,#0F8HMOV R1,#07DHMOV R1,AMOV A,#80HMOV R1,#0EBHMOV R1,AMOV A,#90HMOV R1,#0DBHMOV R1,AMOV A,#88HMOV R1,#0BBHMOV R1,AMOV A,#83HMOV R1,#07BHMOV R1,AMOV A,#0C6H MOV R1,#0E7H MOV R1,A MOV A,#0A1H MOV R1,#0D7H MOV R1,A MOV A,#86H MOV R1,#0B7H MOV R1,A MOV A,#8EH MOV 077H

16、,ATEST: ACALL DAY MOV P0,#0F0H MOV A,P0 ANL A,#0F0H CJNE A,#0F0H,HAVE SJMP TESTHAVE: MOV A,#0FEHNEXT: MOV B,A MOV P0,AREAD: MOV A,P0 ANL A,#0F0H CJNE A,#0F0H,YES MOV A,B RL A CJNE A,#0EFH,NEXTYES: ACALL DAYAREAD: MOV A,P0 ANL A,#0F0H MOV R2,A MOV A,B ANL A,#0FH ORL A,R2 ;键编码YES1: MOV R0,A MOV P1,R0

17、ACALL DAY JMP TESTDAY:MOVR0,#0FFHDL2:MOVR1,#0FFHDL1: NOP NOP DJNZ R1,DL1 DJNZ R0,DL2 RETEND b、中断式: 设计原理:计算机应用系统工作时,并不经常需要键输入。但无论是查询工作方式还是定时扫描工作方式,CPU经常处于空扫描状态。为了提高CPU的效率,可采用中断工作方式。这种工作方式是当键盘上有键按下时,向CPU发一个中断请求信号,CPU响应中断后,在中断服务程序中扫描键盘,执行键功能程序。程序如下:#include<reg52.h>unsigned char code table=0x3f,0

18、x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;void yanshi()/延时子程序unsigned char x;for(x=0;x<250;x+);int shibie()/扫描识别子程序unsigned char x=0xef,y;int n,m;for(n=0;n<4;n+)P0=x;/在这里P0高四位的电平如果影响了P0的低四位这里采集器就会撤销中断。y=(P0)&0x0f;switch(y)case 0x01:m=0;return(m*4+n);case 0x0

19、2:m=1;return(m*4+n);case 0x04:m=2;return(m*4+n);case 0x08:m=3;return(m*4+n);x=(x<<1)+1;void zd()interrupt 0unsigned char i;yanshi();P0=0x0f;if(P0=0x0f)goto lab;/如果条件成立,说明是抖动产生的中断,应当回避。跳转i=shibie();P1=tablei;P0=0x0f;/这里会引起P0低四位的一个向上沿从而导致程序不稳定最终失控的中断信号。lab:; /跳转标志,直接跳过中断程序内容,直接到尾部void main()EA=1

20、;EX0=1;IT0=1;P1=0x00;P0=0x0f;while(1);五、实验内容:1、在KEIL 中建立project ,分别输入源程序,编译成功后,生成.HEX文件。2、在PROTEUS中搭建电路,将对应的.HEX文件导入仿真电路中,进行仿真。3、观察仿真现象,调整延时时间长短,观察现象,检验四种键盘的性能。A 独立键盘查询式:(1) 按下一个键,数码管显示对应的数字。(2) 当某按键一直按下(按下时间很长)时,数码管显示对应数字。 (3)当按下键的速度非常快时,数码管未显示对应的数字 原因分析: 程序中的消抖程序延时过长采取措施: 将延时程序的延时时间变短 (3)以正常手速按下键,数码管正确显示,减少消抖时间,继续按键实验,最后确定,消抖时间为510ms合适B 独立键盘中断方式:与独立键盘查询式检验类似,最后确定其合适的消抖时间为510ms,与独立键盘查询式现象相比,中断式的反应时间更短,即,在相同的条件下,当按键按下时,中断式的键盘显示更快一些,反应更灵敏。 C 矩阵键盘查询式: 与独立键盘查询式检验类似,每个键按下,数码管都显示对应的值,最后确定其合适的消抖时间为510msD 矩阵键盘中断式:与矩阵键盘查询式检验类似,最后确定其合适的消抖时间为 510ms,与矩阵键盘查询式现象相比,中

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论