学号:
基于51单片机的电子时钟设计
分 院 电子信息工程学院
专 业 名 称 电子信息科学与技术
班 级 0601
姓 名
指 导 教 师
20##年5月12日
摘要
随着单片机技术的飞速发展,在其推动下,现代的电子产品几乎渗透到了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高。
时间对于人们来说总是那么的宝贵,可以说时间和金钱是划上了等号。准确的掌握时间和分配时间对人们来说至关重要。因此采用单片机为主的数码管为显示器的电子时钟就体现出了很大的优势。电子钟的设计方法有很多种,但利用单片机制作的电子时钟更具有编程灵活、便于电子功能的扩充、精确度高、便于携带、显示直观等特点。
通过利用MCS-51单片机内部的定时器/计数器功能来实现电子时钟的计时方法。主要由AT89S51芯片和LED数码显示管为核心,构成了一个单片机电子时钟。
关键词:单片机,AT89S51,电子时钟,LED
Abstract
With the rapid development of microcomputer technology in its promotion, modern electronics into almost all areas of society, a strong impetus to the development of social productive forces and social improvement in the level of information, but also to further improve the performance of modern electronic products.
Time is always so valuable for people who can say that time and money is the equal sign. Accurate grasp of time and allocation of time is crucial to people. Therefore, the digital control based on microcomputer-based electronic clock on the display reflects a great advantage. Clock Design There are many ways, however, produced by single chip electronic clock is more flexible programming, and easy expansion of electronic capabilities, high accuracy, easy to carry, display visual and so on.
In this paper, through the use of MCS-51 microcontroller's internal timer / counter function to implement the electronic clock timing method. Mainly by the AT89S51 chip and LED digital display tube as the core, forming a single chip electronic clock.
Key word: Monolithic integrated circuit,AT89S51,Electronic clock,LED
目录
1 前言........................................................................................................................... 1
1.1 概述................................................................................................................. 1
1.2 研究目的......................................................................................................... 1
2 单片机概述............................................................................................................... 2
2.1 单片机的概念................................................................................................. 2
2.2 单片机的发展史和发展趋势......................................................................... 2
2.2.1 单片机的发展历史............................................................................... 2
2.2.2 单片机的发展趋势............................................................................... 3
2.3 单片机的特点................................................................................................. 3
2.4 MCS-51单片机的基本结构............................................................................ 3
2.4.1 MCS-51单片机的基本组成.................................................................. 3
2.4.2 AT89S51单片机的引脚......................................................................... 5
3 系统设计................................................................................................................... 6
3.1 设计方法及原理............................................................................................. 6
3.1.1 设计方法............................................................................................... 6
3.1.2 电子时钟原理....................................................................................... 6
3.1.3 数码管显示原理................................................................................... 6
3.2 总体设计......................................................................................................... 7
3.2.1 系统说明............................................................................................... 7
3.2.2 系统框图............................................................................................... 7
3.3 模块设计......................................................................................................... 8
3.3.1 电源部分............................................................................................... 8
3.3.2 复位电路............................................................................................... 8
3.3.3 数码管的连接电路............................................................................... 9
3.3.4 控制部分............................................................................................. 10
4 软件设计.................................................................................................................. 11
4.1 程序流程图.................................................................................................... 11
4.2 源程序........................................................................................................... 13
4.2.1 中断入口程序..................................................................................... 14
4.2.2 主 程 序............................................................................................. 15
4.2.3 1秒计时程序....................................................................................... 15
4.2.4 闪动调时程序..................................................................................... 17
4.2.5 加1子程序......................................................................................... 18
4.2.6 清零程序............................................................................................. 19
4.2.7 时钟调整程序..................................................................................... 19
4.2.8 显示程序............................................................................................. 22
4.2.9 延时程序............................................................................................. 23
5 总结......................................................................................................................... 24
致谢............................................................................................................................. 25
参考文献..................................................................................................................... 26
1 前言
1.1 概述
时间,对人们来说是非常宝贵的,准确的掌握时间和分配时间对人们来说至关重要。因此自从时钟发明的那刻起,就成为人类的好朋友。随着时间的流逝,科学技术的不断发展和提高,人们对时间计量的精度要求越来越高,应用越来越广。怎样让时钟更好、更方便、更精确的显示时间,这就要求人们不断设计研发出新型的时钟。
高精度的计时工具大多数都使用了石英晶体振荡器,由于电子钟,石英表,石英钟都采用了石英技术,因此走时精度高,稳定性好,使用方便,不需要经常调校[1]。数字式电子钟用集成电路计时时,译码代替机械式传动,用LED显示器代替指针进而显示时间,减小了计时误差,这种表具有时,分,秒显示时间的功能,还可以进行时和分的校对,片选的灵活性好。
时钟电路在计算机系统中起着非常重要的作用,是保证系统正常工作的基础。在单片机的应用系统中,时钟有两个方面的含义:一是指为保障系统正常工作的基准振荡定时信号,主要由晶振和外围电路组成,晶振频率的大小决定了单片机系统工作的快慢;二是指系统的标准定时时钟,即定时时间,它通常有两种实现方法:一是用软件实现,即用单片机内部的可编程定时器/计数器来实现;二是用专门的时钟芯片实现[2]。
由于51系列单片机的内部具有定时器/计数器的功能,因此采用51系列单片机里的AT89S51和LED数码管为核心,加以必要的电路,来构成了一个单片机电子时钟。
1.2 研究目的
通过利用MCS-51单片机内部的定时器/计数器功能、中断系统功能、以及外围的按键和LED显示器等部件,设计一个基于单片机的电子时钟。设计的电子时钟通过数码管显示,并能通过按键对时间进行设置。
2 单片机概述
2.1 单片机的概念
单片机(MCU)可以定义为:一种把微处理器(CPU)、随机存储器(RAM)、只读存储器(ROM)、输入/输出(I/O)接口电路、定时器/计数器、串行通信接口及中断系统等部件集成在同一块芯片上的,具有完整功能的微型计算机。这块芯片就是硬件,而软件程序则存放在片内的只读存储器中。
2.2 单片机的发展史和发展趋势
2.2.1 单片机的发展历史
1974年12月,美国著名的仙童(Fairchild)公司推出了世界上第一台单片机F8。该机有两块集成电路芯片组成,具有与众不同的指令系统,结构奇特,深受民用电器和仪器仪表领域的欢迎和重视。从此单片机开始迅速发展,应用范围也在不断扩大,现已成为微型计算机的重要分支。单片机的发展大致经历了外围集成、总线完善、功能集成、全方位发展等技术发展阶段,至今已走过了四代的历程[3]。
(1) 第一代单片机(1974 — 1976)
这是单片机的起步阶段,以Fairchild公司的F8为代表。在这个时期生产的单片机特点是,字长为四位,内部结构简单,制造工艺落后和集成度低。
(2) 第二代单片机(1976 — 1980)
这是单片机的技术成熟阶段。8位单片机已经出现,以Intel公司的MCS-48为代表。该系列的单片机在片内已经集成了8位CPU、并行I/O接口、8位定时器/计数器、RAM和ROM等功能部件,但无串行I/O接口,寻址范围不大于4KB。它性能低、品种少,应用范围也不广。
(3) 第三代单片机(1980 — 1983)
这是8位单片机技术走向成熟的阶段。其技术特点是完善了外部总线,确立了单片机的基本控制功能,以Intel公司的MCS-51为代表。该阶段的单片机均带有串行I/O口,且具有多级中断处理系统,定时器/计数器为16位,片内的RAM和ROM容量相对较大,寻址范围可达64KB。这一代单片机结束了计算机单片机集成的简单形式,真正开创了单片机作为微控制器的发展道路。而这个时期的单片机由于其优良的性价比和极其广泛的应用领域,特别适合我国的国情,故在我国得到广泛的应用。
(4) 第四代单片机(1983 — 至今)
这是8位高性能单片机和16位单片机并行发展的阶段。16位单片机除了CPU为16位以外,片内的RAM和ROM容量进一步增大了。以Intel公司的MCS-96系列为代表,其片内的RAM增加为232B,ROM为8KB,且片内集成有高速I/O部件、多通道10位模/数(A/D)转换器等。
2.2.2 单片机的发展趋势
当前,单片机正朝着高性能和多品种方向发展。预计,单片机将进一步向着CMOS化、低功耗、小体积、大容量、高性能、低价格和外围电路内装化等几个方向发展。
2.3 单片机的特点
根据其结构形式和所采用的半导体工艺,单片机具有以下主要特点:
(1) 性价比高。
(2) 集成度高、体积小、可靠性高。由于单片机将各个功能部件集成在一块芯片上,且内部采用总线结构,减少了各个芯片之间的连线,从而大大提高了单片机的可靠性与抗干扰能力。
(3) 控制功能强。单片机中的指令系统中均有极丰富的转移指令、I/O接口的逻辑操作及位处理功能。
(4) 低功耗、低电压,便于生产便携式产品。
(5) 外部总线增加了串行总线方式,进一步缩小了体积,简化了结构。
(6) 单片机的系统扩展和系统配置较典型、规范,易于构成各种规模的应用系统。
2.4 MCS-51单片机的基本结构
2.4.1 MCS-51单片机的基本组成
MCS-51单片机的基本组成如图2.1所示。
图2.1 MCS-51单片机的基本组成
从图2.1中可以看出,MCS-51单片机内部主要包括以下几部分。
(1) 一个8位CPU
MCS-51单片机有一个8位CPU,包括运算器和控制器,并且具有面向控制的处理功能,不仅可以处理字节数据还可以进行位变量的处理,如位处理、查表、状态检测、中断处理等。
(2) 数据RAM和特殊功能寄存器SFR
MCS-51单片机片内具有128B的数据RAM,片外最多可以扩展到64KB。数据RAM用来存储单片机运行期间的工作变量、运算的中间结果、数据暂存和缓冲、标志位等。
(3) 内部程序ROM
MCS-51单片机内部具有4KB的程序ROM,片外最多可以扩展到64KB。可以用来存储用户程序。
(4) 两个定时器/计数器
MCS-51单片机内部具有两个16位的定时器/计数器,具有四种工作方式。可以进行精确地计时,又可以对外部事件进行计数。
(5) 四个8位可编程的I/O并行端口
四个8位的I/O并行端口,其中P0口为双向口,P1~P3口为准双向口。
(6) 一个串行通信端口
串行口用来进行串行异步通信,与PC机或者多个单片机实现主从通信或者构成多机系统以实现更强的的功能。
(7) 中断控制系统
MCS-51单片机具有五个固定的可屏蔽中断源,三个在片内,两个在片外,它们在程序存储器中有各自的固定中断入口地址,由此可以进入中断服务程序。
(8) 内部时钟电路
单片机的时钟信号用来提供单片机内各种微操作的时间基准,有两种方法可以得到时钟信号:一种是内部振荡方式;另一种是外部振荡方式。
2.4.2 AT89S51单片机的引脚
AT89S51单片机芯片采用40个引脚、双列直插封装(DIP)方式,引脚排列如图2.2所
图2.2 MCS-51单片机的引脚排列
3 系统设计
3.1 设计方法及原理
3.1.1 设计方法
(1) 电子时钟的显示为XX(时):XX(分):XX(秒)
(2) 电子时钟的时间可调整,且调整方法为:按下调整键(S2)的时间小于1秒时(t<1s),关闭显示。按下调整键(S2)的时间大于0.5秒时(t>0.5s)分钟位闪亮,此时按下S2键(t<0.5s)该个位数值加1,当加到9时,再按下S2键则该个位显示0,分钟十位加1。继续按下调整键(S2)(t>0.5s)时钟位闪亮,此时按下S2键(t<0.5s)该个位数值加1,当加到9时再按下加S2键则该个位显示0,时钟十位加1。继续按下调整键(S2)(t>0.5s),返回到正常显示状态。
3.1.2 电子时钟原理
在单片机内部存储器设三个字节分别存放时钟的时、分、秒信息。利用定时器和相关软件结合实现1秒定时中断,每产生一次中断,存储器内相应的秒值加1;若秒值达到60,则将其清零,并将相应的分字节值加1;若分值达到60,则清零分字节,并将时字节值加1;若时值达到24,则将时字节清零。
3.1.3 数码管显示原理
数码管的显示采用动态显示。
动态显示就是指轮流的一位一位的点亮各个显示位,对显示器的每一位,采用每隔一段时间点亮一次。利用人的视觉暂留特点能够看到整个显示,但必须保证扫描速度够快,字符才能不闪烁。显示器的亮度既与导通电流有关,也与点亮时间和间隔时间的比例有关。调整参数可以实现较高稳定度的显示[4]。因此采用动态显示节省了I/O口,更降低了能量的消耗。
3.2 总体设计
3.2.1 系统说明
利用单片机(AT89S51)制作电子时钟,由六个LED数码管分别显示小时的十位、小时的个位、分钟的十位、分钟的个位、秒钟的十位、秒钟的个位。6个PNP管分别控制六个数码管的亮灭,采用一个按键用于时间调整。
3.2.2 系统框图
系统框图如图3.1所示。
图3.1 系统框图
3.3 模块设计
3.3.1 电源部分
图3.2 电源部分
如图3.2所示,从外部引入4.5V的直流电,为单片机、复位电路提供电源。
3.3.2 复位电路
图3.3 复位电路
如图3.3所示,复位电路主要由1N4148型的二极管, 10UF/16V型的电解电容, 104型的瓷片电容,10K的电阻以及按键S1构成,S1接芯片的相应引脚RST,当开关按下时引脚RST为高电平1,断开时引脚为低电平0。
3.3.3 数码管的连接电路
图3.4 数码管连接电路
图3.4为LED数码管的连接电路,每位的段码线(a,b,c,d,e,f,g,dp)分别与1个8位的锁存器输出相连,由AT89S51控制组合0-9十个数据,如令其显示1则b,c引脚(即2,3引脚)送高电平,此时数码管显示1。由于各位的段码线并联,8位I/O口输出段码对各个显示位来说都是相同的。
3.3.4 控制部分
如图3.5所示。
图3.5 控制电路
4 软件设计
4.1 程序流程图
图4.1描述的是主程序的流程图,程序开始运行,首先初始化定时器的常数,设置好T0中断入口,然后进入一个循环,等待中断T0的到来。
图4.2描述的是一次T0中断的过程。进入中断,首先现场保护,然后重新设定定时器初值;然后判断本轮中断的次数是否满20次,如果不是,则还没增加到1秒,如果满20次,然后时间增加1秒,分钟和时钟的变化也按相应规则随之改变。做完上面操作之后,恢复进入中断前的现场,退出中断,到此一次中断结束。
图4.3描述的是时钟调整的程序的执行过程。这个过程,根据按键S2的时间去判断执行何种操作。
图4.3 时钟调整的程序流程图
4.2 源程序
表4.1 P1口对应段码及数值
4.2.1 中断入口程序
ORG 0000H ;程序执行开始地址
LJMP START ;跳到标号START执行
ORG 0003H ;外中断0中断程序入口
RETI ;外中断0中断返回
ORG 000BH ;定时器T0中断程序入口
LJMP INTT0 ;跳至INTTO执行
ORG 0013H ;外中断1中断程序入口
RETI ;外中断1中断返回
ORG 001BH ;定时器T1中断程序入口
LJMP INTT1 ;跳至INTT1执行
ORG 0023H ;串行中断程序入口地址
RETI ;串行中断程序返回
4.2.2 主程序
START: MOV R0, # 70H ;清70H-7AH共11个内存单元
MOV R7, # 0BH
CLR P3.7
CLEARDISP: MOV @R0, # 00H
INC R0
DJNZ R7, CLEARDISP
MOV 20H, # 00H ;清20H(标志用)
MOV 7AH, # 0AH ;放入"熄灭符"数据
MOV TMOD, # 11H ;设T0、T1为16位定时器
MOV TL0, # 0B0H ;50MS定时初值(T0计时用)
MOV TH0, # 3CH ;50MS定时初值
MOV TL1, # 0B0H ;50MS定时初值(T1闪烁定时用)
MOV TH1, # 3CH ;50MS定时初值
SETB EA ;总中断开放
SETB ET0 ;允许T0中断
SETB TR0 ;开启T0定时器
MOV R4, # 14H ;1秒定时用初值(50MS×20)
START1: LCALL DISPLAY ;调用显示子程序
JNB P3.7, SETMM1 ;P3.7口为0时转时间调整程序
SJMP START1 ;P3.7口为1时跳回START1
SETMM1: LJMP SETMM ;转到时间调整程序SETMM
4.2.3 1秒计时程序
INTT0: PUSH ACC ;累加器入栈保护
PUSH PSW ;状态字入栈保护
CLR ET0 ;关T0中断允许
CLR TR0 ;关闭定时器T0
MOV A, # 0B7H ;中断响应时间同步修正
ADD A, TL0 ;低8位初值修正
MOV TL0, A ;重装初值(低8位修正值)
MOV A, # 3CH ;高8位初值修正
ADDC A, TH0
MOV TH0, A ;重装初值(高8位修正值)
SETB TR0 ;开启定时器T0
DJNZ R4, OUTT0 ;20次中断未到中断退出
ADDSS: MOV R4, # 14H ;20次中断到(1秒)重赋初值
MOV R0, # 71H ;指向秒计时单元(71H-72H)
ACALL ADD1 ;调用加1程序(加1秒操作)
MOV A, R3 ;秒数据放入A(R3为2位十进制数组合)
CLR C ;清进位标志
CJNE A, # 60H, ADDMM
ADDMM: JC OUTT0 ;小于60秒时中断退出
ACALL CLR0 ;大于或等于60秒时对秒计时单元清0
MOV R0, # 77H ;指向分计时单元(76H-77H)
ACALL ADD1 ;分计时单元加1分钟
MOV A, R3 ;分数据放入A
CLR C ;清进位标志
CJNE A, # 60H, ADDHH
ADDHH: JC OUTT0 ;小于60分时中断退出
ACALL CLR0 ;大于或等于60分时分计时单元清0
MOV R0, # 79H ;指向小时计时单(78H-79H)
ACALL ADD1 ;小时计时单元加1小时
MOV A, R3 ;时数据放入A
CLR C ;清进位标志
CJNE A, # 24H, HOUR
HOUR: JC OUTT0 ;小于24小时中断退出
ACALL CLR0 ;大于或等于24小时小时计时单元清0
OUTT0: MOV 72H, 76H ;中断退出时将分、时计时单元数据移
MOV 73H, 77H ;入对应显示单元
MOV 74H, 78H
MOV 75H, 79H
POP PSW ;恢复状态字(出栈)
POP ACC ;恢复累加器
SETB ET0 ;开放T0中断
RETI ;中断返回
4.2.4 闪动调时程序
T1中断服务程序,用作时间调整时调整单元闪烁指示
INTT1: PUSH ACC ;中断现场保护
PUSH PSW
MOV TL1, #0B0H ;装定时器T1定时初值
MOV TH1, #3CH
DJNZ R2,INTT1OUT ;0.3秒未到退出中断(50MS中断6次)
MOV R2, #06H ;重装0.3秒定时用初值
CPL 02H ;0.3秒定时到对闪烁标志取反
JB 02H, FLASH1 ;02H位为1时显示单元"熄灭"
MOV 72H, 76H ;02H位为0时正常显示
MOV 73H, 77H
MOV 74H, 78H
MOV 75H, 79H
INTT1OUT: POP PSW ;恢复现场
POP ACC
RETI ;中断退出
FLASH1: JB 01H, FLASH2 ;01H位为1时,转小时熄灭控制
MOV 72H, 7AH ;01H位为0时,"熄灭符"数据放入分
MOV 73H, 7AH ;显示单元(72H-73H),将不显示分数据
MOV 74H, 78H
MOV 75H, 79H
AJMP INTT1OUT ;转中断退出
FLASH2: MOV 72H, 76H ;01H位为1时,"熄灭符"数据放入小时
MOV 73H, 77H ;显示单元(74H-75H),小时数据将不显示
MOV 74H, 7AH
MOV 75H, 7AH
AJMP INTT1OUT ;转中断退出
4.2.5 加1子程序
ADD1: MOV A, @R0 ;取当前计时单元数据到A
DEC R0 ;指向前一地址
SWAP A ;A中数据高四位与低四位交换
ORL A, @R0 ;前一地址中数据放入A中低四位
ADD A, #01H ;A加1操作
DA A ;十进制调整
MOV R3,A ;移入R3寄存器
ANL A, #0FH ;高四位变0
MOV @R0,A ;放回前一地址单元
MOV A, R3 ;取回R3中暂存数据
INC R0 ;指向当前地址单元
SWAP A ;A中数据高四位与低四位交换
ANL A, #0FH ;高四位变0
MOV @R0,A ;数据放入当削地址单元中
RET ;子程序返回
4.2.6 清零程序
对计时单元清零用
CLR0: CLR A ;清累加器
MOV @R0,A ;清当前地址单元
DEC R0 ;指向前一地址
MOV @R0,A ;前一地址单元清0
RET ;子程序返回
4.2.7 时钟调整程序
当调时按键按下时进入此程序
SETMM: CLR ET0 ;关定时器T0中断
CLR TR0 ;关闭定时器T0
LCALL DL1S ;调用1秒延时程序
JB P3.7,CLOSEDIS ;键按下时间小于1秒,关闭显示 MOV R2, #06H ;进入调时状态,赋闪烁定时初值
SETB ET1 ;允许T1中断
SETB TR1 ;开启定时器T1
SET2: JNB P3.7,SET1 ;P3.7口为0(键未释放),等待
SETB 00H ;键释放,分调整闪烁标志置1
SET4: JB P3.7,SET3 ;等待键按下
LCALL DL05S ;有键按下,延时0.5秒
JNB P3.7,SETHH ;按下时间大于0.5秒转调小时状态
MOV R0, #77H ;按下时间小于0.5秒加1分钟操作
LCALL ADD1 ;调用加1子程序
MOV A,R3 ;取调整单元数据
CLR C ;清进位标志
CJNE A, #60H,HHH ;调整单元数据与60比较
HHH: JC SET4 ;调整单元数据小于60转SET4循环
LCALL CLR0 ;调整单元数据大于或等于60时清0
CLR C ;清进位标志
AJMP SET4 ;跳转到SET4循环
CLOSEDIS: SETB ET0 ;省电状态。开T0中断
SETB TR0 ;开启T0定时器(开时钟)
CLOSE: JB P3.7,CLOSE ;无按键按下,等待。
LCALL DISPLAY ;有键按下,调显示子程序延时削抖
JB P3.7,CLOSE ;是干扰返回CLOSE等待
WAITH: JNB P3.7,WAITH ;等待键释放
LJMP START1 ;返回主程序(LED数据显示亮)
SETHH: CLR 00H ;分闪烁标志清除(进入调小时状态)
SETHH1: JNB P3.7,SET5 ;等待键释放
SETB 01H ;小时调整标志置1
SET6: JB P3.7, SET7 ;等待按键按下
LCALL DL05S ;有键按下延时0.5秒
JNB P3.7, SETOUT ;按下时间大于0.5秒退出时间调整
MOV R0, #79H ;按下时间小于0.5秒加1小时操作
LCALL ADD1 ;调加1子程序
MOV A, R3
CLR C
CJNE A, #24H,HOUU ;计时单元数据与24比较
HOUU: JC SET6 ;小于24转SET6循环
LCALL CLR0 ;大于或等于24时清0操作
AJMP SET6 ;跳转到SET6循环
SETOUT: JNB P3.7,SETOUT1 ;调时退出程序。等待键释放
LCALL DISPLAY ;延时削抖
JNB P3.7,SETOUT ;是抖动,返回SETOUT再等待
CLR 01H ;清调小时标志
CLR 00H ;清调分标志
CLR 02H ;清闪烁标志
CLR TR1 ;关闭定时器T1
CLR ET1 ;关定时器T1中断
SETB TR0 ;开启定时器T0
SETB ET0 ;开定时器T0中断(计时开始)
LJMP START1 ;跳回主程序
SET1: LCALL DISPLAY ;键释放等待时调用显示程序(调分)
AJMP SET2 ;防止键按下时无时钟显示
SET3: LCALL DISPLAY ;等待调分按键时时钟显示用
AJMP SET4
SET5: LCALL DISPLAY ;键释放等待时调用显示程序(调小时)
AJMP SETHH1 ;防止键按下时无时钟显示
SET7: LCALL DISPLAY ;等待调小时按键时时钟显示用
AJMP SET6
SETOUT1: LCALL DISPLAY ;退出时钟调整时键释放等待
AJMP SETOUT ;防止键按下时无时钟显示
4.2.8 显示程序
显示数据在70H-75H单元内,用六位LED共阳数码管显示,P0口输出段码数据,P3口作扫描控制,每个LED数码管亮1MS时间再逐位循环。
DISPLAY: MOV R1,#70H ;指向显示数据首址
MOV R5,#0FEH ;扫描控制字初值
PLAY: MOV A,R5 ;扫描字放入A
MOV P2,A ;从P2口输出
MOV A,@R1 取显示数据到A
MOV DPTR,#TAB ;取段码表地址
MOVC A,@A+DPTR ;查显示数据对应段码
MOV P1,A ;段码放入P0口
LCALL DL1MS ;显示1MS
INC R1 ;指向下一地址
MOV A,R5 ;扫描控制字放入A
JNB ACC.5,ENDOUT ;ACC.5=0时一次显示结束
RL A ;A中数据循环左移
MOV R5,A ;放回R5内
AJMP PLAY ;跳回PLAY循环
ENDOUT: SETB P2.5 ;一次显示结束,P2口复位
MOV P1,#0FFH ;P0口复位
RET ;子程序返回
TAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
4.2.9 延时程序
1、1MS延时程序,LED显示程序用
DL1MS: MOV R6, #14H
DL1: MOV R7, #19H
DL2: DJNZ R7, DL2
DJNZ R6, DL1
RET
2、20MS延时程序,采用调用显示子程序以改善LED的显示闪烁现象
DS20MS: ACALL DISPLAY
ACALL DISPLAY
ACALL DISPLAY
RET
3、延时程序,用作按键时间的长短判断
DL1S: LCALL DL05S
LCALL DL05S
RET
DL05S: MOV R3, #20H ;8毫秒*32=0.196秒
DL05S1: LCALL DISPLAY
DJNZ R3, DL05S1
RET
END ;程序结束
5 总结
通过本次论文设计,使我加深了对单片机的认识,并且熟悉了单片机系统的设计流程,收获丰硕。功能上基本达标:时钟的显示,调时功能。时钟显示功能,精确度完全可以满足日常生活显示时间的需要;调时功能,方便快捷。硬件设施基本合乎要求,软件设计可以配合硬件实现其功能。
技术在不断进步,机械式时钟已经被淘汰,取而代之的是具有高度准确性和直观性且无机械装置,具有更长的使用寿命等优点的电子时钟。电子时钟更具人性化,更能提高人们的生活质量,更受人们欢迎。机械时代已经远去,电子时代已经到来。做为新时代的我们,更应该提高自身能力,适应新时代的发展。知识来自实践,多从生活中探寻所需要的。
从这次的论文设计中,我真正的体会到,知识的重要性,特别是要理论联系实际,把我们所学的理论知识运用到实际生活当中,要用知识改变一切。
致谢
首先,感谢学校四年来对我的培养。为我们营造了一个良好的学习氛围,建设一流的教学设施,使我们身心愉快的投入到学习中。
其次,感谢尊敬的卢老师,有了他的谆谆教诲,处处提点,才使本论文的前期准备以及整个研究过程顺利完成。卢老师的严谨治学态度、扎实的理论基础、全身心投入工作的精神以及对学生尽心尽力的态度给了我极大的帮助与鼓励,使我受益匪浅。从卢老师的教学态度上,我学到的不仅仅只有书本上的知识,还有做人的道理。他严肃的科学态度,严谨的治学精神,精益求精的工作作风,深深地感染和激励着我。在此谨向卢老师致以诚挚的谢意和崇高的敬意。
最后,感谢我的父母多年来给予我的支持和关怀,同时感谢我的舍友和朋友对我的帮助。
参考文献
[1] 刘宁.单片机多功能时钟的设计[D].浙江:浙江海洋学院,2009.
[2] 汪文,陈林.单片机原理及应用[M].湖北:华中科技大学出版社,2007.
[3] 康华光.电子技术基础数字部分[M].北京:高等教育出版社,2008.
[4] 杨欣.电子设计从零开始[M].北京:清华大学出版社,2005.
[5] 唐勇.基于单片机的电子钟的设计[D].湖南:湖南工学院,2007.
[6] 邢小杰.单片机电子时钟设计[J].中国科技博览,2009(4):236-236.
[7] 宋礼国.多功能电子时钟的硬件设计[J]. 中国科技博览,2009(1):217-208.
[8] 马庆勇,吴中明.基于单片机的多功能时钟控制电路[J].电子科技,2009(3):56-59.
[9] 周功海,刘晓刚,何翠萍.单片机控电子时钟的设计[J].煤矿现代化,2007(1):29-30.
[10] 蔡希彪,曹洪奎,牛芳琳.单片机电子时钟系统的设计与仿真[J].中国科技信息,2007(4):61-63.