资讯详情

如何利用单片机数码管程序模拟是时钟显示时间?

描述

数码管是一种半导体发光器件,其基本单元是发光二极管。数码管可分为七段数码管和八段数码管。八段数码管比七段数码管多一个发光二极管单元,即多一个小数点(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

本程序已通过实践验证!!!

4145900b03b5eb8010ff8a11ea2e9b26.png

打开APP阅读更多精彩内容

点击阅读全文

标签: 放大电路数码管

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台