《单片机技术》课程设计说明书数字电子钟_第1页
《单片机技术》课程设计说明书数字电子钟_第2页
《单片机技术》课程设计说明书数字电子钟_第3页
《单片机技术》课程设计说明书数字电子钟_第4页
《单片机技术》课程设计说明书数字电子钟_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、单片机技术课程设计说明书 数字电子钟 系 、 部: 电气与信息工程系 学生姓名: 指导教师: 职称 副教授 专 业: 自 动 化 班 级: 自本 0902班 完成时间: 2012年1月2日 摘 要现代生活的人民越来越注重时间观念,可以说时间就是金钱就是生命。对于那些对时间把握严格的人来说,时间的不准确性会带来很多的麻烦,所以以数码管显示的时钟比针式时钟表现出很大优势。并且电子钟可以精确到秒,误差小。在此次设计中,我采用led显示时、分、秒。以24小时计时方式,数码管动态显示,用12mhz的晶振电路,定时器零计数。在这次设计中,电路能显示基本的功能,还能做时间调整。 关键词 :数字电子钟;单片机

2、abstractgrowing emphasis on modern life from the time the concept of time and money can be said to draw the equal sign and life. for those who are very strict and accurate grasp of time and things, time will not exactly bring a very big trouble, so as to control the display of digital clock than the

3、 clock pointer showed a big advantage. digital display of time reading simple and fast, accurate display of time to seconds.it can not lead to errors.in this design, we use led digital display hours, minutes, seconds, to 24-hour time mode, according to digital control theory to dynamic display to di

4、splay, use the 12mhz crystal oscillation pulse. the timer count. in this design, the circuit has a display time of the this function, you can also realize the time adjustment.key words digital electronic clock ;scm目 录1 课题介绍11.1 课题任务和功能要求11.2 方案介绍12 硬件系统的设计22.1 各模块电路简介22.1.1 单片机最小系统22.1.2 下载口电路22.1.3

5、 键盘电路22.1.4 流水灯电路22.1.5 数码管电路22.1.6 测试电路22.2 设计课题pcb图、元器件布局图和原理图32.3 设计课题元器件清单33 软件系统的设计43.1 设计课题使用单片机资源的情况43.2 软件各功能模块简介43.3 程序流程框图53.4 程序清单64 仿真结果、误差分析、教学建议164.1 电子钟的仿真结果164.2 误差分析164.3 教学建议16结束语17致 谢18参考文献19附 录a pcb正面图20附 录b pcb反面图21附 录c 元件布局图221 课题介绍1.1 课题任务和功能要求设计一个具有特定功能的电子钟。该电子钟上电或按键复位后能自动显示系

6、统提示符“p.”, 进入时钟准备状态;第一次按电子钟启动/调整键,电子钟从0时0分0秒开始运行,进入时钟运行状态;再次按电子钟启动/调整键,则电子钟进入时钟调整状态,此时可利用各调整键调整时间,调整结束后可按启动/调整键再次进入时钟运行状态。1.2 方案介绍本设计采用单片机以及其外部设备组成硬件电路,其中包括单片机、数码管显示器、独立式键盘。数码管的p0口接段控,p2口接位控。键盘接在p1口上。除此之外还有晶振电路,复位电路,电源电路和下载口电路。程序用汇编语言编写,设有复位键,a开启键,b调时,c调分,d调秒。方案设计框图如图一所示:图 1 系统设计框图2 硬件系统的设计 2.1 各模块电路

7、简介2.1.1 单片机最小系统单片机最小系统包括电源电路、时钟电路、复位电路。只有当单片机有了这些电路才会工作。电源电路给单片机供电,时钟电路给单片机提供计数时间,复位电路可以实现单片机的复位。2.1.2 下载口电路下载口的1脚接p1.5口,2脚悬空,3脚接单片机的复位口,4脚接p1.6口,5脚接p1.7口,6脚接地,7、8、8、10脚接地。2.1.3 键盘电路按键电路的设计就是在一段公共接地,另一端通过上拉电阻接到p1口,当有按键按下,相应的口就会变成低电平,产生一个下降沿。2.1.4 流水灯电路流水灯电路直接挂接在单片机的p3口上,采用共阳接法。而蜂鸣器就接在p3.1口上。2.1.5 数码

8、管电路数码管的段控口接在单片机的p0上,而位控口通过三极管接在单片机的p2口上。2.1.6 测试电路板子做好后通过老师给的测试程序测得各模块的功能均正常。2.2 设计课题pcb图、元器件布局图和原理图pcb正面图参见附录apcb反面图参见附录b元件布局图参见附录c2.3 设计课题元器件清单设计课题元器件清单如表1所示。表1 设计所用元器件清单序号名称、大小数量1电阻2001个2电阻47024个3电阻1k3个4电阻4.7k1个5电容22f1个6电容33pf2个718b201个8at89s521个9单排插40个11四位一体共阳极数码管2个12led9个13pnp9个14四脚按钮9个15六脚开关1个

