《毕业设计电子时钟设计(共50页).doc》由会员分享,可在线阅读,更多相关《毕业设计电子时钟设计(共50页).doc(42页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上郑重申明本人呈交的毕业实习报告(设计),是在导师的指导下,独立进行实习和研究工作所取得的成果,所有数据、图片资料真实可靠。尽我所知,除文中已经注明引用的内容外,本毕业实习报告(设计)的成果不包含他人享有著作权的内容。对本毕业实习报告(设计)所涉及的实习和研究工作做出贡献的其他个人和集体,均已在文中以明确的方式标明。本毕业实习报告(设计)的知识产权归属于作者与培养单位。学生签名日期0000.00摘要该电子时钟是采用STC89C52单片机进行的电子时钟设计,其设计包括:显示模块,按键模块,闹铃模块,无线接收模块。时钟采用STC89C52单片机自身定时器进行计时,按键模块采
2、用独立式键盘(4个按键),闹铃部分由8550三极管和蜂鸣器构成,无线接收模块采用1838接收窗,显示时、分、秒用8位数码管显示,具有可调整时间功能,在设计过程中硬件和软件应同时进行。关键词:电子时钟 单片机 闹钟 蜂鸣器目录1绪论1.1课题背景及意义51.2课题内容52方案论证2.1功能要求72.2数字时钟方案论证与比较72.3数码管显示方案论证与比较83.电子时钟的硬件设计3.1电子时钟的组成93.2单片机最小系统图93.3 STC89C52引脚功能103.4数码显示模块113.5闹铃部分113.6按键模块124电子时钟的软件设计4.1电子时钟程序流程框图144.2按键调整流程图164.3子
3、程序的设计174.4.1数码管显示模块174.4.2按键子模块184.4.3 主程序345硬件的制作与测试分析5.1电子时钟的硬件制作375.2硬件测试374.3软件调试375.4测试结果分析与结论385.4.1 数码管测试结果分析385.4.2按键测试结论385.4.3测试结论39结论 40参考文献 421论述 1.1课题背景及意义二十一世纪的今天,电子时钟已经融入到千千万万户家庭中,它已经成为了人们生活中不可或缺的一部分。电子时钟通过数码管显示,使其直观明了,更能实现整点报时,遥控控制等功能,使其更符合当今人们的生活需求,电子时钟的出现使人们的生活更加的有条不紊。目前市场上的电子时钟很多,
4、为了迎合市场的需要,满足广大的消费人群,人们通过自己的DIY设计让电子时钟富有创意。电子时钟通过不断地改进,使其更具有市场。本次设计的电子时钟利用单片机STC89C52进行控制的,利用单片机自身的定时器功能,外加遥控器进行控制,采用数码管显示,可对电子时钟进行调整校准。电子时钟既可广泛应用于家庭,也可应用于银行、邮电、宾馆、医院、学校、企业、商店等相关行业的大厅,以及单位会议室、门卫等场所。因而,此设计具有相当重要的现实意义和实用价值。1.2课题内容本次设计的题目是:基于51单片机的电子时钟设计与制作。利用单片机的计时、校时等功能,设计并制作出一个以单片机STC89C52为核心组件,采用数码管
5、显示“时“分“秒”的电子时钟,要求能正常显示,并可用按键进行调整校准以及用遥控器进行相同操作。此次设计与传统的机械表相比,它具有走的更精准,显示更直观等特点,同时具有不同的操作方式,让此次设计更符合现代生活的需求,而且单片机的数字时钟具有编程灵活,便于功能扩充等特点。本次设计可分为两部分:软件部分、硬件部分。硬件部分包括: STC89C52单片机模块,数码管模块,蜂鸣器模块,按键模块,闹铃模块。通过正确连接电路以及单片机的编程来实现上述要求。软件部分的主程序包括:数码管显示程序,按键控制程序,遥控器操作程序。使其实现时分秒正常显示,并可通过按键以及遥控器进行调试功能。2方案论证2.1功能要求1
6、、能显示时、分、秒2、通过按键可以对电子时钟进行调整校准3、通过遥控器可对电子时钟进行调整校准4、可实现设定闹钟并报警功能5、上电后,电子钟显示“14-00-00”,蜂鸣器同时发出声音2.2数字时钟方案论证与比较在本次设计中,数字时钟是最主要的部分,根据此次设计的需要,可利用两种方案实现。方案一:采用时钟芯片DS12887A进行控制时,由于该芯片具有完备的时钟闹钟功能,所以可以直接用它来进行显示或设置,这样可以让软件的编程相对简单。而且为了保证时钟在电网电压不足或突然断电的情况下仍能正常工作,芯片内部本身就包含锂电池,当电网电压不足或者突然掉电的时候,系统会自动转换到内部锂电池供电系统,而且即
7、使系统不上电,程序不执行时,锂电池也能保证芯片的正常运行,以备随时提供正确的时间。方案二:采用单片机本身的定时器进行计时,来实现数字时钟功能。原理为:在单片机内部存储器设三个字节分别存放时钟的时、分、秒信息。利用定时器与软件结合实现1秒定时中断,每产生一次中断,存储器内相应的秒值加1;若秒值达到60,则将其清零,并将相应的分字节值加1;若分值达到60,则清零分字节,并将时字节值加1;若时值达到24,则将十字节清零。该方案具有硬件电路简单的特点。但由于每次执行程序时,定时器都要重新赋初值,所以该时钟精度不高。而且,由于是软件实现,当单片机不上电,程序不执行时,时钟将不工作。 基于硬件电路的考虑,
8、本设计采用方案二完成数字时钟的功能。2.3数码管显示方案论证与比较方案一:采用静态显示。所谓静态显示,就是当显示器显示某一字符时,相应的发光二极管恒定的导通或截止。该方式每一位都需要一个8位输出口控制。静态显示时较小的电流能获得较高的亮度,且字符不闪烁。但当所显示的位数较多时,静态显示所需的I/O口太多,造成了资源的浪费。方案二: 采用动态显示。所谓动态显示就是一位一位的轮流点亮各个位,对于显示器的每一位来说,每隔一段时间点亮一次。利用人的视觉暂留功能可以看到整个显示,但必须保证扫描速度足够快,字符才不闪烁。显示器的亮度既与导通电流有关,也于点亮时间与间隔时间的比例有关。调整参数可以实现较高稳
9、定度的显示。动态显示节省了I/O口,降低了能耗。从节省I/O口和降低能耗出发,本设计采用方案二。综上所诉:我们采用单片机完成数字时钟的功能,采用数码管的动态显示来完成显示部分。 3.电子时钟的硬件设计3.1 电子时钟的组成本次设计制作的电子时钟组成部分为:STC89C52主控制模块,按键模块,复位电路,数码管显示模块,闹铃模块。组成图如图3-1所示闹铃模块按键模块1838红外接收窗STC89C52主控制模块数码管显示模块复位电路图3-1 电子时钟系统组成3.2 单片机最小系统图单片机最小系统又称为最小应用系统,即用最少的元器件组成单片机可以工作的系统。一般应包括:电源、单片机、晶振电路、复位电
10、路等。如图3-2所示为单片机最小系统图。图 3-2 单片机最小系统图3.3 STC89C52引脚功能图3-3 STC89C52引脚如图3-3所示,STC89C52主要管脚有:XTAL1(19 脚)和XTAL2(18 脚)为振荡器输入输出端口,外接12MHz 晶振。RST/Vpd(9 脚)为复位输入端口,外接电阻电容组成的复位电路。VCC(40 脚)和VSS(20 脚)为供电端口,分别接+5V电源的正负端。P0P3 为可编程通用I/O 脚,其功能用途由软件定义,在本设计中,P0 端口(3239 脚)被定义为功能控制端口,分别与其相应功能管脚相连接,13 脚定义为IR输入端。3.4 数码管显示模块
11、图3-4 数码管显示模块如图3-4所示,在这次的设计中,数码管接在单片机的P0和P2口,P0控制段选信号,P2控制位选信号。通过位选信号依次点亮各个数码管,由于人眼有视觉暂留的特性,因此如果第一个数码管灭和第二个数码管亮之间的时间足够短,人眼是感觉不出数码管的变化的。3.5 闹铃部分闹铃如下图3-5所示,主要由8550三极管和蜂鸣器构成,可通过手动设置来实现闹铃功能。图3-5 闹铃图3.6 按键模块如图3-6所示,本次设计是采用四个独立式按键,分别为“时间设置”键,“闹钟设置”键,“+”键,“-”键,通过这四个按键来调整电子时钟的时间显示和闹钟响应。“时间设置” “ 闹钟设置 “+” “”图3
12、-6按键图4电子时钟的软件设计本次设计主要是对单片机,数码管,红外遥控器,按键和闹铃部分进行编写的。4.1电子时钟程序流程框图开始初始化单片机、数码管、按键等数码管固定显示扫描按键、遥控器扫描,数码管正常显示调用时间,设置子程序刷新正常时间显示图4-1 系统程序流程框图本次的设计主程序是根据每个模块的特性来进行编写,先对各个模块进行初始化,然后再按照各自不同来分模块编写,最后得出总的流程图。进入程序后,先将单片机,数码管,按键等进行初始化,数码管显示固定数值“14-00-00”,程序开始等待按键按下,当有按键按下,单片机检测一次,确定按下,单片机调用程序,同时数码管刷新一次,显示当前操作结果。
13、完后,程序返回按键等待,如此循环执行专心-专注-专业4.2按键调整流程图开始设置键1按下1次,进入时调整等待按键程序加键有效减键有效时加1时减1设置1键按下2次,进入分调整等待按键程序加键有效减键有效分加1分减1设置1键按下3次,进入秒调整等待按键程序加键有效减键有效秒加1秒减1设置2键按下1次,进入闹钟时设置等待按键程序加键有效减键有效时设定加1时设定减1设置2键按下2次,进入闹钟分调整等待按键程序加键有效减键有效分设定加1分设定减1图4-2 按键调整流程图4.4子程序的设计4.4.1数码管显示模块4位独立数码管显示,电路相对简单,主要特点,简单易用,显示清晰,性价比高。数码管显示程序:vo
14、id 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;P2=0xBF;delay();P2=0xFF;
15、P0=ledsecond%10;P2=0x7F;delay();P2=0xFF;4.4.2按键子模块本次设计是采用四个独立式按键,分别为“设置”键,“+”键,“-”键,“复位”键,通过这四个按键来调整电子时钟的时间显示和闹钟响应。按键操作子程序: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(
16、);if(add=0)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(
17、);if(add=0)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(
18、);if(dec=0)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
19、+; /标记+f1=0; 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;P
20、0=0x77; /显示 一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;
21、P0=ledminit1%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;当用手按下一个键时,如图3-4所示,往往按键在闭合位置和断开位置之间跳几下才稳定到闭合状态的情况;在释放一个键时,也回会出现类似的情况。这就是抖动。抖动的持续时间随键盘材料和操作员而异,不过通常总是不大于10ms。很容易想到,抖动问题不解决就会引起对闭合键的识别。用软件方法可
22、以很容易地解决抖动问题,这就是通过延迟10ms来等待抖动消失,这之后,在读入键盘码。图3-4按键抖动新号波形此次设计过程中电路的工作原理 : 数字电子钟是一个将“ 时”,“分”,“秒”显示于人的视觉器官的计时装置。它的计时周期为24小时,显示满刻度为23时59分59秒,另外还有校时功能。因此,一个基本的数字钟电路主要由显示器“时”,“分”,“秒”和单片机,还有校时电路组成。8个数码管的段选接到单片机的P0口,位选接到单片机的P2口。数码管按照数码管动态显示的工作原理工作, 将标准秒信号送入“秒单元”,“秒单元”采用60进制计数器,每累计60秒发出一个“分脉冲”信号,该信号将作为“分单元”的时钟
23、脉冲。“分单元”也采用60进制计数器,每累计60分钟,发出一个“时脉冲”信号,该信号将被送到“时单元”。“时单元”采用24进制计时器,可实现对一天24小时的累计。显示电路将“时”、“分”、“秒”通过七段显示器显示出来。校时电路时用来对“时”、“分”、“秒”显示数字进行校对调整,按一下设置键进入时设置,按下“+”时加一次,按下“-”键,时减一次,同理,按设置键两次即进行分调整,按下三次进行秒调整。4.4.3 主程序void main(void) second=59; /时间初始化为00:00:00minit=59;hour=13;second1=0;/闹钟默认为12:00:00minit1=05
24、;hour1=14;count0=0x00;count1=0x00;timenum1=0;f1=1;f2=1;dsflg=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)
25、 if(add=0)delay();delay();if(add=0)while(!add);second=00; /时间初始化为00:00:00minit=00;hour=00; 5 硬件的制作与测试分析5.1电子时钟的硬件制作次的电子时钟是根据所设计的原理图,把每个部分都焊接好,连接起来,然后接入电源,上电,最后将所编写的程序烧入单片机中。 5.2硬件测试电子时钟的硬件相对简单,只用几个模块构成,但在检查电路的时候容易因掉以轻心而出错,主要检查电路连接是否有短路或者短路现象(通过万用表检测),元器件的型号和规格是否使用合理。其次,检测电源。检测方法:一种是断开稳压电源的输出端,检查空载时电
26、源工作情况;另一种是拔下电源上的主要集成芯片,检查电源的负载能力(用假负载),确保电源无故障并性能符合设计要求。检测完电路,确保其不发生电路故障的前提下才可上电。5.3软件调试电子时钟虽然看着硬件比较少,但是写起程序来并非那么简单,在设计阶段,因为我们是刚入手单片机没多久的,所以对挺多的程序并不是很了解,我们看了郭天祥的“十天学会单片机”,他里面讲了很多关于按键,数码管,遥控器等方面的内容,我们就仿照他的例子,根据自己的删改添加终于完成了自己的程序。在电子时钟的程序设计阶段,让数码管显示“14-00-00”,由于对十六进制不够熟练,所以在实现显示的时候总是出现乱码,后面静下心慢慢算,终于能够正
27、常显示,不过只是实现数码管的静态显示,动态显示才是关键,通过我们在课上讲的数码管累加计时,仿照其原理,通过改进,也实现了动态显示。在按键方面,按键因为是独立的,所以我一个个按键的功能慢慢实现,先做加减后做调整和复位,刚开始做按键的时候因为考虑的不够全面,虽然按键能够实现加减,但是出现按一次跳很多次的现象,经过查找资料并观看视频,原来按下去的时候会出现所谓的“抖动”,这时候就需要多添加几句程序来进行消抖,最终数码管才正常加减,同样道理实现选择位跟复位功能,在一步步添加程序的同时也一步步地掌握了按键的使用方法。红外遥控器是我最头疼的,红外遥控器是头一次接触,平时在看别人操作的时候感觉很神奇,也很好
28、奇,但是做起来没想到却没那么简单,因为在设计的时候总是出现乱码,或者说实现一个功能的时候另一个功能容易出错,后面经过询问学长学姐,也终于能够实现加减调整功能,虽然遥控器上面的所有按键我们没有全部用上,但是对我来说已经是一个很大的进步。5.4测试结果分析与结论5.4.1 数码管测试结果分析 数码管主要是分清楚共阴还是共阳,在写程序的时候一定要注意,通过肉眼看数码管是否出现亮度不够判断其电路是否供电异常或者程序占用太多CPU,进 行电路调整及程序修改,让数码管正常显示。5.4.2按键测试结论在对按键进行测试的时候主要出现按键按下去有时候会出现连续加跟连续减的现象,经过查找相关资料,原来按键按下去的
29、时候会出现“抖动”,所以我们就要在程序中进行删改,做“消抖”处理。5.4.3测试结论经过多次的反复测试,分析跟修改,程序越来越完善,我也对电路的原理跟功能更加熟悉,同时在编程方面也更加的熟练,很多平时老师没有教到的知识我通过自学,也都能基本掌握,可说在编程上得到了很大的提高,以及对所学的知识也得到很大的巩固。结论经过这一段时间以来的努力,我们的毕业设计终于完成了,心中充满了无尽的喜悦!虽然在设计中仍有很多的不足之处,需要我们去改进并完善,但是对我们来说,我们的付出终于得到了回报,这是一件多么有意义的事。从课堂的理论学习到现在的毕业设计成果,这不仅加强了我们对课本知识的理解和巩固,也培养了我们的
30、实际动手能力,分析力以及学习能力。在我们整个毕业设计的过程中,两人分工合作,充分发挥个人的主观能动性,团结合作,攻克在设计与制作过程中的种种困难和挫折,一路都来,汗水跟喜悦一路相伴,每每攻克一个难点,心里就美滋滋的,也许这就是我们坚持下来的动力。我是负责软件编程的,通过这次的设计,我对单片机有了一个新的认识,在单片机的编程中,管脚的使用很重要,要学会合理设计与编程;在数码管的显示上,主要是实现动态显示,并且不会乱码;在按键的设计阶段是比较复杂的,因为按键只有4个,每个按键要实现不同的功能,有的一个按键实现两个功能,这就需要我在原有的学习基础上自己揣摩思考,设计程序;遥控器是我们后面添加上去的功
31、能,用遥控器来控制,实现了不用通过电路板上面的按键就可实现调试校准功能,这是我们在原有的软件和硬件上面的一个很大的提升!在整个调试的过程中遇到很多的问题,一个原因是自己的理论知识还不够扎实,没有很好的将所学的知识充分利用起来,另一方面是由于实物跟仿真相差比较大,起初调试的时候是在仿真图上面调整的,很多现象在仿真上面是正常的,但是在实物调试中却遇到很多问题,所以把课本的理论知识结合到实物产品中是非常重要的,在软件的设计中,细心与耐心也是相当重要的,有时候稍微一个不注意,就可能导致整个电路的功能无法实现,所谓“世上无难事只怕有心人”,我们相信,其实当我们用心去做每件事的时候,事情并没有我们想象的那
32、么困难。这次毕业设计是对我们三年以来所学内容的综合应用,在这次设计中我们学习到了很多课本上有的和没有的知识,为我们以后走向工作岗位和继续深造奠定了良好基础。在本次设计的时间里我们得到了指导老师的悉心指导,以及同学们的帮助。在此感谢你们的支持和鼓励。参考文献1 张道德,单片机接口技术,中国水利水电出版社,20072 新概念 51单片机C语言教程-入门、提高、开发、拓展全攻略,电子工业出版社,20103 张靖武,周灵斌,单片机原理、应用与PROTEUS仿真,电子工业出版社,20084 郭天祥,51单片机C语言教程,电子工业出版社,20105 郭天祥,10天学会单片机教学视频6 单片机开发箱附赠的光盘-STC89C52单片机开发箱原理图7 单片机资料: