单片机简易电子时钟方案.docx
- 文档编号:3429243
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:15
- 大小:74.19KB
单片机简易电子时钟方案.docx
《单片机简易电子时钟方案.docx》由会员分享,可在线阅读,更多相关《单片机简易电子时钟方案.docx(15页珍藏版)》请在冰豆网上搜索。
单片机简易电子时钟方案
基于单片机的简易电子时钟设计
1设计任务与要求
1.1设计背景
数字钟已成为人们日常生活中必不可少的必需品,广泛用于个人家庭以及办公室等公共场所,给人们的生活、学习、工作、娱乐带来极大的方便。
因为数字集成电路技术的发展和采用了先进的石英技术,使数字钟具有走时准确、性能稳定、携带方便等优点,它还用于计时、自动报时及自动控制等各个领域。
尽管目前市场上已有现成的数字钟集成电路芯片出售,价格便宜、使用也方便,但鉴于单片机的定时器功能也可以完成数字钟电路的设计,因此进行数字钟的设计是必要的。
在这里我们将已学过的比较零散的数字电路的知识有机的、系统的联系起来用于实际,来培养我们的综合分析和设计电路,写程序、调试电路的能力。
单片机具有体积小、功能强可靠性高、价格低廉等一系列优点,不仅已成为工业测控领域普遍采用的智能化控制工具,而且已渗入到人们工作和和生活的各个角落,有力地推动了各行业的技术改造和产品的更新换代,应用前景广阔。
1.2 课程设计目的
(1>巩固、加深和扩大单片机应用的知识面,提高综合及灵活运用所学知识解决工业控制的能力;
(2>培养针对课题需要,选择和查阅有关手册、图表及文献资料的自学能力,提高组成系统、编程、调试的动手能力;
(3>过对课题设计方案的分析、选择、比较、熟悉单片机用系统开发、研制的过程,软硬件设计的方法、内容及步骤。
1.3设计要求
1).时制式为24小时制。
2).采用LED数码管显示时、分,秒采用数字显示。
3).具有方便的时间调校功能。
4).计时稳定度高,可精确校正计时精度。
2总体方案设计
2.1实现时钟计时的基本方法
利用MCS-51系列单片机的可编程定时/计数器、中断系统来实现时钟计数。
(1>计数初值计算:
把定时器设为工作方式1,定时时间为50ms,则计数溢出20次即得时钟计时最小单位秒,而100次计数可用软件方法实现。
假设使用T/C0,方式1,50ms定时,fosc=12MHz。
则初值X满足<216-X)×1/12MHz×12μs=50000μs
X=15536→10000→3CB0H
(2>采用中断方式进行溢出次数累计,计满20次为秒计时<1秒);
(3>从秒到分和从分到时的计时是通过累加和数值比较实现。
2.2电子钟的时间显示
电子钟的时钟时间在六位数码管上进行显示,因此,在内部RAM中设置显示缓冲区共8个单元。
LED8 LED7 LED6 LED5 LED4 LED3 LED2 LED1
37H 36H 35H 34H 33H 32H 31H 30H
时十位 时个位 分隔 分十位 分个位 分隔 秒十位 秒个位
2.3电子钟的时间调整
电子钟设置3个按键通过程序控制来完成电子钟的时间调整。
A键调整时;
B键调整分;
C键复位
2.4总体方案介绍
2.4.1计时方案
利用AT89S51单片机内部的定时/计数器进行中断时,配合软件延时实现时、分、秒的计时。
该方案节省硬件成本,且能使读者在定时/计数器的使用、中断及程序设计方面得到锻炼与提高,对单片机的指令系统能有更深入的了解,从而对学好单片机技术这门课程起到一定的作用。
2.4.2控制方案
AT89S51的P0口和P2口外接由八个LED数码管(LED8~LED1>构成的显示器,用P0口作LED的段码输出口,P2口作八个LED数码管的位控输出线,P1口外接四个按键A、B、C构成键盘电路。
AT89S51是一种低功耗,高性能的CMOS8位微型计算机。
它带有8KFlash可编程和擦除的只读存储器 简易电子钟的功能不复杂,采用其现有的I/O便可完成,所以本设计中采用此的设计方案。 3系统硬件电路设计 根据以上的电子时钟的设计要求可以分为以下的几个硬件电路模块: 单片机模块、数码显示模块与按键模块,模块之间的关系图如下面得方框电路图1所示。 图1硬件电路方框图 3.1单片机模块设计 3.1.1芯片分析 AT89C51单片机引脚图如下: 图2AT89C51引脚图 MCS-51单片机是标准的40引脚双列直插式集成电路芯片,其各引脚功能如下: VCC: +5V电源。 VSS: 接地。 RST: 复位信号。 当输入的复位信号延续两个机器周期以上的高电平时即为有效,用完成单片机的复位初始化操作。 XTAL1和XTAL2: 外接晶体引线端。 当使用芯片内部时钟时,此二引线端用于外接石英晶体和微调电容;当使用外部时钟时,用于接外部时钟脉冲信号。 P0口: P0口为一个8位漏极开路双向I/O口,当作输出口使用时,必须接上拉电阻才能有高电平输出;当作输入口使用时,必须先向电路中的锁存器写入“1”,使FET截止,以避免锁存器为“0”状态时对引脚读入的干扰。 P1口: P1口是一个内部提供上拉电阻的8位双向I/O口,它不再需要多路转接电路MUX;因此它作为输出口使用时,无需再外接上拉电阻,当作为输入口使用时,同样也需先向其锁存器写“1”,使输出驱动电路的FET截止。 P2口: P2口电路比P1口电路多了一个多路转接电路MUX,这又正好与P0口一样。 P2口可以作为通用的I/O口使用,这时多路转接电路开关倒向锁丰存器Q端。 P3口: P3口特点在于,为适应引脚信号第二功能的需要,增加了第二功能控制逻辑。 当作为I/O口使用时,第二功能信号引线应保持高电平,与非门开通,以维持从锁存器到输出端数据输出通路的畅通。 当输出第二功能信号时,该位应应置“1”,使与非门对第二功能信号的输出是畅通的,从而实现第二功能信号的输出,具体第二功能如表1所示。 3.1.2晶振电路 右图所示为时钟电路原理图,在AT89S51芯片内部有一个高增益反相放大器,其输入端为芯片引脚XTAL1,输出端为引脚XTAL2。 而在芯片内部,XTAL1和XTAL2之间跨接晶体振荡器和微调电容,从而构成一个稳定的自激振荡器。 时钟电路产生的振荡脉冲经过触发器进行二分频之后,才成为单片机的时钟脉冲信号。 图3晶振电路 3.1.3复位电路 单片机复位的条件是: 必须使RST/VPD或RST引<9)加上持续两个机器周期<即24个振荡周期)的高电平。 例如,若时钟频率为12MHz,每机器周期为1μs,则只需2μs以上时间的高电平,在RST引脚出现高电平后的第二个机器周期执行复位。 单片机常见的复位如图所示。 电路为上电复位电路,它是利用电容充电来实现的。 在接电瞬间,RESET端的电位与VCC相同,随着充电电流的减少,RESET的电位逐渐下降。 只要保证RESET为高电平的时间大于两个机器周期,便能正常复位。 该电路除具有上电复位功能外,若要复位,只需按图中的RESET键,此时电源VCC经电阻R1、R2分压,在RESET端产生一个复位高电平。 图4 单片机复位电路 3.2数码显示模块设计 系统采用动态显示方式,用P0口来控制LED数码管的段控线,而用P2口来控制其位控线。 动态显示通常都是采用动态扫描的方法进行显示,即循环点亮每一个数码管,这样虽然在任何时刻都只有一位数码管被点亮,但因为人眼存在视觉残留效应,只要每位数码管间隔时间足够短,就可以给人以同时显示的感觉。 图5数码显示电路 3.3按键模块 下图为按键模块电路原理图,A为复位键,B为时钟调控键,C为分钟调控键。 图6按键模块电路原理图 4、系统软件设计 4.1软件设计分析 在编程上,首先进行了初始化,定义程序的的入口地址以及中断的入口地址,在主程序开始定义了一组固定单元用来储存计数的时.分.秒,在显示初值之后,进入主循环。 在主程序中,对不同的按键进行扫描,实现秒表,时间调整,复位清零等功能,系统总流程图如下图7: 图7系统总体流程图 4.2源程序清单 ORG0000H MOV30H,#1设置时钟的起始时间12.00.00,分配显示数据内存 MOV31H,#2 MOV32H,#0 MOV33H,#0 MOV34H,#0 MOV35H,#0 MOVTMOD,#01启动计数器 XS0: SETBTR0使TRO位置1 MOVTH0,#00H计数器置零 MOVTL0,#00H XS: MOV40H,#0FEH扫描控制字初值 MOVDPTR,#TAB取段码表地址 MOVP2,40H从P2口输出 MOVA,30H取显示数据到A MOVCA,@A+DPTR查显示数据对应段码 MOVP0,A段码放入P0中 LCALLYS1MS显示1MS MOVP0,#0FFHPO端口清零 MOVA,40H取扫描控制字放入A中 RLAA中数据循环左移 MOV40H,A放回40H地址段内 MOVP2,40H MOVA,31H ADDA,#10进位显示 MOVCA,@A+DPTR MOVP0,A LCALLYS1MS MOVP0,#0FFH MOVA,40H RLA MOV40H,A MOVP2,40H MOVA,32H MOVCA,@A+DPTR MOVP0,A LCALLYS1MS MOVP0,#0FFH MOVA,40H RLA MOV40H,A MOVP2,40H MOVA,33H ADDA,#10 MOVCA,@A+DPTR MOVP0,A LCALLYS1MS MOVP0,#0FFH MOVA,40H RLA MOV40H,A MOVP2,40H MOVA,34H MOVCA,@A+DPTR MOVP0,A LCALLYS1MS MOVP0,#0FFH MOVA,40H RLA MOV40H,A MOVP2,40H MOVA,35H MOVCA,@A+DPTR MOVP0,A LCALLYS1MS MOVP0,#0FFH MOVA,40H RLA MOV40H,A JBTF0,JIA如果TF0为1时,则执行JIA,否则顺序执行 JNBP1.0,P100为0则转移到P100 JNBP1.1,P1000为0则转移到P1000 JNBP1.2,P10000为0则转移到P10000 AJMPXS跳转到XS P100: MOV30H,#0清零程序 MOV31H,#0 MOV32H,#0 MOV33H,#0 MOV34H,#0 MOV35H,#0 JIA: CLRTF0TF0清零 MOVA,35H秒单位数据到A CJNEA,#9,JIA1与9进行比较,大于9就转移到JIA1 MOV35H,0秒个位清零 MOVA,34H秒十位数据到A CJNEA,#5,JIA10与5进行比较,大于5就转移到JIA10 MOV34H,#0秒十位清零 P10000: JNBP1.2,P10000为0则转移到P10000 MOVA,33H取分的个位到A CJNEA,#9,JIA100与9进行比较,大于9就转移到JIA100 MOV33H,#0分的个位清零 MOVA,32H分十位数据到A CJNEA,#5,JIA1000与5进行比较,大于5就转移到JIA1000 MOV32H,#0分的十位清零 P1000: JNBP1.1,P1000为0则转移到P1000 MOVA,31H时个位数据到A CJNEA,#9,JIA10000与9进行比较,大于9就转移到JIA10000 MOV31H,#0时的个位清零 MOVA,30H时十位数据到A CJNEA,#2,JIA100000与2进行比较,大于5就转移到JIA100000 MOV30H,#0时的十位清零 AJMPXS0转移到XSO JIA100000: INC30H加1 AJMPXS0跳转到XS0 JIA10000: CJNEA,#3,JIAJIA与3进行比较,大于则转移到JIAJIA MOVA,30H将时的十位放到A CJNEA,#02,JIAJIA与2进行比较,大于则转移到JIAJIA MOV30H,#0时段清零 MOV31H,#0 AJMPXS0跳转到XSO JIAJIA: INC31H加一 AJMPXS0 JIA1000: INC32H AJMPXS0 JIA100: INC33H AJMPXS0 JIA10: INC34H AJMPXS0 JIA1: INC35H AJMPXS0 RET返回 YS1MS: MOVR6,#9H延时程序 YL1: MOVR7,#19H DJNZR7,$ DJNZR6,YL1 RET TAB: DB0C0H,0F9H,0A4H,0B0H,099H,092H,082H,0F8H,080H,090H共阳段码表 DB040H,079H,024H,030H,019H,012H,002H,078H,000H,010H END 5系统仿真与实验测试 5.1系统仿真 运用proteus软件进行仿真现在proteus软件中建立一个新的文件,再根据自己的要求选择所需的器件,把器件进行适当的排位后进行连接,连接后运行软件进行仿真。 5.2实验测试 电子时钟主要的设计要求是能够实现时钟的一般功能,以及包括时间的调整功能,这个基于单片机的电子时钟基本上实现了上述功能,能够通过时间调整电路对时间进行调整以及复位。 下述为18: 30: 30的仿真图: 图818: 30: 30时刻的仿真效果图 6心得体会 单片机作为我们主要的专业课程之一,我觉得单片机课程设计很有必要,而且很有意义。 但当拿到题目时,确实不知道怎么着手,有些迷茫,上网查资料,问老师,在老师的帮助下,历时两个星期,解决一个又一个的困难,终于完成任务。 在这次课程设计中,运用到了很多以前的专业知识,虽然过去从未独立应用过它们,但在学习的过程中带着问题去学我发现效率很高,这是我做这次课程设计的一大收获。 另外,要做好一个课程设计,就必须做到: 在设计程序之前,对所用单片机的内部结构有一个系统的了解,知道该单片机内有哪些资源;要有一个清晰的思路和一个完整的的软件流程图;在设计程序时,不能妄想一次就将整个程序设计好,反复修改、不断改进是程序设计的必经之路;要养成注释程序的好习惯,一个程序的完美与否不仅仅是实现功能,而应该让人一看就能明白你的思路,这样也为资料的保存和交流提供了方便;在设计课程过程中遇到问题是很正常德,但我们应该将每次遇到的问题记录下来,并分析清楚,以免下次再碰到同样的问题的课程设计结束了,但是从中学到的知识会让我受益终身。 发现、提出、分析、解决问题和实践能力的提高都会受益于我在以后的学习、工作和生活中。 设计过程,好比是我们人类成长的历程,常有一些不如意,但毕竟这是第一次做,难免会遇到各种各样的问题。 在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,不能灵活运用。 通过这次设计,我懂得了学习的重要性,了解到理论知识与实践相结合的重要意义,学会了坚持、耐心和努力,这将为自己今后的学习和工作做出了最好的榜样。 另外,要非常感谢我的指导老师,是她指引我克服一个由一个的困难,让我学会对困难无所畏惧,以及对问题的一些很重要的思考方法。 我学会对困难无所畏惧,以及对问题的一些很重要的思考方法。 参考文献 [1] 郑君里,应启珩,杨为理.信号与系统<第二版)上册[M].高等教育出版社,2000 [2] 郑君里,应启珩,杨为理.信号与系统<第二版)下册[M].高等教育出版社,2000 [3] 谭浩强.C程序设计<第二版)[M].清华大学出版社,2003 [4] W.RichardStevens,范建华译.TCP/IP详解卷1: 协议[M].机械工业出版社,2000 [5]AndrowS.Tanenbaum.计算机网络<第4版)[M].Pearson,2004 [6] 吴坚,刘高平.基于GPRS网络的点对点图像传输方案[J].计算机应用研究,2004,5: 222-223,231 [7]W.Simpson,Editor.ThePoint-to-PointProtocol,RFC1661[EB/OL].July1994 [8]WAVECOM.ATCommandsInterfaceGuide,Revision002[EB/OL].6thNovember2003 附录 附录1硬件电路总图 附录2元器件清单 表2 电子钟元器件清单 序号 元件名称 规格型号/参数 数量<个) 备注 1 单片机 AT89S52 1 2 显示驱动三极管 A1013 8 3 晶振 11.0592MHz 1 4 电容 30pF 2 5 电容 22μF 1 6 按键 BUTTON 3 7 排阻 RESPACK-8/10K 1 结论 过去人们应用时钟仅仅是为了明确当前时间。 随着生产力的发展,社会的进步,生产生活对时钟的需求越来越大,对时钟的体型、功能的要求也各有不同。 所以多功能电子时钟在今后的应用也会越来越广泛。 基于单片机实现电子时钟,仅仅是众多方法之一。 并且市场上的实时时钟日历芯片品类繁多,IC化的传感器各种各样,显示方式也愈趋于人性化。 所以多功能电子时钟有多种实现方案,能够实现的功能也很多,笔者已经通过仿真和调试,实现了时间日历显示和校对、闹铃等功能。 本文采用51单片机C语言进行编程,当然也可以应用汇编语言编程。 因为笔者能力有限,提供的程序还可以进一步优化,并且还可以根据需求为电子时钟增设新功能。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 简易 电子 时钟 方案
![提示](https://static.bdocx.com/images/bang_tan.gif)