毕业设计电子时钟设计_第1页
毕业设计电子时钟设计_第2页
毕业设计电子时钟设计_第3页
毕业设计电子时钟设计_第4页
毕业设计电子时钟设计_第5页
已阅读5页,还剩52页未读 继续免费阅读

下载本文档

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

文档简介

郑重申明本人呈交的毕业实习汇报(设计),是在导师的指导下,独立进行实习和研究工作所获得的成果,所有数据、图片资料真实可靠。尽我所知,除文中已经注明引用的内容外,本毕业实习汇报(设计)的成果不包括他人享有著作权的内容。对本毕业实习汇报(设计)所波及的实习和研究工作做出奉献的其他个人和集体,均已在文中以明确的方式标明。本毕业实习汇报(设计)的知识产权归属于作者与培养单位。学生签名日期0000.00

摘要该电子时钟是采用STC89C52单片机进行的电子时钟设计,其设计包括:显示模块,按键模块,闹铃模块,无线接受模块。时钟采用STC89C52单片机自身定期器进行计时,按键模块采用独立式键盘(4个按键),闹铃部分由8550三极管和蜂鸣器构成,无线接受模块采用1838接受窗,显示时、分、秒用8位数码管显示,具有可调整时间功能,在设计过程中硬件和软件应同步进行。关键词:电子时钟单片机闹钟蜂鸣器

目录1绪论1.1课题背景及意义……………51.2课题内容……………………52方案论证2.1功能规定……………………72.2数字时钟方案论证与比较…………………72.3数码管显示方案论证与比较………………83.电子时钟的硬件设计3.1电子时钟的构成……………93.2单片机最小系统图…………93.3STC89C52引脚功能…………103.4数码显示模块………………113.5闹铃部分……………………113.6按键模块……………………124电子时钟的软件设计4.1电子时钟程序流程框图……………………144.2按键调整流程图……………164.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参照文献……………42

