基于51单片机的简易电子时钟

上传人:猪** 文档编号:139394695 上传时间:2022-08-22 格式:DOC 页数:47 大小:423.63KB
收藏 版权申诉 举报 下载
基于51单片机的简易电子时钟_第1页
第1页 / 共47页
基于51单片机的简易电子时钟_第2页
第2页 / 共47页
基于51单片机的简易电子时钟_第3页
第3页 / 共47页
资源描述:

《基于51单片机的简易电子时钟》由会员分享,可在线阅读,更多相关《基于51单片机的简易电子时钟(47页珍藏版)》请在装配图网上搜索。

1、微机原理与单片机接口技术课程设计报告基于51单片机的简易电子时钟设计摘 要今天,电子时钟是生活中不可或缺的一部分。电子时钟通过数码管显示,具有整点报时等功能,可以使得我们的生活变得更加有序。电子时钟也通过不断地改进,变得功能越来越强大。本次设计的电子时钟利用单片机STC89C51进行控制的,利用单片机自身的定时器功能,采用数码管显示,可对电子时钟进行调整校准。此设计具有相当重要的现实意义和实用价值。基于单片机STC89C51的电子时钟,采用数码管显示“时“分“秒”而且可用按键进行调整校准。此次设计与传统的机械表相比,它具有走的更精准,显示更直观等特点,而且单片机的数字时钟具有灵活编程,便于功能

2、扩充等特点。本次所设计主要有三个模块:显示模块,按键模块,闹铃模块。该时钟采用STC89C51单片机自身定时器进行计时,按键模块采用独立式键盘(4个按键),闹铃部分由8550三极管和蜂鸣器构成,显示时、分、秒用两个四位共阴极数码管显示,具有可调整时间功能和设定闹钟功能,在设计过程中硬件和软件应同时进行。关键词:电子时钟,单片机,闹钟,蜂鸣器SIMPLE ELECTRONIC CLOCK DESIGN BASED ON 51 MCUABSTRACTToday , the electronic clock is an integral part of life . Through the digi

3、tal display electronic clock , with the whole point timekeeping function , can make our life more orderly . The electronic clock also through continuous improvement , has become more and more powerful .The design of the electronic clock using STC89C51 MCU to control the use of single-chip , self tim

4、er function , the use of digital tube display , can adjust the calibration of the electronic clock . Has very important realistic significance and practical value of this design .The electronic clock based on MCU STC89C51 , using digital tube display when seconds and the button can be used to adjust

5、 the calibration . And the design of the traditional mechanical watch , it has to go more accurate , more intuitive display characteristics , and the digital clock has flexible programming , easy to function expansion and so on .This design has three main modules : the display module , keyboard modu

6、le , alarm module . The clock uses STC89C51 microcontroller timer timing , key module with separate keyboard (4 buttons), the alarm is composed of 8550 transistors and a buzzer , when the display is divided by two seconds , four common cathode digital display , which can adjust the time and set the

7、alarm function , hardware and software in the design process should be carried out at the same time .Key Words : electronic clock , microcontroller , alarm clock , a buzzerIV目 录第一章 绪论- 1 -1.1 课题背景及意义- 1 -1.2 课题内容- 1 -1.2.1 题目及要求- 1 -1.2.2 主要部分- 2 -第二章 方案- 3 -2.1 功能要求- 3 -2.3 数码管显示方案- 3 -第三章 电子时钟的硬件设

8、计- 5 -3.1 电子时钟的组成- 5 -3.2 单片机最小系统图- 5 -3.3 STC89C51引脚功能- 6 -3.4 数码管显示模块- 7 -3.5 闹铃部分- 8 -3.6 按键模块- 8 -第四章 电子时钟的软件设计- 9 -4.1 电子时钟程序流程框图- 9 -4.2 按键调整流程图- 10 -4.3 子程序的设计- 11 -4.3.1 数码管显示模块- 11 -4.3.2 按键子模块- 11 -4.3.3 主程序- 12 -第五章 硬件的制作与测试分析- 13 -5.1 电子时钟的硬件制作- 13 -5.2 硬件测试- 13 -5.3 软件调试- 13 -5.4 测试结果分析

