第七章MCS-51与键盘、显示器的接口_第1页
第七章MCS-51与键盘、显示器的接口_第2页
第七章MCS-51与键盘、显示器的接口_第3页
第七章MCS-51与键盘、显示器的接口_第4页
第七章MCS-51与键盘、显示器的接口_第5页
已阅读5页,还剩73页未读 继续免费阅读

下载本文档

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

文档简介

1、第七章 MCS-51与键盘、显示器的接口 第七章第七章 C51单片机外围接口电路单片机外围接口电路 C51单片机与显示电路的接口单片机与显示电路的接口 C51单片机与键盘的接口单片机与键盘的接口 C51与与ADC的接口的接口 C51与与DAC的接口的接口1第七章 MCS-51与键盘、显示器的接口 7.1 LED显示器接口显示器接口7.1.1 LED显示器工作原理显示器工作原理abcdefgdpcomabcdefgdpcomabcdefgdp10 9 8 7 61 2 3 4 5 g f com a be d com c dp( a )( b )(c )(a)为共阴极结构)为共阴极结构 (b)为

2、共阳极结构)为共阳极结构 ( c)图为管脚图)图为管脚图常用的显示器常用的显示器:LED、LCDLED:发光二极管发光二极管;LED显示器显示器:将将发光二极管按照一定结构发光二极管按照一定结构进行进行组合来组合来显示字段的器件,也称为数码管。显示字段的器件,也称为数码管。在单片机应用系统中通常采用七段、八段式数码管在单片机应用系统中通常采用七段、八段式数码管;八段式八段式LED数码管显示器,它有数码管显示器,它有共阴极共阴极、共阳极共阳极两种;两种;显示显示09、AF、小数点小数点“.”等字符等字符2第七章 MCS-51与键盘、显示器的接口 显示显示数字数字共阴极小数点暗共阴极小数点暗十六进

3、制十六进制共阳极小数点暗共阳极小数点暗十六进制十六进制Dp g f e d c b a Dp g f e d c b a 00 01111113FH1 1000000C0H10 000011006H1 1111001F9H20 10110115BH1 0100100A4H30 10011114FH1 0110000B0H40 110011066H1 001100199H50 11011016DH1 001001092H60 11111017DH1 000001082H70 000011107H1 1111000F8H80 11111117FH1 000000080H90 11011116FH1

4、 001000090HA0 111011177H1 000100099HB0 11111007CH1 000001183HC0 011100139H1 1000110C6HD0 10111005EH1 0100011A3HE0 111100179H1 000011086HF0 111000171H1 00011108EH灭0 000000000H1 1111111FFH小数点1 000000080H0 11111117FH表表7.1 数字和字符的共阴极和共阳极的字段码数字和字符的共阴极和共阳极的字段码3第七章 MCS-51与键盘、显示器的接口 2)LED数码管显示器的译码方式数码管显示器的译码

5、方式硬件译码方式硬件译码方式译码译码:指将显示字符转换为对应的字段码的过程。:指将显示字符转换为对应的字段码的过程。 译码方式:译码方式:硬件译码、软件译码硬件译码、软件译码 硬件译码:指用专门的硬件电路硬件译码:指用专门的硬件电路(或显示译码芯片或显示译码芯片)来实现显示字符来实现显示字符到字段码的转换,如:到字段码的转换,如:MOTOTOLA公司的公司的MC14495芯片。芯片。MC14495是共阴极的字段码转换芯片,能将四位二进制表示的一位十六进制数是共阴极的字段码转换芯片,能将四位二进制表示的一位十六进制数转换为七位字段码,不带小数点。转换为七位字段码,不带小数点。4锁锁存存器器地址地

6、址译码译码和字和字段码段码ROM阵列阵列ABCDLE569107Vss VDD816abcdefgh+iVCR111213141512344第七章 MCS-51与键盘、显示器的接口 软件译码软件译码 软件译码:是通过编写软件译码程序,通过译码程序来得到要显示软件译码:是通过编写软件译码程序,通过译码程序来得到要显示的字符的字段码。的字符的字段码。 优点:优点:电路简单电路简单、显示字符灵活显示字符灵活外形尺寸外形尺寸分:分: “0.5”和和“0.8”显示的颜色显示的颜色:红色和绿色红色和绿色亮度强弱分亮度强弱分:超亮、高亮超亮、高亮、普亮。普亮。数码管的正向压降为数码管的正向压降为1.5V2V

7、,额定电流为额定电流为10mA,最大电流为,最大电流为40 mA。分类:分类:5第七章 MCS-51与键盘、显示器的接口 a b c d e f g dpI/O(1)a b c d e f g dpI/O(2)7.1.2 LED数码管的显示方式数码管的显示方式LED数码管的显示方式数码管的显示方式:静态显示静态显示、动态显示。动态显示。1. 静态显示静态显示静态显示静态显示:当显示某个数字或字符时,相应的字段当显示某个数字或字符时,相应的字段(发光二极管发光二极管)恒定地导恒定地导通或关断,直到显示下一个数字或字符为止。通或关断,直到显示下一个数字或字符为止。特点特点:公共段直接接地:公共段直