1论述1.1课题背景及意义二十一世纪的今天,电子时钟已经融入到千千万万户家庭中,它已经成为了人们生活中不可或缺的一部分。电子时钟通过数码管显示,使其直观明了,更能实现整点报时,遥控控制等功能,使其更符合当今人们的生活需求,电子时钟的出现使人们的生活愈加的有条不紊。目前市场上的电子时钟诸多,为了迎合市场的需要,满足广大的消费人群,人们通过自己的DIY设计让电子时钟富有创意。电子时钟通过不停地改善,使其更具有市场。本次设计的电子时钟运用单片机STC89C52进行控制的,运用单片机自身的定期器功能,外加遥控器进行控制,采用数码管显示,可对电子时钟进行调整校准。电子时钟既可广泛应用于家庭,也可应用于银行、邮电、宾馆、医院、学校、企业、商店等有关行业的大厅,以及单位会议室、门卫等场所。因而,此设计具有相称重要的现实意义和实用价值。1.2课题内容本次设计的题目是:基于51单片机的电子时钟设计与制作。运用单片机的计时、校时等功能,设计并制作出一种以单片机STC89C52为关键组件,采用数码管显示“时“分“秒”的电子时钟,规定能正常显示,并可用按键进行调整校准以及用遥控器进行相似操作。本次设计与老式的机械表相比,它具有走的更精确,显示更直观等特点,同步具有不一样的操作方式,让本次设计更符合现代生活的需求,并且单片机的数字时钟具有编程灵活,便于功能扩充等特点。本次设计可分为两部分:软件部分、硬件部分。硬件部分包括:STC89C52单片机模块,数码管模块,蜂鸣器模块,按键模块,闹铃模块。通过对的连接电路以及单片机的编程来实现上述规定。软件部分的主程序包括:数码管显示程序,按键控制程序,遥控器操作程序。使其实现时分秒正常显示,并可通过按键以及遥控器进行调试功能。2方案论证2.1功能规定1、能显示时、分、秒2、通过按键可以对电子时钟进行调整校准3、通过遥控器可对电子时钟进行调整校准4、可实现设定闹钟并报警功能5、上电后,电子钟显示“14-00-00”,蜂鸣器同步发出声音2.2数字时钟方案论证与比较在本次设计中,数字时钟是最重要的部分,根据本次设计的需要,可运用两种方案实现。方案一:采用时钟芯片DS12887A进行控制时,由于该芯片具有完备的时钟闹钟功能,因此可以直接用它来进行显示或设置,这样可以让软件的编程相对简朴。并且为了保证时钟在电网电压局限性或忽然断电的状况下仍能正常工作,芯片内部自身就包括锂电池,当电网电压局限性或者忽然掉电的时候,系统会自动转换到内部锂电池供电系统,并且虽然系统不上电,程序不执行时,锂电池也能保证芯片的正常运行,以备随时提供对的的时间。方案二:采用单片机自身的定期器进行计时,来实现数字时钟功能。原理为:在单片机内部存储器设三个字节分别寄存时钟的时、分、秒信息。运用定期器与软件结合实现1秒定期中断,每产生一次中断,存储器内对应的秒值加1;若秒值到达60,则将其清零,并将对应的分字节值加1;若分值到达60,则清零分字节,并将时字节值加1;若时值到达24,则将十字节清零。该方案具有硬件电路简朴的特点。但由于每次执行程序时,定期器都要重新赋初值,因此该时钟精度不高。并且,由于是软件实现,当单片机不上电,程序不执行时,时钟将不工作。基于硬件电路的考虑,本设计采用方案二完毕数字时钟的功能。2.3数码管显示方案论证与比较方案一:采用静态显示。所谓静态显示,就是当显示屏显示某一字符时,对应的发光二极管恒定的导通或截止。该方式每一位都需要一种8位输出口控制。静态显示时较小的电流能获得较高的亮度,且字符不闪烁。但当所显示的位数较多时,静态显示所需的I/O口太多,导致了资源的挥霍。方案二:采用动态显示。所谓动态显示就是一位一位的轮番点亮各个位,对于显示屏的每一位来说,每隔一段时间点亮一次。运用人的视觉暂留功能可以看到整个显示,但必须保证扫描速度足够快,字符才不闪烁。显示屏的亮度既与导通电流有关,也于点亮时间与间隔时间的比例有关。调整参数可以实现较高稳定度的显示。动态显示节省了I/O口,减少了能耗。从节省I/O口和减少能耗出发,本设计采用方案二。综上所诉:我们采用单片机完毕数字时钟的功能,采用数码管的动态显示来完毕显示部分。3.电子时钟的硬件设计3.1电子时钟的构成本次设计制作的电子时钟构成部分为:STC89C52主控制模块,按键模块,复位电路,数码管显示模块,闹铃模块。构成图如图3-1所示闹铃模块闹铃模块按键模块1838红外接受窗STC89C52主控制模块数码管显示模块复位电路图3-1电子时钟系统构成3.2单片机最小系统图单片机最小系统又称为最小应用系统,即用至少的元器件构成单片机可以工作的系统。一般应包括:电源、单片机、晶振电路、复位电路等。如图3-2所示为单片机最小系统图。图3-2单片机最小系统图3.3STC89C52引脚功能图3-3STC89C52引脚如图3-3所示,STC89C52重要管脚有:XTAL1(19脚)和XTAL2(18脚)为振荡器输入输出端口,外接12MHz晶振。RST/Vpd(9脚)为复位输入端口,外接电阻电容构成的复位电路。VCC(40脚)和VSS(20脚)为供电端口,分别接+5V电源的正负端。P0~P3为可编程通用I/O脚,其功能用途由软件定义,在本设计中,P0端口(32~39脚)被定义为功能控制端口,分别与其对应功能管脚相连接,13脚定义为IR输入端。3.4数码管显示模块图3-4数码管显示模块如图3-4所示,在这次的设计中,数码管接在单片机的P0和P2口,P0控制段选信号,P2控制位选信号。通过位选信号依次点亮各个数码管,由于人眼有视觉暂留的特性,因此假如第一种数码管灭和第二个数码管亮之间的时间足够短,人眼是感觉不出数码管的变化的。3.5闹铃部分闹铃如下图3-5所示,重要由8550三极管和蜂鸣器构成,可通过手动设置来实现闹铃功能。图3-5闹铃图3.6按键模块如图3-6所示,本次设计是采用四个独立式按键,分别为“时间设置”键,“闹钟设置”键,“+”键,“-”键,,通过这四个按键来调整电子时钟的时间显示和闹钟响应。“时间设置” “闹钟设置“+” “—”图3-6按键图4电子时钟的软件设计本次设计重要是对单片机,数码管,红外遥控器,按键和闹铃部分进行编写的。4.1电子时钟程序流程框图开始初始化单片机、数码管、按键等开始初始化单片机、数码管、按键等数码管固定显示扫描按键、遥控器扫描,数码管正常显示调用时间,设置子程序刷新正常时间显示图4-1系统程序流程框图本次的设计主程序是根据每个模块的特性来进行编写,先对各个模块进行初始化,然后再按照各自不一样来分模块编写,最终得出总的流程图。进入程序后,先将单片机,数码管,按键等进行初始化,数码管显示固定数值“14-00-00”,程序开始等待按键按下,当有按键按下,单片机检测一次,确定按下,单片机调用程序,同步数码管刷新一次,显示目前操作成果。完后,程序返回按键等待,如此循环执行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位独立数码管显示,电路相对简朴,重要特点,简朴易用,显示清晰,性价比高。数码管显示程序:voiddisplay(void){ P0=led[hour/10];//p0口送数据拆数显示 P2=0xFE; //片选 delay(); //延时 P2=0xFF; //片选关 P0=led[hour%10]; P2=0xFD; delay(); P2=0xFF; P0=0x40; P2=0xFB; delay(); P2=0xFF; P0=led[minit/10]; P2=0xF7; delay(); P2=0xFF; P0=led[minit%10]; P2=0xEF; delay(); P2=0xFF; P0=0x40; P2=0xDF; delay(); P2=0xFF; P0=led[second/10]; P2=0xBF; delay(); P2=0xFF; P0=led[second%10]; P2=0x7F; delay(); P2=0xFF; }4.4.2按键子模块本次设计是采用四个独立式按键,分别为“设置”键,“+”键,“-”键,“复位”键,通过这四个按键来调整电子时钟的时间显示和闹钟响应。按键操作子程序:voidKeykonzhi(){ 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) { while(!add);//松手检测 hour++; //小时++ } } if(dec==0) //减键按下 { delay(); delay(); if(dec==0) { while(!dec);//松手检测 hour--; //小时-- } } if(hour>23) //限位 {hour=0;} P0=led[hour/10];//显示小时函数 P2=0xFE; delay(); P2=0xFF; P0=led[hour%10];//显示小时函数 P2=0xFD; delay(); P2=0xFF; } if(timenum1==2) ////假如timenum1==2调分//如下也是和调时同样的措施 { dsflg=0; st=0; if(add==0) { delay(); delay(); if(add==0) { while(!add); minit++; } } if(dec==0) { delay(); delay(); if(dec==0) { while(!dec); minit--; } } if(minit>60) {minit=0;} P0=led[minit/10]; P2=0xF7; delay(); P2=0xFF; P0=led[minit%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) { while(!dec); second--; } } if(second>60) {second=0;} P0=led[second/10]; P2=0xBF; delay(); P2=0xFF; P0=led[second%10]; P2=0x7F; delay(); P2=0xFF; } if(timenum1==4) ////假如timenum1==4退出 { TR1=1; timenum1=0; dsflg=1; f2=1; st=1; } }voidalmset(){ timenum1=0; if(timer==0)//键盘上的闹钟键按下 { delay(); delay(); if(timer==0) { while(!timer);//松手 timenum2++; //标识++ 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(hour1>23)//限位 {hour1=0;} P0=led[hour1/10];//小时显示 P2=0xFE; delay(); P2=0xFF; P0=led[hour1%10]; P2=0xFD; delay(); P2=0xFF; P0=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(minit1>60) {minit1=0;} P0=led[minit1/10]; P2=0xF7; delay(); P2=0xFF; P0=led[minit1%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。很轻易想到,抖动问题不处理就会引起对闭合键的识别。用软件措施可以很轻易地处理抖动问题,这就是通过延迟10ms来等待抖动消失,这之后,在读入键盘码。图3-4按键抖动新号波形本次设计过程中电路的工作原理:数字电子钟是一种将“时”,“分”,“秒”显示于人的视觉器官的计时装置。它的计时周期为24小时,显示满刻度为23时59分59秒,此外尚有校时功能。因此,一种基本的数字钟电路重要由显示屏“时”,“分”,“秒”和单片机,尚有校时电路构成。8个数码管的段选接到单片机的P0口,位选接到单片机的P2口。数码管按照数码管动态显示的工作原理工作,将原则秒信号送入“秒单元”,“秒单元”采用60进制计数器,每合计60秒发出一种“分脉冲”信号,该信号将作为“分单元”的时钟脉冲。“分单元”也采用60进制计数器,每合计60分钟,发出一种“时脉冲”信号,该信号将被送到“时单元”。“时单元”采用24进制计时器,可实现对一天24小时的合计。显示电路将“时”、“分”、“秒”通过七段显示屏显示出来。校时电路时用来对“时”、“分”、“秒”显示数字进行校对调整,按一下设置键进入时设置,按下“+”时加一次,按下“-”键,时减一次,同理,按设置键两次即进行分调整,按下三次进行秒调整。4.4.3主程序voidmain(void){ second=59; //时间初始化为00:00:00 minit=59; hour=13; second1=0; //闹钟默认为12:00:00 minit1=05; 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){ if(add==0) { delay(); delay(); if(add==0) { while(!add); second=00; //时间初始化为00:00:00 minit=00; hour=00; } }} }}5硬件的制作与测试分析5.1电子时钟的硬件制作次的电子时钟是根据所设计的原理图,把每个部分都焊接好,连接起来,然后接入电源,上电,最终将所编写的程序烧入单片机中。5.2硬件测试电子时钟的硬件相对简朴,只用几种模块构成,但在检查电路的时候轻易因掉以轻心而出错,重要检查电路连接与否有短路或者短路现象(通过万用表检测),元器件的型号和规格与否使用合理。另一方面,检测电源。检测措施:一种是断开稳压电源的输出端,检查空载时电源工作状况;另一种是拔下电源上的重要集成芯片,检查电源的负载能力(用假负载),保证电源无端障并性能符合设计规定。检测完电路,保证其不发生电路故障的前提下才可上电。5.3软件调试电子时钟虽然看着硬件比较少,不过写起程序来并非那么简朴,在设计阶段,由于我们是刚入手单片机没多久的,因此对挺多的程序并不是很理解,我们看了郭天祥的“十天学会单片机”,他里面讲了诸多有关按键,数码管,遥控器等方面的内容,我们就仿照他的例子,根据自己的删改添加终于完毕了自己的程序。在电子时钟的程序设计阶段,让数码管显示“14-00-00”,由于对十六进制不够纯熟,因此在实现显示的时候总是出现乱码,背面静下心慢慢算,终于可以正常显示,不过只是实现数码管的静态显示,动态显示才是关键,通过我们在课上讲的数码管累加计时,仿照其原理,通过改善,也实现了动态显示。在按键方面,按键由于是独立的,因此我一种个按键的功能慢慢实现,先做加减后做调整和复位,刚开始做按键的时候由于考虑的不够全面,虽然按键可以实现加减,不过出现按一次跳诸多次的现象,通过查找资料并观看视频,本来按下去的时候会出现所谓的“抖动”,这时候就需要多添加几句程序来进行消抖,最终数码管才正常加减,同样道理实现选择位跟复位功能,在一步步添加程序的同步也一步步地掌握了按键的使用措施。红外遥控器是我最头疼的,红外遥控器是头一次接触,平时在看他人操作的时候感觉很神奇,也很好奇,不过做起来没想到却没那么简朴,由于在设计的时候总是出现乱码,或者说实现一种功能的时候另一种功能轻易出错,背面通过问询学长学姐,也终于可以实现加减调整功能,虽然遥控器上面的所有按键我们没有所有用上,不过对我来说已经是一种很大的进步。5.4测试成果分析与结论5.4.1数码管测试成果分析数码管重要是分清晰共阴还是共阳,在写程序的时候一定要注意,通过肉眼看数码管与否出现亮度不够判断其电路与否供电异常或者程序占用太多CPU,进行电路调整及程序修改,让数码管正常显示。5.4.2按键测试结论在对按键进行测试的时候重要出现按键按下去有时候会出现持续加跟持续减的现象,通过查找有关资料,本来按键按下去的时候会出现“抖动”,因此我们就要在程序中进行删改,做“消抖”处理。5.4.3测试结论通过多次的反复测试,分析跟修改,程序越来越完善,我也对电路的原理跟功能愈加熟悉,同步在编程方

温馨提示

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

评论

0/150

提交评论