9、与结论- 14 -5.4.1 数码管测试结果分析- 14 -5.4.2 按键测试结论- 14 -5.4.3测试结论- 15 -总结与致谢- 17 -参考文献- 19 -附录- 21 -附录一 分组表- 21 -附录二 程序- 22 -附录三 电子时钟实物图- 33 -第一章 绪论1.1 课题背景及意义二十一世纪的今天,电子时钟已经融入到千千万万户家庭中,它已经成为了人们生活中不可或缺的一部分。电子时钟通过数码管显示,使其直观明了,更能实现整点报时等功能,使其更符合当今人们的生活需求,电子时钟的出现使人们的生活更加的有条不紊。目前市场上的电子时钟很多,为了迎合市场的需要,满足广大的消费人群,人们

10、通过自己的DIY设计让电子时钟富有创意。电子时钟通过不断地改进,使其更具有市场。本次设计的电子时钟利用单片机STC89C51进行控制的,利用单片机自身的定时器功能,采用数码管显示,可对电子时钟进行调整校准。电子时钟既可广泛应用于家庭,也可应用于银行、邮电、宾馆、医院、学校、企业、商店等相关行业的大厅,以及单位会议室、门卫等场所。因而,此设计具有相当重要的现实意义和实用价值。1.2 课题内容1.2.1 题目及要求基于51单片机的电子时钟设计与制作。利用单片机的计时、校时等功能,设计并制作出一个以单片机STC89C51为核心组件,采用数码管显示“时“分“秒”的电子时钟,要求能正常显示,并可用按键进

11、行调整校准。此次设计与传统的机械表相比,它具有走的更精准,显示更直观等特点,同时具有不同的操作方式,让此次设计更符合现代生活的需求,而且单片机的数字时钟具有编程灵活,便于功能扩充等特点。1.2.2 主要部分本次设计可分为两部分:软件部分、硬件部分。硬件部分包括: STC89C51单片机模块,数码管模块,蜂鸣器模块,按键模块,闹铃模块。通过正确连接电路以及单片机的编程来实现上述要求。软件部分的主程序包括:数码管显示程序,按键控制程序。使其实现时分秒正常显示,并可通过按键进行调试功能。第二章 方案2.1 功能要求1、能显示时、分、秒2、通过按键可以对电子时钟进行调整校准3、可实现设定闹钟并报警功能

12、4、上电后,电子钟显示“12-59-00”,蜂鸣器同时发出声音2.2 数字时钟方案在本次设计中,数字时钟是最主要的部分:采用单片机本身的定时器进行计时,来实现数字时钟功能。原理为:在单片机内部存储器设三个字节分别存放时钟的时、分、秒信息。利用定时器与软件结合实现1秒定时中断,每产生一次中断,存储器内相应的秒值加1;若秒值达到60,则将其清零,并将相应的分字节值加1;若分值达到60,则清零分字节,并将时字节值加1;若时值达到24,则将十字节清零。该方案具有硬件电路简单的特点。但由于每次执行程序时,定时器都要重新赋初值,所以该时钟精度不高。而且,由于是软件实现,当单片机不上电,程序不执行时,时钟将

13、不工作。2.3 数码管显示方案采用动态显示。所谓动态显示就是一位一位的轮流点亮各个位,对于显示器的每一位来说,每隔一段时间点亮一次。利用人的视觉暂留功能可以看到整个显示,但必须保证扫描速度足够快,字符才不闪烁。显示器的亮度既与导通电流有关,也于点亮时间与间隔时间的比例有关。调整参数可以实现较高稳定度的显示。动态显示节省了I/O口,降低了能耗。第三章 电子时钟的硬件设计3.1 电子时钟的组成本次设计制作的电子时钟组成部分为:STC89C51主控制模块,按键模块,复位电路,数码管显示模块,闹铃模块。组成图如图3-1所示。闹铃模块按键模块STC89C51主控制模块数码管显示模块复位电路图3.1 电子