8、接接地(共阴极共阴极)或电源或电源(共阳极共阳极),每个数码管的字段选线,每个数码管的字段选线直接直接(ag,dp)与一个与一个8位的并口相连。位的并口相连。 应用:应用:占有硬件占有硬件资源资源多,一般用于显示器位数较少的场合。多,一般用于显示器位数较少的场合。6第七章 MCS-51与键盘、显示器的接口 硬件译码静态显示硬件译码静态显示下图是一个两位数码管硬件译码静态显示的接口电路图。下图是一个两位数码管硬件译码静态显示的接口电路图。 a b c d e f gMC14495a b c d e f ga b c d e f gA B C DLEMC14495a b c d e f gA B

9、C DLEP1.0P1.1P1.2P1.3P1.4P1.580517第七章 MCS-51与键盘、显示器的接口 XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0

10、/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C51A7QA13B1QB12C2QC11D6QD10BI/RBO4QE9RBI5QF15LT3QG14U27447A7QA13B1QB12C2QC11D6QD10BI/RBO4QE9RBI5QF15LT3QG14U37447十位十位个位个位【例7-1】 译码器控制单体、共阴极数码管循环显示两位数字020。 以P2口作为段码控制口,段码经译码芯片7447实现段码的译码和驱动;电路中采用共阴极数码管,数码管的公共端接地。8第七章 MCS-51与键盘、显示器的

11、接口 循环显示030的程序:#include #include #define uchar unsigned charvoid main( ) uchar i,j,k; while(1) for(i=0;i=30;i+) j=i/10; /十位上的数字,通过P2低4位显示 k=(i%10)4; /个位上的数字,通过P2高4位显示 P2=j|k; delay( ); /调用延时子程序 9第七章 MCS-51与键盘、显示器的接口 2LED动态显示方式动态显示方式 LED动态显示:是将所有数码管的段选线并接在一起,用一个动态显示:是将所有数码管的段选线并接在一起,用一个I/O口控制,公共端不直接接地

12、(共阴极)或电源(共阳极),而是口控制,公共端不直接接地(共阴极)或电源(共阳极),而是通过相应的通过相应的I/O口线控制。口线控制。 D3D2D1D0I/O(1)I/O(2)特点:特点:各个数码管共用一个段码输出端口,分时轮流选通显示。各个数码管共用一个段码输出端口,分时轮流选通显示。缺点:缺点:数码管的数量不能太多。一般在数码管的数量不能太多。一般在8个以内,以免每个数码管分配个以内,以免每个数码管分配到的实际导通时间太短,亮度不够。到的实际导通时间太短,亮度不够。动态显示电路动态显示电路有有三种三种:并行:并行I/0口显示电路、并行口显示电路、并行I/0口与译码器构成的口与译码器构成的显

13、示电路显示电路、串行口构成的动态显示电路。串行口构成的动态显示电路。10第七章 MCS-51与键盘、显示器的接口 数码管为共阳极时,工作过程为:数码管为共阳极时,工作过程为:第一步使右边第一个数码管的公共端第一步使右边第一个数码管的公共端D0为为1,其余的数码管的公共端为,其余的数码管的公共端为0,同时在,同时在I/O(1)上送右边第一个数码管的字段码,这时,只有右边)上送右边第一个数码管的字段码,这时,只有右边第一个数码管显示,其余不显示;第一个数码管显示,其余不显示;第二步使右边第二个数码管的公共端第二步使右边第二个数码管的公共端D1为为1,其余的数码管的公共端为,其余的数码管的公共端为0

14、,同时在,同时在I/O(1)上送右边第二个数码管的字段码,这时,只有右边)上送右边第二个数码管的字段码,这时,只有右边第二个数码管显示,其余不显示;第二个数码管显示,其余不显示;依此类推,直到最后一个;依此类推,直到最后一个;这样四个数码管轮流显示相应的信息,一个循环完后,下一循环又这这样四个数码管轮流显示相应的信息,一个循环完后,下一循环又这样轮流显示,从计算机的角度看是一个一个的显示,但由于人的视觉样轮流显示,从计算机的角度看是一个一个的显示,但由于人的视觉滞留,只要循环的周期足够快,看起来所有的数码管都是一起显示的滞留,只要循环的周期足够快,看起来所有的数码管都是一起显示的了。了。而这个

15、循环周期对于计算机来说很容易实现。所以在单片机中经常用而这个循环周期对于计算机来说很容易实现。所以在单片机中经常用到动态显示。到动态显示。 11第七章 MCS-51与键盘、显示器的接口 7.1.3 MCS-51与与LED显示器的接口电路设计实例显示器的接口电路设计实例【例【例7-2】 利用利用AT89C52单片机的并行口作为动态显示的段口和位口,实单片机的并行口作为动态显示的段口和位口,实现现6位数码管的动态显示。位数码管的动态显示。Proteus仿真电路如图仿真电路如图7-5所示。在图中,以所示。在图中,以P0口作为段码控制口,口作为段码控制口,段码经驱动芯片段码经驱动芯片74HC245实现

16、段码的驱动;实现段码的驱动;P3口作为位码控制口,经过口作为位码控制口,经过7407实现某一位的选通,并经软件延迟,实现实现某一位的选通,并经软件延迟,实现6位数码管的轮流显示。位数码管的轮流显示。12第七章 MCS-51与键盘、显示器的接口 随机调用随机调用随机调用:在主函数中,当显示缓冲区的内容发生变化后,就需要对显示函数进行调用,两次调用的时间间隔不能太长,时间太长将发生显示的闪烁现象。程序如下:#include #define uchar unsigned charuchar data dis_buf6; /显示缓冲区uchar code table18=0 x3f,0 x06,0 x

17、5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07, 0 x7f,0 x6f,0 x77,0 x7c,0 x39,0 x5e,0 x79,0 x71,0 x40,0 x00; void dl_ms() /延时1ms函数unsigned int j;for(j=0;j200;j+);13第七章 MCS-51与键盘、显示器的接口 void display(void)/显示函数uchar segcode,bitcode,i;bitcode=0 xfe; /位码赋初值for(i=0;i6;i+)segcode=dis_bufi; /显示缓冲区内容查表P0=tablesegcode;P3=

18、bitcode;dl_ms();P3=0 xff; /关闭显示bitcode=bitcode1; /调整位码bitcode=bitcode|0 x01;void main(void)dis_buf0=6; dis_buf1=5;/显示缓冲区赋初值dis_buf2=4; dis_buf3=3;dis_buf4=2; dis_buf5=1;while(1) display(); 14第七章 MCS-51与键盘、显示器的接口 定时调用定时调用定时调用是通过定时定时调用是通过定时/计数器的定时功能来定时一定的时间计数器的定时功能来定时一定的时间(如如20ms),定),定时时间到后调用显示函数。时时间到

19、后调用显示函数。程序如下:程序如下:#include #define uchar unsigned charuchar data dis_buf6;/显示缓冲区显示缓冲区uchar code table18=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07, 0 x7f,0 x6f,0 x77,0 x7c,0 x39,0 x5e,0 x79,0 x71,0 x40,0 x00; /代码表代码表 void display();void dl_ms()/延时延时1ms函数函数15第七章 MCS-51与键盘、显示器的接口 void main(void)/

20、定时调用TMOD=0 x01;TH0=20000/256;TL0=2000%256;EA=1;ET0=1;TR0=1;dis_buf0=0; dis_buf1=1;/显示缓冲区赋初值dis_buf2=2; dis_buf3=3;dis_buf4=4; dis_buf5=5;while(1);void time0_int() interrupt 1TH0=20000/256;TL0=2000%256;display();16第七章 MCS-51与键盘、显示器的接口 【7-3】是一个是一个8位软件译码动态显示的接口电路图。位软件译码动态显示的接口电路图。图中用图中用8255A扩展并行扩展并行I/O

21、口接数码管;数码管采用动态显示方口接数码管;数码管采用动态显示方式,式,8位数码管的段选线并联与位数码管的段选线并联与8255A的的A口通过口通过74LS373相连;相连;8位数码管的公共端通过位数码管的公共端通过74LS373分别与分别与8255A的的B口相连。口相连。8255A的的A口输出字段码使数码管显示相应的字符,口输出字段码使数码管显示相应的字符,8255A的的A口和口和B口都工作于方式口都工作于方式0输出。输出。A口、口、B口、口、C口和控制口的地址分别为口和控制口的地址分别为7F00H、7F01H、7F02H和和7F03H。 17第七章 MCS-51与键盘、显示器的接口 D0D1

22、D2D7Q0Q1Q2Q3Q4Q5Q6Q7D0D1D2D3D4D5D6D7G OEVCC74LS373Q0Q1Q2Q3Q4Q5Q6Q7D0D1D2D3D4D5D6D7G OEVCC74LS373PA0PA1PA2PA3PA4PA5PA6PA7PB0PB1PB2PB3PB4PB5PB6PB7CSWRRD74LS373P2.7WRRDALEP0.0P0.780C51D0D7A1A0GA1A0825518第七章 MCS-51与键盘、显示器的接口 软件译码动态显示汇编语言程序:软件译码动态显示汇编语言程序:(设8个数码管的显示缓冲区为片内RAM的57H50H单元)DISPLAY:MOV A,#10000

