单片机设计数字电子钟.docx
- 文档编号:3350268
- 上传时间:2022-11-22
- 格式:DOCX
- 页数:26
- 大小:201.70KB
单片机设计数字电子钟.docx
《单片机设计数字电子钟.docx》由会员分享,可在线阅读,更多相关《单片机设计数字电子钟.docx(26页珍藏版)》请在冰豆网上搜索。
单片机设计数字电子钟
摘要
该课程设计为数字电子钟的设计。
以AT89S52为核心,配合LED数码管显示器和按键为用户提供长期、连续、可靠、稳定的工作环境。
该数字电子钟有时分秒显示和日期显示以及时间和日期调整的功能。
系统软件设计包括单片机计算机两部分的编程。
计算机软件编程主要实现参数设置、串行口数据接收、指令发送以及数据的显示和存储。
单片机软件编程主要实现键盘、LED显示等各模块的功能,采用汇编语言编程。
关键词数字电子钟;单片机;LED显示
ABSTRACT
Thecoursedesignedfordigitalelectronicclockdesigns.ToAT89S52asthecore,withtheLEDdigitaltubedisplayandbuttonsprovideuserswithlong-term,continuous,reliableandstableworkingenvironment.Thedigitalelectronicclockandsometimesminutesandsecondsdisplayanddatedisplayaswellastimeanddateadjustmentfunction.Systemsoftwaredesignincludestwoparts,thecomputerprogrammingmicrocontrollers.Computersoftwareprogrammingtoachievethemainparametersettings,serialportdatareceiving,sendingcommandsanddatadisplayandstorage.SCMsoftwareprogrammingtoachievethemainkeypad,LEDdisplaysthefunctionsofeachmodule,usingassemblylanguageprogramming.
Keywordsdigitalelectronicclock;microcomputer;LEDDisplay
目录
1设计任务和方案………………………………………………………………………3
1.1设计任务………………………………………………………………………3
1.2功能要求说明…………………………………………………………………3
1.3设计总体方案及工作原理说明………………………………………………3
2数字电子钟的硬件系统的设计………………………………………………………4
2.1硬件系统各模块功能简要介绍………………………………………………4
2.2电路原理图、PCB图和元器件布局……………………………………………4
2.3元器件清单……………………………………………………………………4
3数字电子钟的软件系统的设计………………………………………………………5
3.1使用的单片机资源的情况……………………………………………………5
3.2各模块功能简要介绍…………………………………………………………5
3.3程序的流程框图………………………………………………………………5
3.4程序清单………………………………………………………………………9
4数字电子钟的设计仿真和结果分析………………………………………………10
4.1设计结论和使用说明…………………………………………………………10
4.2仿真结果………………………………………………………………………10
4.3误差分析………………………………………………………………………12
4.4设计体会………………………………………………………………………13
4.5教学建议………………………………………………………………………13
参考文献………………………………………………………………………………15
致谢……………………………………………………………………………………16
附录………………………………………………………………………………………17
1设计任务和方案
1.1设计任务
(一)设计题目:
数字电子钟
(二)设计目的与任务:
学生通过理论设计和实物制作解决相应的实际问题,巩固和运用在《单片机技术》中所学的理论知识和实验技能,掌握单片机应用系统的一般设计方法,提高设计能力和实践动手能力,为以后从事电子电路设计、研发电子产品打下良好的基础。
1.2功能要求说明
该数字电子钟采用八位数码管能实现年月日和时分秒的显示。
当电子钟一上电即可显示P.,设置数字钟的初始日期和时间为05年01月01日14时30分20秒.用四个按键实现电子钟的显示和调整的功能,分别为K0,K1,K2,K3,其中K0键为开启键,且显示的是时分秒,开启之后K2键可实现切换的功能,即可实现年月日和时分秒的切换显示;按K3键可实现年月日和时分秒的调整,按一下可以对当前显示的进行调整,再按一下即可切换到一个界面进行调整,调整的时候数字钟停止计时,当对年月日和时分秒都调整完之后,再按一下K3键即可跳出调整的状态,数字钟继续开始计时工作,在电子钟正常计时的时候再按K0键即可对电子钟进行关闭.
1.3设计课题总体方案及工作原理说明
设计中采用AT89S52芯片及LED显示器,一些独立式按键构成一个简单的数字电子钟。
设计中是采用单片机的内部定时器进行定时,程序框图如图1.1所示
整个电子钟的工作原理是:
在正常的供电状态下,首先利用单片机定时,到了相应的时间由单片机将所需要显示的数据送到LED显示器的输入口,当有键按下时则进入相应的按键显示和调整状态,进行按键调整。
图1.1总的设计的框图
2数字电子钟的硬件系统的设计
2.1硬件系统各模块功能设计
该数字电子钟由单片机最小系统、键盘模块、LED显示电路模块、USB接口电路模块组成。
各模块的功能如下:
(1)单片机最小系统
由AT89S52单片机、时钟电路和复位电路构成。
AT89S52是一种带8K字节闪烁可编程可擦除只读存储器(FPEROM—FalshProgrammableandErasableReadOnlyMemory)的低电压,高性能CMOS8位微处理器,俗称单片机。
时钟电路由一个12MHZ的石英晶体振荡器和两个33pF的的电容组成振荡电路和分频电路,为单片机提供内部时钟。
复位电路采用上电复位和按键复位结合的方式对电路进行复位,主要是通过RST引脚送入单片机。
(2)键盘模块
采用独立式键盘接法,共有四个按键来对电路进行控制。
分别接在单片机的P1口线上。
一个键控制开和关,一个键负责调整,另外两个键辅助调整。
(3)LED显示电路
采用八个共阴的数码管显示器进行显示,加上一个SN74LS245作为驱动和8个200Ω的电阻起限流的作用。
将段控口接在P0口上,位控口接在P3口上,实现对显示的控制。
(4)USB接口电路
接上一个电容组成的滤波电路和电源显示灯组成一个电源接口,为单片机工作供电。
2.2电路原理图、PCB图和元器件布局
采用Protel软件,Protel99SE是Protel公司近10年来致力于Windows平台开发的最新结晶,能实现从电学概念设计到输出物理生产数据,能够和形象的画出我们所要设计的产品。
电路原理图和PCB图及元器件布局见附录。
2.3元器件清单
见附录。
3数字电子钟的软件系统的设计
3.1使用的单片机资源的情况
该数字电子钟用到了单片机的定时器的功能,此外用到了单片机的中断功能,在数据的显示时所采用的是查表的方法,因此需要将表格、数据存到单片机的程序存储器中去。
由于电子钟需要可以进行调节,因此,需要在单片机的P口上加上按键,本设计采用独立式键盘,直接接在P1口上且按键的结果存贮在单片机的内部数据存储器里面。
用到的LED显示器接到了单片机的P0口线上和P3口线上。
3.2各模块功能简要介绍
该数字电子钟所用的软件模块有定时器模块、按键模块、LED显示模块。
(1)定时器模块
选择定时器0,设置定时方式为方式1,设置定时时间为50mS。
(2)按键模块
采用独立式键盘,共用四个按键对电路进行控制和操作,分别为K0、K1、K2、K3来控制电子钟的开/关和调整。
(3)LED显示模块
该电子钟一通电即让它显示P.,按开启键即可显示时分秒,再按切换键即可显示年月日,然后结合键盘操作还可以对时间进行调整。
3.3程序的流程图
(1)整体设计流程图
图3.1整体设计流程图
(2)键盘设计流程图
图3.2键盘设计流程图
(3)显示设计流程图
图3.3显示时分秒设计流程图
图3.4显示年月日设计流程图
3.4程序清单
见附录。
4数字电子钟的设计仿真和结果分析
4.1设计结论和使用说明
(1)设计结论
通过对单片机进行外接键盘和LED数码管的操作以及加上硬件电路和软件的结合,实现了该数字电钟显示P.以及时分秒和年月日的显示,同时还可实现对该电子钟进行调整的功能。
通过测试和仿真以及修改,该电子钟最终能正常的工作。
(2)使用说明
该数字电子钟采用八位数码管能实现年月日和时分秒的显示。
当电子钟一上电即可显示P.,设置数字钟的初始日期和时间为05年01月01日14时30分20秒.用四个按键实现电子钟的显示和调整的功能,分别为K0,K1,K2,K3,其中K0键为开启键,且显示的是时分秒,开启之后K2键可实现切换的功能,即可实现年月日和时分秒的切换显示;按K3键可实现年月日和时分秒的调整,按一下可以对当前显示的进行调整,再按一下即可切换到一个界面进行调整,调整的时候数字钟停止计时,当进行时分秒的调整时,K0键可实现对秒进行增大的调整,每按一下秒的值就加一,当秒增加到59时就重新从0开始继续增大,K1键可实现对分进行增大的调整,每按一下分的值就加一,当分增加到59的时候就重新从0开始继续增大,K2键可实现对时进行增大的调整,每按一下时的值就加一,当时的值增大到23的时候就重新从0开始继续增大.当进行年月日的调整时,K0键可实现对日进行增大的调整,每按一下秒的值就加一,当日增加到28或者30或者31(看不同的年份和月份)时就重新从0开始继续增大,K1键可实现对月进行增大的调整,每按一下月的值就加一,当月增加到12的时候就重新从0开始继续增大,K2键可实现对年进行增大的调整,每按一下时的值就加一,当时的值增大到99的时候就重新从0开始继续增大.当对年月日和时分秒都调整完之后,再按一下K3键即可跳出调整的状态,数字钟继续开始计时工作,在电子钟正常计时的时候再按K0键即可对电子钟进行关闭.
4.2仿真结果
在仿真时用到了两个软件,第一个是Keil,第二个是Protues,本次仿真是将两个软件结合起来进行的。
Proteus软件所提供了30多个元件库,数千种元件。
元件涉及到数字和模拟、交流和直流等。
在Proteus软件包中,不存在同类仪表使用数量的问题。
Proteus还提供了一个图形显示功能,可以将线路上变化的信号,以图形的方式实时地显示出来,其作用与示波器相似但功能更多。
用Protues软件进行仿真,其仿真的电路图如图4.1所示
图4.1Protues仿真电路图
数字电子钟正常工作时,仿真的LED显示器显示如图4.2所示,当按下切换键时,数字电子钟进入日期显示界面,此时LED数码管显示器的显示如图4.3和4.4所示,当按下调整键时,数字电子钟进入调整界面,此时LED数码管显示器的显示如图4.5和4.5所示。
图4.2数字电子钟正常工作时的显示图
图4.3数字电子钟显示时分秒的显示图
图4.4数字电子钟显示日期的显示图
图4.5数字电子钟调整时分秒的显示图
图4.6数字电子钟调整年月日的显示图
4.3误差分析
本数字电子钟在跟标准的电子钟比较时,时间稍微慢一点,产生此种情况的原因有:
其一是在执行程序指令时,由于需要耗费一定的时间,因此会比标准的电子钟要慢一点。
其二是晶振不够标准,使得定时器定时时不够精准。
4.4设计体会
从选题到硬件电路的设计,再到软件电路的设计,整个过程当中我学到了很多的东西,在老师的细心指导,耐心分析下,我把整个思路理清,并开始了设计的规划,在原理图的绘制时我查找了相关软件的使用方法,并悉心向老师和同学请教,学会对PROTEL和PROTEUS的使用;在软件系统的设计当中,我遇到了很多的问题,不能把一些小模块系统的联系起来,但通过不段的学习,最终花了两天的时间把整个程序完整的编出来了,并能进行仿真使用;到最后做板子的时候,因为是第一次做板子,很多细节的地方都没注意,比如买元器件时,要看清楚所买元器件的引脚、尺寸和功能以及质量,我买的板子质量不行,结果在用熨斗熨的时候出现暴起的现象,只能在重新做一块,而且买的数码管跟实际所画的PCB板尺寸大小不一样,只能另想办法,很影响实验进度,所以在买元器件时一定要做好充分的准备。
在做板子的时候因为熨的时候没把握好,结果出现了很多的断点,只能一个一个查,一个一个补,麻烦很大,工作量也很大,而且很容易疏忽,所以将图纸熨到板子上时一定要熨的均匀,把握好时间和力度。
打孔时一定要对准,不要太急,慢慢来。
插元器件的时候一定要把每个元器件的引脚搞清楚,插之前要用万用表测好每个引脚是该接地还是该接电源,千万不能插反了。
焊接的时候要标准不能产生虚焊,也不要遗漏,要均匀,焊锡不能太多也不能太少。
到最后就是检查电路的连接了,搞清楚整个电路的连接时怎么样的,当显示器不亮的时候可以采用软件检查法或者硬件检查对板子进行测试,这个过程中一定要细心且要有耐心,不要灰心,相信自己一定能找出原因,只要自己持之以恒肯定能把错误找出来并纠正。
在对板子进行测试的时候出现了很多的错误,花了一整个下午的时间来查找电路的错误,首先是电源指示灯不亮,灯座接反了,然后是显示器不亮,最后通过用万用表对电路进行测试以及才用软件的方式对电路的测试,最终让电子钟正常的工作了,二导致的主要原因是熨的时候太多的断点没补好,以及在焊接的时候出现了很多的虚焊,导致某些段控口和位控口的不可用,因为是第一次做板子,所以之前很多该注意的地方都没有注意,最后留下一大堆得问题,使得整个制版的过程耗费很多的精力和时间。
从中我学会了很多,包括原理图的绘制,程序的设计,PCB的绘制,还有板子的制作,更重要的是我懂得了,要做好一个东西,准备工作好似必不可少,这样才能减少后面的不必要的麻烦,而且遇到困难和麻烦一点要有耐心和信心去把它攻破。
4.5教学建议
王老师的教学方式我挺赞同,你能够让我们把实际和理论结合起来,我觉得这很好,而且对现在的我们来说很重要,大学三年来,学的东西可以说很多,但是我们一直都不知道,手中的这些知识到底有什么作用,而且很多的老师都只顾着讲自己的课程,就像是完成一项别人交给他的任务一样,从不关心学生学的到底是怎么样的,所以我觉得适当的给学生一些将理论联系实际的作业和任务,能够让我们更清楚和明白自己学的东西,也让我们学的不再那么迷茫和无目的了。
其次老师和同学的关系我觉得对同学能否学习好这门课程很重要,课堂上老师应该要严肃认真,下课后老师可以多和同学们接触和聊天,培养和同学们的关系,和同学们做朋友,对同学们提出的问题要认真对待,并且对学生提问。
还有就是,老师的责任不仅仅是传授知识,更重要的是给我们传授学习经验和方法,培养学生的发散的思考方式,以及多传授点社会经验和教训,教我们不要走不必要的弯路以及在社会上你所必备的生存工具。
参考文献
[1]唐俊瞿,许雷,张群瞻.单片机原理与应用[M].北京:
冶金工业出版社,2003
[2]李广弟,朱月秀,冷祖祁.单片机基础[M].北京:
北京航空航天大学出版社,2007
[3]李光飞.单片机课程设计实例指导[M].北京:
北京航空航天大学出版社,2004.9
[4]张洪润,兰清华.单片机应用技术教程[M].北京:
清华大学出版社,1997.11
[5]李华.MCS—51系列单片机实用接口技术[M]..北京:
北京航空航天大学出版社,1993
[6]李朝青.单片机原理及接口技术[M]..北京:
北京航空航天大学出版社,1998
[7]赵秀珍,单永磊.单片微型计算机原理及其应用[M]..北京:
中国水利水电出版社,2001.8
致谢
在这里我要感谢很多很多人,帮助分析和解决问题,这是我第一次做这方面的课程设计,而且最近板子的成功,都是在老师和同学们的悉心指导下才能做出成绩,在开始选题的时候,王老师悉心的指导和讲解,让我渐渐有自己的方案和选择方向,在每一步的进展当中,我都碰到了很多的问题,画原理图的时候分析电子钟工作的原理以及怎么确定和修改,都是在班上同学的指导下,经过一步步修改而成的,设计软件的时候,因为是设计一个系统的程序,所以开始还没形成系统的思维,但在老师的讲解和同学的教导下,渐渐的将一个个子程序联系起来调试运行。
最后做板子的时候,感谢同学的帮助和指导,帮忙拿东西到实验室,又帮忙送回去,真的好感谢,还有实验室的同学在我遇到问题和不懂得地方耐心的帮我分析和解决,虽然在每一步都出了很多的问题,但经过那些曾经做过板子的有经验的指导,还是把一个个困难攻破了,所以整个过程都是在老师和同学的帮助下完成的,特此感激他们对我的帮助和支持。
附录
*******************************************************************************
***;按键接P1.0~P1.3分别为K0、K1、K2、K3;**************************
***;数码管显示器段控口接单片机的P0口,位控口接单片机的P3口;*****
********************************************************************
**********;存储单元定义;*******************************************************
YEAREQU40H
MONTHEQU41H
DAYEQU42H
HOUREQU43H
MINUTEEQU44H
SECONDEQU45H
TIMEEQU46H
ORG0000H
AJMPSTART
ORG000BH
AJMPET_0
START:
LCALLLING
MOVTIME,#00H
MOVTMOD,#01H;设置定时器的工作方式为方式一
MOVTH0,#(65536-50000)/256;定时50毫秒
MOVTL0,#(65536-50000)MOD256
MOVIE,#82H
LOOP:
LCALLDISPLAY0;显示P.
JNBP1.0,MAIN1
JMPLOOP
MAIN1:
LCALLDISPLAY0
JNBP1.0,MAIN1
SETBTR0;开启定时器
*****************;主函数;******************************************************
MAIN:
LCALLKEY
JB20H.3,SET1
JB20H.0,GUAN
JB20H.2,RIQI
LCALLDISPLAY2;显示时分秒
AJMPMAIN
*********************;显示日期;************************************************
RIQI:
LCALLDISPLAY1
LCALLKEY
JB20H.2,MAIN
JMPRIQI
GUAN:
MOVP2,#0FFH;关显示
LCALLKEY
JB20H.0,MAIN
JMPGUAN
***************;进入时分秒的调整界面;******************************************
SET1:
CLRTR0;时分秒的调整
LCALLDISPLAY2
LCALLKEY
JB20H.3,SET2
JB20H.2,TS
JB20H.1,TF
JB20H.0,TM
JMPSET1
TS:
INCHOUR;时的调整
MOVA,HOUR;是否达到了24小时到了就清零
CJNEA,#24,SET1
AJMPLL1
LL1:
MOVHOUR,#0
JMPSET1
TF:
INCMINUTE;分的调整
MOVA,MINUTE;是否达到了60分到了就清零
CJNEA,#60,SET1
AJMPLL2
LL2:
MOVMINUTE,#0
JMPSET1
TM:
INCSECOND;秒的调整
MOVA,SECOND;是否达到了60秒到了就清零
CJNEA,#60,SET1
AJMPLL3
LL3:
MOVSECOND,#0
JMPSET1
SET2:
LCALLKEY;进入年月日的调整界面
LCALLDISPLAY1;显示年月日
JB20H.3,EXIT
JB20H.2,TN
JB20H.1,TY
JB20H.0,TR
JMPSET2
EXIT:
SETBTR0;关定时器
JMPMAIN
TN:
INCYEAR;年的调整
MOVA,YEAR;是否达到了99年到了就清零
CJNEA,#99,SET2
AJMPLL4
LL4:
MOVYEAR,#0
JMPSET2
TY:
INCMONTH;月的调整
MOVA,MONTH;是否达到了12月到了就清零
CJNEA,#13,SET2
AJMPLL5
LL5:
MOVMONTH,#0
JMPSET2
TR:
INCDAY;日的调整
MOVA,YEAR;看是闰年还是非闰年
MOVB,#4
DIVAB
MOVA,B
JZWW1;闰年则转WW1
JMPWW2;非闰年则转WW2
WW1:
MOVA,MONTH;看是闰年的哪一月份
CJNEA,#2,LL6;是闰年中的2月则为29天MOVA,DAY到29就清零
CJNEA,#29,SET2
MOVDAY,#0
AJMPSET2
LL6:
CJNEA,#4,LL7;闰年中的4、6、9、11为30天
MOVA,DAY
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 设计 数字 电子钟