LED数码管显示电子钟设计文档格式.doc
《LED数码管显示电子钟设计文档格式.doc》由会员分享,可在线阅读,更多相关《LED数码管显示电子钟设计文档格式.doc(23页珍藏版)》请在冰豆网上搜索。
(1)、能正确显示时间,时钟由八位数码管显示,显示格式为:
XX小时--XX分--XX秒。
(2)、时间能够由按键调整,误差小于1S。
(3)、闹钟功能:
时间运行到与闹钟设定时间时,闹钟响(持续响3秒)
(4)、报时功能:
时间运行到正点时间时,闹钟响,几点钟就响几声(每
声持续响2秒,每两声之间时间间隔1秒)。
(5)、通过按键切换,可以显示当前日期,显示格式为:
XX年¾
XX月
¾
XX日,5秒钟后自动返回时间显示模式。
2、要求:
完成该系统的硬件和软件的设计,在Proteus软件上仿真通过,并提
交一篇课程设计说明书。
设计工作量
1、汇编或C51语言程序设计;
2、程序调试;
3、在Proteus上进行仿真成功;
4、提交一份完整的课程设计说明书,包括设计原理、程序设计、程序
分析、仿真分析、调试过程,参考文献、设计总结等。
工作计划
工作内容
第一天
课题介绍,答疑,收集材料,C51介绍
第二天
设计方案论证,练习编写C51程序
第三天~第六天
程序设计
第六天~第八天
程序调试、仿真
第九天~第十天
系统测试并编写设计说明书
教研室
意见
年月日
系(部)主
管领导意见
年月日
目录
目录 4
一、摘要 5
二、设计内容 5
2.1、任务要求 5
2.2、设计程序方案 5
2.3设计电路仿真图 6
三、心得体会 9
四、参考文献 10
一、摘要
单片机全称为单片机微型计算机(SingleChipMicrosoftcomputer)。
从应用领域来看,单片机主要用来控制,所以又称为微控制器(MicrocontrollerUnit)或嵌入式控制器。
单片机是将计算机的基本部件微型化并集成在一块芯片上的微型计算机。
单片机自20世纪70年代问世以来,以其极高的性能价格比,受到人们的重视和关注,应用很广、发展很快。
单片机体积小、重量轻、抗干扰能力强、环境要求不高、价格低廉、可靠性高、灵活性好、开发较为容易。
由于具有上述优点,在我国,单片机已广泛地应用在工业自动化控制、自动检测、智能仪器仪表、家用电器、电力电子、机电一体化设备等各个方面,而51单片机是各单片机中最为典型和最有代表性的一种。
时钟电路在计算机系统中起着非常重要的作用,是保证系统正常工作的基础。
在一个单片机应用系统中,时钟有两方面的含义:
一是指为保障系统正常工作的基准振荡定时信号,主要由晶振和外围电路组成,晶振频率的大小决定了单片机系统工作的快慢;
二是指系统的标准定时时钟,即定时时间,它通常有两种实现方法:
一是用软件实现,即用单片机内部的可编程定时/计数器来实现,但误差很大,主要用在对时间精度要求不高的场合;
二是用专门的时钟芯片实现,在对时间精度要求很高的情况下,通常采用这种方法,典型的时钟芯片有:
DS1302,DS12887,X1203等都可以满足高精度的要求。
二、设计内容
2.1、任务要求
本次设计时钟电路,使用了ATC89C51单片机芯片控制电路,单片机控制电路简单且省去了很多复杂的线路,使得电路简明易懂,使用键盘键上的按键来调整时钟的年、月、日、时、分、秒,还有设定闹钟,用一扬声器来进行定时提醒,同时使用汇编语言程序来控制整个时钟显示,使得编程变得更容易,这样通过四个模块:
键盘、芯片、扬声器、LED显示即可满足设计要求。
2.2、设计程序方案
设计程序思路:
1.实现8位数码管动态扫描显示
voidDisplay_1Code(unsignedcharpos,unsignedcharcode1);
voidDisplay_2Num(unsignedcharpos,unsignedcharnum,unsignedcharpoint);
数码管动态扫描就是:
段显位选延时显示消影
因为我们用的是共阳数码管,而段码表用的共阴的,所以对code1取反
共阳数码管高电平点亮,所以P2移位后不用取反,从高位开始是第1个数码管
掩饰显示1ms,P2给全0全部熄灭,消影作用。
2.时间显示
采用实时时钟芯片DS1302,读芯片的datasheet,根据时序等说明编写驱动程序。
1)初始化
voidDS1302_Init(void)
2)底层基本读写函数
voidDS1302_WriteByte(unsignedcharbyte)
unsignedcharDS1302_ReadByte(void)
3)对芯片寄存器的读写函数
voidDS1302_WriteData(unsignedcharaddr,unsignedcharmdata)
unsignedcharDS1302_ReadData(unsignedcharaddr)
4)修改时间函数
voidDS1302_RWriteData(unsignedcharaddr,unsignedcharmdata)
这些函数的实现就看dagasheet了,主要是时序
a.时钟上升沿写入数据
b.时钟下降沿读出数据
c.秒寄存器最高位为1关闭时钟,为0则开启时钟
5)显示时间和日期
voidDisplay_Time(void)
显示时分秒,0x40为显示横,如12-30-00
voidDisplay_Date(void)
显示日期,如20131230,中间没有横杆,但是在年月日上有小数点,通过
Display_2Num最后一个参数控制
voidDisplay(void)根据dis_mode变量选择当前显示的是时间还是日期还是闹钟。
GetDateTime读取时间并与闹钟时间做比较,检测是否到达闹钟时间。
6)扫描方式
动态扫描,定时器0控制扫描周期,10ms扫描一次
voidTimer0_OVF(void)interrupt1
{
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
}
3.按键调时
voidKeyScanf(void)
flag_alarm_mode是闹铃模式则按键退出闹铃并返回,一键关闭闹钟
然后对setting_item变量自加,依次表示设置秒、分、时、天、月等等,设置项对应的小数点位点亮。
加键一样的过程,根据setting_item的值加不同的量:
秒、分、时。
记住改变时间后要修改DS1302芯片的寄存器才能真正修改时间。
2.3设计电路仿真图
数码管显示模块:
图1数码管显示模块
数码管是一种把多个LED显示段集成在一起的显示设备。
有两种类型,一种是共阳型,一种是共阴型。
共阳型就是把多个LED显示段的阳极接在一起,又称为公共端。
共阴型就是把多个LED显示段的阴极接在一起,即为公共商。
阳极即为二极管的正极,又称为正极,阴极即为二极管的负极,又称为负极。
通常的数码管又分为8段,即8个LED显示段,这是为工程应用方便如设计的,分别为A、B、C、D、E、F、G、DP,其中DP是小数点位段。
系统采用动态显示方式,用P0口来控制LED数码管的段控线,而用P2口来控制其位控线。
动态显示通常都是采用动态扫描的方法进行显示,即循环点亮每一个数码管,这样虽然在任何时刻都只有一位数码管被点亮,但由于人眼存在视觉残留效应,只要每位数码管间隔时间足够短,就可以给人以同时显示的感觉。
本设计采用共阳极数码管。
晶振电路模块:
在AT89S51芯片内部有一个高增益反相放大器,其输入端为芯片引脚XTAL1,输出端为引脚XTAL2。
而在芯片内部,XTAL1和XTAL2之间跨接晶体振荡器和微调电容,从而构成一个稳定的自激振荡器。
时钟电路产生的振荡脉冲经过触发器进行二分频之后,才成为单片机的时钟脉冲信号。
图2晶振电路
按键模块:
时间计数电路由秒个位和秒十位计数器、分个位和分十位计数器、时个位和时十位计数器及星期计数器电路构成,其中秒个位和秒十位计数器、分个位和分十位计数器为60进制计数器,时个位和时十位计数器为24进制计数器。
图3按键模块
时钟芯片电路:
X1X2:
32.768晶振管脚
GND:
地
RST:
复位脚
I/O:
数据输入/输出引脚
SCLK:
串行时钟
VCC1,VCC2:
电源供电管脚
图4时钟芯片电路
电路总体设计仿真图:
图5总体仿真图
按菜单/显示时间键会出现一个小光标点,再按菜单/显示时间键,光标点会左移,按加速或者减速键会加减数值。
继续按菜单/显示时间键跳到显示日期、闹钟时,也可以用加速或者减速键调整时间。
按减速/显示闹钟键会显示闹钟。
按加速/显示日期键会显示日期。
5s后会自动恢复到显示时间。
操作方便简洁。
图6日期显示
图7闹钟显示
三、心得体会
单片机作为我们主要的专业课程之一,我觉得单片机课程设计很有必要,而且很有意义。
在这次课程设计中,运用到了很多以前的专业知识,虽然过去从未独立应用过它们,但在学习的过程中带着问题去学我发现效率很高,这是我做这次课程设计的一大收获。
站在库的位置上想问题。
另外,要做好一个课程设计,就必须做到:
在设计程序之前,对所用单片机的内部结构有一个系统的了解,知道该单片机内有哪些资源;
要有一个清晰的思路和一个完整的的软件流程图;
在设计程序时,不能妄想一次就将整个程序设计好,反复修改、不断改进是程序设计的必经之路;
要养成注释程序的好习惯,一个程序的完美与否不仅仅是实现功能,而应该让人一看就能明白你的思路,这样也为资料的保存和交流提供了方便;
在设计课程过程中遇到问题是很正常的,但我们应该将每次遇到的问题记录下来,并分析清楚,以免下次再碰到同样的问题的课程设计结束了,但是从中学到的知识会让我受益终身。
发现、提出、分析、解决问题和实践能力的提高都会受益于我在以后的学习、工作和生活中。
虽然有些程序不是那么清楚理解,自己好好查阅资料,不懂还可以请教老师、同学。
当我有什么不明白的地方去向其他同学请教时,即使他们正在忙于思考,也会停下来帮助我.当我有什么想法告诉他们的时候,他们不会因为我得无知而不耐心听我讲,反而会指出我的不足,一起提高。
学