日历时钟的设计.docx
- 文档编号:3552373
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:19
- 大小:169.60KB
日历时钟的设计.docx
《日历时钟的设计.docx》由会员分享,可在线阅读,更多相关《日历时钟的设计.docx(19页珍藏版)》请在冰豆网上搜索。
日历时钟的设计
单片机课程设计报告书
课题名称
日历时钟的设计
姓名
学号
院、系、部
物理与电子科学系
专业
应用电子技术
指导教师
2013年11月20日
一、设计任务及要求:
设计任务:
1、利用MCS-51内部定时器定时T0/T1,编程实现时、分、秒的显示,显示格式为:
时分秒:
091235(24小时制)
2、能按键调整时间的数值(按键数量自定)。
要求:
首先进行预设计,根据设计的任务要求,先确定设计的硬件电路方案,然后进行硬件电路的初步设计,在计算机上画出硬件电路图,在老师的指导下进行修正硬件电路图,并对所涉及的参数进行计算。
在确定硬件的基础上,要进行软件的总体设计,包括软件主流程的设计以及各子程序的设计,同时,要写出详细的操作说明,如时间的调整方法,显示窗口的时间切换等,以配合软件的设计。
然后进入硬件的调试及编程工作,设计组内的同学可根据任务分工,有调试硬件各功能模块的,如键盘子程序、显示子程序等,有进行整体程序的编制的,各模块的编制过程中要注意资源的衔接。
最后进入联机调试,联机调试的原则也要采用分步走的原则,各个功能模块要逐步套入,通过一个再增加一项功能,从而达到设计的总体要求,不要上来编制个最大的程序,最后无法查找错误,最后写出设计报告。
指导教师签名:
年月日
二、指导教师评语:
指导教师签名:
年月日
三、成绩
指导教师签名:
年月日
目录
绪言3
二、方案比较与论证3
2.1系统整体流程图3
2.2单片机芯片的选择方案和论证:
4
2.3时钟方案选择5
2.4显示模块的选择5
2.5键盘模块的选择5
2.6具体设计分析5
三、硬件电路设计6
3.1整个电路原理图6
3.2数码显示模块设计7
3.3按键模块7
3.4复位电路8
四.程序流程图8
五、系统仿真9
5.1Proteus软件应用9
5.2实验测试10
六主要元器件选择11
七、参考文献11
八.结束语11
附录2部分源程序12
绪言
数字电子钟具有走时准确,一钟多用等特点,在生活中已经得到广泛的应用。
虽然现在市场上已有现成的电子钟集成电路芯片,价格便宜、使用也方便,但是人们对电子产品的应用要求越来越高,数字钟不但可以显示当前的时间,而且可以显示期、农历、以及星期等,给人们的生活带来了方便。
另外数字钟还具备秒表和闹钟的功能,且闹钟铃声可自选,使一款电子钟具备了多媒体的色彩。
单片机具有体积小、功能强可靠性高、价格低廉等一系列优点,不仅已成为工业测控领域普遍采用的智能化控制工具,而且已渗入到人们工作和和生活的各个角落,有力地推动了各行业的技术改造和产品的更新换代,应用前景广阔。
时钟电路在计算机系统中起着非常重要的作用,是保证系统正常工作的基础。
在一个单片机应用系统中,时钟有两方面的含义:
一是指为保障系统正常工作的基准振荡定时信号,主要由晶振和外围电路组成,晶振频率的大小决定了单片机系统工作的快慢;二是指系统的标准定时时钟,即定时时间,它通常有两种实现方法:
一是用软件实现,即用单片机内部的可编程定时/计数器来实现,但误差很大,主要用在对时间精度要求不高的场合;二是用专门的时钟芯片实现,在对时间精度要求很高的情况下,通常采用这种方法,典型的时钟芯片有:
DS1302,DS12887,X1203等都可以满足高精度的要求。
二、方案比较与论证
2.1系统整体流程图
LED数码管动态扫描显示模块
AT89S52
主控制模块
键盘模块
DS1302时钟模块
开始
初始化子程序
While(1
)
串口有数据
否
是
调用子程序,获取串口数据
调用子程序,设置日历时钟芯片
调用子程序,获取芯片的时间信息
调用显示字程序
2.2单片机芯片的选择方案和论证:
方案一:
纯硬件电路系统,各功能采用分离的硬件电路模块实现。
用时序逻辑电路实现时钟功能,用555定时器实现闹钟的设定。
但这种实现方法可靠性差、控制精度低,灵活性小、线路复杂、安装调试不方便,而且不方便实现对系统的扩展。
方案二:
用可编程逻辑器件(PLD)实现。
这种方案与前一种相比,可靠性增加,同时可以很好的完成时钟的功能。
同时这种方案只能选用数码管显示,显示的效果不够理想,无法很好的完成扩展功能的要求,系统的灵活性不够。
方案三:
采用AT89S52单片机作为系统的控制核心。
时钟功能采用单片集成的时钟芯片DS1307来实现,可以使用液晶显示时间、日历及闹铃,有着智能化的人机界面。
由于使用了单片机,整个系统可编程,系统的灵活性大大增加了。
另外,本方案可以方便的实现其他功能的扩展。
经过以上的比较论证,选用方案三来完成项目设计的要求。
2.3时钟方案选择
方案一:
基本门电路搭建。
用基本门电路来实现时钟发生器,电路结构复杂,故障系数大,不易调试。
方案二:
专用时钟芯片。
目前市场上已有很多实时时钟芯片。
如DS12887、DS1302、DS1307、PCF8563、X1227等,芯片内都集成了时钟/日历功能,给时钟系统设计带来很多方便。
根据设计要求,在本设计中我采用了DS1302时钟芯片。
2.4显示模块的选择
方案一:
使用多个数码管显示。
LED数码管是利用二极管发光显示数字和字母,具有亮度大、接口设计比较容易,价格相对较便宜等优点。
但是由于它工作电流较大、不能显示汉字,显示的信息量有限,若在此题目中应用就会受到很大的限制。
方案二:
采用液晶显示。
液晶特别是具有汉字显示功能的液晶显示器,来实现显示功能,不仅可以实现基本的显示信息,而且可以显示丰富的符号指示信息以及文字指示信息,信息量丰富且直观易懂。
而且液晶显示有功耗低,体积小,重量轻,寿命长,不产生电磁辐射污染等优点。
系统采用方案二,设计选用LCD1602液晶显示模块。
2.5键盘模块的选择
方案一:
采用独立式按键电路。
每个键单独占有一根I/O接口线,每个I/O口的工作状态互不影响,此类键盘采用端口直接扫描方式。
但是当按键较多时占用单片机的I/O数目较多。
方案二:
采用阵列式键盘。
此类键盘是采用行列扫描方式,当按键较多时可以降低占用单片机的I/O口数目。
根据设计要求我采用了方案二。
2.6具体设计分析
利用单片机(AT89S51)制作简易电子时钟,由六个LED数码管分别显示小时十位、小时个位、分钟十位、分钟个位、秒钟十位、秒钟个位。
结合本设计实验来说,要求显示的时间为时,分,秒,并且都用两位数码管来实现显示。
因此,具体设计程序时,应尽可能多用一些子程序与数据暂寄存器单元。
本程序设计中,在主程序之外,可以设置时间值处理子程序,时间值显示前的处理子程序,按键情况扫描子程序,1S定时中断子程序以及5ms延时消除按键抖动子程序等多个小型的子程序。
另外,可以设置一些数据单元作为数据寄存器。
用28H,2AH,2BH和2CH地址单元分别作为显示位数的扫描指针值寄存器,时寄存器,分寄存器和秒寄存器,再用20H地址单元作为显示寄存器
三、硬件电路设计
3.1整个电路原理图
3.2数码显示模块设计
共阴数码管
数码管的引脚图
数码管是一种把多个LED显示段集成在一起的显示设备。
有两种类型,一种是共阳型,一种是共阴型。
共阳型就是把多个LED显示段的阳极接在一起,又称为公共端。
共阴型就是把多个LED显示段的阴极接在一起,即为公共商。
阳极即为二极管的正极,又称为正极,阴极即为二极管的负极,又称为负极。
通常的数码管又分为8段,即8个LED显示段,这是为工程应用方便如设计的,分别为A、B、C、D、E、F、G、DP,其中DP是小数点位段。
而多位数码管,除某一位的公共端会连接在一起,不同位的数码管的相同端也会连接在一起。
即,所有的A段都会连在一起,其它的段也是如此,这是实际最常用的用法。
数码管显示方法可分为静态显示和动态显示两种。
静态显示就是数码管的8段输入及其公共端电平一直有效。
动态显示的原理是,各个数码管的相同段连接在一起,共同占用8位段引管线;每位数码管的阳极连在一起组成公共端。
利用人眼的视觉暂留性,依次给出各个数码管公共端加有效信号,在此同时给出该数码管加有效的数据信号,当全段扫描速度大于视觉暂留速度时,显示就会清晰显示出来。
系统采用动态显示方式,用P0口来控制LED数码管的段控线,而用P2口来控制其位控线。
动态显示通常都是采用动态扫描的方法进行显示,即循环点亮每一个数码管,这样虽然在任何时刻都只有一位数码管被点亮,但由于人眼存在视觉残留效应,只要每位数码管间隔时间足够短,就可以给人以同时显示的感觉。
3.3按键模块
时间计数电路由秒个位和秒十位计数器、分个位和分十位计数器、时个位和时十位计数器及星期计数器电路构成,其中秒个位和秒十位计数器、分个位和分十位计数器为60进制计数器,时个位和时十位计数器为24进制计数器。
下图为按键模块电路原理图。
3.4复位电路
单片机复位的条件是:
必须使RST/VPD或RST引(9)加上持续两个机器周期(即24个振荡周期)的高电平。
例如,若时钟频率为12MHz,每机器周期为1μs,则只需2μs以上时间的高电平,在RST引脚出现高电平后的第二个机器周期执行复位。
单片机常见的复位如图所示。
电路为上电复位电路,它是利用电容充电来实现的。
在接电瞬间,RESET端的电位与VCC相同,随着充电电流的减少,RESET的电位逐渐下降。
只要保证RESET为高电平的时间大于两个机器周期,便能正常复位。
该电路除具有上电复位功能外,若要复位,只需按图中的RESET键,此时电源VCC经电阻R1、R2分压,在RESET端产生一个复位高电平。
分寄存器值加1
分按键了?
开始
四.程序流程图
秒寄存器=60
定时器T0初始化
设置显示初值为12:
00:
00
N
使分寄存器清0
设置定时4m初值
分按键松开?
设置中断允许
N
设中断250次
时按键了?
启动T0中断
秒按键了?
时寄存器值加1
秒寄存器值加1
时寄存器值=20
N
秒寄存器值加1
使寄存器清0
YN
使秒寄存器清0
秒按松开了?
秒按键松开了?
NYN
五、系统仿真
运用proteus软件进行仿真现在proteus软件中建立一个新的文件,再根据自己的要求选择所需的器件,把器件进行适当的排位后进行连接,连接后运行软件进行仿真。
5.1Proteus软件应用
1.原理图编辑窗口(TheEditingWindow):
顾名思义,它是用来绘制原理图的。
蓝色方框内为可编辑区,元件要放到它里面。
注意,这个窗口是没有滚动条的,你可用预览窗口来改变原理图的可视范围。
2.预览窗口(TheOverviewWindow):
它可显示两个内容,一个是:
当你在元件列表中选择一个元件时,它会显示该元件的预览图;另一个是,当你的鼠标焦点落在原理图编辑窗口时(即放置元件到原理图编辑窗口后或在原理图编辑窗口中点击鼠标后),它会显示整张原理图的缩略图,并会显示一个绿色的方框,绿色的方框里面的内容就是当前原理图窗口中显示的内容,因此,你可用鼠标在它上面点击来改变绿色的方框的位置,从而改变原理图的可视范围。
3.模型选择工具栏(ModeSelectorToolbar):
主要模型(MainModes):
1*选择元件(components)(默认选择的)
2*放置连接
3*放置标签(用总线时会用到)
4*放置文本
5*用于绘制总线
6*用于放置子电路
7*用于即时编辑元件参数(先单击该图标再单击要修改的元件)
配件(Gadgets):
1*终端接口(terminals):
有VCC、地、输出、输入等接口
2*器件引脚:
用于绘制各种引脚
3*仿真图表(graph):
用于各种分析,如NoiseAnalysis
4*录音机
5*信号发生器(generators)
6*电压探针:
使用仿真图表时要用到
7*电流探针:
使用仿真图表时要用到
8*虚拟仪表:
有示波器等
2D图形(2DGraphics):
1*画各种直线
2*画各种方框
3*画各种圆
4*画各种圆弧
5*画各种多边形
6*画各种文本
7*画符号
8*画原点等
4.元件列表(TheObjectSelector):
用于挑选元件(components)、端接口(terminals)、信号发生器(generators)、仿真图表(graph)等。
举例,当你选择“元件(components)”,单击“P”按钮会打开挑选元件对话框,选择了一个元件后(单击了“OK”后),该元件会在元件列表中显示,以后要用到该元件时,只需在元件列表中选择即可。
5.方向工具栏(OrientationToolbar):
旋转:
旋转角度只能是90的整数倍。
翻转:
完成水平翻转和垂直翻转。
使用方法:
先右键单击元件,再点击(左击)相应的旋转图。
6.仿真工具栏
仿真控制按钮
1*运行
2*单步运行
3*暂停
4*停止
按照自己设计的电路图就可以画出想要的电路图!
2.在软件中模拟和实际的效果为什么有如此大的差别?
答:
软件中模拟受到电脑CPU工作频率的影响,所以效果不是很明显,但是一些基本的现象还是可以看出来的。
只要我们知道原理和图是正确的,那么就没有必要考虑太多的未知因素。
在实际面包板中一定会看到正确的现象。
3.面包板连线注意事项!
!
!
!
!
!
答:
面包板连线时一定要弄清楚它的原理,不然就会一点头绪都找不到。
连接芯片是要弄清楚各个引脚对应的端口号,该接地的地方一定要接地,该接高电平的地方一定要接高电平。
5.2实验测试
主要的设计要求是能够实现时钟的一般功能,以及包括时间的调整功能,这个基于单片机的电子时钟基本上实现了上述功能,能够通过时间调整电路对时间进行调整以及复位。
下述为12:
00:
00的仿真图:
图812:
00:
00时刻的仿真效果图
六主要元器件选择
表6-1主要元器件清单
序号
材料名称
规格型号
数量
元件代号
1
单片机
AT89S51
1
U1
2
电阻
1k
17
R1-R16
3
电容
10PF
4
C1、C2、C3、Y1
4
数码管
MPX8
1
DS1
5
集成电路
2
74LS47、74LS138
七、参考文献
【1】张迎新.单片机初级教程【M】.北京:
北京航空航天大学出版社,
2006.
【2】冯志强.AltiumDesigner8.0中文版电路设计【M】.北京:
清华大学出版社,
2009.
【3】杨素行.模拟电子技术基础简明教程(第三版)【M】.北京:
高等教育出版社,
2006.
【4】余孟尝.数字电子技术基础简明教程(第三版)【M】.北京:
高等教育出版社,
2006.
【5】程鹏.自动控制原理(第二版)【M】.北京:
高等教育出版社,
2006.
【6】王化祥,张淑英.传感器原理及应用(第三版)【M】.天津:
天津大学出版社,
2007.
【7】邱关源,罗先觉.电路(第五版)【M】.北京:
高等教育出版社,
2006.
【8】王明泉.信号与系统【M】.北京:
科学出版社,
2006.
八.结束语
设计,我懂得了学习的重要性,了解到理论知识与实践相结合的重要意义,学会了坚持、耐心和努力,这将为自己今后的学习和工作做出了最好的榜样。
另外,要非常感谢我的指导老师,是她指引我克服一个由一个的困难,让我学会对困难无所畏惧,以及对问题的一些很重要的思考方法。
附录2部分源程序
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
EN
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 日历 时钟 设计