14、时钟系统组成3.2 单片机最小系统图单片机最小系统又称为最小应用系统,即用最少的元器件组成单片机可以工作的系统。一般应包括:电源、单片机、晶振电路、复位电路等。如图3.2所示为单片机最小系统图。图3.2 单片机最小系统图3.3 STC89C51引脚功能图3.3 STC89C51引脚如图3.3所示,STC89C51主要管脚有:XTAL1(19 脚)和XTAL2(18 脚)为振荡器输入输出端口,外接12MHz 晶振。RST/Vpd(9 脚)为复位输入端口,外接电阻电容组成的复位电路。VCC(40 脚)和VSS(20 脚)为供电端口,分别接+5V电源的正负端。P0P3 为可编程通用I/O 脚,其功能

15、用途由软件定义,在本设计中,P0 端口(3239 脚)被定义为功能控制端口,分别与其相应功能管脚相连接,13 脚定义为IR输入端。3.4 数码管显示模块图3.4 数码管显示模块如图3.4所示,在这次的设计中,数码管接在单片机的P0和P2口,P0控制段选信号,P2控制位选信号。通过位选信号依次点亮各个数码管,由于人眼有视觉暂留的特性,因此如果第一个数码管灭和第二个数码管亮之间的时间足够短,人眼是感觉不出数码管的变化的。3.5 闹铃部分图3.5 闹铃图闹铃如下图3.5所示,主要由8550三极管和蜂鸣器构成,可通过手动设置来实现闹铃功能。3.6 按键模块如图3.6所示,本次设计是采用四个独立式按键,

16、分别为“时间设置”键,“闹钟设置”键,“+”键,“-”键,通过这四个按键来调整电子时钟的时间显示和闹钟响应。“时间设置” “闹钟设置” “+” “-”图3.6按键图第四章 电子时钟的软件设计本次设计主要是对单片机,数码管,按键和闹铃部分进行编写的。4.1 电子时钟程序流程框图开始初始化单片机、数码管、按键等数码管固定显示扫描按键、遥控器扫描,数码管正常显示调用时间,设置子程序刷新正常时间显示图4.1 系统程序流程框图本次的设计主程序是根据每个模块的特性来进行编写,先对各个模块进行初始化,然后再按照各自不同来分模块编写,最后得出总的流程图。4.2 按键调整流程图开始设置键1按下1次,进入时调整等

17、待按键程序加键有效减键有效时加1时减1设置1键按下2次,进入分调整等待按键程序加键有效减键有效分加1分减1设置1键按下3次,进入秒调整等待按键程序加键有效减键有效秒加1秒减1设置2键按下1次,进入闹钟时设置等待按键程序加键有效减键有效时设定加1时设定减1设置2键按下2次,进入闹钟分调整等待按键程序加键有效减键有效分设定加1分设定减1图4.2 按键调整流程图进入程序后,先将单片机,数码管,按键等进行初始化,数码管显示固定数值“12-59-00”,程序开始等待按键按下,当有按键按下,单片机检测一次,确定按下,单片机调用程序,同时数码管刷新一次,显示当前操作结果。完后,程序返回按键等待,如此循环执行

18、。4.3 子程序的设计4.3.1 数码管显示模块4位独立数码管显示,电路相对简单,主要特点,简单易用,显示清晰,性价比高。数码管显示程序:(见附录2.1)4.3.2 按键子模块本次设计是采用四个独立式按键,分别为“设置”键,“+”键,“-”键,“复位”键,通过这四个按键来调整电子时钟的时间显示和闹钟响应。按键操作子程序:(见附录2.2)图4.3按键抖动新号波形当用手按下一个键时,如图4.3所示,往往按键在闭合位置和断开位置之间跳几下才稳定到闭合状态的情况;在释放一个键时,也回会出现类似的情况。这就是抖动。抖动的持续时间随键盘材料和操作员而异,不过通常总是不大于10ms。很容易想到,抖动问题不解

