已阅读5页,还剩25页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第七章 MCS-51与键盘、显示器的接口 第七章 MCS-51与键盘、显示器的接口 7.1 MCS-51单片机与键盘接口 7.1.1 键盘的工作原理 键盘实际上是一组按键开关的集合,平时按键开关总是处于断开状态 ,当按下键时它才闭合。它的结构和产生的波形如图所示。 P1.1 VCC GND 断开 闭合 断开 P1.1 ( a )( b ) 第七章 MCS-51与键盘、显示器的接口 键盘的处理主要涉及三个方面: 1按键的识别 2抖动的消除 消除按键盘抖动通常有两种方法:硬件消抖和软件消抖。 硬件消抖是通过在按键输出电路上加一定的硬件线路来消除抖动, 一般采用RS触发器或单稳态电路。如图。 断开 闭合 +5V +5V 输出 软件消抖是利用延时来跳过抖动过程 第七章 MCS-51与键盘、显示器的接口 3键位的编码 通常有两种方法编码。 (1)用连接键盘的I/O线的二进制组合进行编码。如(a)图 (2)顺序排列编码。如(b)图,处理方法如下:编码值=行首编 码值X+列号Y。 P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 88 84 82 81 48 44 42 41 28 24 22 21 18 14 12 11 P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 F E D C B A 9 8 7 6 5 4 3 2 1 0 ( a )( b ) 第七章 MCS-51与键盘、显示器的接口 7.1.2 独立式键盘与单片机的接口 键盘的结构形式一般有两种:独立式键盘与矩阵式键盘。 独立式键盘就是各按键相互独立,每个按键各接一根I/O口线,每根 I/O口线上的按键都不会影响其它的I/O口线。 GN D VCC GN D VCC 或 ( b ) 8051 ( a ) INT 0 8051 P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 第七章 MCS-51与键盘、显示器的接口 图(a)为中断方式工作的独立式键盘的结构形式,(b)为查询 方式工作的独立式键盘的结构形式 下面是针对图7.4(b)图查询方式的汇编语言形式的键盘程序。总 共有8个键位,KEY0KEY7为8个键的功能程序。 START:MOV A,#0FFH; MOV P1,A ;置P1口为输入状态 MOV A,P1 ;键状态输入 CPL A JZ START ;没有键按下,则转开始 JB ACC.0,K0 ;检测0号键是否按下,按下转 JB ACC.1,K1 ;检测1号键是否按下,按下转 JB ACC.2,K2 ;检测2号键是否按下,按下转 JB ACC.3,K3 ;检测3号键是否按下,按下转 JB ACC.4,K4 ;检测4号键是否按下,按下转 JB ACC.5,K5 ;检测5号键是否按下,按下转 JB ACC.6,K6 ;检测6号键是否按下,按下转 JB ACC.7,K7 ;检测7号键是否按下,按下转 JMP START ;无键按下返回,再顺次检测 第七章 MCS-51与键盘、显示器的接口 K0:AJMP KEY0 K1:AJMP KEY1 K7:AJIMP KEY7 KEY0: ;0号键功能程序 JMP START ;0号键功能程序执行完返回 KEY1: ;0号键功能程序 JMP START ;1号键功能程序执行完返回 KEY7: ;7号键功能程序 JMP START ;7号键功能程序执行完返回 7.1.3 矩阵键盘与单片机的接口 矩阵式键盘又叫行列式键盘。用I/O口线组成行、列结构,键位 设置在行列的交点上。例如44的行、列结构可组成16个键的键盘, 比一个键位用一根I/O口线的独立式键盘少了一半的I/O口线。 第七章 MCS-51与键盘、显示器的接口 矩阵键盘的连接方法有多种,可直接连接于单片机的I/O口线;可利 用扩展的并行I/O口连接;也可利用可编程的键盘、显示接口芯片( 如8279)进行连接等等。其中,利用扩展的并行I/O口连接方便灵活 ,在单片机应用系统中比较常用。下图就是通过8255A芯片扩展的 并行I/O口连接48的矩阵键盘。 PA7 PA6 PA5 PA4 PA3 PA2 PA1 PA0 PC0 PC1 PC2 PC3 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 316 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 CS 74LS373 W R RD A1 A0 P2.7 WR RD ALE P0.0P0.7D0D7 RESET 1K 20F +5V +5V 8255 5.1K4 8051 第七章 MCS-51与键盘、显示器的接口 一矩阵键盘的工作过程 对矩阵键盘的工作过程可分两步:第一步是CPU首先检测键盘 上是否有键按下;第二步是再识别是哪一个键按下。 1检测键盘上是否有键按下处理方法是:将列线送入全扫描字, 读入行线的状态来判别。其具体过程如下:PA口输出00H,即所有列 线置成低电平,然后将行线电平状态读入累加器A中。如果有键按下 ,总会有一根行线电平被拉至低电平,从而使行输入状态不全为“1“。 2识别键盘中哪一个键按下处理方法是:将列线逐列置低电平, 检查行输入状态,称为逐列扫描。其具体过程如下:从PA0开始,依 次输出“0”,置对应的列线为低电平,然后从PC口读入行线状态,如 果全为“1”,则按下的键不在此列;如果不全为“1”,则按下的键必在此 列,而且是该列与“0”电平行线相交的交点上的那个键。为求取编码, 在逐列扫描时,可用计数器记录下当前扫描列的列号,检测到第几行 有键按下,就用该行的首键码加列号得到当前按键的编码。 二矩阵键盘的工作方式 第七章 MCS-51与键盘、显示器的接口 1查询工作方式 这种方式是直接在主程序中插入键盘检测子程序,主程序每执 行一次则键盘检测子程序被执行一次,对键盘进行检测一次,如果 把没有键按下,则跳过键识别,直接执行主程序;如果有键按下, 则通过键盘扫描子程序识别按键,得到按键的编码值,然后根据编 码值进行相应的处理,处理完后再回到主程序执行。键盘扫描子程 序流程如图 。 开始 有键按下否? 调用6ms延时子程序? 调用12ms延时子程序? 有键按下否? 判闭合键,编码入栈保护 闭合键释放否? 编码A 返回 否 否 否 是 是 是 第七章 MCS-51与键盘、显示器的接口 键盘扫描子程序如下:(硬件线路如图7.4,8255A的A口、B口、C 口和控制口地址分别为7F00H、7F01H、7F02H、7F03H,设8255A 已在主程序中初始化。已设定为A口方式0输出,C口的低4位方式0输 入。) KEY1:ACALL KS1 ;调用判断有无键按下子程序 JNZ LK1 ;有键按下时,(A)0转消抖延时 KEY2:ACALL TM6ms AJMP KEY1 ;无键按下返回 LK1:ACALL TM12ms ;调12 ms延时子程序 ACALL KS1 ;查有无键按下,若有则真有键按下 JNZ LK2 ;键(A) 0逐列扫描 AJMP KEY2 ;不是真有键按下,返回 LK2:MOV R2,#0FEH ;初始列扫描字(0列)送入R2 MOV R4,#00H ;初始列(0列)号送入R4 LK4:MOV DPTR,#7F00H ;DPTR指向8155PA口 MOV A,R2 ;列扫描字送至8155PA口 MOVX DPTR,A INC DPTR ;DPTR指向8155PC口 INC DPTR 第七章 MCS-51与键盘、显示器的接口 MOVX A,DPTR ;从8155 PC口读入行状态 JB ACC.0,LONE ;查第0行无键按下,转查第1行 MOV A,#00H ;第0行有键按下,行首键码#00HA AJMP LKP ;转求键码 LONE:JB ACC.1,LTWO ;查第1行无键按下,转查第2行 MOV A,#08H ;第1行有键按下,行首键码#08HA AJMP LKP ;转求键码 LTWO:JB ACC.2,LTHR ;查第2行无键按下,转查第3行 MOV A,#10H ;第2行有键按下,行首键码#10HA AJMP LKP ;转求键码 LTHR:JB ACC.3,NEXT ;查第3行无键按下,转该查下一列 MOV A,#18H ;第3行有键按下,行首键码#18HA LKP:ADD A,R4 ;求键码,键码=行首键码+列号 PUSH ACC ;键码进栈保护 LK3:ACALL KS1 ;等待键释放 JNZ LK3 ;键未释放,等待 POP ACC ;键释放,键码A RET ;键扫描结束,出口状态(A)=键码 第七章 MCS-51与键盘、显示器的接口 NEXT:INC R4 ;准备扫描下一列,列号加1 MOV A,R2 ;取列扫描字送累加器A JNB ACC.7,KEND ;判断8列扫描否?扫描完返回 RL A ;扫描字左移一位,变为下一列扫描字 MOV R2,A ;扫描字送入R2保存 AJMP LK4 ;转下一列扫描 KEND:AJMP KEY1 KS1:MOV DPTR,#7F00H ;DPTR指向8155PA口 MOV A,#00H ;全扫描字A MOVX DPTR,A ;全扫描字送往8155PA口 INC DPTR ;DPTR指向8155PC口 INC DPTR MOVX A,DPTR ;读入PC口行状态 CPL A ;变正逻辑,以高电平表示有键按下 ANL A,#0FH ;屏蔽高4位,只保留低4位行线值 RET ;出口状态:(A)0时有键按下 第七章 MCS-51与键盘、显示器的接口 TM12ms:MOV R7,#18H ;延时12 ms子程序 TM:MOV R6,#0FFH TM6:DJNZ R6,TM6 DJNZ R7,TM RET TM6ms:MOV R7,#0CH ;延时6 ms子程序 TM2:MOV R6,#0FFH TM62:DJNZ R6,TM6 DJNZ R7,TM RET C语言键盘扫描子程序:略 2定时扫描工作方式 3中断处理方式 第七章 MCS-51与键盘、显示器的接口 7.2 MCS-51单片机与LED显示器接口 7.2.1 LED显示器的结构与原理 在单片机应用系统中通常使用的是8段式LED数码管显示器,它有共 阴极和共阳极两种,如图所示。 a b c d e f g dp com a b c d e f g dp com a b c d e f g dp 10 9 8 7 6 1 2 3 4 5 g f com a b e d com c dp ( a ) ( b ) (c ) 第七章 MCS-51与键盘、显示器的接口 其中:(a)为共阴极结构。(b)为共阳极结构。(c)图为管脚 图,从ag管脚输入不同的8位二进制编码,可显示不同的数字或 字符。共阴极和共阳极的字段码互为反码 。 显示字符共阴极字段码共阳极字段码显示字符共阴极字段码共阳极字段码 03FHC0HC39HC6H 106HF9HD5EHA1H 25BHA4HE79H86H 34FHB0HF71H8EH 466H99HP73H8CH 56DH92HU3EHC1H 67DH82HT31HCEH 707HF8HY6EH91H 87FH80HL38HC7H 96FH90H8FFH00H A77H88H“灭”00FFH B7CH83H 第七章 MCS-51与键盘、显示器的接口 7.2.2 LED数码管显示器的译码方式 一硬件译码方式 译码方式是指由显示字符转换得到对应的字段码的方式 硬件译码方式是指利用专门的硬件电路来实现显示字符到字段码 的转换,这样的硬件电路有很多,比如MOTOTOLA公司生产的 MC14495芯片就是其中的一种,MC14495是共阴极一位十六进制数 字段码转换芯片,能够输出用四位二进制表示形式的一位十六进制 数的七位字段码,不带小数点。它的内部结构如图。 4 锁 存 器 地址 译码 和字 段码 ROM 阵列 A B C D LE 5 6 9 10 7 Vss VD D 8 16 a b c d e f g h+i VC R 11 12 13 14 15 1 2 3 4 第七章 MCS-51与键盘、显示器的接口 二软件译码方式 软件译码方式就是通过编写软件译码程序,通过译码程序来得到要 显示的字符的字段码。 7.2.3 LED数码管的显示方式 一LED静态显示 LED静态显示时,其公共端直接接地(共阴极)或接电源(共阳极 ),各段选线分别与I/O口线相连。要显示字符,直接在I/O线送相应的 字段码。 a b c d e f g dp I/O(1) a b c d e f g dp I/O(2) 第七章 MCS-51与键盘、显示器的接口 二LED动态显示方式 LED动态显示是将所有的数码管的段选线并接在一起,用一个 I/O口控制,公共端不是直接接地(共阴极)或电源(共阳极),而 是通过相应的I/O口线控制。 D3D2D1D0 I/O(1) I/O(2) 第七章 MCS-51与键盘、显示器的接口 设数码管为共阳极,它的工作过程为:第一步使右边第一个数码 管的公共端D0为1,其余的数码管的公共端为0,同时在I/O(1)上送 右边第一个数码管的字段码,这时,只有右边第一个数码管显示,其余 不显示;第二步使右边第二个数码管的公共端D1为1,其余的数码管的 公共端为0,同时在I/O(1)上送右边第二个数码管的字段码,这时, 只有右边第二个数码管显示,其余不显示,依此类推,直到最后一个, 这样四个数码管轮流显示相应的信息,一个循环完后,下一循环又这样 轮流显示,从计算机的角度看是一个一个的显示,但由于人的视觉滞留 ,只要循环的周期足够快,看起来所有的数码管都是一起显示的了。这 就是动态显示的原理。而这个循环周期对于计算机来说很容易实现。所 以在单片机中经常用到动态显示。 7.2.4 LED显示器与单片机的接口 LED显示器从译码方式上有硬件译码方式和软件译码方式。从显示 方式上有静态显示方式和动态显示方式。在使用时可以把它们组合起 来。在实际应用时,如果数码管个数较少,通常用硬件译码静态显示 ,在数码管个数较多时,则通常用软件译码动态显示。 第七章 MCS-51与键盘、显示器的接口 一硬件译码静态显示 下图是一个两位数码管硬件译码静态显示的接口电路图。 a b c d e f g MC14495 a b c d e f g a b c d e f g A B C D LE MC14495 a b c d e f g A B C D LE P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 8051 第七章 MCS-51与键盘、显示器的接口 二软件译码动态显示 下图是一个8位软件译码动态显示的接口电路图。图中用8255A 扩展并行I/O口接数码管,数码管采用动态显示方式,8位数码 管的段选线并联与8255A的A口通过74LS373相连,8位数码管 的公共端通过74LS373分别与8255A的B口相连。也即8255A的 B口输出位选码选择要显示的数码管,8255A的A口输出字段码 使数码管显示相应的字符,8255A的A口和B口都工作于方式0输 出。A口、B口、C口和控制口的地址分别为7F00H、7F01H、 7F02H和7F03H。 第七章 MCS-51与键盘、显示器的接口 D0D1D2D7 Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 D0 D1 D2 D3 D4 D5 D6 D7 G OE VCC 74LS373 Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 D0 D1 D2 D3 D4 D5 D6 D7 G OE VCC 74LS373 PA0 PA1 PA2 PA3 PA4 PA5 PA6 PA7 PB0 PB1 PB2 PB3 PB4 PB5 PB6 PB7 CS WR RD 74LS373 P2.7 WR RD ALE P0.0P0.7 8051 D0D7 A1 A0 GA1 A0 8255 第七章 MCS-51与键盘、显示器的接口 软件译码动态显示汇编语言程序为:(设8个数码管的显示缓冲 区为片内RAM的57H50H单元) DISPLAY:MOV A,#10000000B ;8255初始化 MOV DPTR,#7F03H ;使DPTR指向8155控制寄存器端 口 MOVX DPTR,A MOV R0,#57H ;动态显示初始化,使R0指向缓冲区首 址 MOV R3,#7FH ;首位位选字送R3 MOV A,R3 LD0:MOV DPTR,#7F00H ;使DPTR指向PA口 MOVX DPTR,A ;选通显示器低位(最右端一位) INC DPTR ;使DPTR指向PB口 MOV A,R0 ;读要显示数 ADD A,#0DH ;调整距段选码表首的偏移量 MOVC A,A+PC ;查表取得段选码 MOVX DPTR,A ;段选码从PB口输出 ACALL DL1 ;调用1 ms延时子程序 DEC R0 ;指向缓冲区下一单元 MOV A,R3 ;位选码送累加器A 第七章 MCS-51与键盘、显示器的接口 JNB ACC.0,LD1 ;判断8位是否显示完毕,显示完返回 RR A ;未显示完,把位选字变为下一位选字 MOV R3,A ;修改后的位选字送R3 AJMP LD0 ;循环实现按位序依次显示 LD1:RET TAB:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H ;字 段码表 DB: 7FH,6FH,77H,7CH,39H,5EH,79H,71H DL1:MOV R7,#02H ;延时子程序 DL: MOV R6,#0FFH DL0:DJNZ R6,DL0 DJNZ R7,DL RET 第七章 MCS-51与键盘、显示器的接口 软件译码动态显示C语言程序为: #include #include /定义绝对地址访问 #define uchar unsigned char #define uint unsigned int void delay(uint); /声明延时函数 void display(void); /声明显示函数 uchar disbuffer8=0,1,2,3,4,5,6,7; /定义显示缓冲区 void main(void) XBYTE0x7f03=0x80; /8255A初始化 while(1) display(); /设显示函数 /*延时函数* void delay(uint i) /延时函数 uint j; for (j=0;ji;j+) 第七章 MCS-51与键盘、显示器的接口 /*显示函数 void display(void) /定义显示函数 uchar c
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年二级建造师考试试题含答案详解(培优a卷)
- 2025年安全教育培训试题含答案【巩固】
- 2025年幼儿教师资格证综合素质考试题库及答案1
- 安全员之B证(项目负责人)题库完整答案
- 安全员a证考试题库
- 劳务作业人员普法维权培训考试试卷答案
- 2025年中级会计考试《财务管理》试题及答案
- 二建资料题库及答案内部题库
- 低压电工考试题库(含答案)
- 变态反应试题库及答案(副高)
- 2025年安全信息考试试题及答案
- 2025衢州市市级机关事业单位第三期编外招聘39人笔试考试参考试题及答案解析
- 2025标准网签购房合同范本下载
- 云南人力资源开发有限责任公司招聘笔试题库2025
- 人教版八年级上册生物第五单元第一章综合实践项目 设计并制作生态瓶
- 山西某污水处理厂投资估算编制分析
- 2025全国医疗应急能力培训系列课程参考答案
- 江西体彩中心笔试题库及答案
- 理性看待分数用心守护成长+2025-2026学年高二上学期期中家长会主题班会
- 网络安全技术课件下载
- 上海安保考试题目及答案
评论
0/150
提交评论