9、16usb电源接口1个17下载口1个18晶振12mhz1个3 软件系统的设计3.1 设计课题使用单片机资源的情况设计课题使用单片机资源的情况如下:p0口输出数码管段选信号,p3口输出数码管位选信号;晶振12mhz;调整选择键set_key:p1.0;通过选择键选择调整位,选中位闪烁;增加键add_key:p1.1;按一次使选中位加1;减少键dec_key:p1.2;按一次使选中位减1;50h-5fh;16个寄存器单元作为显示单元; 50h 用于控制秒基准时钟源的产生;51h 清零秒寄存器;52h 清零分寄存器;53h 清零时寄存器;5fh 用于秒个位;5eh 用于秒十位;5dh 用于分个位;5

10、ch 用于分十位;5bh 用于时个位;5ah 用于时十位;54h 用于控制调时闪烁;堆栈栈底:7fh。3.2 软件各功能模块简介本设计的软件系统主要采用以下基本模块来实现,主程序、加1子程序、清零子程序、中断服务程序、键扫描程序模块、数码管及其显示程序模块和延时1ms程序模块。主程序:主要是用于对输入信号的处理、输出信号的控制和对各个功能程序模块的运用及其控制。中断服务程序:主要是用于电子钟的准确运行、数据输入过程中的闪烁。键扫子程序模块:主要是用于确定按键并得到特定的键码值。数码管及其显示模块:主要是用于驱动数码管及利用数码管显示时间。延时1ms程序模块:主要用于延时1ms。3.3 程序流程

11、框图图2 主程序流程框图3.4 程序清单;伪指令定义区 secgeequ30h secshiequ31h mingeequ32h minshiequ33h hourgeequ34h hourshiequ35h hg1equ36h hg2equ37h;*;系统起始程序区 org0000h ljmp mainorg000bhljmptt;*;系统监控程序区 main:movsp,#7fh;堆栈初始化movpsw,#00h;通用寄存器第0组movr0,#20hmovr1,#80hqq:movr0,#00hincr0djnzr1,qq;清零setbeasetbet0;=;显示系统提示符“p.” xsp

12、:movr1,#08hmovr0,#78h;显示缓存区首地址 pp:clramova,#11hmovr0,a incr0djnzr1,pp;将序号送往显示缓存区lcallxs;调用显示程序;=;键盘控制指令:jp:lcallxslcallkeyjb20h.0,keya ;s0:开启/停止、调时、恢复jb20h.1,keyb ;s1: 调时jb20h.2,keyc ;s2: 调分jb20h.3,keyd ;s3:调秒ljmpjp keyd:ljmpkeydd;*;键功能区;=a键功能程序=; keya:inc40h mova, 40h ;开辟40h字节单元存放按键次数movb,#2divabmo

13、va,bmovr3,bcjnea,#1,loopljmpaa ;功能1:“p.”显示1秒后开启电子钟 loop: cjnea,#0,jp ljmpaaa ;功能2:进入调时状态;=第一次按下a进入“p.”显示1s,并开启电子钟=; aa:mova,51hcjnea,#0,xsppljmpyanshi xspp:movr1,#08hmovr0,#78h ;显示缓存区首地址ppp:clramova,#11hmovr0,a incr0djnzr1,ppp ;将序号送往显示缓存区 yanshi:movtmod,#01hmovth0,#3chmovth0,#0b0hmov50h,#14hsetbtr0

14、;开启定时器ljmpjp;=第二次按下a,电子钟停止并进入可调时状态=;aaa:clrtr0jpp:lcallxshjp1:lcallxslcallkeyjb20h.0,keya ;s0:开启/停止、调时、恢复jb20h.1,keyb ;s1: 调时jb20h.2,keyc ;s2: 调分jb20h.3,keyd ;s3:调秒ljmpjpp;=b键功能:调时=; keyb: mova,40h cjnea,#0,pqd0 ;判断是否没有启动,若没有启动则无效lcalljp pqd0:mova,r3 cjnea,#0,jp1 ;只有在调时状态才能进行加1,否则为无效键 movr0,#hourshi

15、 lcalladd1 mova,r2 cjnea,#24h,jpp lcallclr0 lcalljpp ;=c键功能:调分=;keyc: mova,40h cjnea,#0,pqd1 ;判断是否没有启动,若没有启动则无效ljmpjppqd1:mova,r3 cjnea,#0,jp1 ;只有在调时状态才能进行加1,否则为无效键 movr0,#minshi lcalladd1 mova,r2 cjnea,#60h,jpp lcallclr0 ljmpjpp;=d键功能:调秒=;keydd: mova,40h cjnea,#0,pqd3 ;判断是否没有启动,若没有启动则无效 ljmpjppqd3:

16、 mova,r3 cjnea,#0,jp1;只有在调时状态才能进行加1,否则为无效键 movr0,#secshi lcalladd1 mova,r2 cjnea,#60h,jpp lcallclr0 ljmpjpp;*;共阳极代码:tab:db0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h;0-9db88h,83h,0c6h,0a1h,86h,8eh,0ffh,0ch,8ch,0bfh;a-f,灭,p.,p,-;*;子程序区;1、数码管显示程序xs;入口:78h-79h字节单元(led0、led1、led2、led3、led4、led5、led6、le

17、d7)xs:pushdphpushdplpushaccpushpsw;保护现场clrrs1setbrs0;改用通用寄存器第1组movr0,#78h;显示缓存区首地址movr1,#0feh;从低位开始显示movr5,#08hss:mova,r0movdptr,#tabmovca,a+dptrmovp2,r1;送位控movp0,a;送段控lcalldelay;延时1msmova,r1rla;左移movr1,a;保存新的位控码incr0djnzr5,ss;循环poppswpopaccpopdplpopdphret;2、送显缓子程序xshxsh:mov7fh,hourshi mov7eh,hourge

18、mov7dh,#13hmov7ch,minshimov7bh,mingemov7ah,#13hmov79h,secshimov78h,secgeret;3、延时1ms程序delay: delay:movr7,#02hdl1:movr6,#0ffhdl2:djnzr6,dl2djnzr7,dl1ret;4、键扫子程序key:; 出口:键值在内部ram 20h单元中key:lcallkeychuli;调p1口数据处理子程序jzexitlcallxslcallxs;调显示子程序延时lcallkeychulijzexitmovb,20h;保存取反后的键值keysf:lcallkeychuli;调p1口

19、数据处理子程序jzkey1;键释放,转恢复键值lcallxsljmpkeysf;等待键释放key1:mov20h,b;键值送20h保存exit:ret;5、p1口数据处理子程序keychuli:;入口:p1, 出口:键值在累加器a、内部ram 20h单元中keychuli:pushpswclrrs1setbrs0 ;改用通用寄存器第1组movp1,#0ffh ;先给p1口写1mova,p1 ;读p1口数据cplamov20h,aclrrs1clrrs0poppswret;6、加1子程序daad1:;入口:r0出口:r0add1:mova,r0;加1子程序,十位数送adecr0swapa;十位数

20、占高四位orla,r0;个位数占低四位,合字adda,#01h;加1daa;十进制调整movr2,a;将全值保存在r2中anla,#0fh;屏蔽十位数,取出个位数movr0,a;个位值送个位的伪指令代码区mova,r2incr0anla,#0f0h;屏蔽个位数取出十位数swapamovr0,a;十位数送十位的伪指令代码区ret;7、清零子程序clr0:;入口:a出口:aclr0:clramovr0,a;十位数缓冲单元清0decr0movr0,a;个位数缓冲单元清0ret;*;中断服务程序:;定时器中断程序: tt: pushacc pushpswpushdphpushdpl ;保护现场、保护断

21、点setbrs1setbrs0 ;切换至通用寄存器第3组movth0,#3chmovtl0,#0b0h ;送定时50ms的初值mova,51h ;为开始“p.”显示2s做好准备jzjsdecamov51h,acjnea,#0,ret1 ;直到“p.”显示2s后才能开始计时 js:mova,50hdeca ;循环次数减1mov50h,ajnzret0 ;循环未完成则返回至断点显示,完成则顺序执行mov50h,#20movr0,#31hlcalladd1 ;调用加1子程序mova,r2cjnea,#60h,ret0 ;判断a是否到60s,小于60h则返回断点显示,等于99h则清零lcallclr0

22、movr0,#33h ;进行秒数加1lcalladd1mova,r2cjnea,#60h,ret0 ;判断a是否到60min,小于60h则返回断点显示,等于则清零lcallclr0movr0,#35h ;进行分数值加1lcalladd1mova,r2cjnea,#24h,ret0 ;判断a是否到24h,小于24h则返回断点显示,等于则清零lcallclr0ret0:lcallxshret1:popdplpopdphpoppswpopaccretiend4 仿真结果、误差分析、教学建议4.1 电子钟的仿真结果在proteus仿真下,实现了所要的功能:(1)、“p.”状态,依靠上电或按复位键进入,在此状态下,按b、c、d键均无效,按a键有效,进入运行状态; (2)、运行状态,在此状态下,按b、c、d键均无效,只有按a键有效,按下a键后,退出运行状态,进入调整状态; (3)、调整状态,按

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论