资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,LED数码管显示接口,一、,LED数码管,1,LED显示器的扩展(结构),LED数码管的,结构,:,共阳与共阴,单片机系统扩展LED数码管时,多用,共阳LED,:,共阳数码管每个段笔画是用低电平(“0”)点亮的,要求驱动功率很小;而共阴数码管段笔画是用高电平(“0”)点亮的,要求驱动功率较大。,通常每个段笔画要串一个数百欧姆的,降压电阻,。,公共,阳,极,h g f e d c b a,a,b,c,d,g,e,f,h,公共,阴,极,h g f e d c b a,a,b,c,d,g,e,f,h,h g f a,h g f a,高电平点亮,低电平点亮,接高电平,接地,2,LED数码管的软件译码,八段LED数码管,段代码编码表,(连线不同可有多种表):,公共阳极,h g f e d c b a,a,b,c,d,g,e,f,h,公共阴极,h g f e d c b a,a,b,c,d,g,e,f,h,h g f a,h g f a,高电平点亮,低电平点亮,接高电平,接地,字形,0,1,2,3,4,5,6,7,8,9,黑,共阳,0C0,0F9,0A4,0B0,99,92,82,0F8,80,90,0FF,共阴,3F,06,5B,4F,66,6D,7D,07,7F,6F,00,3,LED数码管分类:,按,其内部结构可分为,共阴型,和,共阳型,;,按,其外形尺寸有多种形式,使用较多的是,0.5,和,0.8,;,按,显示颜色也有多种形式,主要有,红色,和,绿色,;,正向压降一般为,1.52V,,额定电流为,10mA,,最大电流为,40mA,。,静态显示,时取10mA为宜,,动态扫描显示,,可加大脉冲电流,但一般不超过40mA。,按,亮度强弱可分为,超亮,、,高亮,和,普亮,。,4,二、,LED数码管编码方式,表1 共阴和共阳LED数码管几种八段编码表,显示,数字,共阴顺序小数点暗,共阴逆序小数点暗,共阳顺序,小数点亮,共阳顺序,小数点暗,Dp g f e d c b a,16进制,a b c d e f g Dp,16进制,0,0 0 1 1 1 1 1 1,3FH,1 1 1 1 1 1 0 0,FCH,40H,C0H,1,0 0 0 0 0 1 1 0,06H,0 1 1 0 0 0 0 0,60H,79H,F9H,2,0 1 0 1 1 0 1 1,5BH,1 1 0 1 1 0 1 0,DAH,24H,A4H,3,0 1 0 0 1 1 1 1,4FH,1 1 1 1 0 0 1 0,F2H,30H,B0H,4,0 1 1 0 0 1 1 0,66H,0 1 1 0 0 1 1 0,66H,19H,99H,5,0 1 1 0 1 1 0 1,6DH,1 0 1 1 0 1 1 0,B6H,12H,92H,6,0 1 1 1 1 1 0 1,7DH,1 0 1 1 1 1 1 0,BEH,02H,82H,7,0 0 0 0 0 1 1 1,07H,1 1 1 0 0 0 0 0,E0H,78H,F8H,8,0 1 1 1 1 1 1 1,7FH,1 1 1 1 1 1 1 0,FEH,00H,80H,9,0 1 1 0 1 1 1 1,6FH,1 1 1 1 0 1 1 0,F6H,10H,90H,5,【例1】已知显示数存在无符号整型数count中,试将其转换为5位共阴字段码(顺序),存在无符号字符型数组buffer中。,从显示数中分离出显示的每一位数字,方法是将显示数除以十进制的权,显示数,转换,为显示字段码的,步骤,:,将分离出的显示数字转换为显示字段,码,方法是查表,6,三、,静态显示方式及其典型应用电路,动态显示方式,,在某一瞬时显示一位,依次循环扫描,轮流显示,由于人的视觉滞留效应,人们看到的是多位同时稳定显示。,特点,:占用I/O端线少,电路较简单,编程较复杂,CPU要定时扫描刷新显示。一般适用于显示位数较多的场合。,LED数码管显示分类:静态显示方式和动态显示方式。,静态显示方式,,每一位字段码分别从I/O控制口输出,保持不变直至CPU刷新。,特点,:编程较简单,但占用I/O口线多,一般适用于显示位数较少的场合。,7,LED显示器的扩展(显示方式),静态显示特点:,无闪烁,,用,元器件多,,,占I/O线多,,,无须扫描,,,节省CPU时间,,,编程简单。,静态显示:,各数码管在显示过程中,持续,得到送显信号,与各数码管接口的,I/O口线,是,专用,的。,8,1、,并行扩展静态显示电路,9,2、,串行,扩展静态显示电路,10,要求:,根据上图编写通过串行口和74LS164驱动,共,阳LED数码管,查表显示的子程序。,条件:,系统有6个LED数码管,待显数据(00H09H)已放在,35H30H,单元中(分别对应,十万位,个位,),,DSPLY,:MOV DPTR,#TABLE,;共阳LED数码管译码,表首址,MOV R0,#30H,;待显数据缓冲区的,个位,地址,REDO:MOV A,R0,;通过R0实现寄存器,间接寻址,MOVC A,A+DPTR,;,查表,MOV SBUF,A,;经串行口,发送,到74LS164,JNB TI,$,;,查询,送完一个字节的第8位?,CLR TI,;为下一字节发送,作准备,INC R0,;R0,指向下一个,数据缓冲单元,CJNE R0,#36H,REDO,;判断,是否发完,6个数?,RET,;发完6个数就,返回,TABLE,:DB 0C0H,0F9H,0A4H,0B0H,99H,;共阳LED译码表,DB 92H,82H,0F8H,80H,90H,11,动态显示电路,连结形式:,显示各位的所有,相同字段线连在一起,,共8段,由一个8位,I/O口控制;,每一位的公共端,(共阳或共阴COM),由另一个I/O口控制。,四、,动态显示方式,及其典型应用电路,12,动态显示特点:,有闪烁,用元器件少,占I/O线少,,必须扫描,,花费CPU时间,编程复杂。(有多个LED时尤为突出),动态显示:,各数码管在显示过程中,轮流,得到送显信号,与各数码管接口的,I/O口线是共用,的。,13,LED数码管,动态,显示举例,P1.5 P1.4P1.3P1.2P1.2P1.0,P0.7 P0.6 P0.5 P0.4 P0.3 P0.2 P0.1 P0.0,7406 OC门 X 3,上拉电阻14,+5V,AT89C51,工作原理,:,从,P0口送段代码,P1口送位选信号,。段码虽同时到达 6个LED,但,一次仅一个LED被选中,。利用,“视觉暂留”,,每送一个字符并选中相应位线,延时一会儿,再送/选下一个,循环扫描,即可。,共阴 数码管,位选线,段代码,14,P1.5 P1.4P1.3P1.2P1.2P1.0,P0.7 P0.6 P0.5 P0.4 P0.3 P0.2 P0.1 P0.0,7406 OC门 X 3,+5V,AT89C51,位选线,段代码,要求,:,此处为共阴数码管,P0口送段代码,P1口送位选信号。通过查表实现动态显示。,条件,:,待显数据(00H09H)已放在:,7FH7AH,单元中(分别对应,十万位,个位,),说明,:,由于用了,反相驱动器7406,,要用共阳译码表。,共阴 数码管,上拉电阻14,15,7406 OC门 X 3,+5V,(7FH)(7EH)(7DH)(7CH)(7BH)(7AH),十万 万位 千位 百位 十位 个位,数据缓冲区/显示缓冲区,P0口,送段代码,,P1口,送位选信号。,待显数据,已经放在:,7FH7AH,单元(分别对应,十万位,个位,),使用共阳译码表,。,16,DIR,:MOV DPTR,#DSEG,;数码管译码,表首址,MOV R0,#7AH,;待显缓冲区,个位,地址,MOV R3,#01H,;个位的,位选信号=01H,LD1,:MOV A,R0,;通过R0,间接寻址,MOVC A,A+DPTR,;,查表,MOV P0,A,;字段码送到,P0口,MOV P1,R3,;字位选择送到,P1口,LCALL DELY,;,调延时1ms子程序,INC R0,;R0,指向下一字节,MOV A,R3,JB ACC.5,,LD2,;判,是否发完,6个数?,RL A,;R1,指向下一个位,MOV R3,A,;位选信号存回R1,SJMP,LD1,;跳去再显示下一个数,LD2:,RET,;发完6个数就,返回,DSEG,:DB 0C0H,0F9H,0A4H,0B0H,99H,;共阳译码表,DB 92H,82H,0F8H,80H,90H,P0口,送段代码,,P1口,送位选信号。,待显数据,已经放在:,7FH7AH,单元(分别对应,十万位,个位,),使用共阳译码表,。,17,动态,显示举例,(,循环显示“8”的实验),实验箱,从P0口扩展了两个8位的简单I/O口:,一个送段代码(,字形状,),地址是,0DCH,;,一个送位选信号(,字位置,),地址是,0DDH,。,ORG 0000H MOV R0,#,0DCH,;指向,字形口,MOV A,#80H ;送“8”的字形代码,MOVX,R0,A,;输出字形代码 MOV R1,#,0DDH,;指向,字位口,MOV A,#20H ;从最高位开始LEDO:,MOVX,R1,A,;输出字位代码 ACALL DEYS ;调延时子程序 RR A ;右移一位 SJMP LEDO ;循环显示“8”,18,1、,共阴型8位动态显示电路,19,DIR4:MOV R2,#10,;置循环扫描次数,MOV DPTR,#7FFFH,;置74377口地址,DLP1:ANL P1,#11111000B,;第0位先显示,MOV R0,#30H,;置显示字段码首址,DLP2:MOV A,R0,;读显示字段码,MOVX DPTR,A,;输出显示字段码,LCALL DY2ms,;调用延时2ms子程序(参阅例4.13),INC R0,;指向下一位字段码,INC P1,;选通下一位显示,CJNE R0,#38H,DLP2,;判8位扫描显示完否?未完继续,DJNZ R2,DLP1,;8位扫描显示完毕,判10次循环完否?,CLR A,;10次循环完毕,显示暗,MOVX DPTR,A,;,RET,;子程序返回,【例9-5】按图9-7,试编制循环扫描(10次)显示子程序,已知显示字段码存在以30H(低位)为首址的8字节内RAM中。,解:编程如下:,20,2、,共阳型3位动态显示电路,21,DIR5:MOV DPTR,#0BFFFH,;置74377地址,MOV R2,#100,;置循环显示次数,DIR50:SETB P1.2,;百位停显示,MOV A,40H,;取个位字段码,MOVX DPTR,A,;输出个位字段码,CLR P1.0,;个位显示,LCALL DY2ms,;调用延时2ms子程序(参阅例4.13),DIR51:SETB P1.0,;个位停显示,MOV A,41H,;取十位字段码,MOVX DPTR,A,;输出十位字段码,CLR P1.1,;十位显示,LCALL DY2ms,;延时2ms,DIR52:SETB P1.1,;十位停显示,MOV A,42H,;取百位字段码,MOVX DPTR,A,;输出百位字段码,CLR P1.2,;百位显示,LCALL DY2ms,;延时2ms,DJNZ R2,DIR50,;判循环显示结束否?未完继续,ORL P1,#00000111B,;3位灭显示,RET,;,【例9-6】根据图9-8电路,试编制3位动态扫描显示程序(循环100次),已知显示字段码存在以40H(低位)为首址的3字节内RAM中。,解:编程如下:,22,
展开阅读全文