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

显示光电

90人已加入

描述

  数码管是一种半导体发光器件,其基本单元是发光二极管。数码管按段数可分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元,也就是多一个小数点(DP)这个小数点可以更精确的表示数码管想要显示的内容;按能显示多少个(8)可分为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个共阳数码管组成。由于数码管引脚比较多,占用单片机的IO口也比较多,由于单片机最多只有32个IO口,在数码管比较多时(两个以上),就满足不了实际需要,因此在数码管比较多时,采用动态扫描的方式使数码管逐个点亮。本电子时钟就是采用的这种显示方式。利用取表指令“MOV DPTR,#TABLE与MOVC A,@A+DPTR”和条件转移指令“CJNE A,#data,rel”所要显示的时间送入单片机的端口(P0口和P2口)并放大后,驱动数码管显示出所要显示的具体时间。采用单片机内部定时器定时,计数,时间非常准确!

  显示的时间格式为:12—00—00,即“小时—分钟—秒”。P0口为数码管的各段位接口,P2口为8个数码管的电源端。P3.2口为“小时”调整,P3.3口为“分钟”调整,P3.4口为“秒”调整。但每个调整键只能加,不能减。晶振为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 MINITE,#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阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分