23、000B ;8255初始化MOV DPTR,#7F03H ;使DPTR指向8155控制寄存器端口MOVX DPTR,AMOV R0,#57H ;动态显示初始化,使R0指向缓冲区首址MOV R3,#7FH ;首位位选字送R3MOV A,R3LD0: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延时子程序

24、19第七章 MCS-51与键盘、显示器的接口 DEC R0 ;指向缓冲区下一单元MOV A,R3 ;位选码送累加器AJNB ACC.0,LD1 ;判断8位是否显示完毕,显示完返回RR A ;未显示完,把位选字变为下一位选字MOV R3,A ;修改后的位选字送R3AJMP LD0 ;循环实现按位序依次显示LD1:RETTAB:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H ;字段码表DB: 7FH,6FH,77H,7CH,39H,5EH,79H,71HDL1:MOV R7,#02H ;延时子程序DL: MOV R6,#0FFHDL0:DJNZ R6,DL0DJNZ R7,D

25、LRET20第七章 MCS-51与键盘、显示器的接口 软件译码动态显示C语言程序为:#include #include /定义绝对地址访问#define uchar unsigned char#define uint unsigned intvoid delay(uint); /声明延时函数void display(void); /声明显示函数uchar disbuffer8=0,1,2,3,4,5,6,7; /定义显示缓冲区void main(void)XBYTE0 x7f03=0 x80; /8255A初始化while(1)display(); /设显示函数/*延时函数*void dela

