数字日历钟表的设计课程设计说明书.docx
- 文档编号:14367284
- 上传时间:2023-06-22
- 格式:DOCX
- 页数:20
- 大小:722.28KB
数字日历钟表的设计课程设计说明书.docx
《数字日历钟表的设计课程设计说明书.docx》由会员分享,可在线阅读,更多相关《数字日历钟表的设计课程设计说明书.docx(20页珍藏版)》请在冰点文库上搜索。
数字日历钟表的设计课程设计说明书
HarbinInstituteofTechnology
课程设计说明书(论文)
课程名称:
课程设计1
设计题目:
数字日历钟表的设计
院系:
电信学院通信工程
哈尔滨工业大学
哈尔滨工业大学课程设计任务书
姓名:
院(系):
电信学院通信工程
专业:
通信工程班号:
1105103
任务起至日期:
2014年3月25日至2014年3月24日
课程设计题目:
数字日历钟的设计
已知技术参数和设计要求:
•数码管显示:
秒、分、时(可同时显示,也可轮换显示)
•能够设置时间,“设置按键”数量不限,以简单合理易用为好。
•误差:
1秒/天(报告中要论述分析是否满足要求)
扩展(优秀必作)
•设置校准键:
当数字钟显示在“整点±30秒”范围时,按动“校准键”,数字钟即刻被调整到整点,消除了±30秒的误差。
•加上“星期”显示(可以预置),并可以对其进行设置。
其他要求:
•按动员老师的要求、课程设计报告规范进行设计
•不允许使用时数字钟表、日历专用IC电路。
•可以使用通用器件:
模拟、数字、单片机、EPLD、模块电路等。
•设计方法不限。
工作量:
•查找资料
•设计论证方案
•具体各个电路选择、元器件选择和数值计算
•具体说明各部分电路图的工作原理
•绘制电路原理图
•绘制印刷电路图
•元器件列表
•编写调试操作
•打印论文
工作计划安排:
•查阅资料:
•方案论证
•设计、分析、计算、模拟调试、仿真、设计原理
•撰写报告:
课程设计要求、方案论证、原理论述(原理框图、原理图)、分析、计算、仿真,PCB图的设计,误差分析、总结,参考文献等
•上交课程设计论文2014-4-25
同组设计者及分工:
A:
主要负责查找资料、电路图绘制、模拟调试、仿真、报告撰写。
B:
主要负责查找资料、设计、分析、参数计算、以及程序编写。
指导教师签字___________________
年月日
教研室主任意见:
教研室主任签字___________________
年月日
*注:
此任务书由课程设计指导教师填写
数字日历钟表的设计
摘要:
单片机自20世纪70年代问世以来,以其极高的性能价格比,受到人们的重视和关注,应用很广、发展很快。
单片机体积小、重量轻、抗干扰能力强、环境要求不高、价格低廉、可靠性高、灵活性好、开发较为容易。
由于具有上述优点,在我国,单片机已广泛地应用在工业自动化控制、自动检测、智能仪器仪表、家用电器、电力电子、机电一体化设备等各个方面,而51单片机是各单片机中最为典型和最有代表性的一种。
这次课程设计通过对它的学习、应用,以AT89S51芯片为核心,辅以必要的电路,设计了一个简易的电子时钟,它由4.5V直流电源供电,通过数码管能够准确显示时间,调整时间,从而到达学习、设计、开发软、硬件的能力。
关键字:
数字电子钟、单片机、数码管
Abstract:
Single-chipmicrocomputerwaspaidattentionbypeoplefrom1970sbecauseofitshighqualitywithlowprice.Ithasbeendevelopedandusedwell.Ithasvariousadvantages,suchassmallvolume,lowweight,outstandingimmunityfrominterference,cheapprice,highreliabilityandflexibility.Untilnow,singlechiphasbeenappliedinindustryautomationcontrol,automaticdetection,intelligentinstrument,householdappliances,andotherelectricalandelectronicdevices.MCS-51singlechipisoneofthemosttypicalsinglechips.Inthiscoursedesign,MCS-51singlechipisusedasthecorecomponenttoassembleasimpledigitalclock.Thisclock,poweredby4.5VDCsupply,candisplayandadjusttimetroughnixietube.Fromdesigning,wecanefficientlyimprovetheabilityofdevelopingsoftwareandhardware.
Keywords:
Digitalclock,Singlechip,Nixietube
一、课程设计目标
1.数码管显示:
秒、分、时
2.能够设置时间,“设置按键”数量不限,以简单合理易用为好。
3.误差:
1秒/天
4.设置校准键:
当数字钟显示在“整点±30秒”范围时,按动“校准键”,数字钟即刻被调整到整点,消除了±30秒的误差。
5.加上“星期”显示,并可以对其进行设置
二、方案论证与比较
2.1数字时钟方案
数字时钟是本设计的最主要的部分。
根据需要,可利用两种方案实现。
方案一:
本方案采用Dallas公司的专用时钟芯片DS12887A。
该芯片内部采用石英晶体振荡器,其芯片精度不大于10ms/年,且具有完备的时钟闹钟功能,因此,可直接对其以用于显示或设置,使得软件编程相对简单。
为保证时钟在电网电压不足或突然掉电等突发情况下仍能正常工作,芯片内部包含锂电池。
当电网电压不足或突然掉电时,系统自动转换到内部锂电池供电系统。
而且即使系统不上电,程序不执行时,锂电池也能保证芯片的正常运行,以备随时提供正确的时间。
方案二:
本方案完全用软件实现数字时钟。
原理为:
在单片机内部存储器设三个字节分别存放时钟的时、分、秒信息。
利用定时器与软件结合实现1秒定时中断,每产生一次中断,存储器内相应的秒值加1;若秒值达到60,则将其清零,并将相应的分字节值加1;若分值达到60,则清零分字节,并将时字节值加1;若时值达到24,则将十字节清零。
该方案具有硬件电路简单的特点。
但由于每次执行程序时,定时器都要重新赋初值,所以该时钟精度不高。
而且,由于是软件实现,当单片机不上电,程序不执行时,时钟将不工作。
基于硬件电路的考虑,本设计采用方案二完成数字时钟的功能。
2.2数码管显示方案
方案一:
静态显示。
所谓静态显示,就是当显示器显示某一字符时,相应的发光二极管恒定的导通或截止。
该方式每一位都需要一个8位输出口控制。
静态显示时较小的电流能获得较高的亮度,且字符不闪烁。
但当所显示的位数较多时,静态显示所需的I/O口太多,造成了资源的浪费。
方案二:
动态显示。
所谓动态显示就是一位一位的轮流点亮各个位,对于显示器的每一位来说,每隔一段时间点亮一次。
利用人的视觉暂留功能可以看到整个显示,但必须保证扫描速度足够快,字符才不闪烁。
显示器的亮度既与导通电流有关,也于点亮时间与间隔时间的比例有关。
调整参数可以实现较高稳定度的显示。
动态显示节省了I/O口,降低了能耗。
从节省I/O口和降低能耗出发,本设计采用方案二。
三、系统总体设计
计时方案
利用AT89S51单片机内部的定时/计数器进行中断时,配合软件延时实现时、分、秒的计时。
该方案节省硬件成本,且能使读者在定时/计数器的使用、中断及程序设计方面得到锻炼与提高,对单片机的指令系统能有更深入的了解,从而对学好单片机技术这门课程起到一定的作用。
控制方案
AT89S51的P0口和P2口外接由八个LED数码管(LED8~LED1)构成的显示器,用P0口作LED的段码输出口,P2口作八个LED数码管的位控输出线,P1口外接四个按键A、B、C构成键盘电路。
AT89S51是一种低功耗,高性能的CMOS8位微型计算机。
它带有8KFlash可编程和擦除的只读存储器(EPROM),该器件采用ATMEL的高密度非易失性存储器技术制造,与工业上标准的80C51和80C52的指令系统及引脚兼容,片内Flash集成在一个芯片上,可用与解决复杂的问题,且成本较低。
简易电子钟的功能不复杂,采用其现有的I/O便可完成,所以本设计中采用此的设计方案。
总体设计分析
利用单片机(AT89S51)制作简易电子时钟,由六个LED数码管分别显示小时十位、小时个位、分钟十位、分钟个位、秒钟十位、秒钟个位。
结合本设计实验来说,要求显示的时间为时,分,秒,并且都用两位数码管来实现显示。
因此,具体设计程序时,应尽可能多用一些子程序与数据暂寄存器单元。
本程序设计中,在主程序之外,可以设置时间值处理子程序,时间值显示前的处理子程序,按键情况扫描子程序,1S定时中断子程序以及5ms延时消除按键抖动子程序等多个小型的子程序。
另外,可以设置一些数据单元作为数据寄存器。
用28H,2AH,2BH和2CH地址单元分别作为显示位数的扫描指针值寄存器,时寄存器,分寄存器和秒寄存器,再用20H地址单元作为显示寄存器
图1 总体系统框图
四、具体模块分析
AT89S51芯片
选用的AT89S51与同系列的AT89C51在功能上有明显的提高,最突出是的可以实现在线的编程。
用于实现系统的总的控制。
其主要功能列举如下:
1、为一般控制应用的8位单片机
2、晶片内部具有时钟振荡器(传统最高工作频率可至33MHz)
3、内部程式存储器(ROM)为4KB
4、内部数据存储器(RAM)为128B
5、外部程序存储器可扩充至64KB
6、外部数据存储器可扩充至64KB
7、32条双向输入输出线,且每条均可以单独做I/O的控制
8、5个中断向量源
9、2组独立的16位定时器
10、1个全双工串行通信端口
11、8751及8752单芯片具有数据保密的功能
12、单芯片提供位逻辑运算指令
图2 AT89S51芯片
74LS47芯片说明
74LS47是BCD-7段数码管译码器/驱动器,74LS47的功能用于将BCD码转化成数码块中的数字,通过它解码,可以直接把数字转换为数码管的显示数字,从而简化了程序。
图3 74LS47芯片
74LS47译码器原理:
译码为编码的逆过程。
它将编码时赋予代码的含义“翻译”过来。
实现译码的逻辑电路成为译码器。
译码器输出与输入代码有唯一的对应关系。
74LS47是输出低电平有效的七段字形译码器,它在这里与数码管配合使用。
74LS138芯片
工作原理:
当一个选通端(G1)为高电平,另两个选通端(/(G2A)和/(G2B))为低电平时,可将地址端(A、B、C)的二进制编码在一个对应的输出端以低电平译出。
作用:
利用G1、/(G2A)和/(G2B)可级联扩展成24线译码器;若外接一个反相器还可级联扩展成32线译码器。
若将选通端中的一个作为数据输入端时,74LS138还可作数据分配器。
图474LS138芯片
无论从逻辑图还是功能表我们都可以看到74LS138的八个输出引脚,任何时刻要么全为高电平1—芯片处于不工作状态,要么只有一个为低电平0,其余7个输出引脚全为高电平1。
如果出现两个输出引脚同时为0的情况,说明该芯片已经损坏。
71LS138有三个附加的控制端、和。
当、时,输出为高电平(S=1),译码器处于工作状态。
否则,译码器被禁止,所有的输出端被封锁在高电平,如表3.3.5所示。
这三个控制端也叫做“片选”输入端,利用片选的作用可以将多篇连接起来以扩展译码器的功能。
3线-8线译码器74LS138的功能表
晶振电路
下图所示为时钟电路原理图,在AT89S51芯片内部有一个高增益反相放大器,其输入端为芯片引脚XTAL1,输出端为引脚XTAL2。
而在芯片内部,XTAL1和XTAL2之间跨接晶体振荡器和微调电容,从而构成一个稳定的自激振荡器。
时钟电路产生的振荡脉冲经过触发器进行二分频之后,才成为单片机的时钟脉冲信号。
图5晶振电路
复位电路
单片机复位的条件是:
必须使RST/VPD或RST引(9)加上持续两个机器周期(即24个振荡周期)的高电平。
例如,若时钟频率为12MHz,每机器周期为1μs,则只需2μs以上时间的高电平,在RST引脚出现高电平后的第二个机器周期执行复位。
单片机常见的复位如图所示。
电路为上电复位电路,它是利用电容充电来实现的。
在接电瞬间,RESET端的电位与VCC相同,随着充电电流的减少,RESET的电位逐渐下降。
只要保证RESET为高电平的时间大于两个机器周期,便能正常复位。
图6单片机复位电路
数码显示模块
数码管是一种把多个LED显示段集成在一起的显示设备。
有两种类型,一种是共阳型,一种是共阴型。
共阳型就是把多个LED显示段的阳极接在一起,又称为公共端。
共阴型就是把多个LED显示段的阴极接在一起,即为公共商。
阳极即为二极管的正极,又称为正极,阴极即为二极管的负极,又称为负极。
通常的数码管又分为8段,即8个LED显示段,这是为工程应用方便如设计的,分别为A、B、C、D、E、F、G、DP,其中DP是小数点位段。
数码管显示方法可分为静态显示和动态显示两种。
静态显示就是数码管的8段输入及其公共端电平一直有效。
动态显示的原理是,各个数码管的相同段连接在一起,共同占用8位段引管线;每位数码管的阳极连在一起组成公共端。
本系统采用动态显示方式,用P0口来控制LED数码管的段控线,而用P2口来控制其位控线。
动态显示通常都是采用动态扫描的方法进行显示,即循环点亮每一个数码管,这样虽然在任何时刻都只有一位数码管被点亮,但由于人眼存在视觉残留效应,只要每位数码管间隔时间足够短,就可以给人以同时显示的感觉。
图6六位数码管
按键模块
时间计数电路由秒个位和秒十位计数器、分个位和分十位计数器、时个位和时十位计数器及星期计数器电路构成,其中秒个位和秒十位计数器、分个位和分十位计数器为60进制计数器,时个位和时十位计数器为24进制计数器。
图7按键模块电路
五、系统电路原理图与印制电路图
系统电路图
图8全部电路原理图
图9印刷电路图
六、控制系统的软件设计
基本的程序流程应该是:
在主程序中检测各个时间按钮是否有动作若有,就储存并修改相关的的时间寄存器的值,若没有,就继续检测。
在计时子程序中将各时间寄存器的值逐个加1,每加一次就要检查是否已超过显示的上限值,这样在后面就便于处理,在扫描显示子程序中,将扫描位数指针与20H相加,从而得到相应的显示数据;然后按照显示的位数加显示数就的格式,将数据从P1口输出到数码管上去显示,当然还有定时中断子程序,在这里,它实现计时1S的时间延时。
七、系统仿真与实验测试
系统仿真
运用proteus软件进行仿真现在proteus软件中建立一个新的文件,再根据自己的要求选择所需的器件,把器件进行适当的排位后进行连接,连接后运行软件进行仿真。
图10Proteus软件应用
实验测试
电子时钟主要的设计要求是能够实现时钟的一般功能,以及包括时间的调整功能,这个基于单片机的电子时钟基本上实现了上述功能,能够通过时间调整电路对时间进行调整以及复位。
下述为12:
00:
00的仿真图:
图1112:
00:
00时刻的仿真效果图
误差分析
本次设计的单片机电子钟系统中,其误差主要来源包括晶体频率误差,定时器溢出误差,延迟误差。
晶体频率产生震荡,容易产生走时误差;定时器溢出的时间误差,本应这一秒溢出,但却在下一秒溢出,造成走时误差;延迟时间过长或过短,都会造成与基准时间产生偏差,造成走时误差。
使用Keil软件进行误差分析,使用Debug进行调试,在计时整秒处设置断点,计时1s的平均时间误差T=178us,可以通过调整计数初值来减小误差。
这样,可以将1s的误差调整为为9us,可得一天的误差为9×60×60×24=0.7776s<1s,满足预期设计要求。
八、系统仿真与实验测试
元件名称
规格型号
单位
数量
瓷片电容
104
只
2
电解电容
10UF/16V
只
1
电阻
10k
只
4
电阻
4.7k
只
13
芯片
AT89S51
片
1
芯片
74LS47
片
1
芯片
74LS138
片
1
7段数码管
6位/共阴
只
1
按键
无自锁
只
4
无源晶振
12M
只
1
芯片座
DIP40
只
1
电池盒
5V
个
2
电路板
9.55*5.664
CM2
1
附录:
源程序代码
ORG00H;主程序起始地址
JMPSTART;主程序START
ORG0BH;定时器T0中断起始地址
JMPTIM0;定时器T0中断子程序TIM0
START:
MOVSP;#70H;设置堆栈指针
MOV28H,#00;设置显示位数扫描指针初值为0
MOV2AH,#12H;设置时钟显示寄存器初值为12H
MOV2BH,#00;设置分钟显示寄存器初值为00H
MOV2CH,#00;设置秒钟显示寄存器初值为00H
MOVTMOD,#01H;设置定时器T0工作在方式1
MOVTH0,#0F0H;定时4ms的初值,即0F060H
MOVTL0,#60H;初值的低位
MOVIE,#82H;定时器T0中断允许
MOVR4,#250;保证后面实现中断250次,即1s的延时
SETBTR0;启动定时器T0
LOOP:
JBP0.0,N2;若秒没有按键,就转去下一步检查分
CALLDELAY;延时5ms消除抖动
MOVA,2CH;将秒寄存器的值载入累加器A
ADDA,#01H;A的内容加1
DAA;十进制调整
MOV2CH,A;A的值存入秒寄存器
CJNEA,#60H,N1;看是否已经是60秒,若不是就继续检查
MOV2CH,#00;已经是60秒,就清空秒寄存器的值
N1:
JNBP0.0,$;秒按键还没有放开就循环等待
CALLDELAY;延时5ms,消除抖动
N2:
JBP0.1,N4;若分没有按键,就转去下一步检查时钟
CALLDELAY;延时5ms,消除抖动
MOVA,2BH;将分寄存器的值载入累加器A
ADDA,#01H;A的内容加1
DAA;十进制调整
MOV2BH,A;A的值存入分寄存器
CJNEA,#60H,N3;看是否已经是60分
MOV2BH,#00;已经是60分,就清空秒寄存器的值
N3:
JNBP0.1,$;分按键还没有放开就循环等待
CALLDELAY;延时5ms,消除抖动
N4:
JBP0.2,LOOP;若时没有按键,就转回去继续检查看是否秒有按键
CALLDELAY;延时5ms,消除抖动
MOVA,2AH;将时寄存器的值载入累加器A
ADDA,#01H;A的内容加1
DAA;十进制调整
MOV2AH,A;A的值存入时寄存器
CJNEA,#24H,N5;看是否已经是24时,若不是就继续检查
MOV2AH,#00;已经是24时,就清空寄存器的值
N5:
JNBP0.2,$;时钟按键还没有放开就循环等待
CALLDELAY;延时5ms,消除抖动
JMPLOOP;返回重新检查看是否有按键
;*****定时器T0中断子程序*****
TIM0:
MOVTH0,#0F0H;定时初值重设
MOVTL0,#60H
PUSHACC;将累加器A的值暂存于堆栈
PUSHPSW;将PSW的值暂存于堆栈
DJNZR4,X2;计时中断不满1s就退出继续中断
MOVR4,#250;计时1s
CALLCLOCK;调用计时子程序CLOCK
CALLDISP;调用显示子程序DISP
X2:
CALLSCAN;调用扫描子程序SCAD
POPPSW;到堆栈取回PSW的值
POPACC;到堆栈取回累加器ACC的值
RETI;返回主程序;
;*****扫描子程序*****
SCAN:
MOVR0,#28H
INC@R0;显示位数扫描值加1
CJNE@R0,#6,X3;扫描位数不为6就准备控制输出
MOV@R0,#0;扫描位数为6,就另其值为0
X3:
MOVA,@R0;扫描位数载入A
ADDA,#20H;A加上20H(显示寄存器地址)=各时间显示区地址
MOVR1,A;各时间显示区地址存入A
MOVA,@R0;扫描位数存入A
SWAPA;将A的高低4位交换(其高4位为扫描
;的位数,低4位为显示数据值)
ORLA,@R1;将扫描值与显示数据组合
MOVP1,A;显示输出
RET
;*****计时子程序*****
CLOCK:
MOVA,2CH;秒寄存器值载入A
ADDA,#1;加1秒
DAA;十进制调整
MOV2CH,A;A的值存入秒寄存器
CJNEA,#60H,X4;A不等于60秒,就跳出程序去显示
MOV2CH,#00;已经是60秒,就清0
MOVA,2BH;分寄存器值载入A
ADDA,#1;加1分
DAA;十进制调整
MOV2BH,A;A的值存入分寄存器
CJNEA,#60H,X4;A不等于60分,就跳出程序去显示
MOV2BH,#00;已经是60分就清0
MOVA,2AH;时寄存器值载入A
ADDA,#1;加1小时
DAA;十进制调整
MOV2AH,A;A的值存入是寄存器
CJNEA,#24H,X4;A不等于24时,就跳出程序去显示
MOV24H,#00;已经是24时,就清0
X4:
RET
;*****显示子程序*****
DISP:
MOVR1,20H;20H为显示寄存器单元
MOVA,2CH;将秒寄存器的内容存入A
MOVB,#10H;设B累加器的值为10H
DIVAB;A/B,商存入A(十位数),余数存入(个位数)
MOV@R1,B;将显示的个位数存入20H显示寄存器单元
INCR1
MOV@R1,;A将显示的十位数存入21H显示寄存器单元
INCR1
MOVA,2BH;将分寄存器的内容存入A
MOVB,#10H;设B累加器的值为10H
DIVAB;A/B,商存入A(十位数),余数存入(个位数)
MOV@R1,B;将显示的个位数存入22H显示寄存器单元
INCR1
MOV@R1,A;将显示的十位数存入23H显示寄存器单元
INCR1
MOVA,2AH;将时寄存器的内容存入A
MOVB,#10H;设B累加器的值为10H
DIVAB;A/B,商存入A(十位数),余数存入(个位数)
MOV@R1,B;将显示的个位数存入24H显示寄存器单元
INCR1
MOV@R1,A;将显示的十位数存入25H显示寄存器单元
RET
;*****延时5ms消除抖动*****
DELAY:
MOVR6,#60
D1:
MOVR7,#248
DJNZR7,$
DJNZR6,D1
RET
END
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字 日历 钟表 设计 课程设计 说明书
![提示](https://static.bingdoc.com/images/bang_tan.gif)