ImageVerifierCode 换一换
格式:DOCX , 页数:29 ,大小:223.93KB ,
资源ID:3917986      下载积分:2 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/3917986.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数字电子钟正文.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数字电子钟正文.docx

1、数字电子钟正文目 录1 设计方案及工作原理 11.1 设计课题任务 11.2 功能要求说明 11.3 总体方案介绍 11.4 工作原理介绍 22 硬件系统的设计 32.1 硬件功能模块介绍时钟 3 2.1.1 时钟功能模块 3 2.1.2 键盘功能模块 4 2.1.3 码管显示模块 5 2.1.4 复位电路模块 62.2 原理图、PCB图、元器件布局图 7 2.2.1 数字电子钟原理图 7 2.2.2 数字电子钟PCB图 7 2.2.3 数字电子钟元器件布局图 72.3 元器件清单 73 软件系统的设计 83.1 单片机资源使用说明 83.2 软件系统各模块功能介绍 83.3 软件系统程序流程

2、框图 93.4 软件系统的程序 134 设计总结 144.1 使用说明 144.2 设计结论 144.3 仿真结果 144.4 误差分析 154.5 心得体会 154.6 教学建议 16结束语 17致 谢 18参考文献 19附录A 数字电子钟原理图 20附录B 数字电子钟PCB图 21附录C 数字电子钟元器件布局图 22附录D 数字电子钟实物图 23附录E 程序清单 241 设计方案及工作原理1.1 设计课题任务设计一个具有特定功能的电子钟。该电子钟上电或按键复位后能自动显示系统提示符“P.”, 进入时钟准备状态;第一次按电子钟启动/调整键,电子钟从0时0分0秒开始运行,进入时钟运行状态;再次

3、按电子钟启动/调整键,则电子钟进入时钟调整状态,此时可利用各调整键调整时间,调整结束后可按启动/调整键再次进入时钟运行状态。1.2 功能要求说明本设计设计电子钟上电显示P.进入等待状态,按下K0键选择电子钟功能,电子钟开始计时。作为电子钟使用时,首先该电子钟在功能上具有一般电子钟的固有功能,即能比较准确显示时间,当显示至59秒时分显示自动加一;当分、秒显示至59分59秒时,小时显示自动加一;当显示至23小时59分59秒时,电子钟自动变为0时0分0秒显示;还具有调整功能,可以调节时、分、秒。作为电子钟使用时,其最长定时是24h,最小定时是0.01s,具有暂停、连续,清零、停止功能。1.3 总体方

4、案介绍电子钟的总体功能原理是以AT89S52单片机为主要的控制核心,通过外接8个独立式键盘作为控制信号源,两个四位一体数码管作为显示器件,单片机实时的去执行相应的功能。在数码管上显示出来,此时通过不同的按键来观察和调节各种数据。本电子钟主要由单片机、4*1独立键盘、显示接口电路和复位电路构成,设计课题的总体方案如图1所示。图1 硬件设计方案软件总设计框图如图2所示图2 软件总设计框图1.4 工作原理介绍在本次设计里完成了电子钟功能。数字电子钟主要是利用单片机定时/计数器的工作和中断服务的作用完成计时功能的,首先用定时计数器采用工作方式1,定时50ms,然后在累加20次实现1秒,单片机的定时时间

5、一到,单片机会自动中断使程序转向中断服务程序执行,中断服务程序执行完就会返回原程序,等待下一次定时时间的到来再次产生中断。在此基础上,单片机按照已设定的程序执行下去,使单片机能计算时间量完成计时功能。在单片机并行I/O口扩展键盘和数码管,实现对时间的调整和显示。2 硬件系统的设计2.1 硬件功能模块介绍时钟2.1.1 时钟功能模块时钟电路用于产生AT89S52单片机工作时所需要的时钟控制信号,AT89S52单片机的内部电路在时钟信号控制下,严格地按照时序执行指令进行工作,而时序所研究的是指令执行中各个信号在时间上的关系。单片机各个功能部件的运行都是以时钟控制信号为基准,有条不紊的一拍一拍地工作