19、决就会引起对闭合键的识别。用软件方法可以很容易地解决抖动问题,这就是通过延迟10ms来等待抖动消失,这之后,在读入键盘码。此次设计过程中电路的工作原理:数字电子钟是一个将“ 时”,“分”,“秒”显示于人的视觉器官的计时装置。它的计时周期为24小时,显示满刻度为23时59分59秒,另外还有校时功能。因此,一个基本的数字钟电路主要由显示器“时”,“分”,“秒”和单片机,还有校时电路组成。8个数码管的段选接到单片机的P0口,位选接到单片机的P2口。数码管按照数码管动态显示的工作原理工作, 将标准秒信号送入“秒单元”,“秒单元”采用60进制计数器,每累计60秒发出一个“分脉冲”信号,该信号将作为“分单

20、元”的时钟脉冲。“分单元”也采用60进制计数器,每累计60分钟,发出一个“时脉冲”信号,该信号将被送到“时单元”。“时单元”采用24进制计时器,可实现对一天24小时的累计。显示电路将“时”、“分”、“秒”通过七段显示器显示出来。校时电路时用来对“时”、“分”、“秒”显示数字进行校对调整,按一下设置键进入时设置,按下“+”时加一次,按下“-”键,时减一次,同理,按设置键两次即进行分调整,按下三次进行秒调整。4.3.3 主程序(见附录2.3)第五章 硬件的制作与测试分析5.1 电子时钟的硬件制作此次的电子时钟是根据所设计的原理图,把每个部分都焊接好,连接起来,然后接入电源,上电,最后将所编写的程序

21、烧入单片机中。5.2 硬件测试电子时钟的硬件相对简单,只用几个模块构成,但在检查电路的时候容易因掉以轻心而出错,主要检查电路连接是否有短路或者短路现象(通过万用表检测),元器件的型号和规格是否使用合理。其次,检测电源。检测方法:一种是断开稳压电源的输出端,检查空载时电源工作情况;另一种是拔下电源上的主要集成芯片,检查电源的负载能力(用假负载),确保电源无故障并性能符合设计要求。检测完电路,确保其不发生电路故障的前提下才可上电。5.3 软件调试电子时钟虽然看着硬件比较少,但是写起程序来并非那么简单,在设计阶段,因为我们是刚入手单片机没多久的,所以对挺多的程序并不是很了解,我们查阅了很多资料,研究

22、了很多关于按键,数码管等方面的内容,我们通过参考查阅到的资料,根据自己的删改添加终于完成了自己的程序。在电子时钟的程序设计阶段,让数码管显示“12-59-00”,由于对十六进制不够熟练,所以在实现显示的时候总是出现乱码,后面静下心慢慢算,终于能够正常显示,不过只是实现数码管的静态显示,动态显示才是关键,通过我们在课上讲的数码管累加计时,仿照其原理,通过改进,也实现了动态显示。在按键方面,按键因为是独立的,所以我一个个按键的功能慢慢实现,先做加减后做调整和复位,刚开始做按键的时候因为考虑的不够全面,虽然按键能够实现加减,但是出现按一次跳很多次的现象,经过查找资料并观看视频,原来按下去的时候会出现

23、所谓的“抖动”,这时候就需要多添加几句程序来进行消抖,最终数码管才正常加减,同样道理实现选择位跟复位功能,在一步步添加程序的同时也一步步地掌握了按键的使用方法。5.4 测试结果分析与结论5.4.1 数码管测试结果分析数码管主要是分清楚共阴还是共阳,在写程序的时候一定要注意,通过肉眼看数码管是否出现亮度不够判断其电路是否供电异常或者程序占用太多CPU,进行电路调整及程序修改,让数码管正常显示。5.4.2 按键测试结论在对按键进行测试的时候主要出现按键按下去有时候会出现连续加跟连续减的现象,经过查找相关资料,原来按键按下去的时候会出现“抖动”,所以我们就要在程序中进行删改,做“消抖”处理。5.4.

