单片机、设计数码管显示-电子时钟 下载本文

显示字符 共阴极段选码 显示字符 共阴极段选码 0 1 2 3 4 T 3FH 06H 5BH 4FH 66H 0CEH 5 6 7 8 9 Q 6DH 7DH 07H 7FH 6FH 98H “灭”(黑) 00H 表1 共阴极7 段LED显示字型编码表

1.6.2. 程序及解释

ORG 0000H AJMP START

START:MOV R0,#01H ; 扫描端口初植 PLAY:MOV P0,#0FFH ; 清原数据 MOV R5,#160 ;滚动的速度 MOV A,R0

ADD A,#04H MOV R1,A MOV P2,#01H

PLAY1:MOV A,R0 ; 6

位数码管显示

DEC A ;A中的数减1

MOV DPTR,#TAB ; 段码表表址放入数据指针 MOVC A,@A+DPTR ;查段码

MOV P0,A ; 段码数据放入P0口 LCALL DL512 ;长调用DL512 MOV A,R0 ;A恢复1 SUBB A,R1

JNC PLAY2 ;进位位不为1,程序转至PLAY2 INC R0 MOV A,P2

RL A ;A中的数循环左移1位 MOV P2,A ;P2=0AH AJMP PLAY1

PLAY2:DJNZ R5,PLAY4 ;R5中的数减1不为0,程序转至PLAY4 AJMP PLAY3

PLAY3:MOV A,R0 ;使滚动 SUBB A,#04H

4

MOV R0,A

SUBB A,#010H ;显示扫描数据的长度 JNC START LJMP PLAY

PLAY4:MOV A,R0 ;控制滚动时间 SUBB A,#05H MOV R0,A MOV P2,#01H LJMP PLAY1

DL512:MOV R2,#0FFH ;延时

DL1: DJNZ R2,DL1

RET TAB:DB

0FFH,0FFH,0FFH,0FFH,0FFH,0C0H,080H,0F9H,0B0H,0F9H,0C0H,0F9H,099H,0C0H,0FFH,0CEH,98H,98H,0FFH,0FFH,0FFH END

第2章 单片机时钟

2.1. 【摘 要】

时钟是人类生活中必不可少的的工具,本设计从日常生活中的事物入手,通过对时钟计时器的设计,让我们认识到单片机已经深入到我们生活的每个领域,该设计不仅可以锻炼我们的动手能力,而且可以加深我们对单片机的认识和激发我们队位置科学领域的探索。

利用单片机实现教学数字时钟计时的主要功能,采用独立式按键进行时间调整,其中AT89C52是核心元件同是采用数码管LED动态显示“时”,“分”,“秒”的现代计时装置。

与传统机械表相比,它具有走时精确,显示直观等特点。它的计时周期为24小时,显满刻度为“23时59分59秒”。该系统同时具有硬件设计简单,工作稳定性高,价格低廉等优点。

2.2. 【关键词】

AT89C52 、LED显示

5

2.3. 功能要求

1) 六位数码管显示时、分、秒,以24小时运算 2) 可实现时分调整

2.4. 程序设计

2.4.1. 主程序

设计中计时采用定时器T0中断完成。主程序循环调用显示子程序和查键,当端口有开关按下时,转入相应的功能程序。流程图如图2-4-1所示。

图2-4-1 主程序流程

2.4.2. 显示子程序

显示子程序每次显示6个连续内存单元的十进制BCD码数据。由于采用7段共阳LED数码管动态扫描实现数据显示,显示十进制BCD码数据对应段码存放在ROM中。流程图如图2-4-2所示。 显示时取内存地址中数据,然后查表得对应显示段码从P0口输出,P2口将为对应的数码管供电,于是数码管就会显示该地址单元的数据。

6

图2-4-2 显示子程序

2.4.3. 定时器T0中断服务程序

定时溢出中断周期设为50MS,中断进入后先进行定时中断初值校正,当中断累加到20次时,对秒计数单元进行加1操作。时钟最大计时值为23时59分59秒。#7FH存放“熄灭符”数据,用于时间调整时的闪烁功能。在计数单元中,采用十进制BCD码计数,满十进位。流程图如图3.3所示 在程序中采用12MHZ晶振频率,精度为1MS,定时初值为50MS,用循环程序进行20次循环可到1S。当1S到时调用加1程序并判断秒、分是否为60,当秒为60时,秒清零,分加1;当分为60时,分清零。终端结束时,分时计时单元数据移入对应显示单元。

7