LED电子钟设计.docx
《LED电子钟设计.docx》由会员分享,可在线阅读,更多相关《LED电子钟设计.docx(36页珍藏版)》请在冰豆网上搜索。
LED电子钟设计
******大学课程设计任务书
课程单片机课程设计
题目LED电子钟设计
专业测控技术与仪器姓名***学号*****
一、任务
设计一款基于AT89C51单片机的LED电子钟,实现钟表的时、分、秒显
示功能。
二、设计要求
[1]利用单片机AT89C51和LED数码管设计一个数字时钟。
[2]在6位数码管上显示当前时间。
显示格式“时时分分秒秒”。
[3]同样,在数码管上显示出当前日期。
显示格式“年年(后两位)月月日日”用按键在时间显示和日期显示之间切换。
[4]实现年月日,时分秒的调整。
三、参考资料
[1]万光毅•单片机实验与实践教程[M].北京航空航天大学出版社,2005.1.
[2]张毅刚.单片机原理及应用[M].高等教育出版社,2003:
160-190.
[3]Philips.74HC595.datasheet.PhilipsSemiconductors.2003Jun25.
[4]李光飞.单片机课程设计指导[M].北京:
北京航空航天大学出版社,2007.
⑸金炯泰,金奎焕.如何使用KEIL编译器[M].北京航空航天大学出版社,2002.
年*月**
第1章绪论3.
1.1LED电子钟概述3.
1.2LED电子时钟技术状况3.
1.3本设计任务4.
第2章总体方案论证与设计5.
2.1LED显示电子时钟设计思路5.
2.2时钟系统方案论证5.
2.3元件清单6..
第3章系统硬件设计7.
3.1单片机控制系统7.
3.2各部分功能的实现7.
第4章系统的软件设计10
4.1软件主要完成功能10
4.2程序设计10
4.3软件设计的主要流程.0
第5章系统调试与测试结果分析13
5.1系统调试13
5.2测试结果14
结论15
参考文献16
附录1程序17
附录2仿真效果图25
第1章绪论
在电子技术飞速发展的推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产
品性能进一步提高,产品更新换代的节奏也越来越快。
电子钟已成为人们日常生活中必不可少的必需品,广泛用于个人家庭以及办公室等公共场所,给人们的生活、学习、工作、娱乐带来极大的方便。
特别是基于LED光源设计的电子钟更
是得到蓬勃发展。
LED光源因具有节能、环保、长寿命、安全、响应快、体积小、色彩丰富、发光效率高、可控性好等优点,被认为是节电降能耗的最佳实现途径。
并广泛的应用于公交汽车,商店,学校和银行等公共场合的时间显示、定时、计时等。
1.1LED电子钟概述
1957年,世界上第一个电子表问世,从而奠定了电子钟的基础,电子钟开始迅速发展起来。
现代的电子钟是基于单片机的一种计时工具,采用延时程序产生一定的时间中断,用于一秒的定义,通过计数方式进行满六十秒分钟进一,满六十分小时进一,满二十四小时小时清零。
从而达到计时的功能,是人们日常生活不可缺少的工具。
采用单片机为中心的电子钟编程灵活,便于电子钟功能的扩充,即可用该电子钟发出各种控制信号,精确度高等特点,同时可以用该电子钟发出各种控制信号。
1.2LED电子时钟技术状况
为了将时间在LED数码管上显示,可采用静态显示法和动态显示法,由于静态显示法需要译码器,数据锁存器等较多硬件,所以可采用动态显示法实现LED显示,通过对每位数码管的依次扫描,使对应数码管亮,同时向该数码管送对应的字码,使其显示数字。
由于数码管扫描周期很短,由于人眼的视觉暂留效应,使数码管看起来总是亮的,从而实现了各种显示。
除此之外,时分显示采用动态扫描,以降低对单片机端口数的要求,同时也降低系统的功耗。
1.2.1LED动态显示的原理
数码管的动态显示利用视觉暂留作用,使得人眼看到的是静态的不变的显
示,视觉暂留时间约为0.01秒,因而每次显示的时间间距要比较短。
首先向LED显示器数据端口发送第一个8位数据。
此时只有一位低电平而其他口都为高电平,因此只有LED数码管显示该数码,让其显示1ms。
然后可以发送第二个数据,同时应使其对应的位码为低电平且保证其他位为高电平。
依次类
推,对各显示器进行扫描,显示器分时轮流工作。
虽然只有一个显示器显示,但由于人的视觉暂留现象我们仍会感觉所有的显示器都在同时显示。
它的优点是硬
件电路简单,占用较少的I/O口,但其传送速度相对较慢。
采用此方法,除了单片机以外,没用到其他芯片。
由数码管的显示原理,再考虑到数码管上显示的数字对应与一个八位的二进制数,0~9—共十个,把显示这些数对应的数码管段信息存到程序存储器的TABLE表中,将DPTR乍为指针,用程序分配的地址单元分别存储实际的时分秒、年月日的数字,把存储的数字用DIV指令分出高低位,作为偏移量,这样,程序中通过查表,就把实际的数字和数码管中显示的数字对应起来了。
1.3本设计任务
⑴利用单片机AT89C51和7段LED数码管设计一个数字时钟。
(2)在6位数码管上显示当前时间。
显示格式“时时分分秒秒”。
(3)在6位数码管上显示当前日期。
显示格式“年年(后两位)月月日日”。
用按键在时间显示和日期显示之间切换。
(4)实现年月日,时分秒的调整。
第2章
总体方案论证与设计
本系统采用单片机AT89C51为LED显示屏的控制核心,系统主要包括LED驱动模块、按键输入模块等。
下面对各模块的设计逐一进行论证比较。
2.1LED显示电子时钟设计思路
按照系统的设计功能要求,本时钟系统的设计必须采用单片机软件系统实现,用单片机的自动控制能力配合按键控制,来控制时钟的调整及显示。
2.2时钟系统方案论证
2.2.1单片机的选择
对于单片机的选择,如果用8031系列,由于它没有内部RAM,系统又需要大量内存存储数据,因而不可用;51系列单片机的ROM为4K,对于我们设计的系统可能有点小;52系列单片机与51系列的结构一样,而ROM扩大为8K,对我们设计系统提供充足的空间进行功能的扩展。
再有51系列单片机与52系列的单片机价格差不多。
但此次51的内存足够我们使用了,因此,我们选择51系列的单片机。
2.2.2显示系统方案比较
方案1:
用液晶1602显示。
方案2:
用LED数码管显示。
时钟和温度的显示可以用LED,价格便宜。
而且LED数码管能显示简单的设计的系统,与我们设计要求相符,因此我们选择方案2。
2.2.3键盘控制方案的选择
方案1:
购买集成键盘,采用矩阵形式连接。
方案2:
购买单个复位开关做成键盘。
I/O口对于我们的设计绰绰有余。
通常我们选用价格便宜单个复位开关做成键盘。
在本系统的电路设计方框图如图2-1所示,它由三部分组成
(1)控制部分主芯片采用单片机AT89C51。
(2)显示部分采用LED数码管实现时钟显示。
(3)时钟调节部分使用按键来控制。
图2-1系统总原理图
2.3元件清单
电子钟元件清单如表2-1所示。
表2-1电子钟元器件清单
元件名称
规格型号
数量(个)
单片机
AT89C51
1
时钟芯片
DS1302
1
6位一体的共阴LED显示器
7SEG-MPX6-CC-BLUE
1
晶振
12MHz
2
电容
30pF
2
电容
22gF
1
按键
BUTTON
6
电阻
300
1
电阻
1K
1
LED灯
LED-RED
1
排阻
RESPACK-8
1
第3章系统硬件设计
3.1单片机控制系统
本次智能仪器设计时钟电路,使用了ATC89C51单片机芯片控制电路和单片机DS1302时钟芯片,单片机控制电路简单且省去了很多复杂的线路,使得电路简明易懂,使用键盘键上的按键来调整时钟的时、分、秒,年、月、日同时使用汇编语言程序来控制整个时钟显示,使得编程变得更容易,这样通过三个模块:
键盘、芯片、显示屏即可满足设计要求。
3.2各部分功能的实现
3.2.1控制部分(AT89C51)
单片机采用51系列单片机。
由ATMEL公司生产的AT89C51是一种低功耗、高性能CMOS8位微控制器,具有4K在系统可编程Flash存储器。
单片机的可擦除只读存储器可以反复擦除100次。
使用Atmel公司咼密度非易失性存储器技术制造,与工业MCS-51产品指令和引脚完全兼容。
在单芯片上,拥有灵巧的8位CPU和在线系统可编程Flash,使得AT89C51为众多嵌入式控制应用系统提供高灵活、有效的解决方案。
AT89C51具有以下标准功能:
4k字节Flash,128字节RAM,8位双向I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。
空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
而且,它还具有一个看门狗(WDT)定
时/计数器,如果程序没有正常工作,就会强制整个系统复位,还可以在程序陷入死循环的时候,让单片机复位而不用整个系统断电,从而保护你的硬件电路。
AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
3.2.2DS1302时钟芯片
DS1302为达拉斯公司的一种实时时钟芯片,主要特点是采用串行数据传输,可为掉电保护电源提供可编程的充电功能,并且可以关闭充电功能。
323单片机最小系统
单片机最小系统主要由复位电路,晶振电路,电源等几部分组成。
(1)复位电路
复位电路有两种方式:
上电复位和按钮复位,我们主要用按钮复位方式。
如图3-1所示。
图3-1复位电路图
(2)晶振电路
单片机系统里都有晶振,在单片机系统里晶振作用非常大,全程叫晶体振荡器,他结合单片机内部电路产生单片机所需的时钟频率,单片机晶振提供的时钟
频率越高,那么单片机运行速度就越快,单片接的一切指令的执行都是建立在单片机晶振提供的时钟频率。
在通常工作条件下,普通的晶振频率绝对精度可达百万分之五十。
高级的精度更高。
有些晶振还可以由外加电压在一定范围内调整频率,称为压控振荡器(VCO)。
晶振用一种能把电能和机械能相互转化的晶体在共振的状态下工作,以提供稳定,精确的单频振荡。
单片机晶振的作用是为系统提供基本的时钟信号。
通常一个系统共用一个晶振,便于各部分保持同步。
有些通讯系统的基频和射频使用不同的晶振,而通过电子调整频率的方法保持同步。
晶振通常与锁相环电路配合使用,以提供系统所需的时钟频率。
如果不同子系统需要不同频率的时钟信号,可以用与同一个晶振相连的不同锁相环来提供。
选取原则:
电容取30PF,晶振为12MHz。
晶振模块如图3-2所示。
图3-2晶振模块原理图
(3)电源
AT89C51单片机的供电电源是+5V的直流电。
(4)EA非/Vpp脚
我们没有用外部扩展ROM,因此EA非/Vpp为高电平,即接+5V电源。
如图
3-3所示。
PSEN
ALE
图3-3EA脚电路图
3.2.4键盘控制系统的设计
按键需要5个,分别实现为时间、日期调整,时间、日期的加和时间、日期的更换等功能。
用单片机的5个I/O口接收控制信号,其电路如图3-4所示'
图3-4按键调时电路
通过控制键来控制所要调节的是时、分、还是秒。
在控制键按下后LED中
会在相应的位置出现光标,这时在通过加数键或减数键来控制时分秒的加或减。
3.2.5LED显示电路
如图3-5所示
图3-5显示电路
第4章系统的软件设计
4.1软件主要完成功能
(1)显示时间程序
用软件调节时间,通过程序的调节,最后用LED数码管实现时钟。
(2)调节时间程序按键调节时间,能实现时、分、秒,年、月、日的调节。
4.2程序设计
首先分配地址空间,并对程序进行初始化。
然后对按键动作进行判断,如果P2.3按下,显示日期,此时若有调整键按下,则对日期进行调整,此时定时器仍在工作,只是不显示当前时间。
循环定时,秒加1,并判断秒是否到了60,若到了秒清零,分加1,若不到,返回继续循环。
同理,处理分钟和小时,处理小时时,把60换成24。
24小时到了之后,DATE(日)加1,此时,需要对MONTH(月份)判断,小月时,DATE到31就进位(即记到30),大月时,DATE到32再进位(显示到31),对于2月,还要判断年份,平年到29(28天),瑞年到30(29天)。
然后是月进位,年加1。
4.3软件设计的主要流程
4.3.1系统总的流程图
主要功能是负责时间的显示,通过写地址和写数据来实现时间的调节和控
制,最后通过调用显示子程序显示出来如图4-1所示
上图所示,为流程图。
然后根据流程图进行程序设计,这样的程序比较有条理,各部的程序可以分别进行调试和检查。
有利于后面对程序进行修改和调试,特别值得注意的是,程序在编写的过程中,要有鲜明的思想,不能主次不分,主程序与子程序混在一起,要编定出主程序,再根据设计的要求编写子程序,有利于后面的调试修改。
4.3.2地址分配如下
SEC
EQU
30H;当前秒
MIN
EQU
31H
HOUR
EQU
32H
DAY
EQU
33H
MONTH
EQU
34H
WEEK2
EQU
35H
YEAR
EQU
36H
A_BIT
EQU
20H
B_BIT
EQU
21H
C_BIT
EQU
22H
D_BIT
EQU
23H
E_BIT
EQU
24H
F_BIT
EQU
25H
AB_BIT
EQU
26H
;秒/日
CD_BIT
EQU
27H
分/月
EF_BIT
EQU
28H
;时/年
DS1302_
_ADDR
EQU5EH
DS1302
DATA
EQU5FH
4.3.3
I/O口
第5章系统调试与测试结果分析
5.1系统调试
根据系统设计方案,本系统的调试共分为三大部分:
硬件调试,软件调试和软硬件联调。
由于在系统设计中采用模块设计法,所以方便对各电路模块功能进行逐级测试。
5.1.1硬件调试
对各个模块的功能进行调试,主要调试各模块能否实现指定的功能。
5.1.2软件调试
软件调试采用单片机仿真器及微机,将编好的程序进行调试,主要是检查语法错误。
把编写完的源程序放在KEIL软件中,先自行检查下程序是否有误,更改有误的部分,再创建工程进行程序一个一个地调试,把调试结果显示有误的部
分找出,检查错误的原因然后再进行更改,更改后再进行调试,再找出错误进行更改,依次循环进行,至到程序调试成功为止。
5.1.3硬件软件联调
将调试好的硬件和软件进行联调,主要调试系统的实现功能。
5.1.4仿真
仿真是把KEIL中生成的源程序找出,并加载到单片机内,检查原理图的设计是否有误,更改有误的部分,然后进行仿真,看仿真结果是否正确,如果不正确或者不显示结果,就再此检查原理图进行更改直到能顺利地仿真出结果。
通过KEIL和硬件仿真平台ProteuS勺联合,可以将设计效果仿真出来,根据效果,有目的的改变设计,优化程序。
5.2测试结果
调试结果如图5-1
图5-1程序测试结果
最终生成HE)文件,加载到单片机中。
如图5-2
图5-2生成HEX文件
经过几天的努力,本次课程设计的任务一一基于单片机控制LED数码管显示的电子时钟的设计已经完成。
本系统以AT89C51为核心部件,利用软件编程,通过键盘控制和液晶显示实现了时钟功能,能实现题目的基本要求。
尽量做到硬
件电路简单稳定,充分发挥软件编程的优点,减小因元器件精度不够和环境因素引起的误差。
由于时间有限和本身知识水平的发挥,我们认为本系统还有需要改进和提高的地方,例如选用更高精度的元器件,硬件电路更加精确稳定,软件测量算法进一步的改进与完善等。
由于我们设计的LED电子钟的重点在于软件程序的设计,利用proteus设计电路原理图,利用KEIL软件进行程序编写与调试。
在软件设计时,由于对单片机的中断系统不是很了解,所以出现了许多不必要的麻烦。
就拿编程来说,由于
没有处理好子程序的返回和时钟中断程序时间就导致时钟运行到指定的时间后不打转而是继续走,由于没有把握好计数、显示等一些细节地方,而导致时钟计数不准确、不能正常显示时间等一系列相当严重的问题。
在经过反复检查、分析、
调试之后,从中发现了中断时的数值设置不太适合等一系列问题,经过自己的反
复修改、调试和验证,最终才得以解决达到设计的要求。
在整个设计过程中,程序的调试是其中一个非常重要的环节。
其中有一点是值得我们注意的:
在程序设计之前一定要知道设计要求,要清楚地知道本程序所有内容以及程序的执行过程,据此画出本程序的流程图,然后根据流程图进行程序设计,这样的程序比较有条理,各部的程序可以分别进行调试和检查。
有利于后面对程序进行修改和调试,特别值得注意的是,程序在编写的过程中,要有鲜明的思想,不能主次不分,主程序与子程序混在一起,不知道哪个是主,哪个是次,要编定出主程序,再根据设计的要求编写子程序,使整个程序严密,有条理。
有利于后面的调试修改。
参考文献
[1]万光毅•单片机实验与实践教程[M].北京航空航天大学出版社,2005.1.
[2]张毅刚.单片机原理及应用[M].高等教育出版社,2003:
160-190.
[3]Philips.74HC595.datasheet.PhilipsSemiconductors.2003Jun25.
[4]周润景.基于Proteus的电路与单片机仿真系统设计与仿真[M].北京航空航天大学出版社,2005.
⑸金炯泰,金奎焕.如何使用KEIL编译器[M].北京航空航天大学出版社,2002.⑹李光飞.单片机课程设计指导[M].北京:
北京航空航天大学出版社,2007.
[7]朱定华.单片机原理及接口技术实验[M].北京:
北方交通大学出版社,2002.11.
[8]张迎新.单片微型计算机原理、应用接口技术[M].北京:
国防工业出版
社,2004.1.
[9]何利民.单片机高级教程[M].北京:
航空航天大学出版社,2000.8.
[10]谢维成.单片机原理及应用与51程序设计[M].北京:
清华大学出版社,2006.8.
[11]余永权.单片机在控制系统中的应用[M].北京:
电子工业出版社,2003.10.
[12]李朝青.单片机原理及接口技术[M].北京:
航空航天大学出版社,2000.3.
[13]夏继强.单片机实验与实践教程[M].北京:
航空航天大学出版社,2001.11.
[14]侯玉宝.基于Proteus的51系列单片机的设计、调试与仿真[M].电子工业出版社,2008.270〜288.
[15]张友德.单片微型机原理应用与实验[M].上海:
复旦大学出版社,2003.225〜256.
附录1程序
SECEQU30H
;当前秒
MINEQU31H
HOUR
EQU
32H
DAYEQU33H
MONTH
EQU
134H
WEEK2
EQU
35H
YEAR
EQU
36H
A_BIT
EQU
20H
B_BIT
EQU
21H
C_BIT
EQU
22H
D_BIT
EQU
23H
E_BIT
EQU
24H
F_BIT
EQU
25H
AB_BIT
EQU
26H
;秒/日
CD_BIT
EQU
27H
;分/月
EF_BIT
EQU28H
;时/年
DS1302_
_ADDR
EQU
5EH
DS1302_
_DATA
EQU
5FH
T_RST
BIT
P3.2
;实时时钟复位线引脚
T_CLK
BIT
P3.3
;实时时钟时钟线引脚
T_IOBITP3.4
;实时时钟数据线引脚
H_ADJ
BIT
P2.0
;时/年调整
M_ADJ
BIT
P2.1
;分/月调整
S_ADJ
BIT
P2.2
;秒/日调整
DT_SET
BIT
P2.3
;时间/日期选择
STRBITP2.4
;启动走时
ORG00H
AJMPMAIN
ORG30H
MAIN:
MOVSP,#64H
MOVYEAR,#11H;上电预置日期、时间
MOVMONTH,#12H;2011121209:
30:
00
MOVDAY,#12H
MOVHOUR,#09H
MOVMIN,#30H
MOVSEC,#00H
MAIN1:
LCALLKEY
JBF0,MAIN10;F0=1,开始走时。
走时前写,不读。
走时后读,不写
LCALLWR1302
AJMPMAIN2
MAIN10:
LCALLRD1302
MAIN2:
JB7FH,YMD
MOVEF_BIT,HOUR
MOVCD_BIT,MIN
MOVAB_BIT,SEC
AJMPMAIN20
YMD:
MOVEF_BIT,YEAR
MOVCD_BIT,MONTH
MOVAB_BIT,DAY
MAIN20:
MOVA,EF_BIT
MOVB,#10H
DIVAB
MOVE_BIT,B
MOVF_BIT,A
MOVA,CD_BIT
MOVB,#10H
DIVAB
MOVC_BIT,B
MOVD_BIT,A
MOVA,AB_BIT
MOVB,#10H
DIVAB
MOVA_BIT,B
MOVB_BIT,A
LCALLDISP
AJMPMAIN1
KEY:
ACALLDISP;按键子程序
KEY_SET:
JBDT_SET,KEY_H
ACALLDISP
JNBDT_SET,$-2
CPL7FH
CPLP2.5;点亮日期设定/显示LED
AJMPRT
KEY_H:
JBH_ADJ,KEY_M
ACALLDISP
JNBH_ADJ,$-2
AJMPH_ADD
KEY_M:
JBM_ADJ,KEY_S
ACALLDISP
JNBM_ADJ,$-2
AJMPM_ADD
KEY_S:
JBS_ADJ,KEY_ST
ACALLDISP
JNBS_ADJ,$-2
AJMPS_ADD
KEY_ST:
JBSTR,RT
ACALLDISP
JNBSTR,$-2
AJMPK_STR
RT:
RET
H_ADD:
JB7FH,Y_ADD;7FH为日期/时间切换键标志。
1为年月日
MOVA,HOUR
ADDA,#01H
DAA
CJNEA,#24H,H_ADD1
MOVA,#0
H_ADD1:
MOVHOUR,A
AJMP