课程设计51单片机数字时钟要点.docx
《课程设计51单片机数字时钟要点.docx》由会员分享,可在线阅读,更多相关《课程设计51单片机数字时钟要点.docx(21页珍藏版)》请在冰豆网上搜索。
课程设计51单片机数字时钟要点
HarbinInstituteofTechnology
课程设计说明书(论文)
课程名称:
课程设计
设计题目:
数字日历钟表的设计
院系:
电信学院通信工程
班级:
设计者:
学号:
指导教师:
设计时间:
2013.6.12-3013.6.18
哈尔滨工业大学
哈尔滨工业大学课程设计任务书
姓名:
院(系):
专业:
班号:
任务起至日期:
年月日至年月日
课程设计题目:
数字日历钟的设计
已知技术参数和设计要求:
1.数码管显示:
秒、分、时(可同时显示,也可轮换显示)
2.能够设置时间,“设置按键”数量不限,以简单合理易用为好。
3.误差:
1秒/天(报告中要论述分析是否满足要求)
扩展(优秀必作)
1.设置校准键:
当数字钟显示在“整点±30秒”范围时,按动“校准键”,数字钟即刻被调整到整点,消除了±30秒的误差。
2.加上“星期”显示(可以预置),并可以对其进行设置。
其他要求:
1.按动员老师的要求、课程设计报告规范进行设计
2.不允许使用时数字钟表、日历专用IC电路。
3.可以使用通用器件:
模拟、数字、单片机、EPLD、模块电路等。
4.设计方法不限。
工作量:
1.查找资料
2.设计论证方案
3.具体各个电路选择、元器件选择和数值计算
4.具体说明各部分电路图的工作原理
5.绘制电路原理图
6.绘制印刷电路图
7.元器件列表
8.编写调试操作
9.打印论文
工作计划安排:
1.查阅资料:
2.方案论证
3.设计、分析、计算、模拟调试、仿真、设计原理
4.撰写报告:
课程设计要求、方案论证、原理论述(原理框图、原理图)、分析、计算、仿真,PCB图的设计,误差分析、总结,参考文献等
5.上交课程设计论文2013-6-19
同组设计者及分工:
指导教师签字___________________
年月日
教研室主任意见:
教研室主任签字___________________
年月日
*注:
此任务书由课程设计指导教师填写
数字日历钟的设计
一、课程设计要求
1.数码管显示:
秒、分、时(可同时显示,也可轮换显示)
2.能够设置时间,“设置按键”数量不限,以简单合理易用为好。
3.误差:
1秒/天(报告中要论述分析是否满足要求)
4.设置校准键:
当数字钟显示在“整点±30秒”范围时,按动“校准键”,数字钟即刻被调整到整点,消除了±30秒的误差。
5.加上“星期”显示(可以预置),并可以对其进行设置。
二、方案论证
2.1单片机芯片的选择方案和论证
方案一:
采用89C51芯片作为硬件核心,其内部采用FlashROM,具有4KBROM存储空间,能于3V的超低压工作,但
运用于电路设计中时由于不具备ISP在线编程技术,烧入程序时需要专门的C编程器(当前可用的实验烧写开发板只支持具有ISP在线编程功能的AT89S**系列的芯片),当在对电路进行调试时,更显麻烦,并且增加了造价,
方案二:
采用89S51芯片作为主控模块,AT89S51是MCS-51系列单片机目前运用较多的一种芯片,采用FlashROM,内部具有4KBROM存储空间,能于3V的超低压工作,而且具备ISP在线编程技术,方便对电路进行调试.但由于程序的错误修改或对程序的新增功能需要烧入程序时,对芯片的多次拔插会对芯片造成一定的损坏。
针对该问题,可采用易于插拔的芯片插槽,芯片的程序烧写用专门的实验板进行烧写(当前可用的实验烧写开发板支持AT89S**系列).AT89S51单片机的功能引脚图如下图所示:
AT89S51单片机的功能引脚图
所以选择采用AT89S51作为主控制系统。
2.3时钟芯片的选择方案和论证
方案一:
采用DS1302时钟芯片实现时钟,DS1302芯片是一种高性能的时钟芯片,可自动对秒、分、时、日、周、月、年以及闰年补偿的年进行计数,精度也较高,工作电压2.5V~5.5V范围内,功耗也较低,但价格比较贵,且目前市场上采购不到
方案二:
直接采用单片机定时计数器提供秒信号,使用程序实现时、分、秒计数。
采用此种方案实现虽然有一定的时间误差,但可减少少芯片的使用,节约成本,易于实现,符合初学者实验选用。
所以采用方案二。
综上各方案所述,对此次作品的方案选定:
采用AT89S51作为主控制系统;通过软件编程采用定时器定时实现秒.分.时计时;LED数码管静态显示时间。
三、原理论述
单片机控制的数字钟的硬件结构与软件设计,给出了汇编语言源程序。
此数字钟是一个将“时”、“分”、“秒”显示于人的视觉器官的计时装置。
显示器件选用LED七段数码管。
在译码显示电路输出的驱动下,显示出清晰、直观的数字符号。
针对数字钟会产生走时误差的现象,在电路中就设计有有校准时间功能的电路。
使用动态数码显示的方法,运用独立式按键识别过程,按“时”,“分”,“秒”数据送出显示处理方法。
这里采用应用广泛的80C51单片机作为时钟控制芯片,利用单片机内部的定时/计数器T0实现软时钟的目的。
首先将T0设定工作于定时方式1,对机器周期计数形成基准时间(50ms),然后使用循环的程序结构使基准时间计数20次从而形成秒,秒计60次形成分,分计60形成小时,小时计到24形成一天,天计到7形成一星期,再重新循环。
最后通过数码管把它们的内容在相应的位置显示出来,达到时、分、秒计时的功能。
3.1系统原理图
AT89C51的P1口接入三个按键,对时、分、秒进行调整。
P0口输出字段码,控制要显示的字符,外接74LS245芯片,驱动LED显示。
P3口输出字位码,去控制要显示的位,其原理图如图3-6所示。
图3-6电子钟原理图
当接入电源时,数字电子钟以秒为单位开始计时。
运行状态下,按下控制按键S-SET,对秒进行调整;按下M-SET调整分钟;按下H-SET对小时进行调整。
这样通过三个按键,分别对时、分、秒进行调整,从而实现调时。
3.2程序设计流程图
这次的数字电子钟设计用到很多子程序,它们的流程图如下所示。
主程序是先开始,然后启动定时器,定时器启动后在进行按键检测,检测完后,就可以显示时间。
图4-1主程序流程图
按键处理是先检测秒按键是否按下,秒按键如果按下,秒就加1;如果没有按下,就检测分按键是否按下,分按键如果按下,分就加1;如果没有按下,就检测时按键是否按下,时按键如果按下,时就加1;如果没有按下,就把时间显示出来。
图4-2按键处理流程图
定时器中断时是先检测1秒是否到,1秒如果到,秒单元就加1;如果没到,就检测1分钟是否到,1分钟如果到,分单元就加1;如果没到,就检测1小时是否到,1小时如果到,时单元就加1,如果没到,就检测1天是否到,1议案如果到,天单元就加1,如果没到,就显示时间。
图4-3定时器中断流程图
时间显示是先秒个位计算显示,然后是秒十位计算显示,再是分个位计算显示,再然后是分十位显示,再就是时个位计算显示,然后是时十位显示,最后是天的显示。
3.3时钟程序设计步骤
(1)选择工作方式,计算初值;
(2)采用中断方式进行溢出次数累计;
(3)从秒——分——时的计时是通过累加和数值比较实现的;
(4)时钟显示缓冲区:
时钟时间在方位数码管上进行显示,为此在内部
RAM中要设置显示缓冲区,共6个地址单元。
显示缓冲区从左到右依次存放时、分、秒数值;
(5)主程序:
主要进行定时器/计数器的初始化编程,然后反复调用显示
子程序的方法等待中断的到来。
(6)中断服务程序:
进行计时操作
(7)加1子程序:
用于完成对时、分、秒的加操作,中断服务程序在秒、
分、时加1时共有三种条调用加1子程序,包括三项内容:
合字、加1并进行十进制调整、分字。
四、分析运算
4.1硬件部分
采用7SEG-MPX8-CC八个共阴二极管显示器来显示日期和时间。
通过设置功能按键来实现调整日期和整点调时的功能。
电路连接使用PCB,使电路连接简洁美观。
4.2软件部分
(1)“时钟”基准时间由单片机内部的定时中断T0提供,考虑因素:
定时时间是“秒”的整除数,且长短适宜。
最长不能超过16位定时器的最长定时时间;最短不能少于中断服务程序的执行时间。
基准时间越短,越有利于提高时钟的运行精确度。
基准时间定为0.05秒。
(2)用一个计数器对定时中断的次数进行计数,由基准时间为0.05秒知计数值为20即可实现“秒”定时,同理进行“分”﹑“时”定时。
4.3计算
该部分主要是对51单片机内部定时中断T0的计时初值进行计算。
该单片机使用的晶振为内部晶振,因此晶振频率为fosc=12MHz,机器周期为Tj=12/fosc=12/12×106=1us。
由上面分析可知,定时时间T=50ms
定时初值为X=216-T/Tj=65536-50000=15536=3CB0H
五、程序
简要说明:
实现24小时制电子钟,8位数码管显示,显示时分秒
显示格式:
23-59-59(小时十位如果为0则不显示)
P0口输出段选信号,P2口输出位选信号
P1.2为调时按钮,P1.1为调分按钮;晶振12M
源程序如下:
S_SETBITP1.0;数字钟秒控制位
M_SETBITP1.1;分钟控制位
H_SETBITP1.2;小时控制位
D_SETBITP1.3;天控制位
SECONDEQU30H
MINUTEEQU31H
HOUREQU32H
DAYEQU33H
TCNTEQU34H
ORG00H
SJMPSTART
ORG0BH
LJMPINT_T0
START:
MOVDPTR,#TABLE
MOVHOUR,#0;初始化
MOVMINUTE,#0
MOVSECOND,#0
MOVDAY,#0
MOVTCNT,#0
MOVTMOD,#01H
MOVTH0,#(65536-50000)/256;定时50毫秒
MOVTL0,#(65536-50000)MOD256
MOVIE,#82H
SETBTR0
;****************************************************
;判断是否有控制键按下,是哪一个键按下
A1:
LCALLDISPLAY
JNBS_SET,S1
JNBM_SET,S2
JNBH_SET,S3
LJMPA1
S1:
LCALLDELAY;去抖动
JBS_SET,A1
INCSECOND;秒值加1
MOVA,SECOND
CJNEA,#60,J0;判断是否加到60秒
MOVSECOND,#0
LJMPK1
S2:
LCALLDELAY
JBM_SET,A1
K1:
INCMINUTE;分钟值加1
MOVA,MINUTE
CJNEA,#60,J1;判断是否加到60分
MOVMINUTE,#0
LJMPK2
S3:
LCALLDELAY
JBH_SET,A1
K2:
INCHOUR;小时值加1
MOVA,HOUR
CJNEA,#24,J2;判断是否加到24小时
MOVHOUR,#0
LJMPK3
K3:
INCDAY;天值加1
MOVMINUTE,#0
MOVSECOND,#0
LJMPA1;等待按键抬起
J0:
JBS_SET,A1
LCALLDISPLAY
SJMPJ0
J1:
JBM_SET,A1
LCALLDISPLAY
SJMPJ1
J2:
JBH_SET,A1
LCALLDISPLAY
SJMPJ2;定时器中断服务程序,对秒,分钟和小时的计数
INT_T0:
MOVTH0,#(65536-50000)/256
MOVTL0,#(65536-50000)MOD256
INCTCNT
MOVA,TCNT
CJNEA,#20,RETUNE;计时1秒
INCSECOND
MOVTCNT,#0
MOVA,SECOND
CJNEA,#60,RETUNE
INCMINUTE
MOVSECOND,#0
MOVA,MINUTE
CJNEA,#60,RETUNE
INCHOUR
MOVMINUTE,#0
MOVA,HOUR
CJNEA,#24,RETUNE
MOVHOUR,#0
MOVMINUTE,#0
MOVSECOND,#0
MOVTCNT,#0
RETUNE:
RETI;
显示控制子程序
DISPLAY:
MOVA,SECOND;显示秒
MOVB,#10
DIVAB
CLRP3.6
MOVCA,@A+DPTR
MOVP0,A
LCALLDELAY
SETBP3.6
MOVA,B
CLRP3.7
MOVCA,@A+DPTR
MOVP0,A
LCALLDELAY
SETBP3.7
CLRP3.5
MOVP0,#40H;显示分隔符
LCALLDELAY
SETBP3.5
MOVA,MINUTE;显示分钟
MOVB,#10
DIVAB
CLRP3.3
MOVCA,@A+DPTR
MOVP0,A
LCALLDELAY
SETBP3.3
MOVA,B
CLRP3.4
MOVCA,@A+DPTR
MOVP0,A
LCALLDELAY
SETBP3.4
CLRP3.2
MOVP0,#40H;显示分隔符
LCALLDELAY
SETBP3.2
MOVA,HOUR;显示小时
MOVB,#10
DIVAB
CLRP3.0
MOVCA,@A+DPTR
MOVP0,A
LCALLDELAY
SETBP3.0
MOVA,B
CLRP3.1
MOVCA,@A+DPTR
MOVP0,A
LCALLDELAY
SETBP3.1
RET
TABLE:
DB3FH,06H,5BH,4FH,66H
DB6DH,7DH,07H,7FH,6FH
DELAY:
MOVR6,#10
D1:
MOVR7,#250
DJNZR7,$
DJNZR6,D1
RET
END
六、调试与运行
6.1电路仿真
此设计的电路在单片机仿真软件[Proteus.Professional.7.1]中进行仿真,仿真电路如图5-1所示:
图5-1电子钟仿真电路图
6.2调试和运行
在KEIL(单片机汇编)C51软件中编写好的程序,将程序放入单片机仿真软件中,结合硬件电路进行调试与运行。
通过按键对时间进行调整。
如显示时间为14-30-22,既是14点30分22秒,通过以下调整则可实现。
(1)按动S-SET键,将秒调到22;
(2)按动M-SET键,将分调到30;
(3)按动H-SET键,将时调到14。
则将时间调到了所要显示的时间14-30-22,通过此方法可将时间调整到任何需要显示的时间。
七、PCB图的设计
8、总结
通过这次单片机课程设计,发现了自身所学知识存在许多的不足和问题,同时也学到了不少东西,提高了动手实践的能力.
在整个设计过程中,从设计方案的确定,到具体电路的设计,最后到总体电路的联接构建工程量是比较大的,单靠个人能力,很多方面考虑不周,有的地方甚至毫无头绪,想不出具体方案,因此,绝对不能心急,不明白的地方和其它的同学共同讨论研究,毕竟群策群力办法要多些。
作为初学者,尽管这次设计中遇到了许多难题,但也都一一得以解决。
比如程序编写中,由于思路不清晰,开始时遇到了很多的问题,经过静下心来思考,和同学们的共同讨论,理清了思路,反而得心应手。
虽然此次课程设计的作品有些简单,但是通过自己的努力最终把电路成功设计出来,个人觉得还是很有成就感的,更为重要的是实实在在学到了不少东西,使自己这方面的知识技能有了很大的进步。
因此,我自己觉得这次课程设计对我而言算得上是一次全新的尝试,也是一个小小的成功,更是一次很好的锻炼,让我有了全方位的提高和进步。
九、设计相关说明
元器件清单:
单片机:
80C51
按键:
BUTTON
电阻:
RES
电容:
CAP
晶振:
CRYSTAL
LED数码管:
7SEG-MPX8-CA-BLUE(CA:
共阳,CC:
共阴)
地:
GRAND
电源:
POWER
十、参考文献
[1]《单片机原理与应用》宗成阁编著
[2]《单片机应用与仿真调试》严天峰编著
[3]《模拟电子技术(第三版)》胡宴如耿苏燕编著
[4]《数字电子技术(第三版)》杨志忠卫桦林编著