24、3测试结论经过多次的反复测试,分析跟修改,程序越来越完善,我也对电路的原理跟功能更加熟悉,同时在编程方面也更加的熟练,很多平时老师没有教到的知识我通过自学,也都能基本掌握,可说在编程上得到了很大的提高,以及对所学的知识也得到很大的巩固。调试展示如下5.1图所示:图5.1 调试展示图总结与致谢在这2016年的年末,经过我们的努力,我们圆满的完成了本学期的课程设计。此次我们的课程设计是微机原理与单片机接口技术课程设计,而我们小组做的是基于51单片机的简易电子时钟设计。电子时钟与我们的生活息息相关,尽管它作为我们的日常用品,但说实话我们对其很不了解。这种很熟悉却又很遥远的感觉激发了我的求知欲望。经过

25、我们认真的查阅资料,我们了解了电子时钟和51单片机的原理以及如何使用51单片机设计电子时钟。然后我们开始设计属于我们自己的电子时钟,我们通过仿真软件设计了原理图,编写了C语言程序。本次课程设计我和另外两位同学主要负责硬件部分,即按照原理图购买和焊接实物电路并烧写单片机和最后调试。这真正做之前我感觉并不难,但是真正上手之后却是错漏百出。比如我们在焊接排阻时,由于不仔细没有注意到它的极性,最后才发现焊反了,还有部分地方存在虚焊等问题。虽然最后在大家的努力下一一得以解决,但是这也说明我们还存在很多问题。类似于对原理不是特别懂,还有就是粗心不仔细,再就是动手能力极差。看的时候感觉很简单,但是自己动手焊

26、接时却发现非常不容易。总而言之,通过这次课程设计我感觉收获颇丰。不仅仅是学习能力的提升,还有动手能力的提升,更重要的是收获了一份钻研精神以及一种不畏困难勇往直前的勇气!参考文献1郭天祥.新概念51单片机C语言教程M.北京:电子工业出版社,20092张靖武,周灵斌.单片机原理、应用与PROTEUS仿真M.北京:电子工业出版社,20083张道德.单片机接口技术M.北京:中国水利水电出版社,2007附录附录一 分组表任务/人设计电路编写程序焊接烧写调试备注焊接烧写焊接烧写焊接烧写总体电路设计总体程序编写数码管显示模块程序设计按键模块程序设计复位模块与电源开关模块数码显示模块和蜂鸣器电路模块晶振电路模

27、块和单片机电路模块附录二 程序数码管显示程序:void display(void)P0=ledhour/10; /p0口送数据 拆数显示P2=0xFE; /片选delay(); /延时P2=0xFF; /片选关P0=ledhour%10;P2=0xFD;delay();P2=0xFF;P0=0x40;P2=0xFB;delay();P2=0xFF;P0=ledminit/10;P2=0xF7;delay();P2=0xFF;P0=ledminit%10;P2=0xEF;delay();P2=0xFF;P0=0x40;P2=0xDF;delay();P2=0xFF;P0=ledsecond/10

28、;P2=0xBF;delay();P2=0xFF;P0=ledsecond%10;P2=0x7F;delay();P2=0xFF;按键操作子程序:void display(void)P0=ledhour/10; /p0口送数据 拆数显示P2=0xFE; /片选delay(); /延时P2=0xFF; /片选关P0=ledhour%10;P2=0xFD;delay();P2=0xFF;P0=0x40;P2=0xFB;delay();P2=0xFF;P0=ledminit/10;P2=0xF7;delay();P2=0xFF;P0=ledminit%10;P2=0xEF;delay();P2=0x