6、。因为,时序频率直接影响单片机的速度。时钟电路通过在芯片的外部XTAL1和XTAL2两个引脚跨接晶体振荡器和微调电容,形成反馈电路,就构成了一个稳定的自激振荡电路。时钟电路为单片机产生时钟脉冲序列,晶振频率为12MHz,时钟功能模块图如图3所示。 图3 时钟功能模块图2.1.2 键盘功能模块为了方便时钟调整与秒表的控制,在单片P1口口线上接了独立键盘,采用低电平有效地方法。在本次电子钟设计中,调整是与键盘脱不了关系的,因为键盘是机械按钮,所以在触点闭合及释放的瞬间将出现电压抖动,所以在键扫描时应该要消除抖动,而且对于一键多功能的按钮必须要判释放,以免某个程序段多次执行,键盘功能模块电路如图4所

7、示。图4 键盘功能模块图2.1.3 数码管显示模块数码管显示器是单片机重要的输出设备,它不仅具有发光响应快,高频特性好,而且机械性能好,工作电压低,随着工艺发展,可以发出不同颜色的光。在本次设计中,采用共阳极数码管,利用三极管驱动器段控口以便LED发出较亮的光。在本次设计中采用了两个四位一体数码管,数码管的段控接在AT89S52单片机的P0口线上,从a到dp与P0.0到P0.7对应连接,位控制线接在AT89S52单片机的P2口线上,从LED0到LED7与P2.0到P2.7对应连接,数码管显示模块图如图5所示。图5 数码管显示模块图2.1.4 复位电路模块复位是单片机的初始操作,除了进入系统的正

8、常初始化之外,当由于程序运行出错或操作错误使系统处于死锁状态时,为摆脱困境,也需安装复位键以重新启动。复位操作有上电自动复位和按键手动复位两种方式。复位电路通过极性电容和1个电阻串联,电容接VCC,电阻接地完成了上电复位,在电容两端并联一个电阻就可以实现按键电平复位,复位电路图如图6所示。图6 复位电路模块图2.2 原理图、PCB图、元器件布局图2.2.1 数字电子钟原理图数字电子原理图如附录A所示。 2.2.2 数字电子钟PCB图数字电子钟PCB图如附录B所示。2.2.3 数字电子钟元器件布局图数字电子器元器件布局图如附录C所示。2.3 元器件清单元器件清单如表1所示 表1 元器件清单序号名

9、称数量(/个)1AT89S52加底座1212MHz晶振1333pF电容2422F极性电容15LED二极管96小按键97单排插18蜂鸣器19470电阻24104位一体共阳数码管加底座21110K排阻2121K电阻313PNP9012三极管914200电阻115下载口1166脚开关13 软件系统的设计3.1 单片机资源使用说明设计课题使用单片机资源的情况如下:P0口输出数码管段选信号,P2口输出数码管位选信号;晶振12M;调整选择键SET_KEY:P1.0;通过选择键选择调整位,选中位闪烁;增加键ADD_KEY:P1.1;按一次使选中位加1;减少键DEC_KEY:P1.2;按一次使选中位减1;P3

10、.1为蜂鸣器发声报时;50H-5FH;16个寄存器单元作为显示单元; 50H 用于控制秒基准时钟源的产生;51H 清零秒寄存器;52H 清零分寄存器;53H 清零时寄存器;5FH 用于秒个位;5EH 用于秒十位;5DH 用于分个位;5CH 用于分十位;5BH 用于时个位;5AH 用于时十位;54H 用于控制调时闪烁;堆栈栈底:70H。3.2 软件系统各模块功能介绍 主程序模块:程序的初始化及复位后显示P.,此时进入功能选择状态,按下K0选择电子钟并同时启动电子钟。 电子钟程序模块:当电子钟选择键按下时,先给缓冲区内清零,在通过查表给缓冲区一次送00-00-00并实现让00-00-00从左向右显

11、示,一旦显示完则开启定时器开始计时,如果没有键按下则不断计时一直从00-00-00到23-59-59,然后重新从00-00-00开始。这里采用定时器中断完成计时功能。如果有键按下则启动2s定时,累计2s内K0按下的次数,按下1次则进入调秒状态,按下2次则进入调分状态,按下3次则进入调时,按下多次则无效,进入调整状态时,调整的改两位闪动显示并且蜂鸣器鸣叫以示提醒,次数按下K0键作为确认,按下K1就加1,按下K2就减1。主要子程序模块:为了方便软件程序编写,编写了许多子程序,有键扫描程序,用来判是否有键按下;有显示子程序,用于数码管的显示;有加1、减1子程序,用于对电子钟显时分秒的调整;还有延时程