26、y(uint i) /延时函数uint j;for (j=0;ji;j+)21第七章 MCS-51与键盘、显示器的接口 /*显示函数void display(void) /定义显示函数uchar codevalue16=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f,0 x77,0 x7c,0 x39,0 x5e,0 x79,0 x71; /0F的字段码表uchar chocode8=0 xfe,0 xfd,0 xfb,0 xf7,0 xef,0 xdf,0 xbf,0 x7f; /位选码表uchar i,p,temp;f

27、or (i=0;i8;i+)p=disbufferi; /取当前显示的字符temp=codevaluep; /查得显示字符的字段码XBYTE0 x7f00=temp; /送出字段码temp=chocodei; /取当前的位选码XBYTE0 x7f01=temp; /送出位选码delay(20); /延时1ms22第七章 MCS-51与键盘、显示器的接口 7.2 C51单片机与键盘接口单片机与键盘接口7.2.1 键盘的工作原理键盘的工作原理键盘实际上是一组按键开关的集合,平时按键开关处于断开状态,当键盘实际上是一组按键开关的集合,平时按键开关处于断开状态,当按下键时它才闭合。按下键时它才闭合。P

28、1.1V CCG ND断开闭合断开P1.1( a )( b )通常按键开关为机械开关,由于机械触电的弹性作用,按键开关在闭通常按键开关为机械开关,由于机械触电的弹性作用,按键开关在闭合和释放时不会马上稳定的接通或断开,会伴随着一串的抖动,其抖合和释放时不会马上稳定的接通或断开,会伴随着一串的抖动,其抖动持续的时间大约为动持续的时间大约为510ms。按键的抖动人眼是察觉不到得,但对按键的抖动人眼是察觉不到得,但对CPU 产生干扰,产生误处理。产生干扰,产生误处理。1.按键的电路原理按键的电路原理23第七章 MCS-51与键盘、显示器的接口 2抖动的消除抖动的消除消除按键盘抖动通常有两种方法:硬件

29、消抖和软件消抖。消除按键盘抖动通常有两种方法:硬件消抖和软件消抖。 硬件消抖硬件消抖:是通过在按键输出电路上加一定的硬件线路来消除抖动,是通过在按键输出电路上加一定的硬件线路来消除抖动,一般采用一般采用RS触发器或单稳态电路。触发器或单稳态电路。断开闭合+5V+5V输出软件消抖软件消抖:是利用延时来跳过抖动过程。是利用延时来跳过抖动过程。是在第一次检测到按键闭合时,执行一个是在第一次检测到按键闭合时,执行一个10ms的延迟子程序,避开的延迟子程序,避开抖动,待电平稳定后再读入按键的状态信息,确定按键是否闭合,以抖动,待电平稳定后再读入按键的状态信息,确定按键是否闭合,以消除抖动影响。消除抖动影

30、响。24第七章 MCS-51与键盘、显示器的接口 3键位的编码键位的编码通常有两种方法编码。通常有两种方法编码。 (1)用连接键盘的)用连接键盘的I/O线的二进制组合进行编码。如(线的二进制组合进行编码。如(a)图)图 (2)顺序排列编码。如()顺序排列编码。如(b)图,)图,处理方法如下:编码值处理方法如下:编码值=行首编码值行首编码值X+列号列号Y。 P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.788 84 82 8148 44 42 4128 24 22 2118 14 12 11P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7F E D CB A 9

31、87 6 5 43 2 1 0( a )( b )25第七章 MCS-51与键盘、显示器的接口 7.2.2 独立式键盘与单片机的接口独立式键盘与单片机的接口键盘的结构形式有两种:键盘的结构形式有两种:独立式键盘独立式键盘与与矩阵式键盘矩阵式键盘。 独立式键盘就是各按键相互独立,每个按键各接一根独立式键盘就是各按键相互独立,每个按键各接一根I/O口线,每口线,每根根I/O口线上的按键都不会影响其它的口线上的按键都不会影响其它的I/O口线。口线。 GNDVCCGNDVCC与8051I N T08051P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7P1.0P1.1P1.2P1.3P

32、1.4P1.5P1.6P1.71) 独立式键盘独立式键盘 图(图(a)为中断方式()为中断方式(b)为查询方式工作)为查询方式工作26第七章 MCS-51与键盘、显示器的接口 下面是针对查询方式的汇编语言形式的键盘程序。总共有8个键位,KEY0KEY7为8个键的功能程序。START:MOV A,#0FFH;MOV P1,A ;置P1口为输入状态MOV A,P1 ;键状态输入CPL AJZ START ;没有键按下,则转开始JB ACC.0,K0 ;检测0号键是否按下,按下转JB ACC.1,K1 ;检测1号键是否按下,按下转JB ACC.2,K2 ;检测2号键是否按下,按下转JB ACC.3,

33、K3 ;检测3号键是否按下,按下转JB ACC.4,K4 ;检测4号键是否按下,按下转JB ACC.5,K5 ;检测5号键是否按下,按下转JB ACC.6,K6 ;检测6号键是否按下,按下转JB ACC.7,K7 ;检测7号键是否按下,按下转JMP START ;无键按下返回,再顺次检测27第七章 MCS-51与键盘、显示器的接口 K0:AJMP KEY0K1:AJMP KEY1K7:AJIMP KEY7KEY0: ;0号键功能程序JMP START ;0号键功能程序执行完返回KEY1: ;0号键功能程序JMP START ;1号键功能程序执行完返回KEY7: ;7号键功能程序JMP STAR

34、T ;7号键功能程序执行完返回28第七章 MCS-51与键盘、显示器的接口 【例7-4】 以AT89C51单片机为核心,对独立式按键进行识别并显示按键的键号。P1口作为按键的输入口,P3口接一个LED显示器,编程显示按键的号码07。R22470R23470R24470R25470R26470R27470R28470XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.5

35、6P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U2AT89C5129第七章 MCS-51与键盘、显示器的接口 #define uchar unsigned char#define uint unsigned intuchar data key2;code uchar dirtab=0 xc0,0 xf9,0 x

36、a4,0 xb0,0 x99,0 x92,0 x82,0 xf8,0 x80; /显示码表void key() /键管理函数 uchar key1;P1=0 xff; /读键key1=P1;if(key1!=0 xff) /判断 dl_6(); /延时 P1=0 xff; /再读 key1=P1;if(key1!=0 xff) /再判断 key1=P1; switch(key1) case 0 xff: key2=8; break; case 0 xfe: key2=0; break; case 0 xfd: key2=1; break; case 0 xfb: key2=2; break;

37、case 0 xf7: key2=3; break; case 0 xef: key2=4; break; case 0 xdf: key2=5; break; case 0 xbf: key2=6; break; case 0 x7f: key2=7; break; default : break; 30第七章 MCS-51与键盘、显示器的接口 void main() key2=8;while(1)key();P3=dirtabkey2;/查表并显示31第七章 MCS-51与键盘、显示器的接口 2. 矩阵键盘与单片机的接口矩阵键盘与单片机的接口 矩阵式键盘又叫行列式键盘。用矩阵式键盘又叫行列

38、式键盘。用I/O口线组成行、列结构,键位口线组成行、列结构,键位设置在行列的交点上。例如设置在行列的交点上。例如44的行、列结构可组成的行、列结构可组成16个键的键盘,个键的键盘,比一个键位用一根比一个键位用一根I/O口线的独立式键盘少了一半的口线的独立式键盘少了一半的I/O口线。口线。 矩阵键盘与单片机的连接方法:矩阵键盘与单片机的连接方法:直接与单片机的直接与单片机的I/O口线;口线;利用扩展的并行利用扩展的并行I/O口连接;口连接;利用可编程的键盘、显示接口芯利用可编程的键盘、显示接口芯片(如片(如8279)进行连接。)进行连接。其中,利用扩展的并行其中,利用扩展的并行I/O口连接方口连

39、接方便灵活,在单片机应用系统中比较便灵活,在单片机应用系统中比较常用常用。32第七章 MCS-51与键盘、显示器的接口 1)1) 矩阵键盘的工作过程矩阵键盘的工作过程判断是否有键闭合。判断是否有键闭合。判断方法:判断方法:输出口向所有的列线输入低电平,然后再输入各行线状输出口向所有的列线输入低电平,然后再输入各行线状态。若行线状态均为高电平,则表明没有键闭合;若行线状态中有低态。若行线状态均为高电平,则表明没有键闭合;若行线状态中有低电平,则表明有键闭合。电平,则表明有键闭合。判断按键闭合位置判断按键闭合位置2处理方法是:列线逐列置低电平,检查行输入状态,称为逐列扫描。处理方法是:列线逐列置低

40、电平,检查行输入状态,称为逐列扫描。键码计算键码计算键码可以直接使用闭合键的行列值组合产生,但这会使子程序的入键码可以直接使用闭合键的行列值组合产生,但这会使子程序的入口地址比较散乱,所以,通常以键的排列顺序安排键码。口地址比较散乱,所以,通常以键的排列顺序安排键码。等待键的释放等待键的释放计算键码之后,再延迟一段时间对按键进行扫描,等待键的释放。计算键码之后,再延迟一段时间对按键进行扫描,等待键的释放。等待键的释放是为了保证键闭合一次仅进行一次处理。等待键的释放是为了保证键闭合一次仅进行一次处理。33第七章 MCS-51与键盘、显示器的接口 34第七章 MCS-51与键盘、显示器的接口 【例

41、【例7-5】 以以AT89C51单片机为核心,设计单片机为核心,设计4x4的键盘,并显示按键键号的键盘,并显示按键键号。P1.0P1.3作为行线,作为行线,P1.4P1.7作为列线。作为列线。P2口作为两位口作为两位LED显示器的显示器的接口。接口。XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3

42、.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C51A7QA13B1QB12C2QC11D6QD10BI/RBO4QE9RBI5QF15LT3QG14U27448A7QA13B1QB12C2QC11D6QD10BI/RBO4QE9RBI5QF15LT3QG14U37448列列1列列3列列2列列0行行0行行1行行2行行3012312131415图7-13 矩阵式按键

43、Proteus电路仿真图35第七章 MCS-51与键盘、显示器的接口 程序如下:#include #include #define uchar unsigned charvoid main( ) uchar i,j,k,n; P2=0 xff; /数码管黑屏 while(1) P1=0 xf0; /P1高4为设置为输入 if(P1&0 xf0)!=0 xf0)/判断是否有键按下 j=0 xfe; /行0输出低电平,行1、行2和行3输出高电平 for(i=0;i4;i+) P1=j; /输入某行为0 k=P1&j; /行值、列值组合 36第七章 MCS-51与键盘、显示器的接口

44、if(k=0 xee) n=0; delay( );/k0 else if(k=0 xde) n=1; delay( );/k1 else if(k=0 xbe) n=2; delay( );/k2 else if(k=0 x7e) n=3; delay( );/k3 else if(k=0 xed) n=4; delay( );/k4 else if(k=0 xdd) n=5; delay( );/k5 else if(k=0 xbd) n=6; delay( );/k6 else if(k=0 x7d) n=7; delay( );/k7 else if(k=0 xeb) n=8; del

45、ay( );/k8 else if(k=0 xdb) n=9; delay( );/k9 else if(k=0 xbb) n=10; delay( );/k10 else if(k=0 x7b) n=11; delay( );/k11 else if(k=0 xe7) n=12; delay( );/k12 else if(k=0 xd7) n=13; delay( );/k13 else if(k=0 xb7) n=14; delay( );/k14 else if(k=0 x77) n=15; delay( );/k15 j=(j1)|0 xf1; P2=(n%10)4)|(n/10);

46、 /显示键值 37第七章 MCS-51与键盘、显示器的接口 PA7PA6PA5PA4PA3PA2PA1PA0PC0PC1PC2PC30 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 CS74LS373WRRDA1A0P2.7WRRDALEP0.0P0.7D0D7RESET1K20F+5V+5V82555.1K4805138第七章 MCS-51与键盘、显示器的接口 键盘扫描子程序如下:(硬件线路如图键盘扫描子程序如下:(硬件线路如图7.4,8255A的的A口、口、B口、口、

47、C口和控制口地址分别为口和控制口地址分别为7F00H、7F01H、7F02H、7F03H,设,设8255A已在主程序中初始化。已设定为已在主程序中初始化。已设定为A口方式口方式0输出,输出,C口的低口的低4位方式位方式0输入。)输入。)KEY1KEY1:ACALL KS1 ACALL KS1 ;调用判断有无键按下子程序;调用判断有无键按下子程序 JNZ LK1 JNZ LK1 ;有键按下时,;有键按下时,(A)0(A)0转消抖延时转消抖延时KEY2KEY2:ACALL TM6msACALL TM6msAJMP KEY1 AJMP KEY1 ;无键按下返回;无键按下返回LK1LK1:ACALL

48、TM12ms ACALL TM12ms ;调;调12 ms12 ms延时子程序延时子程序ACALL KS1 ACALL KS1 ;查有无键按下,若有则真有键按下;查有无键按下,若有则真有键按下JNZ LK2 JNZ LK2 ;键;键(A) 0(A) 0逐列扫描逐列扫描AJMP KEY2 AJMP KEY2 ;不是真有键按下,返回;不是真有键按下,返回LK2LK2:MOV R2MOV R2,#0FEH #0FEH ;初始列扫描字;初始列扫描字(0(0列列) )送入送入R2R2MOV R4MOV R4,#00H #00H ;初始列;初始列(0(0列列) )号送入号送入R4R4LK4LK4:MOV

49、DPTRMOV DPTR,#7F00H #7F00H ;DPTRDPTR指向指向8155PA8155PA口口MOV AMOV A,R2 R2 ;列扫描字送至;列扫描字送至8155PA8155PA口口MOVX DPTRMOVX DPTR,A AINC DPTR INC DPTR ;DPTRDPTR指向指向8155PC8155PC口口INC DPTR INC DPTR 39第七章 MCS-51与键盘、显示器的接口 MOVX A,DPTR ;从8155 PC口读入行状态JB ACC.0,LONE ;查第0行无键按下,转查第1行MOV A,#00H ;第0行有键按下,行首键码#00HAAJMP LKP

50、 ;转求键码LONE:JB ACC.1,LTWO ;查第1行无键按下,转查第2行MOV A,#08H ;第1行有键按下,行首键码#08HAAJMP LKP ;转求键码LTWO:JB ACC.2,LTHR ;查第2行无键按下,转查第3行MOV A,#10H ;第2行有键按下,行首键码#10HAAJMP LKP ;转求键码LTHR:JB ACC.3,NEXT ;查第3行无键按下,转该查下一列MOV A,#18H ;第3行有键按下,行首键码#18HALKP:ADD A,R4 ;求键码,键码=行首键码+列号PUSH ACC ;键码进栈保护LK3:ACALL KS1 ;等待键释放JNZ LK3 ;键未释

51、放,等待POP ACC ;键释放,键码ARET ;键扫描结束,出口状态(A)=键码40第七章 MCS-51与键盘、显示器的接口 NEXT:INC R4 ;准备扫描下一列,列号加1MOV A,R2 ;取列扫描字送累加器AJNB ACC.7,KEND ;判断8列扫描否?扫描完返回RL A ;扫描字左移一位,变为下一列扫描字MOV R2,A ;扫描字送入R2保存AJMP LK4 ;转下一列扫描KEND:AJMP KEY1 KS1:MOV DPTR,#7F00H ;DPTR指向8155PA口MOV A,#00H ;全扫描字AMOVX DPTR,A ;全扫描字送往8155PA口INC DPTR ;DPT

52、R指向8155PC口INC DPTR MOVX A,DPTR ;读入PC口行状态CPL A ;变正逻辑,以高电平表示有键按下ANL A,#0FH ;屏蔽高4位,只保留低4位行线值RET ;出口状态:(A)0时有键按下41第七章 MCS-51与键盘、显示器的接口 TM12ms:MOV R7,#18H ;延时12 ms子程序TM:MOV R6,#0FFHTM6:DJNZ R6,TM6DJNZ R7,TMRETTM6ms:MOV R7,#0CH ;延时6 ms子程序TM2:MOV R6,#0FFHTM62:DJNZ R6,TM6DJNZ R7,TMRETC语言键盘扫描子程序:略42第七章 MCS-5

53、1与键盘、显示器的接口 7.3 MCS-51单片机与单片机与ADC的接口的接口7.3.1 A/D转换器概述转换器概述 A/D转换器(转换器(ADC)的作用:把模拟量转换成数字量,以便于计算机)的作用:把模拟量转换成数字量,以便于计算机进行处理。进行处理。根据转换原理可分:计数型根据转换原理可分:计数型A/D转换器、逐次比较式、双斜率积分型、转换器、逐次比较式、双斜率积分型、V/F变换式等;变换式等;按转换方法:可分为直接按转换方法:可分为直接A/D转换器和间接转换器和间接A/D转换器;转换器;按其分辨率可分:为按其分辨率可分:为416位的位的A/D转换器芯片。转换器芯片。与单片机的接口方式与单

54、片机的接口方式:有串联接口和并联接口两种方式。有串联接口和并联接口两种方式。1) 分类分类2). A/D转换器的主要指标转换器的主要指标分辨率:一位最小单位的数字量所表示的模拟电压变化量,它与位数有关;分辨率:一位最小单位的数字量所表示的模拟电压变化量,它与位数有关;转换速度:转换一次的时间,逐次比较型一般为转换速度:转换一次的时间,逐次比较型一般为510us;转换精度:它反映实际转换精度:它反映实际A/D在量化值上与理想在量化值上与理想A/D的差值,用绝对或相位误的差值,用绝对或相位误差表示。差表示。43第七章 MCS-51与键盘、显示器的接口 3. A/D转换器的组成转换器的组成一个完整的

55、一个完整的A/D转换器应该包含有:转换器应该包含有: 模拟输入信号和参考电压;模拟输入信号和参考电压; 数字输出信号;数字输出信号; 启动启动A/D转换信号,输入信号;转换信号,输入信号; 转换结束信号或者转换结束信号或者“忙忙”信号,输出信号;信号,输出信号; 数据输出允许信号,输入信号;数据输出允许信号,输入信号;图7-14 A/D转换流程图44第七章 MCS-51与键盘、显示器的接口 7.3.2 ADC0809与与MCS-51的接口的接口1)ADC0809芯片芯片ADC0809是是CMOS单片型逐次逼近型、单片型逐次逼近型、8位位A/D转换器,具有转换器,具有8路模路模拟量输入通道,有转

56、换起停控制,模拟输入电压范畴为拟量输入通道,有转换起停控制,模拟输入电压范畴为0+5V,转,转换时间为换时间为100 s,IN0IN1IN2IN3IN4IN5IN6IN7ADDAADDBADDCALE通道选择开关地址锁存和译码定时和控 制逐次逼近寄存器SAR8 位三 态锁 存缓冲器DACOEEOCCLOCKSTARTVCCGNDVREF+VREF-ADC0809D0D1D2D3D4D5D6D7 IN3 IN4 IN5 IN6 IN7 START EOC D3 OE CLOCK VCC VREF+ GND D1 IN2 IN1 IN0 ADDA ADDB ADDC ALE D7 D6 D5 D4

57、 D0 VREF- D2 1 2 3 4 5 6 7 8 9 10 11 12 13 14 28 27 26 25 24 23 22 21 20 19 18 17 16 15 2 45第七章 MCS-51与键盘、显示器的接口 IN0IN7:8路模拟量输入端。D0D7:8位数字量输出端。ADDA、ADDB、ADDC:3位地址输入线,选择8路模拟通道中的一路。 ADDCADDBADDA选择通道000IN0001IN1010IN2011IN3100IN4101IN5110IN6111IN7ALE:地址锁存允许信号,输入,高电平有效。START:A/D转换启动信号,输入,高电平有效。2)ADC0809

58、的引脚的引脚EOC:A/D转换结束信号,输出。当A/D转换结束时,该线脚输出高电平。OE:数据输出允许信号,输入,高电平有效。CLK:时钟脉冲输入端。要求时钟频率不高于640KHZ.REF+、REF-:基准电压输入端。Vcc:接+5V电源。GND:地。46第七章 MCS-51与键盘、显示器的接口 3)ADC0809的工作流程的工作流程START/ALE 地址锁存 ADDA/B/C EOC OE D0D7 启动 转换结束 读取结果 D A T A 输入3位地址,并使ALE=1,将地址存入地址锁存器中,经地址译码器译码从8路模拟通道中选通一路模拟量送到比较器。送START一高脉冲,START的上升

59、沿使逐次逼近寄存器复位,下降沿启动A/D转换,并使EOC信号为低电平。当转换结束时,转换的结果送入到输出三态锁存器,并使EOC信号回到高电平,通知CPU已转换结束。当CPU执行一读数据指令,使OE为高电平,则从输出端D0D1读出数据。47第七章 MCS-51与键盘、显示器的接口 4)ADC0809与与MCS-51单片机的接口单片机的接口P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7ALE WR P2.7RDINTO+5VGNDD0D1D2D3D4D5D6D7ADDAADDBADDCCLKALESTARTOEEOCIN0IN1IN2IN3IN4IN5IN6IN7 VREF+VR

60、EF-ADC08098051分频器2软件编程软件编程设接口电路用于一个设接口电路用于一个8路模拟量输入的巡回检测系统,使用中断方式采路模拟量输入的巡回检测系统,使用中断方式采样数据,把采样转换所得的数字量按序存于片内样数据,把采样转换所得的数字量按序存于片内RAM的的30H37H单元单元中。采样完一遍后停止采集。中。采样完一遍后停止采集。48第七章 MCS-51与键盘、显示器的接口 汇编语言编程:汇编语言编程:ORG 0003HLJMP INT0ORG 0100H ;主程序;主程序MOV R0,#30H ;设立数据存储区指针;设立数据存储区指针MOV R2,#08H ;设置;设置8路采样计数值路采样计数值SETB

温馨提示

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

评论

0/150

提交评论