单片机和键盘显示器装置接口_第1页
单片机和键盘显示器装置接口_第2页
单片机和键盘显示器装置接口_第3页
单片机和键盘显示器装置接口_第4页
单片机和键盘显示器装置接口_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

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

文档简介

第7章MCS-51单片机与键盘、显示器的接口主要内容7.4MCS-51单片机与键盘接口7.5MCS-51单片机与LED显示器接口7.6MCS-51单片机与行程开关、晶闸管、继电器的接口7.4MCS-51单片机与键盘接口键盘是人机接口的重要部件键盘实际上是由排列成矩阵形式的一系列按键开关组成,用户通过键盘可以向CPU输入数据、地址和命令。7.4.1键盘的工作原理

7.4MCS-51单片机与键盘接口P1.1VCCGND断开闭合断开P1.1(a)(b)

键盘实际上是一组按键开关的集合,平时按键开关总是处于断开状态,当按下键时它才闭合。键盘的处理主要涉及三个方面:1.按键的识别:根据输出信号的高低电平来确定2.抖动的消除消除按键盘抖动通常有两种方法:硬件消抖和软件消抖。断开闭合+5V+5V输出软件消抖是利用延时来跳过抖动过程7.4MCS-51单片机与键盘接口3.键位的编码通常有两种方法编码。(1)用连接键盘的I/O线的二进制组合进行编码。如(a)图(2)顺序排列编码。如(b)图,处理方法:编码值=行首编码值X+列号Y。7.4MCS-51单片机与键盘接口P1.088848281484442412824222118141211FEDCBA9876543210(a)(b)P1.1P1.2P1.3P1.4P1.5P1.6P1.7P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.77.4MCS-51单片机与键盘接口7.4.2独立式键盘与单片机的接口键盘的安装方式有两种:

独立式键盘:当按键个数为1-4个矩阵式键盘:当按键个数>4独立式键盘就是各按键相互独立,每个按键各接一根I/O口线,每根I/O口线上的按键都不会影响其它的I/O口线。图(a)为中断方式工作的独立式键盘的结构形式,(b)为查询方式工作的独立式键盘的结构形式GNDVCCGNDVCC与(b)8051(a)INT08051P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.77.4MCS-51单片机与键盘接口

针对查询方式的汇编语言形式的键盘程序。总共有8个键位,KEY0~KEY7为8个键的功能程序。START:MOVA,#0FFH;MOVP1,A;置P1口为输入状态MOVA,P1;键状态输入CPLAJZSTART;没有键按下,则转开始JBACC.0,Key0;检测0号键是否按下,按下转JBACC.1,Key1;检测1号键是否按下,按下转JBACC.2,Key2;检测2号键是否按下,按下转JBACC.3,Key3;检测3号键是否按下,按下转JBACC.4,Key4;检测4号键是否按下,按下转JBACC.5,Key5;检测5号键是否按下,按下转JBACC.6,Key6;检测6号键是否按下,按下转JBACC.7,Key7;检测7号键是否按下,按下转JMPSTART;无键按下返回,再顺次检测7.4MCS-51单片机与键盘接口KEY0:……;0号键功能程序JMPSTART;0号键功能程序执行完返回KEY1:……;0号键功能程序JMPSTART;1号键功能程序执行完返回……KEY7:……;7号键功能程序JMPSTART;7号键功能程序执行完返回7.4MCS-51单片机与键盘接口下图就是通过8255A芯片扩展的并行I/O口连接48的矩阵键盘。PA7PA6PA5PA4PA3PA2PA1PA0PC0PC1PC2PC30123456789101112131415316171819202122232425262728293031CS74LS373WRRDA1A0P2.7WRRDALEP0.0~P0.7D0~D7RESET1K20F+5V+5V82555.1K480517.4MCS-51单片机与键盘接口7.4.3矩阵式键盘与单片机的接口1.矩阵键盘的工作过程对矩阵键盘的工作过程可分两步:第一步是CPU首先检测键盘上是否有键按下;第二步是再识别是哪一个键按下。①

检是否有键按下:将列线送入全扫描字,读入行线的状态来判别其具体过程如下:PA口输出00H,即所有列线置成低电平,然后将行线电平状态读入累加器A中。如果有键按下,总会有一根行线电平被拉至低电平,从而使行输入状态不全为"1"。7.4MCS-51单片机与键盘接口②

识别哪一个键按下:将列线逐列置低电平,检查行输入状态,称为逐列扫描。

