基于单片机的智能数字闹钟设计与实现_第1页
基于单片机的智能数字闹钟设计与实现_第2页
基于单片机的智能数字闹钟设计与实现_第3页
基于单片机的智能数字闹钟设计与实现_第4页
基于单片机的智能数字闹钟设计与实现_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

基于51单片机的智能数字闹钟设计与实现摘要单片机自20世纪70年代问世以来,由于单片机极比,越发受到了人们的重、发展不久。而51单片机是各单片机中最为典型的,也是最具有代表性的一种。本设计是一款基于AT89C51的智能数字钟,该数字钟表由主控模块、按键模块、定期模块、温度检测模块和显示模块构成。主控模块由主控芯片AT89C51、晶振电路和复位电路构成;定期模块采用时钟芯片DS1302实现精拟定期;用温度传感器DS18B20作为温度采集度;用液晶显示器1602显示年、月、日、时间及温度。通过这种方法的实现,使智能数字闹钟的电路简朴和温度精度高,操作简朴。在Proteus和Keilµvision4的环境下,完毕了电路原理图的绘制以及程序的编译后,用焊接的方法在电路板上焊接实物,将Keilµvision4中生成的.hex文献的程序烧到电路中,检测并调试电路,实现智能数字闹钟的功能。该智能数字闹钟可以应用于人们的生活和工作中,也可通过改装,将智能数字闹钟的性能提高,还可以增长新的功能,让智能数字闹钟显示更多方面的内容与功能,给人们的生活和工作带来更多的方便。关键词:单片机,时钟芯片,温度传感器,液晶显示器,智能数字钟AT89S52basedDigitalClockDesignofIntelligentAbstractAbstractSCMsincetheadventofthe1970s,becauseofhighperformanceandlowcostsinglechip,hasbeenmoreandmorepeople'sattentionandconcern,widelyusedinthefield,hasdevelopedrapidly.Themicrocontroller51isthemosttypicaleachMCUisthemostrepresentativeone.ThedesignerisonesectionbasedonAT89C51intelligentdigitclock,thisclockandwatchbythemastercontrolmodule,fixedtimethemodule,thetemperatureexaminesthemoduleandthedisplaymoduleconstitution.MastercontrolmodulebymastercontrolchipAT89C51,crystaloscillatorelectriccircuitandresetcircuitconstitution;FixedtimethemoduleusesclockchipDS1302torealizepreciselyfixedtime;GathersthesourcewithtemperaturesensorDS18B20asthetemperature,theexaminationcurrenttemperature;1602demonstratetheyear,themonth,Japan,thetimeandthetemperaturewiththeliquid-crystaldisplay.Themethodhastheadvantageofbeingsimplecircuit,reliableperformance,goodreal-time,highprecisionofthetimeandtemperature,simplyoperation【19】.UndertheenvironmentofProteusandKeilμvision4,afterfinishingdrawingcircuitschematicandcompilingprogram,Weldingmaterialonthecircuitboardbyweldingmethod.Then,.Hexfiles,thegenerationofKeilµvision4,ismadeintothecircuit.Finally,testinganddebuggingthecircuit,andtorealizethefunctionofIntelligentdigitalalarmclock.Theelectronicclockcanbeappliedtothegenerallivingandworking,canalsobemodifiedtoimproveperformanceaddnewfunctionsandbringsmoreconvenienttopeople’slifeandwork.KeyWords:NCmachining;NCverification;Machiningenvironment;Helpfiles本页的页码貌似是居右本页的页码貌似是居右目录TOC\o"1-3"\h\u9502摘要 i11713Abstract ii13778第一章引言 1175021.1智能数字闹钟的研究背景和意义 1159861.2智能数字闹钟的功能 1208011.3智能数字闹钟的发展趋势 232545第二章方案的论证与选择 2179932.1方案的论证 2131602.2方案的选择 417783第三章硬件电路的设计 4244383.1主控电路模块 5193663.2按键电路模块 762663.3定期电路模块 8322633.4温度电路模块 10104193.5显示电路模块 116241第四章软件设计 13136174.1总体系统软件设计 13313164.1.1主程序设计 1411744.1.2温度采集模块设计 1675654.1.3定期模块设计 18179084.1.4显示模块设计 1832514第五章系统的安装与调试 20313995.1系统硬件的安装与调试 21206065.2系统软件的调试 2232023第六章总结与展望 255047参考文献 2718069致谢 289678附录 29目录页也要有页码,罗马字体目录页也要有页码,罗马字体第一章引言不要加粗不要加粗1.1智能数字闹钟的研究背景和意义随着当今社会的快速发展,人类面临着很多问题,时间和空间的局限性就是其问题之一。作为新一代技术型人才,日益发展的社会势必会面临这一严峻的问题。围绕这个即将到来的问题,本课题定为智能数字闹钟设计。钟表只是一种简朴的显示时间的工具,自身不能给人们带来想要抓住时间的紧迫感,但如能把时钟时间的显示精确到分、秒,那么面对这种时间飞逝的重压感,人们就会重视它并有效地运用它,更懂得把握分寸,不白白浪费时间。当然若在钟表的显示中融入了其别人们平常工作出行必须的功能,智能并简朴运用,可以大大为我们节省出空间来。人们生活水平逐渐提高,并且越来越重视人性化事物,传统的指针式时钟也只能简朴的满足人们的针对时间的需求,但是人们更着重追求高科技新事物,在现在日益充满物质的社会里,人们也追求在小的范围内显示更多的信息。而普通的时钟是模电技术、数电技术和单片机技术的结合,才使得现在的时钟实现更多功能。初期运用的时间控制器都是用模拟电路设计制作的,准确性及各方面的性能都不是很抱负。随着单片机性价比的不断提高,新的产品应用越来越广泛,逐渐取代了昔日的模拟化产品,变得高端上档次。单片机系列产品已经遍布到工业控制,以及各个重要的公共场合,单片机的快速发展与应用更加大范围的扩展,在人们的平常生活中日需常见化,更加依赖单片机,给人类生活带来了极大的便利,单片机将与人们的生活、娱乐等不同方面都存在密不可分的关系。单片机在智能数字闹钟的应用中具有相称普遍的意义,是一件必不可少的元器件,在生活中起着关键性作用。由于时代的大变化发展,加快了数术的发展步伐,更加精进,使得数字钟可以走时准确,可以实现更多的功能,携带在身上很便捷,性能高。单片机内部结构有定期器/计数器,可以实现自动计时功能,单片机的使用大范围地出现在人们的周边,无处不在【16】。这种具有人们所需要的智能化特性产品为人们节省了大量时间和空间,扩大了数字化的范围,为家庭数字化奠定了基础。1.2智能数字闹钟的功能电路采用了单片机AT89C51、温度传感器DS18B20、时钟芯片DS1302、1602LCD显示器,通过独立式按键可以切换模式,修改显示时间的数据。电路设计合理,具有了三大特点:简朴,操作方便,美观大方。本设计智能数字闹钟的重要功能为:(1)连接电源,1602LCD显示器上可显示正常的时间、日期及温度的显示;(2)可实现12小时/24小时时间显示的切换;(3)通过独立式按键手动修改时间日期;(4)可以设立三个闹钟时间,当到闹钟响铃时间,可手动关闭;1.3智能数字闹钟的发展趋势基于51单片机的智能数字闹钟体现了现代化电子产品的高性价比,成本低,电路简朴,功能齐全。对于家庭生活中,具有了相称普遍性和实用性,使得人们在生活中对智能数字闹钟产生了依赖性,在各个方面不可缺少的,用一句夸张的话说:离开了它就不能活了,感觉身边总是少了些什么。时钟的发展已经从老式钟表发展到如今电子时钟以及智能化数字时钟的时代,通过时代的发展,高科技研制和广泛应用,智能数字闹钟的发展前景将不可估量,智能数字闹钟所实现的功能不仅仅只有报时功能,在不久的未来,智能数字闹钟可以设立闹钟,可以实现通话功能,可以是一本记事本,随时记录发生的事情,或许可以实现导航功能等,以上功能只要一个小小的智能数字闹钟就可实现,人们的生活更加方便。同时,智能数字闹钟的电路只需使用简朴芯片,加以合理设计,使得电路简朴、操作非常方便、美观实用,但是其精确度不是很高。一方面,随着着更多性能更好新材料、更完善的设计方法、更先进的大规模集成电路的发展以及驱动技术的进步,时钟系统将会更加高精度,也将会更加完善。另一方面,随着显示器件,如液晶显示器件性能的拓展,传统的机械时钟显示形式也将演变成高清楚度的显示方式。最后,时钟系统在未来的应用将更加广泛,以其高精度的显示以及其多内容的显示界面将更受到人们的青睐。方案的论证与选择2.1方案的论证方案一:这边可以问下老师是不是可以居行首基于低成本数字集成电路及七段译码器组成的数字闹钟设计【10】这边可以问下老师是不是可以居行首系统由数字逻辑集成芯片构成纯硬件电路,其电路由秒信号发生器、走时电路、校时电路、闹钟电路等部分组成。秒信号发生器使用LM555构成多谐振荡器,调整电阻可改变频率,使之产生秒信号。走时电路涉及秒计时器、分计时器、时计时器,每个部分都由两片计数器级联构成。其中秒计数器和分计数器都是用十进制与六进制计数器级联构成,时计数器由三进制计数器与十进制计数器级联构成。时计数器需要个位为十进制、十位只要计到2即可,但是需要清零电路。当个位计数到“4”,同时十位计数到“2”时立即清零,时钟就会从零开始重新计数。当时间与标准时间不吻合的时候,需要校准时间,对照标准时间将此时的时间的秒信号加速运营,加快时钟的计时速度,当到达标准时间后再切换回对的的输入信号,达成校准目的。闹钟是在在预定的时间到达时能输出闹铃声。这种方案的电路搭建起来非常的庞大,大小不同芯片,总共需要用到18个,工程非常的繁琐,需要花费很长的时间在电路的排版和连线上。方案二:基于VHDL的数字时钟设计【5】基于VHDL的数字时钟设计重要由晶体振荡器、分频器、计数器、译码器显示器组成。基于VHDL的数字时钟设计中需要有一个时钟脉冲信号,因此用一个石英晶体振荡器产生一个高频脉冲信号,然后要用分频器将这个时钟脉冲信号分频,得到1Hz的时钟信号,将这个时钟信号分别接入计数器中,然后再为其他模块提供时钟。计数器用一个100进制的计数器和两个60进制的计数器进行级联。最后在三个计数器的输出接到七段译码管,总共要用到8个这样的数码管。晶体振荡器晶体振荡器分频器计数器模块七段码译码器模块方案三:基于单片机智能数字闹钟设计【13】基于单片机的数字时钟设计是要分好几个模块,单独对各类模块设计,以单片机AT89C51作为主控芯片,控制其他模块的运作,将数据控制输出到显示模块。对各个模块进行程序的编写,最后将编译链接生成一个.hex文献,将这个文献烧到AT89C51单片机芯片中,从而实现时钟的功能。当时钟电路上电后,电路初始化,系统保持原有的显示,通过按下不同的按键,切换到不同的模式中,实现12/24小时的切换,以及修改年、月、日、时、秒的时间设立;当进入闹钟设立模式下,可设立三个闹钟时间,到设定期间蜂鸣器鸣响,无人操作时鸣响30s自动关闭闹钟;当需要设立更多功能时,只需多设立相应的功能按键就可实现。对上述方案进行比较,方案一由硬件构成,比较容易实现,但由硬件搭建的电路不够稳定,译码管显示效果差,功能单一不能扩展,且电路功耗大,在将这种方案做成实物的过程中很漫长,更需要投入很多的精力,因出现故障而检查电路时很复杂,难找。方案二运用FPGA精度高、解决速度快的特点,运用外部50M石英晶振提供高精度系统频率,可以满足更高精度的规定,并且设计比较人性化。方案三显示准确、直观、易于调整。2.2方案的选择本次设计采用方案三,即以AT89C51作为主控芯片,采用1602液晶作为显示器件,独立轻触式按键作按键模块,DS1302为定期来源,能准拟定期,DS18B20作温度采集源。拟定系统组成框图如图2.1所示,各功能模块如下:显示模块显示模块主控模块定期模块按键模块温度模块图2.1系统框架主控模块:由主控芯片AT89C51,外接时钟电路、复位电路和P0口的上拉电阻构成,可以驱动程序的运营,在显示屏上实现智能数字闹钟的各个功能。温度模块:由芯片DS18B20和上拉电阻构成,实现温度采集,当周边有高温物体时,温度的示数会逐渐的增长,离开时温度会慢慢下降。定期模块:由DS1302、晶振,3.6V的纽扣电池构成,可以提供年、月、日、时、分和日期,纽扣电池可以支持时钟的走时,即使显示屏没电不显示时,时间也在计时。显示模块:由1602LCD液晶显示屏构成,把单片机传来的数据进行显示,显示的位数多,。按键模块:由五个独立轻触式按键构成,可切换各种模式状态,能对数据进行修改。第三章硬件电路的设计本设计采用AT89C51单片机作为本次设计的重要控制模块。单片机可把由DS18B20、DS1302中的数据运用软件来进行解决,从而把数据传输到显示模块,此模块实现温度、时间的显示。以1602LCD液晶显示器为显示模块,把单片机传来的数据显示出来,在显示电路中,重要靠按键来实现各种显示规定的选择与切换。3.1主控电路模块主控电路模块采用AT89C51作为核心元件来控制各部分,其电路原理图如图3.1。单片机上面一个图没加序号引脚功能的说明,见下表3.1上面一个图没加序号表3.1单片机的引脚功能引脚号符号引脚功能1~8P1口8位,准双向I/O口,具有内部上拉电阻9RST复位,高电平有效10~17P3口8位,准双向I/O口,具有内部上拉电阻18、19XTAL时钟引脚20VSS接数字地21~28P2口8位,准双向I/O口,具有内部上拉电阻29片外程序存储器的读选通信号,低电平有效30ALE为CPU访问外部程序存储器或外部数据存储器提供一个地址锁存信号31外部存储器允许访问控制端32~39P0口8位,漏极开路的双向I/O口,作为通用I/O口使用时,需加上上拉电阻40Vcc接+5V电源下面给出了单片机的内部结构图,如图3.2图3.2单片机的内部结构图由图3.2单片机的内部结构图中看出,单片机是在半导体硅片上集成了中央解决器、存储器、并行I/O口、串行I/O口、定期器/计数器、中断系统、系统时钟电路及系统总线的微型计算机。通常把单片机称为嵌入式控制器或微控制器。单片机的最小系统只需要最小的配置可以让单片机里的程序运营,假如要用IO口去驱动LCD显示,写好程序就能运营。单片机的P0口接上上拉电阻,排除外界对其有效电平的干扰,电路的抗干扰能力大大增强。单片机最小系统构成重要是由时序电路以及复位电路两个部分构成。1、时序电路的介绍,下面给出了时序电路图:时序所有图都图要有序号电路由晶振与电容构成,其重要目的是滤波,这样可以使晶振输出的波形更加平滑,方便给予单片机合用的信号,至于大小应当是一个经验值,这样的滤波效果最佳。电路中的电容C1和C2的典型值通常选择为30pF,该电容的大小会影响振荡器频率的高低、振荡速性。晶体的频率越高,系统的时钟频率越高,单片机的运营速度也就越快【7】。但反过来。运营速度快对存储器的速度规定就高,对印制电路板的工艺规定也高,即规定线间的寄生电容要小。所有图都图要有序号复位电路的介绍,下面给出了复位电路图:复位电路重要由电阻、电容、独立轻触所有图都图要有序号式开关构成,运用复位电路把电路恢复到起始状态,就像计算器的清零按钮的作用同样,或者你输入错误,计算失误时都要进行清零操作。以便回到原始状态,重新进行计算。复位电路启动可以有三种方式,一是在给电路通电时立即进行复位操作;二是在必要时可以由手动操作;三是根据程序或者电路运营的需要自动地进行。所有图都图要有序号主控模块运用了单片机的最小系统,需要外接时钟电路和复位电路。但是,在智能数字闹钟的设计中,由于一定的因素,省略了接复位电路的连接,然而这种接法对电路不会导致很大的影响,仍然可以实现智能数字闹钟的功能。3.2按键电路模块按键模块电路重要是由5个独立式按键组成,其电路图如图3.3。图3.3按键模块电路图3.3按键模块电路中,S1、S2、S3、S4、S5分别接单片机AT89C51的P3口的P3.0、P3.1、P3.2、P3.3、P3.7,经单片机的控制,可通过不同按键的接通实现相应的功能(参数设立、闹钟设立等)。独立式按键的结构很简朴,使用时只需要接其中两个引脚即可。开机后,电路进入初始化状体,初始化完毕过后,按下开关S1进入调节模式,依次按下S1设立年、月、日、星期、时、分、秒和三个闹钟时间,S2递增调节,S3递减调节,按下S4关闭闹钟/退出调节模式,显示屏上正常显示。S5按键12小时、24小时的切换。3.3定期电路模块定期电路模块重要由芯片DS1302控制,电路图如图3.4。图3.4定期模块电路DS1302芯片各管脚描述如下,见表3.2表3.2DS1302功能引脚说明引脚号符号引脚功能1、8Vcc2、Vcc1为电源供电管脚2、3X2、X3接32.768KHz的晶振4GND接地5RST复位端6I/O为数据输入/输出引脚7SCLK接串行时钟DS1302有12个寄存器,其中7个寄存器与日历、时钟相关,存放的数据形式是BCD码,其寄存器及控制字见表3.3表3.3DS1302的日历、时钟寄存器及其控制字寄存器名命令字取值范围各位内容写操作读操作76543210秒寄存器80H81H00-59CH10SECSEC分钟寄存器82H83H00-59010MINMIN小时寄存器84H85H01-12或00-2312/240HRHR日期寄存器86H87H01-28,29,30,310010DATEDATE月份寄存器88H89H01-1200010MMONTH周日寄存器8AH8BH01-0700000DAY年份寄存器8CH8DH00-9910YEARYEAR单片机容易受外界环境的影响,时钟时常会出现混乱现象,导致时钟的精度不高。DS1302的作用重要用来记录数据,特别是对某些具有特殊意义的数据点的记录,除此之外,DS1302可以同时记录两个时间,一是记录数据的时间,二是出现该数据的时间,因此在测量系统中广泛应用。采用时钟芯片DS1302可以准确记录数据出现的时间,不需要占用硬件资源,不消耗单片机的资源。使用DS1302芯片,可以提供稳定精确地走时,单片机只需要在第一次上电时进行必要的时间设定,以后需要时间的时候只需要从DS1302中读取数据即可。DS1302芯片自带长短月、闰年补偿等功能,只用51实现时间的各种功能会非常麻烦。掉电后只需要薄弱的电流即可保持精确走时,因此,在DS1302芯片的连接中连有3.6V的纽扣电池,可以在掉电后支持时间的走时。3.4温度电路模块温度采集电路模块由DS18B20对温度进行采集测试,其电路图如图3.5。图3.5温度模块电路DS18B20的引脚介绍,见表3.4表3.4DS18B20的引脚介绍序号名称引脚功能1GND接地端2DQ数据输入/输出引脚。开漏单总线接口引脚。当被用着在寄生电源下,也可以向器件提供电源。3Vcc接+5V电源DS18B20产品具有以下特点:(1)只规定一个端口即可实现通信。(2)在DS18B20中的只有三个引脚即可实现温度的采集,不需要外部任何的电路。(3)测量温度范围在-50℃到+120℃之间;数字温度计的分辨率用户可以从9位到12位选择。(4)内部设立温度上、下限告警。DS18B20将采集到的信号送入单片机P2.5口,给电路提供一个温度数据。R2为上拉电阻,为DS18B20提供能量,最佳可以外接+5V的电源,有些电路仅仅依靠一个4.7K的上拉电阻是远远不够的,不能给其芯片足够的能量,假如采用多个DS18B20来采集温度数据时,这4.7K的电阻将供不应求,无法满足其需求【11】。温度采集电路还可将DS18B20的1脚和3脚同时接地,但是这样有也许成温度读书不准确。如图3.5中的接法即使电源电压只有4V电路也可以正常工作,DS18B20采集的温度数据也不会有很大的误差,因此这种接法在合适但是。由图3.5温度模块电路中所示,DS18B20只有三个引脚,3脚接+5V电源,1脚接地,2脚接信号输出口,同时接了一上拉电阻,由于DS18B20是单线温度传感器,数据线是漏极开路,假如DS18B20没接电源,则需要数据线强上拉,给DS18B20供电;假如DS18B20接有电源,则需要一个上拉即可稳定的工作。用小循环来移动8次,将内部寄存器的8位数据全读出来,再通过数学解决来显示温度。3.5显示电路模块显示电路模块是用1602LCD液晶显示屏显示时间、温度等数据,其电路图如图3.6。图3.6显示模块电路图1602液晶显示屏的引脚定义,见表3.3表3.31602液晶显示屏的引脚定义引脚号引脚名电平输入/输出作用1Vss电源地2Vcc电源(+5V)3Vee对比调整电压4RS0/1输入0=输入指令1=输入数据50/1输入0=向LCD写入指令或数据1=从LCD读取信息6E1,1→0输入使能信号,1时读取信息,1→0(下降沿)行指令7DB00/1输入/输出数据总线line0(低位)8DB10/1输入/输出数据总线line19DB20/1输入/输出数据总线line210DB30/1输入/输出数据总线line311DB40/1输入/输出数据总线line412DB50/1输入/输出数据总线line513DB60/1输入/输出数据总线line614DB70/1输入/输出数据总线line7(最高位)15A+VccLCD背光电源正极16K接地LCD背光电源负极与数码管相比该模块有如下优点:1、显示字数多,可显示32位,使用数码管,这样的数据以及其位置的摆放是相称的庞大。2、显示的内容丰富,可显示所有数字和大、小写字母。3、程序简朴,假如用数码管动态显示,刷新显示时间长,但1602能自动完毕这个功能。1602LCD分为带背光和不带背光两种形式,基控制器大部分为HD44780,带背光的比不带背光的厚,在应用中没有太大的差别,使用时不需要分太清楚,两者尺寸差别如下图3.7所示:图3.6图序号错了1602LCD尺寸图图序号错了如图3.6同上LCD1602尺寸图所示,从显示屏的正看,这两种显示屏没有差别;从侧面看,将这两种显示屏一比较,明显可以看出无背光的厚度要比带背光的厚度小,有3.5mm的差距,其他部分的尺寸都是同样大的,没有很大的区别。同上根据显示的内容,可以将1602LCD液晶分为字晶,本设计模块中是采用字根据以分为单行16字,2行16字,两行20字等等【3】。因此,1602LCD液晶显示屏可以同时实现这几个功能:在LCD1602显示屏上显示日期、时间、温度以及三个闹钟的设立时间。用数码管显示这么多的功能将是一个非常庞大的工程量。第四章软件设计为了利于实现本设计的智能化,提高编程的效率,本毕业设计项目采用C语言进行软件开发与设计。在智能数字闹钟的软件中,先单独编辑各个模块的程序,对各模块程序进行编译链接,程序没有任何错误可以完全运营操作,接着将各模块的C语言程序综合连接,使编程结构清楚明了,整个程序发现错误检查的时候更加方便,不会令人头疼烦躁。软件设计重要分为了四个部分来编写程序,主程序重要对整个模块进行定义、初始化,重要在按键模块切换的模式情况进行具体的设计,同时也对闹钟部分进行了具体的设计,通过设立的闹钟时间与显示时间比较,当两个时间相同时闹钟就会鸣响;温度模块重要是根据DS18B20芯片进行温度的采集,显示程序的编写则根据其的控制字规定将温度在LCD1602显示屏上显示;定期模块是用芯片DS1302实现定期的功能,提高走时的精确度。4.1总体系统软件设计软件程序的设计是根据硬件电路图的连接和各个元器件的功能进行设计。在编写软件时,可以按各个程序的功能将软件细分为各个功能模块,再通过主程序的调用来实现整个软件系统。系统主程序流程图如图4.1,如下所示:图4.1主程序流程图数字钟开机后,进入初始状态,通过调节各个独立轻触式按键来修改数据和各个模式的切换。图4.1主程序流程图中Y表达按下开关,N表达开关没有按下。开机后,按下S5可对时间进行12/24小时形式的切换;按下S1可以切换不同的模式,可以根据自己的规定进行切换,这时显示屏上会显示相相应的调节项;切换在某个模式上,按下S2进入数据调节,可将预设参数作加设立,按下S3进入数据调节,可将预设参数作减设立;当参数设立完毕后按下开关S4,退出该模式,电路进入正常显示状态。当时间到设立的闹钟时间时会有闹铃,无人操作时响铃30s后自动关闭,或者按下S4关闭闹钟。4.1.1主程序设计主程序:初始化各个功能模块,对闹钟、温度、定期、显示、按键等功能进行定义。其关键代码如下:voidmain()//主函数{ LCD_Init();//lcd初始化 InitDs1302();TimeInit();//定期器初始化 BEEP=1; time.alarm_hour=8; time.alarm_min=30; time.alarm_hour1=18; time.alarm_min1=30; time.alarm_hour2=23; time.alarm_min2=30;while(1){ TimeAdjust(); ReadTime(); CompareTime(); Display_String(dispbuf,0x00);//lcd1602显示第一行数据Display_String(warn,0x40);//lcd1602显示第二行数据}}voidtime1()interrupt1{ TH1=(65536-50000)/256; TL1=(65536-50000)%256;//初始值的定期 Count=Count+1; if(count==20) { sec--; if(sec==0) { TR0=0; BEEP=1; } count=0; } }4.1.2温度采集模块设计通过温度传感器将实时温度信息进行采集,将检测到的温度数据数字化,并使其在显示器上输出。其关键代码如下://读取温度longintReadTemperature(void){unsignedchara=0;unsignedcharb=0;longintt=0,temp1=0;floattt;charflag=1;Init_DS18B20();WriteAChar(0xCC);//跳过读序号列号的操作WriteAChar(0xBE);//读取温度寄存器等(共可读9个寄存器)前两个寄存器相应温度delay_18B20(100);m=ReadAChar();n=ReadAChar();Init_DS18B20();WriteAChar(0xCC);//跳过读序号列号的操作WriteAChar(0x44);//启动温度转换//传感器返回值除16得实际温度值//为了得到2位小数位,先乘100,再除16,考虑整型数据长度,//技巧解决后先乘25,再除4,除4用右移实现 temp1=n; temp1<<=8; temp1=temp1|m; if(temp1<0x800) { flag=0; } elseif(temp1>=0x800) { flag=1; temp1=~temp1+1; } tt=temp1*0.0625; temp1=tt*10+0.5;if(flag==1) temp1=temp1*(-1);returntemp1;}4.1.3定期模块设计对当前时间,日期等信息进行设定,通过本程序对年月日以及时分读取设定。其关键代码如下://读时钟ucharread(ucharaddr){uchardat=0;rst=0;sclk=0;rst=1;send(addr);//发送地址dat=receive();//接受rst=0;return(dat);}voidInitDs1302(){write(0x8e,0x00);//开write(0x80,0x53);//写初始状态秒钟的数值write(0x82,0x28);//写初始状态分钟的数值write(0x84,0x08);//写初始状态小时的数值write(0x86,0x09);//写日write(0x88,0x05);//写月write(0x8c,0x14);//写年write(0x8e,0x80);//关}4.1.4显示模块设计显示正常的时间、日期及温度,并且可实现对12小时/24小时时间切换的显示,对设立三个闹钟时间,闹钟响铃时间进行显示。其关键代码如下:voidWrite_LCD_Sj(ucharsj)//写数据函数{ LCD_Busy_Wait(); RS=1;RW=0;EN=0;P0=sj;EN=1;delayms(1);EN=0; }voidWrite_LCD_Command(ucharcom)//写指令函数{ LCD_Busy_Wait(); RS=0;RW=0;EN=0;P0=com;EN=1;delayms(1);EN=0; }voidLCD_Init(){ Write_LCD_Command(0x38);//设立8位格式 delayms(1); Write_LCD_Command(0x01);//屏幕显示内容清除(清屏) delayms(1); Write_LCD_Command(0x06);//设立输入方式 delayms(1); Write_LCD_Command(0x0c);//显示总数据 delayms(1); }//初始化voidSet_LCD_POS(ucharpos){ Write_LCD_Command(pos|0x80); }voidDisplay_String(uchar*pos,ucharLineNo)//屏幕的显示{ ucharj; Set_LCD_POS(LineNo); for(j=0;s[j]!='\0'&&j<16;j++) { Write_LCD_Sj(s[j]); delayms(1); }}第五章系统的安装与调试5.1系统硬件的安装与调试系统硬件在Proteus7.8仿真软件环境下进行调试,在Proteus中画出智能数字闹钟的电路原理图,在此过程中,寻找元器件要有耐心、认真负责的态度,准确无误的找到相相应的元器件,哪怕一个小小的不同就会影响设计的成果。通过查阅各种资料和老师的帮助下,可以不久的画出电路原理图,并在仿真软件中实现功能。由于本设计中有五个模块,在完毕各个模块后,需要把各部分相应的连接起来,在安装各模块的同时,可以更多掌握每个部分的功能。每个模块安装完毕后,不说明就已经完毕了所有工作,需要多次进行电路的检测,发现局限性与问题所在,不要影响电路的工作。并运用万用表等实验器材对整体进行检测,避免由于接线的错误导致不必要的故障,并且保证安全。一切准备工作结束后,开始焊接工作,在完毕整个焊接工作过程中,得到老师和同学的帮助,工作起来更加得心应手。开始焊接的是单片机的最小系统系统,根据仿真原理图很顺利的完毕本次工作,接下来依次焊接了按键模块,温度采集模块,定期模块,显示模块以及各部分的连接,在焊接过程中碰到了很多的问题,有时候把引脚焊错,心情会很烦躁,影响下面的进度,焊接过程中需要用到很多的工具,如:万能表,烙铁,示波器等。在焊接DS1302的时候出现一些问题,编程的时候显示不正常,通过不断的检查电路以及反复使用万能表的检测,最后终于发现了问题的所在,引脚接反了,导致芯片的损坏,庆幸当时多购买了此芯片,不然又要到处跑了。焊接1602显示屏与单片机时,花费了一些时间,一开始焊接的时候没有注意显示屏与单片机P0口顺序,将连接的引脚接反了,显示的时候出现了乱码,在焊接的时候用的锡线太多,不好把该显示屏插在板子上,只好重新焊接,保证其美观。通过不断的拆拆改改,最后调试的时候终于成功,实现了智能数字闹钟的功能。系统的焊接是本设计中最重要的部分,它规定理论和实际的实物进行很好的结合,焊接工作也是一份细致的工作,需要有耐心,才干将各个元器件对的的焊在电路板上,完毕本次设计,实现智能数字闹钟的所有功能。一旦焊接过程中出现错误就要拆下线路重新焊接,工作量会很庞大。焊接好电路,一定要严格检查,由于本设计采用的是万用板,因此在检测时务必要认真仔细。发现万用板上有多余的锡点时及时地清理,避免导致电路的短路,发生事故,同时,要注意各跳线有无错接或者接触不良的现象,虚焊情况,各元器件的引脚是否接对的,电源、地是否已接完善等现象,对以上情况都要作相应的检查,并作必要的解决。系统的焊接过程重要有以下几个阶段:1、根据仿真电路图购买相关的元器件,准备好工具,为实物的焊接做准备。