12、序,用于数码管动态显示、键盘扫描去抖动、延时。3.3 软件系统程序流程框图系统软件采用汇编语言按模块化方式进行设计,然后通过Keil软件开发平台将程序转变成十六进制程序语言,接着使用Proteous 进行仿真,读出显示数据。 主程序流程框图如图7所示;加1子程序如图8所示; 中断服务程序程序如图9所示; 键盘扫描子程序框图如图10所示; 显示子程序框图如图11所示;图7 主程序流程框图图8 加1子程序流程框图图9 中断子程序图10 键盘扫描子程序 图11 显示子程序3.4 软件系统的程序软件系统的程序清单如附录E所示。4 设计总结4.1 使用说明本设计主要单片机最小系统完成,AT89S52为整

13、个设计的核心主要实现功能数字电子钟,系统上电显示P.。电子钟:按下K0选择电子钟,数码管上00-00-00从左向右依次滚动显示直到LED7-LED1完全显示完00-00-00,开始计时,若计时时按下K0时钟暂停,按下其余键无效,暂停2s,若2s内K0键按下0次(按下其余键无效),继续开始计时;若2s内K0按下1次进入秒调整状态,若2s内K0按下2次进入分调整状态;若2s内K0按下3次进入时调整状态,按下次数多于3次则无效。进入调整状态时,要调整的该位闪动,蜂鸣器鸣响以示提醒,此时按下K1则加1,按下K2则减1,按下K0则确认进入计时状态。4.2 设计结论在本次设计中,我觉得重点和难点在于如何对

14、电子钟的调整,对电子钟的调整有多种方案,既要实现调整功能又要实现调整方便等,于是在设计了个加1键基础上,又设计了一个减1键,这样大大缩短了对长时间调整的次数。在这次设计中,精妙之处是利用定时器中断来对时钟计时和采用的一键多功能,还有增加了个虚拟键。利用定时器中断,一旦定时器中断请求已产生立即跳往中断服务程序,只要给定时器初值初始化恰当,计时产生的误差可以忽略。在电子钟设计时K0键有多种功能,首先作为电子钟的选择键,有暂停,调秒、调分、调时选择键,还有作为确认键。当在计时时按下K0,就启动2s定时,2s到了就会跳开,相当于个确认键一样。当然在本次设计中也有不足之处,比如说电子钟调整时有一定的局限

15、性,虽然实现了随意选择时、分、秒进行调整,但是一旦进入调整状态,就只能对该选择的位进行调整,不能切换到其他位。比如选择调时就不能在调整状态切换到调分或调秒。4.3 仿真结果在Proteus ISIS的Debug菜单中选择Execute,运行程序,系统仿真结果如图12与图13所示。实现功能:可调整运行的电子钟具有三种工作状态:“P.”状态、运行状态、调整状态。 “P.”状态,依靠上电或按复位键进入,在此状态下,按S2、S3键均无效,S1键有效,进入运行状态; 运行状态,在此状态下,按S2、S3键均无效,只有按S1键有效,按下S1键后,退出运行状态,进入调整状态; 调整状态,按S1键进入时、分、秒

16、的闪烁,在此状态下,按S2(+1键)、S3(-1键)键均有效;调整结束后必须按S1键,即可退出调整状态,进入运行状态。在调整状态时长按S2、S3时可以连加及连减。时间显示格式为:时-分-秒; 图12 “P.”运行状态仿真图13 时钟运行状态仿真4.4 误差分析该电子钟在运行中存在一定的误差,误差产生有三种可能,首先是采用的计时方案是软件计时的,计时优势利用中断来实现。而当电子钟运行时间1秒时,又得去执行中断程序,这个过程是需要时间的,所以就产生了一定的误差,当然这个误差是避免不了的,其次还有硬件系统也有一定的影响。第三,设计用到12MHz的晶振,计算是满20次为一秒钟,但实际会慢很多。4.5

17、心得体会经过一个学期由凌老师教导的单片机的学习,我掌握了很多单片机学习的宝贵经验,尤其在编程的思路上面。编程思路是整个程序的灵魂,没有编程思路,程序就不会编出来,就失去了编程的意义。在开始编程之前,想好编程的思路,编程能力才会提高,编程的过程才会顺畅,程序的质量才会提高。4.6 教学建议经过一个学期的单片机学习,我给老师一点建议是能够对我们再严格一点,虽然说自主学习很重要,但是人都是有惰性的,你不逼他,他就不会去做,所以说按照目前这种状况的话,自主学习这个办法只能是针对于少数人,我觉得还是要要求严格一点,这样可以照顾大多数人,这就是我给老师的建议。 结束语在本次课程设计中,我感觉我学到了好多,