从PA0开始,依次输出“0”,置对应的列线为低电平,然后从PC口读入行线状态,如果全为“1”,则按下的键不在此列;如果不全为“1”,则按下的键必在此列,而且是该列与“0”电平行线相交的交点上的那个键。为求取编码,在逐列扫描时,可用计数器记录下当前扫描列的列号,检测到第几行有键按下,就用该行的首键码加列号得到当前按键的编码。7.4MCS-51单片机与键盘接口7.4MCS-51单片机与键盘接口2.矩阵式键盘的工作方式

查询工作方式定时扫描工作方式中断工作方式①查询工作方式:在主程序中插入键盘检测子程序主程序每执行一次则键盘检测子程序被执行一次,对键盘进行检测一次,如果把没有键按下,则跳过键识别,直接执行主程序;如果有键按下,则通过键盘扫描子程序识别按键,得到按键的编码值,然后根据编码值进行相应的处理,处理完后再回到主程序执行。。开始有键按下否?调用6ms延时子程序?调用12ms延时子程序?有键按下否?判闭合键,编码入栈保护闭合键释放否?编码A返回否否否是是是7.4MCS-51单片机与键盘接口键盘扫描子程序流程图8255A的A口、B口、C口和控制口地址分别为7F00H、7F01H、7F02H、7F03H,设8255A已在主程序中初始化。已设定为A口方式0输出,C口的低4位方式0输入。)KEY1:ACALLKS1

;调用判断有无键按下子程序 JNZLK1;有键按下时,(A)≠0转消抖延时KEY2:ACALLTM6ms AJMPKEY1;无键按下返回LK1:ACALLTM12ms;调12ms延时子程序 ACALLKS1;查有无键按下,若有则真有键按下 JNZLK2;键(A)≠0逐列扫描 AJMPKEY2;不是真有键按下,返回LK2:MOVR2,#0FEH;初始列扫描字(0列)送入R2 MOVR4,#00H;初始列(0列)号送入R4LK4:MOVDPTR,#7F00H;DPTR指向8155PA口 MOVA,R2;列扫描字送至8155PA口 MOVX@DPTR,A INCDPTR;DPTR指向8155PC口 INCDPTR7.4MCS-51单片机与键盘接口7.4MCS-51单片机与键盘接口MOVXA,@DPTR;从8155PC口读入行状态JBACC.0,LONE;查第0行无键按下,转查第1行MOVA,#00H;第0行有键按下,行首键码#00H→AAJMPLKP;转求键码LONE:JBACC.1,LTWO;查第1行无键按下,转查第2行MOVA,#08H;第1行有键按下,行首键码#08H→A AJMPLKP;转求键码LTWO:JBACC.2,LTHR;查第2行无键按下,转查第3行MOVA,#10H;第2行有键按下,行首键码#10H→AAJMPLKP;转求键码LTHR:JBACC.3,NEXT;查第3行无键按下,转该查下一列MOVA,#18H;第3行有键按下,行首键码#18H→ALKP:ADDA,R4;求键码,键码=行首键码+列号 PUSHACC;键码进栈保护LK3:ACALLKS1;等待键释放 JNZLK3;键未释放,等待 POPACC;键释放,键码→A RET;键扫描结束,出口状态(A)=键码7.4MCS-51单片机与键盘接口NEXT:INCR4;准备扫描下一列,列号加1MOVA,R2;取列扫描字送累加器A JNBACC.7,KEND;判断8列扫描否?扫描完返回 RLA;扫描字左移一位,变为下一列扫描字 MOVR2,A;扫描字送入R2保存 AJMPLK4;转下一列扫描KEND:AJMPKEY1KS1:MOVDPTR,#7F00H;DPTR指向8155PA口MOVA,#00H;全扫描字→AMOVX@DPTR,A;全扫描字送往8155PA口INCDPTR;DPTR指向8155PC口INCDPTRMOVXA,@DPTR;读入PC口行状态CPLA;变正逻辑,以高电平表示有键按下ANLA,#0FH;屏蔽高4位,只保留低4位行线值RET;出口状态:(A)≠0时有键按下7.4MCS-51单片机与键盘接口TM12ms:MOVR7,#18H;延时12ms子程序TM:MOVR6,#0FFHTM6:DJNZR6,TM6 DJNZR7,TMRETTM6ms:MOVR7,#0CH;延时6ms子程序TM2:MOVR6,#0FFHTM62:DJNZR6,TM6DJNZR7,TMRET7.4MCS-51单片机与键盘接口ANLA,#0FH;屏蔽高4位,只保留低4位行线值RET;出口状态:(A)≠0时有键按下TM12ms:MOVR7,#18H;延时12ms子程序TM: MOVR6,#0FFHTM6:DJNZR6,TM6DJNZR7,TMRETLKP:ADDA,R4RET7.4MCS-51单片机与键盘接口2定时扫描工作方式3中断工作方式7.5.1LED显示器的结构与原理

