描述
数码管是一种半导体发光器件,其基本单元是发光二极管。数码管可分为七段数码管和八段数码管。八段数码管比七段数码管多一个发光二极管单元,即多一个小数点(DP)这个小数点可以更准确地表示数字管想要显示的内容;数字管可分为1、2、3、4、5、6、7。
数码管也称LED数字管,不同行业的人对数字管有不同的称呼,其实都是同一个产品。
根据发光二极管单元的连接方式,可分为共阳极数码管和共阴极数码管。共阳数码管是指将所有发光二极管的阳极连接在一起形成公共阳极(COM)在应用数码管和共阳数码管时,应使用公共极端COM接到 5V,当一个字段发光二极管的阴极是低电平时,相应的字段被点亮,当一个字段的阴极是高电平时,相应的字段就不亮了。共阴数码管是指将所有发光二极管的阴极连接在一起形成公共阴极(COM)在应用数字管和共阴数字管时,应使用公共极端COM接到地线GND当一个字段发光二极管的阳极是高电平时,相应的字段就会被点亮,当一个字段的阳极是低电平时,相应的字段就不会被点亮。
数字管驱动模式
概述
为了正常显示数字管,需要使用驱动电路驱动数字管的每个段,以显示我们想要的数字。因此,根据数字管的不同驱动模式,可分为静态和动态两类。
静态显示驱动
静态驱动也被称为直流驱动。静态驱动是指每个数字管的每个段码都由单片机组成I/O驱动或使用端口BCD二-十进制译码器译码驱动。静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O如果驱动5个数字管静态显示,需要5个端口×8=40根I/O要知道一个89S51单片机可用I/O只有32个端口,在实际应用中必须增加译码驱动器,以增加硬件电路的复杂性。
动态显示驱动
数字管动态显示接口是单片机中应用最广泛的显示方式之一,动态驱动是所有数字管的8个显示笔划a,b,c,d,e,f,g,dp同名端连接在一起,是每个数字管的公共极COM增加位选通控制电路,位选通独立I/O线路控制,当单片机输出字形码时,所有数字管都接收到相同的字形码,但是个数字管会显示字形取决于单片机对位选择COM端电路的控制,所以只要打开需要显示的数码管的选通控制,这个位置就会显示字形,没有选通的数码管就不会亮。通过分时轮流控制轮流控制COM端,使每个数字管轮流控制显示,这就是动态驱动。在轮流显示过程中,每个数字管的点亮时间为1~2ms,由于人类的视觉暂留现象和发光二极管的余辉效应,虽然数字管不同时点亮,但只要扫描速度足够快,印象是一组稳定的显示数据,没有闪烁感,动态显示效果和静态显示相同,可以节省很多I/O端口,而且功耗更低。
使用单片机数字管程序模拟时钟显示时间
这个电子时钟主要是由AT89S51单片机和8个共阳数码管。由于数码管引脚较多,占用单片机I\O口也比较多,因为单片机最多只有32个I\O当数码管较多(两个以上)时,口腔无法满足实际需要。因此,当数码管较多时,数码管通过动态扫描逐个点亮。这种显示方采用这种显示方式。使用取表指令MOV DPTR,#TABLE与MOVC A,@A DPTR和条件转移指令CJNE A,#data,rel”所要显示的时间送入单片机的端口(P0口和P2口)并放大后,驱动数字管显示要显示的具体时间。单片机内部定时器定时,计数,时间非常准确!
时间格式为:12-00-00,即小时-分钟-秒。P0口是数码管的各段接口,P两口是8个数字管的电源端。P3.两口调整为小时,P3.三口调整为分钟,P3.四口为秒调整。但是每个调整键只能加,不能减。晶振为12MHZ。
汇编源程序如下:
SECOND EQU 30H
MINITE EQU 31H
HOUR EQU 32H
HOURK BIT P3.2
MINITEK BIT P3.3
SECONDK BIT P3.4
DISPBUF EQU 40H
DISPBIT EQU 48H
T2SCNTA EQU 49H
T2SCNTB EQU 4AH
TEMP EQU 4BH
ORG 00H
LJMP START
ORG 0BH
LJMP INT_T0
START:MOV SECOND,#00H
MOV MINITE,#00H
MOV HOUR,#12
MOV DISPBIT,#00H
MOV T2SCNTA,#00H
MOV T2SCNTB,#00H
MOV TEMP,#0FEH
LCALL DISP
MOV TMOD,#01H
MOV TH0,#(65536-2000) / 256
MOV TL0,#(65536-2000) MOD 256
SETB TR0
SETB ET0
SETB EA
WT:JB SECONDK,NK1
LCALL DELY10MS
JB SECONDK,NK1
INC SECOND
MOV A,SECOND
CJNE A,#60,NS60
MOV SECOND,#00H
NS60:LCALL DISP
JNB SECONDK,$
NK1:JB MINITEK,NK2
LCALL DELY10MS
JB MINITEK,NK2
INC MINITE
MOV A,MINITE
CJNE A,#60,NM60
MOV MINITE,#00H
NM60:LCALL DISP
JNB MINITEK,$
NK2:JB HOURK,NK3
LCALL DELY10MS
JB HOURK,NK3
INC HOUR
MOV A,HOUR
CJNE A,#24,NH24
MOV HOUR,#00H
NH24:LCALL DISP
JNB HOURK,$
NK3:LJMP WT
DELY10MS:MOV R6,#10
D1:MOV R7,#248
DJNZ R7,$
DJNZ R6,D1
RET
DISP:MOV A,#DISPBUF
ADD A,#8
DEC A
MOV R1,A
MOV A,HOUR
MOV B,#10
DIV AB
MOV @R1,A
DEC R1
MOV A,B
MOV @R1,A
DEC R1
MOV A,#10
MOV @R1,A
DEC R1
MOV A,MINITE
MOV B,#10
DIV AB
MOV @R1,A
DEC R1
MOV A,B
MOV @R1,A
DEC R1
MOV A,#10
MOV@R1,A
DEC R1
MOV A,SECOND
MOV B,#10
DIV AB
MOV @R1,A
DEC R1
MOV A,B
MOV @R1,A
DEC R1
RET
INT_T0:MOV TH0,#(65536-2000) / 256
MOV TL0,#(65536-2000) MOD 256
MOV A,#DISPBUF
ADD A,DISPBIT
MOV R0,A
MOV A,@R0
MOV DPTR,#TABLE
MOVC A,@A DPTR
MOV P0,A
MOV A,DISPBIT
MOV DPTR,#TAB
MOVC A,@A DPTR
MOV P2,A
INC DISPBIT
MOV A,DISPBIT
CJNE A,#08H,KNA
MOV DISPBIT,#00H
KNA:INC T2SCNTA
MOV A,T2SCNTA
CJNE A,#100,DONE
MOV T2SCNTA,#00H
INC T2SCNTB
MOV A,T2SCNTB
CJNE A,#05H,DONE
MOV T2SCNTB,#00H
INC SECOND
MOV A,SECOND
CJNE A,#60,NEXT
MOV SECOND,#00H
INC MINITE
MOV A,MINITE
CJNE A,#60,NEXT
MOV MINIE,#00H
INC HOUR
MOV A,HOUR
CJNE A,#24,NEXT
MOV HOUR,#00H
NEXT:LCALL DISP
DONE:RETI
TABLE:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0BFH
TAB:DB 0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,07FH
END
本程序已通过实践验证!!!
打开APP阅读更多精彩内容
点击阅读全文