18、最主要是自己在设计中遇到多种困难,自己通过发现问题、分析问题、解决问题,锻炼了自己的解决问题的能力,更重要是一种面对困难的态度,面对老师提出的要求,我没有退缩,而且做的很好。在软件设计中,从一开始只能显示P.到可以计时,再到可以调整,每一个功能的实现都给了自己莫大的鼓励,感受到了成功的喜悦,一份耕耘一份收获。但是通过相比较我也意识到自己的不足,考虑问题还不够完善。致 谢做了两周的课程设计,有很多的心得体会,有关于单片机的,也有关于模电数电等基础科目的。因为单片机才刚入门,刚拿到题目,不知道从哪入手,后来通过对书本的学习,加深了对单片机的理解。有些知识会迁移和联系模电数电。课堂教学考虑到大多数同

19、学的需求,主要强调“基本”基本知识、基本理论、基本方法、基本技能。而这次设计正是为我们提供了一个深入学习、探索的机会,成为课堂教学的有益补充。单片机理论的学习是为课程的设计作准备的,但有时学习的理论也解决不了实践中的问题。实践中获得的知识能让我对单片机的知识有更好的认识和理解。虽然这次的课程设计我参考了一些文献资料,没有做到创新,但在对程序的读写过程中我明白了许多。这次课程设计的最大收获是只有把理论用到实践中我们才能真正掌握好所学知识。参考文献1马忠梅,籍顺心,张凯,马岩.单片机的C语言应用程序设计M.北京:北京航空航天大学出版社,2006 Ma Zhongmei,J, Zhang Kai,

20、MaYan. MCU C language program design M .beijing: Beijing aerospace university press, 20062李广弟,朱月秀,冷祖祁.单片机基础M.北京:北京航空航天大学出版社,2007 Li Guangdi, ZhuYuexiu, Leng Zuqi. Microcontroller M .beijing: Beijing university of aeronautics and press, 2007 3李光飞.单片机课程设计实例指导M.北京:北京航空航天大学出版社,2004.9 Li Guangfei. This c

21、ourse design example guide M .beijing: Beijing university of aeronautics and press, 2004.9 附录A 数字电子钟原理图附录B 数字电子钟PCB图附录C 数字电子钟元器件布局图附录D 数字电子钟实物图附录E 程序清单;本电子钟实现24小时制,8位数码管显示时分秒,可整点报时;显示格式:00-00-00(设置小时十位为0时,不显示);通过3只按键来调整时间;调整选择键SET_KEY:P1.0;通过选择键选择调整位,选中位闪烁;增加键ADD_KEY:P1.1;按一次使选中位加1;减少键DEC_KEY:P1.2;按

22、一次使选中位减1;如果长按ADD_KEY或DEC_KEY,可进行调时、调分快进快减,并停止闪烁;如果选中位是秒,则按增加键或减少键可实现,但无调时快进和快减功能;P0口输出数码管段选信号,P2口输出数码管位选信号;晶振12MHz;50H 用于控制秒基准时钟源的产生;51H 清零秒寄存器;52H 清零分寄存器;53H 清零时寄存器;5FH 用于秒个位;;5EH 用于秒十位;5DH 用于分个位;;5CH 用于分十位;5BH 用于时个位;;5AH 用于时十位;54H 用于控制调时闪烁;程序入口ORG 0000H ;程序入口地址 LJMP START ;长跳转到显P.程序ORG 000BH ;定时器0

23、中断入口地址 LJMP TIMET0 ;跳转到定时器0中断程序ORG 1000H ;显示P.程序起始地址;显示P.程序START:MOV R6, #2 ;闪烁次数 MOV A, #0FEH ;位选TT: MOV P2, A ;(P2)=(A)=0FEHMOV P0, #0CH ;段码P.MOV P2, #0FFH ;(P2)=0FFHDJNZ R6, TT ;判断是否循环完成JB P1.0, TT ;键是否按下,没按下则转移LCALL DELAY ;延时去抖JNB P1.0, KAI ;再次判断键是否按下KAI:SETB P1.0 ;置位P1.0CLR A ;状态恢复MOV P0, #0FFH

24、 ;把P1口置一LCALL DELAY1 ;调延时SETB 48H ;用于调时闪烁标志SETB 47H ;用于产生脉冲用于调时快进的脉冲MOV R1, #0 ;键功能标志:0计时、1调时、2调 分、3调秒;清16位寄存器及初始化 MOV R0, #50H ;初始化MOV R6, #10HCLEARJCQ:MOV R0, #00H ;清寄存器INC R0 ;间址突破口指向下一地址单元DJNZ R6, CLEARJCQ ;清零00H之后的16个内存单元MOV IP, #02H ;定时器0置高优先级SETB EA ;开总中断允许SETB ET0 ;开定时器0中断MOV TMOD, #01H ;设定定