2、在电路板上合理的安放好元器件,保证实物的美观,特别是要注意那些易受干扰的电容的位置设计。3.

用万能表检测电路板上引脚情况,对照仿真原理图用烙铁连接起来,把握整个焊接过程,其中一定要细心,注意安全。4.

根据仿真原理图,将元器件焊接好,保证其元器件不受损伤。

安装:将各模块的跳线接好,注意引脚。各模块的供电端和接地端,接入单片机的引脚一定要认清引脚好,避免接错,导致不必要的损失。调试:检测引脚电压是否正常,按键是否接好,电路中有无短路,虚焊。在硬件电路无误情况下,接入电源,系统就可以正常工作了,打开显示器开关产品就可以实现相应功能。5.2系统软件的调试Proteus【2】这个序号加了有什么用,文章中尚有很多其他的的调试这个序号加了有什么用,文章中尚有很多其他的运营ISIS7Professional出现下面的窗口,在这个窗口中绘制智能数字闹钟的仿真原理图:添加元件到上图要有序号元件表中:智能数字闹钟的设计中重要用到的元件有:AT89C51、DS1302、1602LCD、DS18B20、“地”、“电源”等。单击“P”按钮,出现挑选元件对话框,在此对话框的KEYWORD中输入要找的元件名称,单击OK。上图要有序号放置元器件:在元件列表中左键选取相应的元器件,在原理图编辑窗口中单击左键,这样所需要的元件就被添加到原理图编辑窗口中。添加“地”、“电源”的时候左键点击工具栏中的TerminalsMode,分别选择GOUND、POWER,在原理图编辑窗口点击左键,分别将“地”、“电源”放置在原理图编辑窗口中。连线:将智能数字闹钟各个模块综合连接。(4)序号格式不统一,详见批注17添加仿真文献:双击单片机,出现下面的对话框,在ProgramFile中单击出现文献浏览对话框,找到new.hex文献,单击拟定完毕添加文献,单击OK退出。序号格式不统一,详见批注17(5)仿真:单击开始仿真上图要有序号。上图要有序号在进行Proteus仿真软件的调试时,在寻找元上图要有序号器件的过程中碰到了一些麻烦,在仿真元件中找不到想相应的器件,通过询问同学以及资料的查询,终于找到了所有的元件,并将其各个模块进行总和连接,连线过程中安全的通过了,但是花费了我大量的时间。在仿真软件绘制原理图的过程并没有出现很大的错误,重要就是花费了较长的时间寻找元件盒电路的连线上。上图要有序号在调试过程中,发现在设立第一个闹钟的时候,出现了一个问题,例如现在的时间是08:27,设立的闹钟时间是08:30,仿真运营开始,闹钟在08:28,08:29的时候都会响铃,当到达闹钟时间响铃结束后,不会再警报,出现正常,这个重要的调试方法在程序的调试中解决。当解决完这个问题,重新将程序烧到单片机,又出现一个问题,时间不走了,当时怀疑DS1302定期芯片出现问题,于是用万用表对其电路进行检测,,也没有发现什么问题,一切都很正常,最后没办法就将DS1302芯片拆下来,重新将芯片安装,在进行仿真的时候,时间终于走了,但又迎来了一个问题,第一个定的闹钟没有想,于是在程序中再次检查,找到了因素,终于都没有问题,智能数字闹钟的电路可以运营,完全的实现所规定的功能。Keilµvision4的调试系统的软件开发环境是Keilµvision4,具体程序编写调试的环节如下:在菜单Project中选择NewProject,设立文献夹,保存文献名,在弹出的对话框中选择Atmel公司的AT89C51单片机。在File菜单中选择New,在弹出的对话框中编辑所需C语言程序【4】。程序初步完毕后,点击保存,并设立文献名为***.c。用鼠标右键单击Soµrcegroµp1选择AddFilesGroµp‘Soµrcegroµp1’,关闭窗口,程序中命令字符变成绿色。4、你的一级标题用的是1.2.3.4.等,二级标题用的是(1)(2)(3)这里与上一段不符编辑链接,拟定程序无误后,用鼠标点击OptionsforTarget,在Target菜单中设立晶振为12MHz,在Oµtpµt中添加CreateHexFi选项,输出Hex文献。如图5.1所示。你的一级标题用的是1.2.3.4.等,二级标题用的是(1)(2)(3)这里与上一段不符图5.1程序调试确认无误后,打开PROTEUS仿真软件,画出所设计的电路图,检查电路,在电路无误后导入Keilµvision4软件生成的HEX文献,点击运营,这时就可以在PROTEUS仿真软件中进行仿真了。在编译调试完毕后,可以通过编程器,就可以将所编译的对的程序写入到AT89C51单片机中了,软件安装调试结束。程序的编写重要有4个大模块:主程序的编写、定期DS1302模块的编写、温度采集DS18B20模块的编写以及1602LCD显示模块的编写。主程序对各个模块进行初始化,对各模块进行定义,同时对三个闹钟时间的设立进行了具体的编写;定期模块重要是对时钟的读写,以及工作方式的编写;温度模块编写该模块如何读字节,写字节以及温度的读取;显示模块是编写如何接受日期、时间、温度、三个闹钟时间的数据并在显示屏中显示。程序的编写调试中重要是温度采集模块的编写,在大学四年的学习中并没有学习过该方面的知识,编写此部分程序的时候最感到吃力,有点不知道从哪里着手。通过图书馆资料的查找,以及在老师的讲解和同学的帮助下,此段程序才慢慢的形成,通过不断的编译找到错误,再到及时修改,如此反复进行,终于将此模块程序运营正常。做液晶主界面(涉及显示时间,日期,星期,温度)时,必须每一步进行调试,烧程序到单片机,花了很长时间,这个过程非常烦琐。

