键盘、显示、打印机及其它接口_第1页
键盘、显示、打印机及其它接口_第2页
键盘、显示、打印机及其它接口_第3页
键盘、显示、打印机及其它接口_第4页
键盘、显示、打印机及其它接口_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

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

文档简介

第四章键盘、显示等接口,4.1按键、键盘及其接口4.2LED显示及显示器接口4.3LCD显示及显示器接口4.4微型打印机接口4.5语音接口技术4.6其它接口,4.1.1键输入过程与软件结构,MCS51单片机键输入过程,4.1按键、键盘及其接口,4.1.2键盘接口和键输入软件中应解决的几个问题,1消除键抖动,2键编码及键值,3键盘的监测方法,4.1.3独立式按键,1独立式按键接口结构,2独立式按键的软件结构,4.1.4行列式键盘,1行列式键盘的接口,2键盘工作原理,1)查询工作方式,2)定时扫描工作方式,3)中断工作方式,1、键盘的分类键盘分编码键盘和非编码键盘。键盘上闭合键的识别由专用的硬件编码器实现,并产生键编码号或键值的称为编码键盘,如计算机键盘.而靠软件编程来识别的称为非编码键盘;在单片机组成的各种系统中,用的最多的是非编码键盘。也有用到编码键盘的。,非编码键盘有分为:独立键盘和行列式(又称为矩阵式)键盘。,4.1.1键输入过程与软件结构,MCS51单片机键输入过程,4.1按键、键盘及其接口,有否键按下?,是哪个键按下?,根据键值散转,对于计算机应用系统,键盘扫描只是CPU工作的一部分,键盘处理只是在有键按下时才有意义。对是否有键按下的信息输入方式有中断方式与查询方式两种。,3键盘的监测方法,1独立式按键接口结构,独立式按键的接口电路示意图(a)中断方式;(b)查询方式,4.1.2独立式按键,一般用排阻进行上拉。,下面是查询方式的键盘程序。K0K7为功能程序入口地址标号,PROM0PROM7分别为每个按键的功能程序。设按键从P1口输入。,START:MOVA,#0FFH;MOVP1,A;置P1口为输入状态MOVA,P1;键状态输入JNBACC.0,K0;检测0号键是否按下,按下转JNBACC.1,K1;检测1号键是否按下,按下转,2独立式按键的软件结构,JNBACC.2,K2;检测2号键是否按下,按下转JNBACC.3,K3;检测3号键是否按下,按下转JNBACC.4,K4;检测4号键是否按下,按下转JNBACC.5,K5;检测5号键是否按下,按下转JNBACC.6,K6;检测6号键是否按下,按下转JNBACC.7,K7;检测7号键是否按下,按下转AJMPSTART;无键按下返回,再顺次检测K0:AJMPPROM0K1:AJMPPROM1K7:AJIMPPROM7,;入口地址表,START:MOVA,#0FFH;MOVP1,A;置P1口为输入状态MOVA,P1;键状态输入JNBACC.0,K0;检测0号键是否按下,按下转JNBACC.1,K1;检测1号键是否按下,按下转JNBACC.6,K6;检测6号键是否按下,按下转JNBACC.7,K7;检测7号键是否按下,按下转AJMPSTART;无键按下返回,再顺次检测K0:AJMPPROM0K1:AJMPPROM1K7:AJMPPROM7PROM0:;0号键功能程序LJMPSTART;0号键功能程序执行完返回PROM1:;1号键功能程序LJMPSTARTPROM7:;7号键功能程序LJMPSTART,;入口地址表,独立式按键的软件结构,行列式键盘又叫矩阵式键盘。用I/O口线组成行、列结构,按键设置在行列的交点上。例如44的行列结构可组成16个键的键盘。因此,在按键数量较多时,可以节省I/O口线。,4.1.4行列式键盘,行列式键盘的接口方法有许多,例如直接接口于单片机的I/O口上;利用扩展的并行I/O接口;用串行口扩展并行I/O口接口;利用一种可编程的键盘、显示接口芯片8279进行接口等。其中,利用扩展的并行I/O接口方法方便灵活,在单片机应用系统中比较常用。,1行列式键盘的接口,(1)用键盘连接的I/O线的二进制组合表示键码例如用4行、4列线构成的16个键的键盘,可使用一个8位I/O口线的高、低4位口线的二进制数的组合表示16个键的编码。,2键编码及键值,如图所示,各键相应的键值为:88H、84H、82H、81H、48H、44H、42H、41H、28H、24H、22H、21H、18H、14H、12H、11H。这种键值编码软件较为简单直观,但离散性大,不便安排散转程序的入口地址。,(2)顺序排列键编码如图所示,这种方法键值的形成要根据I/O线的状态作相应的程序处理。键码可按下式形成:键码=行首键码+列号,D4:0行0000D5:1行0100D6:2行1000D7:3行1100,D0:0列0000D1:1列0001D2:2列0010D3:3列0011,行,列,键码,0000,0001,0010,00110100,0101,0110,01111000,1001,1010,10111100,1101,1110,1111,0行,3行,0列,3列,行首键码,列号,0行:000001行:010002行:100003行:11000,行首键码,列号,000111,键码=行首键码+列号,键码:,0行:00000001111行:01000011112行:10000101113行:1100011111,8155扩展I/O口组成的行列式键盘共32个键,PA口每位依次送出0,如有某键按下,则在PC口能读到相应的值,结合PA口的信息,则能确定键值。,按键设置在行、列线的交点上,行、列线分别连接到按键开关的两端。行线通过上拉电阻接+5V,被箝位在高电平状态。对键盘的工作过程可分两步:第一步是CPU首先检测键盘上是否有键按下;第二步是再识别是哪一个键按下。检测键盘上有无键按下可采用查询工作方式、定时扫描工作方式和中断工作方式。,2行列式键盘工作原理,判断有无键按下是由列线送入全扫描字,读入行线状态来判别的。其方法是:PA口输出00H,即所有列线置成低电平,然后将行线电平状态读入累加器A中。如果有键按下,总会有一根行线电平被拉至低电平,从而使行输入状态不全为1。判断哪一个键按下是由列线逐列置低电平后,检查行输入状态,称为逐列扫描。其方法是:从PA0开始,依次输出0,置对应的列线为低电平,然后从PC口读入行线状态,如果全为1,则所按下之键不在此列;如果不全为1,则所按下的键必在此列,而且是与0电平行线相交的交点上的那个键。为求取键码,在逐列扫描时,可用计数器记录下当前扫描列的列号,然后用行线值为0的行首键码加列号的办法计算。,1)查询工作方式,0行:000001行:010002行:100003行:11000,行首键码,如12号键按下,列扫描号为0100,PC口读入时PC1=0,可确定行首键码为01000,故键值为:01000+0100=01100,1消除键抖动,键合、键断时的电压抖动,4.1.3键盘接口和键输入软件中应解决的几个问题,硬件:采用消除键抖动电路,原理:基本RS触发器,/S0,Q1/R0,Q0抖动时,/R=/S=1,Q不变。,软件:采用延时判别程序,(具体程序后叙),键盘扫描子程序流程框图,键盘扫描子程序如下:KEY1:ACALLTM6;调6ms延时子程序ACALLKS1;调用判断有无键按下子程序JNZLK1;有键按下时,(A)0转消抖延时AJMPKEY1;无键按下返回LK1:ACALLTM12;调12ms延时子程序ACALLKS1;查有无键按下,若有则真有键按下JNZLK2;键(A)0逐列扫描AJMPKEY1;不是真有键按下,返回,转逐列扫描,LK2:MOVR2,#0FEH;初始列扫描字(0列)送入R2MOVR4,#00H;初始列(0列)号送入R4LK4:MOVDPTR,#7F01H;DPTR指向8155PA口MOVA,R2;列扫描字送至8155PA口MOVXDPTR,AINCDPTRINCDPTR;DPTR指向8155PC口MOVXA,DPTR;从8155PC口读入行状态JBACC.0,L_ONE;查第0行无键按下,转查第1行MOVA,#00H;第0行有键按下,行首键码#00HAAJMPLKP;转求键码L_ONE:JBACC.1,L_TWO;查第1行无键按下,转查第2行MOVA,#08H;第1行有键按下,行首键码#08HAAJMPLKP;转求键码,;逐列扫描,R2,L_TWO:JBACC.2,L_THR;查第2行无键按下,转查第3行MOVA,#10H;第2行有键按下,行首键码#10HAAJMPLKP;转求键码L_THR:JBACC.3,NEXT;查第3行无键按下,转向查下一列MOVA,#18H;第3行有键按下,行首键码#18HA,LKP:ADDA,R4;求键码,键码=行首键码+列号PUSHACC;键码进栈保护LK3:ACALLKS1;等待键释放JNZLK3;键未释放,等待POPACC;键释放,键码ARET;键扫描结束,出口状态(A)=键码,;开始求键码,;逐列扫描(续),NEXT:INCR4;准备扫描下一列,列号加1MOVA,R2;取列号送累加器AJNBACC.7,KEND;判断8列扫描否?扫描完返回RLA;扫描字左移一位,变为下一列扫描字MOVR2,A;扫描字送入R2AJMPLK4;转下一列扫描KEND:AJMPKEY1;从新开始键扫描。,;准备扫描下一列,;逐列扫描(续),R2,扫描第0列,第1列,第7列,KS1:MOVDPTR,#7F01H;DPTR指向8155PA口MOVA,#00H;全扫描字AMOVXDPTR,A;全扫描字送往8155PA口INCDPTR;DPTR指向8155PC口INCDPTRMOVXA,DPTR;读入PC口行状态CPLA;以高电平表示有键按下ANLA,#0FH;屏蔽高4位,只保留低4位行线值RET;出口状态:(A)0时有键按下,TM12:MOVR7,#18H;延时12ms子程序TM6:MOVR6,#0FFHTM61:DJNZR6,TM61DJNZR7,TM6RET,;判有无键按下,2)定时扫描工作方式,定时扫描方式程序框图,思路:CPU每隔一定时间对键盘进行一次扫描,并将结果置成不同标志。,KM,KP:标志位无按键:0KM,0KP第一次读到键:1KM第二次读到键:查询键码,1KP。如KMKP1,表示已查询过的按键没释放,不再继续查询。,计算机应用系统工作时,并不经常需要键输入。但无论是查询工作方式还是定时扫描工作方式,CPU经常处于空扫描状态。为了提高CPU的效率,可采用中断工作方式。这种工作方式是当键盘上有键按下时,向CPU发一个中断请求信号,CPU响应中断后,在中断服务程序中扫描键盘,执行键功能程序。中断服务程序中应完成键识别、消除抖动、排除多次执行键功能操作等功能,可参考查询工作方式键盘程序。,3)中断工作方式,1MCS-51与显示器的接口为方便人们观察和监视单片机的运行,通常需要用一种显示器作为单片机的输出设备,用来显示单片机的键输入值、中间信息及运算结果。单片机系统中常用的显示器主要有LED(发光二极管)和LCD(液晶显示器)。两种显示器具有耗电省、配置灵活、线路简单、安装方便、耐振动、寿命长等优点。两者相比,LED价格更低廉,结构更简单;LCD功耗更低,显示清晰度更高。,一.MCS-51对LED的接口1.LED的种类LED(Light-EmittingDiode)是发光二极管的简称。LED有七段和八段之分,也有共阴和共阳两种。,(a)共阴LED结构(b)共阴LED(c)共阳LED,a,b,c,d,e,f,g,sp,a,b,c,d,e,f,g,sp,G,G,a,c,d,e,f,b,g,a,b,sp,2.LED数码显示管原理数码管发光原理分两种情况:共阳极型a,b,c,d,e,f,g各引脚哪个输入低电平,哪个二极管发亮;共阴极型a-g哪个为高电平,哪个二极管亮。每个二极管为段,不同的发光段亮,可组成不同字形。对于共阴LED,显示“3”,需要在8个管脚上施加控制电平04FH-(字型码),04FH是按照h,g,f,e,d,c,b,aD7D6D5D4D3D2D1D001001111对于共阳LED,显示“3”字型码是h,g,f,e,d,c,b,aD7D6D5D4D3D2D1D010110000,七段LED的段选码,3.MCS-51对LED的显示MCS-51对LED的显示分为静态和动态两种。静态显示的特点是:每个数码管能稳定地同时显示各自字形;即工作过程中加在每一个LED上的信号始终同时存在。各位的显示字符一旦确定,加在每一块显示器上的信号维持不变,直到显示另一个字符为止。优点:各显示模块相互独立,显示亮度高,编程简单。缺点:需占用较多的硬件资源。单片机系统中,常采用74LS47、MC14495等芯片作为LED的静态显示接口。,4.2.2LED显示器与显示方式,1LED静态显示方式,N位静态显示器要求有N8根I/O口线,1硬件译码显示器接口,MC14495内部逻辑与引脚图,4.2.3LED显示器接口,锁存/译码/驱动器,74LS48,4511,4543,14495等,4位静态LED显示器接口,译码器,1#MC14495,abcdefg,G,2#MC14495,abcdefg,G,3#MC14495,abcdefg,G,4#MC14495,abcdefg,G,LE,LE,LE,LE,8031,GAB,Y1,Y0,Y2,Y3,P1.7,P1.6,P1.5,P1.4,P1.2,P1.1,P1.0,MC14495芯片的作用是输入被显示字符的二进制码(或BCD码),并把它自动转换成相应字形码,送给LED显示。,P1.7-P1.4用于输出欲显示字符的二进制码(BCD码);P1.2控制二四译码器工作;P1.1和P1.0经译码输出后控制MC14495中哪一个接收欲显示的代码。,使用MC14495的8位LED静态显示接口,显示方式:静态。口线占用:8根。,使用芯片:3/8译码器1片。MC14495显示译码器8片。,动态显示动态显示是指各LED轮流地一遍一遍显示各自字符;人们因为视觉器官惰性而看到的是各LED似乎在同时显示不同字形。特点是所有LED的段选线并联在一起,而每个LED对应一根位选线位选线控制哪一位接收字段码。采用动态扫描显示。所谓动态扫描显示:各位共用一个字形口,利用相应的字位选择轮流向各位送出字形码。优点:硬件开销小。缺点:显示的亮度比静态显示差些,位数越多,在动态显示时亮度越低,同时需要CPU用于显示刷新的频率越高。软件编程较复杂;其实质是:以牺牲CPU的时间换取系统的低功耗,节省了系统资源但使显示亮度降低。为了保证显示效果,动态显示位数不能太多,一般不超过8位。,8位LED动态显示器电路,2LED动态显示方式,N位动态显示器要求有N8根I/O口线。,P272例7.7,8031,G,ALE,EA,P0.0,P0.7,WR,RD,P2.7,RESET,ALE,RD,WR,RESET,AD7,AD0,CE,IO/M,PB7PB6,PB5PB4,PB3PB2,PB1PB0,PC5PC4,PC3PC2,PC1PC0,8155,LED5,LED4,LED3,LED2,LED1,LED0,8003H,8002H,G,G,G,G,G,共阳,请根据上图编出能在LED5LED0上显示1995.6的动态显示子程序。,例,解:设显示缓冲区放在CPU内部RAM中,始址为70H,显示缓冲区中被显示字符的字形码表的地址偏移量应预先放入。如下图所示:,06H13H05H09H09H01H,DS0DS1DS2DS3DS4DS5,70H71H72H73H74H75H76H,ORG0600HDISPLY:MOVA,#06H;方式控制字06H送AMOVDPTR,#8000HMOVXDPTR,A;方式控制字送8155命令口DISPLY1:MOVR0,#70H;显示缓冲区始址送R0MOVR3,#0FEH;字位码始值送R3MOVA,R3LD

温馨提示

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

评论

0/150

提交评论