25、时器0工作方式1MOV TH0, #3CH ;赋定时初值TH0MOV TL0, #0B0H ;赋定时初值TL0,定时50msSETB TR0 ;启动定时器0MOV SP, #70H ;堆栈;主程序MAIN:LCALL DISPLAY ;调显示子程序LCALL KEY_SCAN ;调键扫描子程序JZ MAIN ;无键按下则跳到主程序LCALL SET_KEY ;键处理子程序JB 46H, MAIN ;如果已进行调时快进,则不再执行下面的调整LCALL ADD_KEY ;调用增加键处理子程序,加一LCALL DEC_KEY ;调用减少键处理子程序,减一LJMP MAIN ;重新循环;显示处理程序D

26、ISPLAY:MOV A, 51H ;读秒值ANL A, #0FH ;屏蔽高4位MOV 5FH, A ;转换出秒个位,存入5FHMOV A, 51H ;读秒值ANL A, #0F0H ;屏蔽低4位SWAP A ;A高低半字节交换MOV 5EH, A ;转换出秒十位,存入5EHJB 46H, MIN ;如果调时快进,则跳过闪烁处理程序CJNE R1, #3,MIN ;如果R1为3,闪烁秒位待调整JB 48H, MIN ;跳转至分处理程序段MOV 5FH, #0AH ;使该位为10,查表得使该位不显示MOV 5EH, #0AH ;使该位为10,查表得使该位不显示MIN:MOV A, 52H ;读分

27、值ANL A, #0FH ;屏蔽高4位MOV 5DH, A ;转换出分个位,存入5DHMOV A, 52H ;读分值ANL A, #0F0H ;屏蔽低4位SWAP A ;累加器高低位交换MOV 5CH, A ;转换出分十位,存入5CHJB 46H, HOUR ;如果调时快进,跳过闪烁处理程序CJNE R1, #2,HOUR ;如果R1为2,闪烁分位待调整JB 48H, HOUR ;跳转至时处理程序段MOV 5DH, #0AH ;分个位MOV 5CH, #0AH ;分十位HOUR:MOV A, 53H ;读时值ANL A, #0FH ;屏蔽高4位MOV 5BH, A ;转换出时个位,存入5BHM

28、OV A, 53H ;读时值ANL A, #0F0H ;屏蔽低4位SWAP A ;累加器高低位交换MOV 5AH, A ;转换出时十位,存入5AHJB 46H, DISP ;跳过闪烁处理程序CJNE R1, #1,DISP ;如果R1为1,闪烁时位待调整JB 48H, DISP ;跳转至显示程序MOV 5BH, #0AH ;使该位为10,查表得使该位不显示MOV 5AH, #0AH;数码管动态扫描显示DISP:MOV DPTR, #TABLE ;送常数表首地址MOV A, 5FH ;秒个位MOVC A, A+DPTR ;取常数MOV P0, A ;常数送P0口CLR P2.0 ;复位P2.0L

29、CALL DELAY ;调延时SETB P2.0 ;显示秒个位MOV A, 5EH ;秒十位MOVC A, A+DPTR ;取常数MOV P0, A ;常数送P0口CLR P2.1 ;复位P2.0LCALL DELAY ;调延时SETB P2.1 ;显示秒十位MOV A, #0BFH ;“-”段码送累加器MOV P0, A ;“-”段码送P0口CLR P2.5 ;复位P2.0LCALL DELAY ;调延时SETB P2.5 ;显示“-”MOV A, 5DH ;分个位MOVC A, A+DPTR ;取分个位段码MOV P0, A ;分个位段码送P0CLR P2.3 ;复位P2.0LCALL DELAY ;调延时SETB P2.3 ;显示分个位MOV A, 5CH ;分十位送累加器MOVC A, A+DPTR ;取分十位段码MOV P0, A ;分十位段码送P0口CLR P2.4 ;复位P2.0LCALL DELAY ;调延时SETB P2.4 ;显示分十位MOV A, #0BFH ;“-”段码送累加器MOV P0, A ;“-”段码送P0口CLR P2.2 ;复位P2.0LCALL DELAY ;调延时SETB P2.2 ;显示“-”MOV A, 5BH ;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1