在编写DS1302模块的时候,现了好多问题,读和写都不行,结果发现是硬件焊接错了,通过调整,对底层函数进行了相应修改,最后终于完毕,幸好有同学和老师的帮忙。

在调试过程中,发现在设立第一个闹钟的时候,出现了一个问题,例如现在的时间是08:27,设立的闹钟时间是08:30,仿真运营开始,接下来的过程中重要出现了两个问题,一是在未到第一个闹钟时间前,没过一分钟就会警报,直到闹钟时间过,电路又出现正常;二是到第一个设立的闹钟时间,蜂鸣器没有鸣响。通过对程序的反复检查以及同学的帮忙,在这设立闹钟的那段程序中找到了因素,通过修改,在仿真的时候终于显示正常。总结与展望在四年大学的学习过程中,毕业设计是最后但是又最重要一个的环节,是我们步入社会参与实际项目的一个开端,是对我们在大学时期学习情况的一次大检阅。系统的设计重要涉及单片机、实时时钟芯片的选取,按键电路、温度采集电路和显示电路的设计,以及各芯片与单片机接口电路的设计。本次智能数字闹钟的设计,重要有三方面的工作:智能数字闹钟原理图的绘制,要熟悉并掌握每个芯片的引脚功能、内部结构以及各芯片的控制规定和形式,同时要掌握Proteus仿真软件,学会如何在这个仿真软件中画图,对个工具的使用要非常的纯熟。程序的编写,要对各个模块的原理和流程图整理清楚,知道如何对各模块的编写。通过复习C语言,要掌握C语言的运用并能将之在程序中编写。最后还要对Ke

温馨提示

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

评论

0/150

提交评论