做基于单片机控制的时钟控制器.doc_第1页
做基于单片机控制的时钟控制器.doc_第2页
做基于单片机控制的时钟控制器.doc_第3页
做基于单片机控制的时钟控制器.doc_第4页
做基于单片机控制的时钟控制器.doc_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

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

文档简介

目 录1 引言12总体设计方案1 2.1 设计思路1 2.1.1 方案论证1 2.2 总体设计框图13单元电路设计2 3.1AT89C51简介2 3.2串行显示电路3 3.3整点报时电路3 3.4校时电路4 3.5复位电路及晶振电路 44 程序流程设计55 总结与体会6参考文献6附录1总体电路图7附录2源程序8基于单片机控制的时钟控制器摘要:本设计是基于单片机控制的时钟控制器,通过向单片机输入程序实现24小时制时钟的基本显示和连续的调时,调分和调秒的功能,同时又扩展了整点报时功能。该电路硬件较为简单、计时精度高、可控性好,可以随时调整和设定时间,并且调时间的误差小,操作简单、通用性强。关键词:单片机 定时器 时钟控制器 共阳数码管 74LS1641引言随着科技的发展,电子技术得到了飞速的发展,尤其是近些年来单片机的应用更为普遍。嵌入式系统与单片机已深入到国民经济众多技术领域,从军事、工业到家庭日常生活,单片机因其体积小、功能强、价格低廉而得到广泛应用。在此基础上,越来越多各式各样的时钟也逐渐走进我们的生活,它们设计精巧、方便、耐用、美观,深得各层领域的厚爱随着科技的进步,而单片机控制的数字时钟的出现则打破了人们对时钟的传统概念,因为数字时钟不仅可以通过数字直观地显示出时间,还可以定时发出各种声、光、电信号,以启动各种设备实现实时控制、时间顺序控制。该设计既有一般时钟的基本显示和调整功能,同时又增加了整点报时功能。所使用的单片机,低功耗,具有实时时钟功能。2总体设计方案2.1 设计思路2.1.1方案论证采用AT89S51为核心的时钟控制电路其设计思路有多种,其输出可以采用动态显示和静态显示两种方式,采用动态方式的电路比较复杂,采用静态方式输出可采用单片机串行口输出,电路相对较简单。该电路应该具有任意时间可调的功能,所以外围采用开关按键来实现。在软件设计方面,应完成时钟控制电路的各项要求整个系统工作时,秒信号产生器是整个系统的时基信号,它直接决定计时系统的精度,将标准秒信号送入“秒计数器”,“秒计数器”采用60进制计数器,每累计60秒发出一个“分脉冲”信号,该信号将作为“分计数器”的时钟脉冲。“分计数器”也采用60进制计数器,每累计60分钟,发出一个“时脉冲”信号,该信号将被送到“时计数器”。“时计数器”采用24进制计时器,可实现对一天24小时的累计。显示电路将“时”、“分”、“秒”计数器的输出,通过六个七段LED显示器显示出来。校时电路是直接加一个脉冲信号到时计数器或者分计数器或者秒计数器来对“时”、“分”、“秒”显示数字进行校对调整。2.2 总体设计框图。本时钟控制电路由五部分:调试电路、复位电路、晶振电路、整点报时电路和显示电路组成。如图1所示。单 片 机复位电路显示电路整点报时电路晶振电路按键电路图1 基于单片机的时钟控制器总体设计框图3 单元电路设计用89S51单片机控制的数字时钟电路,外接时钟电路,按键电路,显示电路,整点报时电路等:用单片机电路P3口来控制时钟电路的显示,按键用P0口控制,分别用于调节时.分.秒。在软件设计方面,应完成时钟控制电路的各项要求整个系统工作时,秒信号产生器是整个系统的时基信号,它直接决定计时系统的精度,将标准秒信号送入“秒计数器”,“秒计数器”采用60进制计数器,每累计60秒发出一个“分脉冲”信号,该信号将作为“分计数器”的时钟脉冲。“分计数器”也采用60进制计数器,每累计60分钟,发出一个“时脉冲”信号,该信号将被送到“时计数器”。“时计数器”采用24进制计时器,可实现对一天24小时的累计。显示电路将“时”、“分”、“秒”计数器的输出,通过六个七段LED显示器显示出来。校时电路是直接加一个脉冲信号到时计数器或者分计数器或者秒计数器来对“时”、“分”、“秒”显示数字进行校对调整。3.1单片机的最小系统 89S51组成的单片机的最小系统,包括时钟震荡电路,复位电路等。正5V电源直接接到89S51的40脚(VCC)20脚(GND)。时钟震荡电路:89S51的18脚(XTAL1)和19脚(XTAL2)外接12MHZ的晶振和二个30PF的电容,震荡频率就是晶体的固有频率,复位电路采用上电自动复位跟手动复位相结合接到89S51的9端(RST),原理图如下:图2 单片机最小系统3.2显示电路显示电路采用静态数码显示技术,用74LS164作为数码管的驱动芯片,74HC164是串行输入并行输出的移位寄存器,并带有清除端,其中Q0-Q7为并行输出端,MR为清除端,当它为零电平时使74HC164清零,A、B为串行输入端,CLK为时钟脉冲输入端,在脉冲的上升沿实现移位。当CLK=0、MR=1时,74HC164保持原来的数据状态。图中外接6片74HC164作为6位LED显示器的静态连接口,74HC164的低电平输出电流为8MA,可直接驱动共阳极LED。采用软件译码向74HC164输出字型码,由于显示器是静态的主程序可不必扫描显示器。直接由单片机的串行口输出数据和时钟控制信号达到静态显示的目的如图3。 图3 6位数码管串口显示电路3.3报警电路该电路由P3.5口外接串联电阻、5.6K电阻、三极管以及蜂鸣器构成,该电路可以实现时钟电路的整点报时功能,每到一整点的时候,该电路就工作,蜂鸣器就发出声音。如图4所示。图4 整点报时电路3.4 校时电路。如图5所示。本电子钟设计有三个轻触式按键,分别命名为:模式设定键K1、加调整键K2、减调整键K3。由P0.0口外接校时转换按钮,P0.1口外接加一按钮, P0.3口接减一按钮。该电路可以实现连续的调时,调分和调秒的功能,误差可以控制在2秒以内,可以在任何时候达到准确调时,调分和调秒的功能具体实现过程是:按下复位按纽,6个数码管显示全部是零,按K1一下可以调秒,加调整键K3,减调整键K2,再次按下模式设定键K1,就可以调分,再按一次模式设定键K1,就可以调时,和调秒一样,最后调好按下模式设定键K1。R4R5K2K1K3R610k*3+5VP0.0P0.1P0.2图5校时电路3.5 复位电路及晶振电路该电路采用上电复位和按钮复位,有一个22uF的电容、一个按键、一个10K的电阻和一个220欧电阻构成。手动按K1,无论电路处于何种状态,电路都会恢复到初始状态的显示。晶振电路可以给单片机提供所需要的时钟频率。复位电路及晶振电路图6所示。 图6复位电路及晶振电路4 主程序流程图 主程序首先是初始化部分,主要是计时单元清零,中断初始化,启动定时器工作,然后是调用显示子程序,接着是判断有无按键。无按键则回到调用显示子程序处;有按键,则执行按键处理子程序,执行完后回到调用显示子程序处,重复循环。流程图7和8。为了保证系统的可靠运行,在主程序之外还增加了定时中断程序。本电子钟的记时是用单片机内部的定时计数器T0,定时50ms,即,0.05s,20次中断即为1s,60s为1min,60min为1h,24h为1天,如此循环,从而实现记时功能。T0中断 保护现场开始N到1s了吗?Y记时单元初始化,T0初始化秒单元加1到60s了吗?N启动定时器T0工作Y调用显示程序秒单元清零,分单元加1N调按键判断子程序到60分了吗?NN有键按下?Y分单元清零,时单元加1Y到24时了吗?按键处理NY时单元清零恢复现场 中断返回图7 主程序流程图 图8中断程序流程图5总结与体会在这次的课程设计中我遇到了些问题,如:数码管一直显示00而不跳动,原因就是少了返回指令SJMP;数码管的十位、个位乱跳就是标志位设置有问题;另外在程序中用到的单元地址都要赋值0;中断程序有多个时的优先级要确定正确。在解决这些问题时也是一个再次学习的过程。 经过三个星期紧张的实习设计,我受益非浅,更加熟练的掌握了PROTEL99,EWB及EDA软件的用法,从最基本的找元件,查资料做起,更一步了解了完整的电子设计的一般步骤,在此次实习中,也使我充分看到了自己的专业知识的浅薄,在查阅资料的时候,很多的东西是以前闻所未闻的,充分的暴露了自己的专业知识的狭窄和其它文化科知识的欠缺。通过本次的实习设计我更清楚的认识到单片机是一门很有用的课程,通过这次实习我对这门课程有了更深的了解,懂得了学习什么都不容易,感到了学习的快乐和压力,我在以后的学习中我会更加的努力去学习和研究,以取得更好的成绩。当然,设计的完成离不开老师认真负责的指导,最后衷心感谢三位老师在本次课程设计中的辛勤工作。实习让我把学过的知识和实际的应用有机的结合在了一起。更使自己明确了以后努力的目标。参考文献1 李朝青.单片机原理及接口技术M.北京:北京航空航天大学出版社,19992 肖玲妮,袁增贵.PROTEL99SE印刷电路板设计教程M.北京:清华大学出版社,20033 曹巧援.单片机原理及应用M.北京:电子工业出版社,19974 汪道辉.单片机系统设计与实践M.北京:电子工业出版社,2006.5059附录 1 基于单片机时钟控制器的原理图附录二 基于单片机设计的时钟控制器的实现程序 ORG 0000H LJMP MAIN ORG 000BH LJMP TOINT;*主程序* ORG 58HMAIN:MOV IE,#82H ;开T0,T1中断 MOV TMOD,#01H ;定时器方式1 MOV TH0,#0D8H MOV TL0,#0F0H ;初值 MOV A,#0 MOV 59H,A MOV 60H,A MOV 61H,A MOV 62H,A MOV 63H,A MOV 64H,A MOV 65H,A m_sec EQU 20H ;毫秒单元 sec EQU 21H ;秒单元 min EQU 22H ;分单元 hour EQU 23H ;时单元 SETB TR0 CLR A MOV R0,A MOV R1,A MOV R2,A MOV R3,A MOV R5,A MOV R6,A MOV R7,A MOV m_sec ,#00 ;毫秒单元清零 MOV sec ,#00 ;秒单元清零 MOV min ,#00 ;分单元清零 MOV hour ,#00 ;时单元清零 MOV 70H,A MOV 71H,A MOV 72H,A MOV 73H,A MOV 74H,A LCALL XS ;调用显示程序;*数字钟按键程序*;*调时钟按键*NET1:JB P1.0,NET2 LCALL YS10MS JB P1.0,NET2 SETB p2.0 JNB P1.0,$ CLR P2.0 SETB TR0 ;开中断 MOV 59H,#00 MOV R7,#00;*调整时间部分切换键*NET2:MOV A ,59H CJNE A ,#00H ,NET3 JB P1.1 ,NET1 ;数字钟调整时间部分切换键 LCALL YS10ms JB P1.1 ,NET1 SETB P2.0 JNB P1.1 ,$ CLR P2.0 INC 59H INC R7 CLR TR0 SJMP NET4NET3: JB P1.1 ,NET4 LCALL YS10ms JB P1.1 ,NET4 SETB P2.0 JNB P1.1 ,$ CLR P2.0INC 59HINC R7NET4: CJNE R7 ,#1 ,NET5 LCALL SSH ;秒闪烁 SJMP NET9NET5: CJNE R7 ,#2 ,NET6 LCALL MSH ;分闪烁 SJMP NET9NET6: MOV R7 ,#0 LCALL HSH ;时闪烁 SJMP NET9NET8: LCALL XS NET111: LJMP NET1 ;*调整时间加1键*NET9: JB P1.2 ,NET115 ;数字钟调整时间键 LCALL YS10ms JB P1.2 ,NET115 SETB P2.0 JNB P1.2 ,$ CJNE R7 ,#1 ,NET10 CLR P2.0 INC sec ;秒单元加1 MOV A ,sec CJNE A ,#60 ,NET8 ;不等60时跳转显示,等60时将秒单元清零 MOV sec ,#00 LCALL XS LJMP NET9 NET115: LJMP NET15NET10: CJNE R7 ,#2 ,NET11 CLR P2. INC min ;分单元加1 MOV A ,min CJNE A ,#60 ,NET8 ;不等60时跳转显示,等60时将分单元清零 MOV min ,#00 LCALL XS LJMP NET9NET11: CLR P2.0 INC hour ;时单元加1 MOV A ,hour CJNE A ,#24 ,NET8 ;不等24时跳转显示,等24时将时单元清零 MOV hour ,#00 LCALL XS LJMP NET9 NET13: SJMP NET15 NET14: LCALL XS;*调整时间减1键*NET15: JB P1.3 ,NET19 ;数字钟调整时间键 LCALL YS10ms JB P1.3 ,NET19 SETB P2.0 JNB P1.3 ,$ CJNE R7 ,#1 ,NET16 CLR P2.0 DEC sec ;秒单元减1 MOV A ,sec CJNE A ,#0FFH ,NET14 ;不等60时跳转显示,等60时将秒单元清零 MOV sec ,#59 LCALL NET14 LJMP NET15NET16: CJNE R7 ,#2 ,NET17 CLR P2.0 DEC min ;分单元减1 MOV A ,min CJNE A ,#0FFH ,NET14 ;不等60时跳转显示,等60时将分单元清零 MOV min ,#59 LCALL NET14 LJMP NET15NET17: CLR P2.0 DEC hour ;时单元减1 MOV A ,hour CJNE A ,#0FFH ,NET14 ;不等24时跳转显示,等24时将时单元清零 MOV hour ,#23 LCALL NET14 LJMP NET1NET19: LJMP NET1;*时钟中断程序*TOINT: PUSH PSW PUSH ACC ;保护现场 MOV TH0 ,#0D8H MOV TL0 ,#0F0H ;重新赋计数初值 INC m_sec ;毫秒单元加1 MOV A ,m_sec CJNE A ,#100 ,NEXT1 MOV m_sec ,#00 INC sec ;秒单元加1 MOV A ,sec CJNE A ,#60 ,NEXT1 MOV sec ,#00 INC min ; ; MOV A ,min MOV A ,min CJNE A ,#60 ,NEXT1 MOV min ,#00 INC hour ; MOV A ,hour CJNE A ,#24 ,NEXT1 MOV hour ,#00 NEXT1: LCALL XS POP ACC POP PSW ;恢复现场 RETI ;中断返回;*数字钟显示程序*XS: MOV A ,sec ;将秒送A MOV B ,#10 DIV AB MOV 60H ,B ;秒的个位 MOV 61H ,A ;秒的十位 MOV A ,min ;将分送A MOV B ,#10 DIV AB MOV 62H ,B ;分的个位 MOV 63H ,A ;分的十位 MOV A ,hour ;将时送A MOV B ,#10 DIV AB MOV 64H ,B ;时的个位 MOV 65H ,A ;时的十位LCP: MOV

温馨提示

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

评论

0/150

提交评论