七段显示块管脚与结构图共阴数码管共阳数码管管脚配置7.5单片机与显示器LED接口7.5单片机与显示器LED接口各段码位的对应关系如下:

七段LED的段选码显示字符共阴极段选码共阳极段选码显示字符共阴极段选码共阳极段选码03FHC0HC39HC6H106HF9HD5EHA1H25BHA4HE79H86H34FHB0HF71H8EH466H99HP73H8CH56DH92HU3EHC1H67DH82HΓ31HCEH707HF8Hy6EH91H87FH80H8.FFH00H96FH90H“灭”00HFFHA77H88HB7CH83H

7.5单片机与显示器LED接口dpgfedcba01110001dpgfedcba100011107.5.2LED数码管显示器的译码方式译码方式是指由显示字符转换得到对应的字段码的方式硬件译码方式——利用专门的硬件电路实现显示字符到字段码的转换。软件译码方式——

就是通过编写软件译码程序,通过译码程序来得到要显示的字符的字段码。7.5单片机与显示器LED接口硬件译码方式CD4511:BCD转换、消隐和锁存控制、七段译码及驱动共阴极数码管

7.5.3LED数码管的显示方式1.LED静态显示

LED静态显示时,其公共端直接接地(共阴极)或接电源(共阳极),各段选线分别与I/O口线相连。要显示字符,直接在I/O线送相应的字段码。abcdefgdpI/O(1)abcdefgdpI/O(2)7.5单片机与显示器LED接口2.LED动态显示方式

LED动态显示是将所有的数码管的段选线并接在一起,用一个I/O口控制,公共端不是直接接地(共阴极)或电源(共阳极),而是通过相应的I/O口线控制。D3D2D1D0I/O(1)I/O(2)7.5单片机与显示器LED接口7.5.4LED显示器与单片机的接口

LED显示器从译码方式上有硬件译码方式和软件译码方式。从显示方式上有静态显示方式和动态显示方式。在使用时可以把它们组合起来。在实际应用时,如果数码管个数较少,通常用硬件译码静态显示,在数码管个数较多时,则通常用软件译码动态显示。7.5单片机与显示器LED接口1.硬件译码静态显示下图是一个两位数码管硬件译码静态显示的接口电路图。abcdefgMC14495abcdefgabcdefgABCDLEMC14495abcdefgABCDLEP1.0P1.1P1.2P1.3P1.4P1.580517.5单片机与显示器LED接口2.软件译码动态显示图中用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。7.5单片机与显示器LED接口D0D1D2D7Q0Q1Q2Q3Q4Q5Q6Q7D0D1D2D3D4D5D6D7GOEVCC74LS373Q0Q1Q2Q3Q4Q5Q6Q7D0D1D2D3D4D5D6D7GOEVCC74LS373PA0PA1PA2PA3PA4PA5PA6PA7PB0PB1PB2PB3PB4PB5PB6PB7CSWRRD74LS373P2.7WRRDALEP0.0~P0.78051D0~D7A1A0GA1A08255位码字型码7.5单片机与显示器LED接口软件译码动态显示汇编语言程序为:(设8个数码管的显示缓冲区为片内RAM的57H~50H单元)DISPLAY:MOVA,#10000000B;8255初始化MOVDPTR,#7F03H;使DPTR指向8155控制寄存器端口MOVX@DPTR,AMOVR0,#57H;动态显示初始化,使R0指向缓冲区首址MOVR3,#7FH;首位位选字送R3MOVA,R3LD0:MOVDPTR,#7F01H;使DPTR指向PB口MOVX@DPTR,A;选通显示器低位(最右端一位)DECDPTR;使DPTR指向PA口MOVA,@R0;读要显示数ADDA,#0DH;调整距段选码表首的偏移量7.5单片机与显示器LED接口MOVCA,@A+PC;查表取得段选码MOVX@DPTR,A;段选码从PA口输出ACALLDL1;调用1ms延时子程序DECR0;指向缓冲区下一单元MOVA,R3;位选码送累加器AJNBACC.0,LD1;判断8位是否显示完毕,显示完返回RRA;未显示完,把位选字变为下一位选字MOVR3,A;修改后的位选字送R3AJMPLD0;循环实现按位序依次显示LD1:RETTAB:DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H;字段码表 DB7FH,6FH,77H,7CH,39H,5EH,79H,71HDL1:MOVR7,#02H;延时子程序DL:MOVR6,#0FFHDL0:DJNZR6,DL0DJNZR7,DLRET7.5单片机与显示器LED接口软件译码动态显示C语言程序为:#include<reg51.h>#include<absacc.h>//定义绝对地址访问#defineucharunsignedchar#defineuintunsignedintvoiddelay(uint);

温馨提示

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

评论

0/150

提交评论