首页 理论教育 单片机接口扩展:数码管实现

单片机接口扩展:数码管实现

时间:2023-11-16 理论教育 版权反馈
【摘要】:1 LED数码管的动态显示接口技术LED数码管的动态显示数码管静态显示稳定,但占用单片机I/O接口较多。如图6-25所示,四个数码管的段选码共用一个P2的I/O接口,在每个瞬间,数码管的段码相同。图6-25 数码管接口典型电路原理图接口程序设计程序设计的目的是使4个数码管稳定显示“0123”,要求不闪烁。以软件为主的LED数码显示器接口扩展电路如图6-27所示。由图6-28可知,当采用共阳极数码管时,应按共阳极规律控制。

单片机接口扩展:数码管实现

1 LED数码管的动态显示接口技术

(1)LED数码管的动态显示

数码管静态显示稳定,但占用单片机I/O接口较多。在多位数码管显示的情况下,为节省口线,简化电路,将所有数码管段选线一一对应并联在一起,由同一个8位I/O接口控制(有时要通过驱动元件);而位选线独立,分别由各I/O接口线控制(一般要通过驱动元件)。如图6-25所示,四个数码管的段选码共用一个P2的I/O接口,在每个瞬间,数码管的段码相同。要达到多位显示的目的就要在每一瞬间只有一位com端有效,即只选通一位数码管。段码由共用I/O接口送来,各位数码管依次轮流选通,使每位显示该位的字符,并保持(延时)一段时间,以适应视觉暂留的效果。

(2)延时时间的估算

延时可由人眼视觉暂留时间来估算。一般地,1s内对四位数码管扫描24次就可看到不闪烁的显示。也就是扫描一次时间约42ms。由此算出对应于每位数码管显示延时时间约11ms。经实验,每位延时超过18ms则观察到明显闪烁。这里选择每位数码管延时时间为10ms。

(3)数码管LED限流(保护)电阻的估算

数码管由LED发光管组成。一般数码管的电压降(VLED)为1.8V左右。若电源电压(V)为5V,数码管每段LED的电流为10mA,则估算的限流电阻R为:R=(V-VLED)/0.010=320Ω。

(4)接口电路设计

接口电路典型原理图如图6-25所示,晶振频率为12MHz。设计采用动态显示数码管方式,采用共阳极数码管,与其相串的7只限流电阻根据计算取值为300Ω。

978-7-111-54295-7-Chapter06-44.jpg

图6-25 数码管接口典型电路原理图

(5)接口程序设计

程序设计的目的是使4个数码管稳定显示“0123”,要求不闪烁。

ORG 0000H

SJMP STAR

ORG 30H

STAR:MOV P1,#0FFH;关闭位选口

MOV P2,#0FFH;关闭段选口

ST1:MOV R0,#0;计数器预设为0

MOV R1,#0FEH;选通P1.0控制的显示器

ST2:MOV A,R0

LCALL SEG7;将R0中数字转换为显示码从P2口输出

CPL A;取反,将阴码变为阳码

MOV P2,A;通过R0得到的显示段码送P2口

MOV A,R1;位选通数据送P1

MOV P1,A

LCALL DLY;延时10ms

MOV P1,#0FFH;关闭位选通

INC R0;计数+1

CJNE R0,#4H,ST3;4位是否扫描完?

SJMP ST1;0~3扫描完,重新开始

ST3:MOV A,R1;0~3依次显示

RL A;更新选通位

MOV R1,A

SJMP ST2;循环,显示下一位

DLY:MOV R7,#20;延时10ms

MOV R6,#0

DLY1:DJNZ R6,$

DJNZ R7,DLY1

RET

SEG7:INC A;将数字转换为显示码

MOVC A,@A+PC

RET

DB 3FH,06H,5BH,4FH;共阴极段码0,1,2,3

DB 66H,6DH,7DH,07H;4,5,6,7

DB 7FH,6FH,77H,7CH;8,9,A,B

DB 39H,5EH,79H,71H;C,D,E,F