29、FF;P0=0x40;P2=0xDF;delay();P2=0xFF;P0=ledsecond/10;P2=0xBF;delay();P2=0xFF;P0=ledsecond%10;P2=0x7F;delay();P2=0xFF;void Keykonzhi()if(time=0) /键盘时间设定键按下delay();delay();if(time=0)while(!time);timenum1+; /标记+TR1=0;f2=0;if(timenum1=1) /如果timenum1=1 调时dsflg=0;st=0;if(add=0) /加键按下delay();delay();if(add=0

30、)while(!add); /松手检测hour+; /小时+if(dec=0)/减键按下delay();delay();if(dec=0)while(!dec); /松手检测hour-; /小时-if(hour23) /限位hour=0;P0=ledhour/10;/显示小时函数P2=0xFE;delay();P2=0xFF;P0=ledhour%10; /显示小时函数P2=0xFD;delay();P2=0xFF;if(timenum1=2) /如果timenum1=2调分/以下也是和调时一样的方法dsflg=0;st=0;if(add=0)delay();delay();if(add=0)

31、while(!add);minit+;if(dec=0)delay();delay();if(dec=0)while(!dec);minit-;if(minit60)minit=0;P0=ledminit/10;P2=0xF7;delay();P2=0xFF;P0=ledminit%10;P2=0xEF;delay();P2=0xFF;if(timenum1=3)/如果timenum1=3 调秒dsflg=0;st=0;if(add=0)delay();delay();if(add=0)while(!add);second+;if(dec=0)delay();delay();if(dec=0)

32、while(!dec);second-;if(second60)second=0;P0=ledsecond/10;P2=0xBF;delay();P2=0xFF;P0=ledsecond%10;P2=0x7F;delay();P2=0xFF;if(timenum1=4) /如果timenum1=4 退出 TR1=1;timenum1=0;dsflg=1;f2=1;st=1;void almset()timenum1=0;if(timer=0) /键盘上的闹钟键按下 delay();delay();if(timer=0)while(!timer); /松手timenum2+; /标记+f1=0;

33、if(timenum2=1)/如果timenum2=1设定脑钟的小时dsflg=0;st=0;if(add=0) /加键按下delay();delay();if(add=0)while(!add);/松手hour1+;/小时+if(dec=0) /减键按下delay();delay();if(dec=0)while(!dec);/松手hour1-; /小时-if(hour123) /限位hour1=0;P0=ledhour1/10;/小时显示P2=0xFE;delay();P2=0xFF;P0=ledhour1%10;P2=0xFD;delay();P2=0xFF;P0=0x77; /显示 一

34、P2=0xBF;delay();P2=0xFF; /显示 一P0=0x38;P2=0x7F;delay();P2=0xFF;if(timenum2=2) /如果timenum2=1设定脑钟的分钟 和上面小时一样dsflg=0;st=0;if(add=0)delay();delay();if(add=0)while(!add);minit1+;if(dec=0)delay();delay();if(dec=0)while(!dec);minit1-;if(minit160)minit1=0;P0=ledminit1/10;P2=0xF7;delay();P2=0xFF;P0=ledminit1%

35、10;P2=0xEF;delay();P2=0xFF;P0=0x77;P2=0xBF;delay();P2=0xFF;P0=0x38;P2=0x7F;delay();P2=0xFF;if(timenum2=3)/如果timenum2=3退出timenum2=0;dsflg=1;f1=1;st=1;主程序:void main(void)second=59; /时间初始化为00:00:00minit=59;hour=13;second1=0;/闹钟默认为12:00:00minit1=05;hour1=14;count0=0x00;count1=0x00;timenum1=0;f1=1;f2=1;d

36、sflg=1;m=0;f=0;st=1;P1=0xFF;TMOD=0x11;TL1=tl;TH1=th;EA=1;TR1=1;ET1=1;IT1=1;TH0=0;TL0=0;TR0=1; EX1=1;while(1)if(zhengdian=1) speaker=0;delay1(1);speaker=1;delay1(1);if(f1=1)Keykonzhi ();if(f2=1)almset();almkozi();if(dsflg=1)display();if(st=1)if(add=0)delay();delay();if(add=0)while(!add);second=00; /时间初始化为00:00:00minit=00;hour=00;附录三 电子时钟实物图实物图a实物图b- 41 -

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!