END

2 LED数码管的接口扩展技术

单片机与LED数码显示器有以硬件为主和以软件为主的两种接口扩展方法。以硬件为主的LED数码显示器接口扩展电路如图6-26所示。使用单片机连接硬件接口驱动扩展,需要配合使用I/O接口,硬件条件限制了使用范围。

以软件为主的LED数码显示器接口扩展电路如图6-27所示。它是以软件查表代替硬件译码,不但省去了译码器,而且还能显示更多的字符。但是驱动器是必不可少的,因为仅靠接口提供不了较大的电流供LED数码显示器使用。

978-7-111-54295-7-Chapter06-45.jpg

图6-26 以硬件为主的LED数码显示器接口扩展电路(www.xing528.com)

978-7-111-54295-7-Chapter06-46.jpg

图6-27 以软件为主的LED数码显示器接口扩展电路

实际使用的LED数码显示器位数较多,为了简化线路、降低成本,大多采用以软件为主的接口方法。对于多位LED数码显示器,通常采用动态扫描显示方法,即逐个循环点亮各位显示器。扩展电路接口连接如图6-28所示。

例6-8:在数码显示器的最左边1位上显示1个“P”字。数码显示器的接口电路如图6-28所示,设8155的端口地址为7F00H~7F05H,数码管为共阳极。试编写相应的显示程序。

解:在同一时刻只显示1种字符,故可采用静态显示的方法。由图6-28可知,当采用共阳极数码管时,应按共阳极规律控制。在程序的开始,应对8155进行初始化编程,设A、B口均为输出。

978-7-111-54295-7-Chapter06-47.jpg

图6-28 8155作6位LED显示器接口的电路

程序如下:

MOV A,#03H;8155命令字(A、B口均为输出)

MOV DPTR,#7F00H;指向命令口

MOVX @DPTR,A;输出命令字

MOV A,#8CH;取“P”字符的显示段码

INC DPTR;指向A口

MOVX @DPTR,A;输出显示段码

INC DPTR

INC DPTR;指向C口

MOV A,#20H;取位控制字(最左边一位上显示)

MOVX @DPTR,A;输出位控字

SJMP $;暂停

例6-9:开始时在数码显示器的最右边一位上显示1个“0”字,以后每隔0.5s将“0”字左移1位,直到最左边一位后则停止显示。接口电路与端口地址同上例,假设有20ms延时子程序D20MS可供直接调用。试编写相应的程序。

解:本例仍可采用静态显示的方法,程序如下。

MOV A,#03H;8155命令字(A、B口均为输出)

MOV DPTR,#7F00H;指向命令口

MOVX @DPTR,A;输出命令字

MOV A,#C0H;取“0”字的显示段码

INC DPTR;指向A口

MOVX @DPTR,A;输出显示段码

INC DPTR

INC DPTR;指向C口

MOV A,#01H;取位控制字(最右边一位上显示)

LOOP1:MOVX @DPTR,A;输出位控字

MOV R0,#19H;延时0.5s

LOOP2:LCALL D20MS

DJNZ R0,LOOP2

JB A.5,LOOP3;若已到最左边一位则转

RL A;未到,则将位控字左移1位

SJMP LOOP1;继续

LOOP3:MOV A,#00H;停止显示

MOVX @DPTR,A

SJMP $;暂停

例6-10:编制一动态显示程序,使数码显示器同时显示“ABCDEF”6个字符。设显示缓冲区的首地址为7AH,可调用动态扫描显示子程序DIR。

解:编写程序如下。

MOV A,#0FH;取最右边1位字符

MOV R0,#7AH;指向显示缓冲区首地址(最低位)

MOV R1,#06H;共送入6个字符

LOOP:MOV @R0,A;将字符送入显示缓冲区

INC R0;指向下一显示单元

DEC A;取下一个显示字符

DJNZ R1,LOOP;6个数未送完,则重复

MM:LCALL DIR;扫描显示一遍

SJMP MM;重复扫描

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