版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
./基于51单片机和lcd1602的万年历设计.基于单片机的万年历设计摘要古人依靠日冕、漏刻记录时间,而随着科技的发展,电子万年历已经成为日渐流行的日常计时工具。本文研究的万年历系统拟用STC89C52单片机控制,以DS1302时钟芯片计时、DS18B20采集温度、1602液晶屏显示。系统主要由温度传感器电路,单片机控制电路,显示电路以及校正电路四个模块组成。本文阐述了系统的硬件工作原理,所应用的各个接口模块的功能以及其工作过程,论证了设计方案理论的可行性。系统程序采用C语言编写,经Keil软件进行调试后在Proteus软件中进行仿真,可以显示年、月、日、星期、时、分、秒和温度并具有校准功能和与即时时间同步的功能。实验结果表明此万年历实现后具有读取方便、显示直观、功能多样、电路简洁等诸多优点,符合电子仪器仪表的发展趋势,具有广阔的市场前景。关键词:万年历单片机仿真TheCalendarofDesignbasedonSingleChipAbstractAncientrelyoncorona,Loukerecordingtime.Theelectroniccalendarhasbecomethepopulartoolforthedailytiming.asthedevelopmentoftechnology.Inthecalendarsystem,theSTC89C52isusedtocontrol,withtheDS1302clockchiptiming,DS18B20collectingtemperature,1602LCDDisplaying.Thesystemiscomposedoffourmodules:thetemperaturesensorcircuit,theMCUcontrolcircuit,thedisplaycircuitandthecorrectioncircuit.Thispaperdescribesthehardwareworks,thefunctionsofeachinterfacemoduleanditsworkingprocess,demonstratesdesigntheoryisFeasibility..Clanguageisusedtoprogram,afterdebuggingintheKeilsoftware,thensimulatingintheProteus.Theelectroniccalendarcandisplayyear,month,day,week,hours,minutes,seconds,temperature,andhascalibrationfeaturesandfunctionalitywithrealtimesynchronization.Theresultsshowthatthiscalendariseasytoread,intuitivedisplay,versatile,simplecircuits,andmanyotheradvantages,Thedesignmeetsthedevelopmenttrendofelectronicinstrumentsandmeters,andhasbroadmarketprospects.Keywords:Calendar;MCU;simulation目录第一章绪论11.1课题研究的意义11.2本课题主要的研究工作1研究容1论文章节安排21.3本章小结2第二章单片机的概述32.1单片机的定义和特点3单片机的定义3单片机的特点32.2单片机的发展现状和趋势4单片机的发展现状4单片机的发展趋势52.3编程语言的选择52.4本章小结6第三章设计要求和方案论证73.1设计要求73.2单片机芯片的选择方案和论证73.3显示模块选择方案和论证73.4时钟芯片的选择方案和论证83.5温度传感器的选择方案与论证83.6电路设计最终方案决定93.7本章小结9第四章系统的硬件设计与实现104.1电路设计框图104.2系统硬件概述104.3主要单元电路的设计114.3.1STC89C52单片机简介114.3.2单片机主控制模块的设计134.3.3时钟电路模块的设计154.3.4温度传感器电路设计164.3.5独立式键盘设计194.3.6显示模块的设计194.4本章小结21第五章系统的软件设计225.1程序流程图22系统总流程图225.1.2温度程序流程图23时钟程序流程图245.1.4液晶显示程序流程图…………………255.2程序的设计265.2.1DS18B20测温程序26读写DS1302程序27液晶显示程序295.3本章小结29第六章仿真与调试306.1软件简介306.1.1Keil软件简介306.1.2ProteusISIS简介306.2Keil软件调试流程316.3Proteus软件运行流程336.4万年历的功能仿真356.5硬件调试结果356.6本章小结39第七章总结与展望40参考文献41附录一:系统电路图42附录二:系统PCB板43附录三:系统程序……………………...44致57.第一章绪论1.1课题研究的意义万年历是我国古代传说中最古老的一部太阳历。为纪念历法编撰者万年功绩,便将这部历法命名为"万年历"。而现在所使用的万年历,实际上就是记录一定时间围〔比如100年或更多的具体阳历或阴历的日期的年历,方便有需要的人查询使用,与原始历法并无直接联系。而随着微电子技术的高速发展,人类用于计时的工具也在不断发展更新,单片机技术的出现使得万年历有了新的发展方向。单片机以其体积小、功能全、性价比高等诸多优点,在工业控制、家用电器、通信设备、信息处理、尖端武器等各种测控领域的应用中独占鳌头,单片机开发技术已成为电子信息、电气、通信、自动化、机电一体化等专业技术人员必须掌握的技术。目前世界上单片机年产量已达十多亿片,通常是当年微处理器产量的4-5倍以上。用最少的芯片就能实现最强大的功能,这是将来电子产品的主流方向,它将无可置疑地一步步取代其它同类产品,其数量之大和应用面之广,是其它任何类型的计算机所无法比拟的。以基于单片机的万年历作为设计的课题,因为它有很好的开放性和可发挥性,对作者的要求比较高,不仅考察了对单片机的掌握能力而且强调了对单片机扩展的应用。另外液晶显示的万年历已经越来越流行,特别适合在家庭居室、办公室、大厅、会议室、车站和广场等地方使用,它具有显示清晰直观、走时准确、可以进行夜视等功能,并且还可以扩展出其它多种功能。所以,电子万年历作为设计课题很有价值。1.2本课题主要的研究工作本论文主要研究基于单片机的万年历设计。当程序执行后,LCD显示即时时间、年月日、星期、温度。设置3个操作键:K1:设置键;K2:上调键;K3:下调键。本设计的主要容:1、了解单片机技术的发展现状,熟悉万年历各模块的工作原理;2、选择适当的芯片和元器件,确定系统电路,绘制电路原理图,尤其是各接口电路;3、熟悉单片机使用方法和C语言的编程规则,编写出相应模块的应用程序;4、分别在各自的模块中调试出对应的功能,在Proteus软件上进行仿真。研究容设计目标:使基于STC89C52单片机的万年历实现以下四个功能:1、具有年、月、日、星期、时、分、秒等功能;2、具备年、月、日、星期、时、分、秒校准功能;3、具有与即时时间同步的功能;4、具有显示温度的功能;论文章节安排:第一章:绪论是介绍了基于STC89C52单片机的万年历研究意义,重点阐述了本课题的研究容和研究工作。第二章:单片机的概述主要阐述了单片机系统的定义以及单片机系统的发展现状和发展趋势。因为只有对单片机有了更深入的了解,才能设计出更好的单片机控制系统。本章的结尾是对单片机C语言编程的介绍。第三章:主要介绍了设计要求和课题器件选择的论证方案。第四章:硬件基础中主要描述了万年历的各个模块的硬件设计方案,并结合各个元器件和相应的硬件原理图进行分析,最后展示为了实现研究目标所需要的全部硬件基础。第五章:软件基础主要罗列了实现万年历各个功能的C语言程序的流程图,并分别对其进行了解释和分析,最后把各个C语言子程序在巧妙结合在一起,共同控制整个系统,也就形成了实现研究目标所需要的所有软件基础。第六章:主要对Keil软件Proteus软件进行简单介绍,并给出了关于Proteus软件仿真调试万年历的过程。最后简要的介绍了硬件调试中的问题和解决办法。第七章:主要是对本次实验研究的总结,提出本次实验的不足之处以及相应的改进方法,以便后人继续深入研究。1.3本章小结本章是论文的绪论部分,着重介绍了万年历的研究意义。然后介绍了本文所要解决的实际问题及意义,以及要电子万年历系统要实现的功能和方法。最后简单地描述了本论文的整体框架和论文章节的安排。第二章单片机的概述目前单片机渗透到了我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及远程控制玩具、电子宠物等等,这些都离不开单片机。更不用说自动控制领域中的机器人、智能仪表、医疗器械了。单片机具有结构简单、控制功能强、可靠性高、体积小、价格低等优点,因而在许多行业都得到了广泛应用,并且在诸多领域中都发挥了无可比拟的巨大作用。2.1单片机的定义和特点单片机的定义单片机即单片微型计算机,是把中央处理器、存储器、定时/计数器、输入输出接口都集成在一块集成电路芯片上的微型计算机。与应用在个人电脑中的通用型微处理器相比,它更强调自供应〔不用外接硬件和节约成本。单片机也被称为微控制器〔Microcontroller,是因为它最早被用于工业控制领域。单片机的芯片仅由CPU的专用处理器发展而来。最早的设计理念是通过将大量外围设备和CPU集成在一个芯片中,使计算机系统更小,更容易集成进复杂的而对体积要求严格的控制设备当中。单片机的特点单片机以其卓越的性能,得到了广泛的应用,已深入到各个领域。单片机应用在检测、控制领域中,具有如下特点:1、体积小、控制功能强、成本低。因而可以方便地组装各种智能式控制设备和仪器,做到机、电、仪一体化。2、易扩展。很容易构成各种规模的应用系统,为应用系统的设计和生产带来极大方便。3、可靠性好、使用温度围宽。在各种恶劣的环境下都能可靠的工作,这是其他机种无法比拟的。4、种类多,型号全。很多单片机厂家逐年扩大适应各种需要,有针对性地推出一系列型号产品,使系统开发工程师有很大的选择余地。大部分产品有较好的兼容性,保证了已开发产品能顺利移植,较容易地使产品进行升级换代。5、低功耗。现在新型单片机的功耗越来越小,供电电压从5V降低到了3.2V,甚至1V,工作电流从mA降到µA级,工作频率从十几兆可编程到几十千赫兹。特别是很多单片机都设置了多种工作方式,这些工作方式包括等待、暂停、睡眠、空闲、节电等。6、可以采用C语言开发环境,具有友好的人机互交环境。大多数单片机都提供基于C语言开发平台,并提供大量的函数供使用,这使产品的开发周期、代码可读性、可移植性都大为提高。2.2单片机的发展现状和发展趋势单片机的发展现状单片机技术在不断的发展,它反映在部结构、功率消耗、外部电压等级以及制造工艺上。在这几方面,较为典型地说明了数字单片机的技术水平。在目前,用户对单片机的需要越来越多,但是,要求也越来越高。下面分别就这三个方面说明单片机的技术进步状况。1、部结构的进步单片机在部已集成了越来越多的部件,这些部件包括一般常用的电路,例如:定时器,比较器,A/D转换器,D/A转换器,串行通信接口,Watchdog电路,LCD控制器等。有的单片机为了构成控制网络或形成局部网,部含有局部网络控制模块CAN。例如,Infineon公司的C505C,C515C,C167CR,C167CS-32FM,81C90。因此,这类单片机十分容易构成网络。特别是在控制,系统较为复杂时,构成一个控制网络十分有用。为了能在变频控制中方便使用单片机,形成最具经济效益的嵌入式控制系统。有的单片机部设置了专门用于变频控制的脉宽调制控制电路,这些单片机有Fujitsu公司的MB89850系列、MB89860系列;Motorola公司的MC68HC08MR16、MR24等。在这些单片机中,脉宽调制电路有6个通道输出,可产生三相脉宽调制交流电压,并部含死区控制等功能。特别引人注目的是:现在有的单片机已采用所谓的三核〔TrCore结构。这是一种建立在系统级芯片〔Systemonachip概念上的结构。这种单片机由三个核组成:一个是微控制器和DSP核,一个是数据和程序存储器核,最后一个是外围专用集成电路〔ASIC。这种单片机的最大特点在于把DSP和微控制器同时做在一个片上。这是目前单片机最大的进步之一。这些单片机都是高档单片机,MCU都是32位的,而DSP采用16或32位结构,工作频率一般在60MHz以上。2、功耗、封装及电源电压的进步现在新的单片机的功耗越来越小,特别是很多单片机都设置了多种工作方式,这些工作方式包括等待,暂停,睡眠,空闲,节电等工作方式。而单片机的封装水平也大大提高,随着贴片工艺的出现,单片机也大量采用了各种合符贴片工艺的封装方式出现,以大量减少体积。在这种形势中,Microchip公司推出的8引脚的单片机特别引人注目。这是PIC12CXXX系列。它含有0.5~2K程序存储器,25~128字节数据存储器,6个I/O端口以及一个定时器,有的还含4道A/D,完全可以满足一些低档系统的应用。扩大电源电压围以及在较低电压下仍然能工作是今天单片机发展的目标之一。目前,一般单片机都可以在3.3~5.5V的条件下工作。而一些厂家,则可以生产出在2.2~6V的条件下工作的单片机。3、工艺上的进步现在的单片机基本上采用CMOS技术,但已经大多数采用了0.6um以上的光刻工艺,有个别的公司,如Motorola公司则已采用0.35um甚至是0.25um技术。这些技术的进步大提高了单片机的部密度和可靠性。单片机的发展趋势单片机在目前的发展形势下,表现出几大趋势:1、可靠性及应用越来越水平高,和互联网连接已是一种明显的走向;2、所集成的部件越来越多,NS〔美国国家半导体公司的单片机已把语音、图像部件也集成到单片机中,也就是说,单片机的意义只是在于单片集成电路,而不在于其功能了。如果从功能上讲它可以讲是万用机。原因是其部已集成上各种应用电路;3、功耗越来越低和模拟电路结合越来越多。随着半导体工艺技术的发展及系统设计水平的提高,单片机还会不断产生新的变化和进步,最终人们可能发现:单片机与微机系统之间的距离越来越小,甚至难以辨认。2.3编程语言的选择在1972年,美国贝尔实验室的D.M.Ritchie在B语言的基础上最终设计出了一种新的语言,他取了BCPL的第二个字母作为这种语言的名字,这就是C语言。在众多的程序设计语言中,C语言简洁紧凑,语言表达能力强,其结构化的流程控制有助于编制结构良好的程序。C语言程序经编译后生成的目标程序代码效率高,几乎可以与汇编语言媲美。C语言既具备高级语言使用方便、接近自然语言和数学语言的特性,同时也具备对计算机硬件系统的良好操纵和控制能力。C语言可移植性好,一个C语言源程序可以不做改动,或者稍加改动,就可以从一种型号的计算机移转到另外一种型号的计算机上编译运行。因此,C语言被广泛应用于各类系统软件和应用软件的开发。所以本系统以C语言进行软件设计,增加了程序的可读性和可移植性,便于扩展和更改,软件的设计采用模块化结构,使程序设计的逻辑关系更加简洁了。2.4本章小结本章主要介绍了单片机的定义和特点,重点描述了单片机发展现状和未来的发展趋势,最后简单地介绍了选择的编程语言。.第三章设计要求和方案论证3.1设计要求具备在液晶上显示年、月、日、星期、时、分、秒的功能;具备年、月、日、星期、时、分、秒校准功能;具有与即时时间同步的功能;具有显示温度的功能;3.2单片机芯片的选择方案和论证方案一:采用AT89S51芯片作为硬件核心,部具有4KBROM存储空间,能于3V的超低压工作,而且与MCS-51系列单片机完全兼容,但是运用于电路设计中时由于不具备ISP在线编程技术,所以在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,对芯片的多次拔插会对芯片造成一定的损坏。方案二:采用STC89C52芯片,STC89C52是一种低功耗、高性能的8位CMOS微控制器,具有8K的可编程Flash存储器。同样具有AT89S51的功能,且具有在线编程可擦除技术,当对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,不需要对芯片多次拔插,所以不会对芯片造成损坏,因此选择采用STC89C52作为主控制系统核心。3.3显示模块选择方案和论证方案一:采用LED数码管动态扫描,LED数码管价格适中,对于显示数字合适,采用动态扫描法与单片机连接时,虽然占用的单片机口线少,但连线还需要花费一点时间,所以也不用此种作为显示。方案二:采用点阵式数码管显示,点阵式数码管是由八行八列的发光二极管组成,对于显示文字比较适合,若采用在显示数字显得太浪费,且价格也相对较高,所以在此也不用此种作为显示。方案三:采用1602液晶显示屏,该液晶显示屏的显示功能强大,置192种字符,可显示大量符号、数字,清晰可见,而且功率消耗小寿命长抗干扰能力强。所以在此设计中采用1602液晶显示屏。3.4时钟芯片的选择方案和论证方案一:直接采用单片机定时计数器提供秒信号,使用程序实现年、月、日、星期、时、分、秒计数。采用此种方案虽然减少芯片的使用,节约成本,但是,实现的时间误差较大,所以不采用此方案。方案二:采用DS1302时钟芯片实现时钟,DS1302芯片是一种高性能的时钟芯片,可自动对秒、分、时、日、周、月、年进行计数,而且精度高,位的RAM做为数据暂存区,工作电压2.5V~5.5V围,2.5V时耗电小于300nA。所以本设计采用DS1302时钟芯片。3.5温度传感器的选择方案与论证方案一:使用热敏电阻作为传感器,用热敏电阻与一个相应阻值电阻相串联分压,利用热敏电阻阻值随温度变化而变化的特性,采集这两个电阻变化的分压值,并进行A/D转换。此设计方案需用A/D转换电路,增加硬件成本而且热敏电阻的感温特性曲线并不是严格线性的,会产生较大的测量误差。方案二:采用数字式温度传感器DS18B20,此类传感器为数字式传感器而且仅需要一条数据线进行数据传输,易于与单片机连接,可以去除A/D模块,降低硬件成本,简化系统电路。另外,数字式温度传感器还具有测量精度高、测量围广等优点。因此本设计选用DS18B20温度传感器。3.6电路设计最终方案决定综上各方案所述,对此次作品的方案选定:采用STC89C52作为主控制芯片,DS1302时钟芯片计时,DS18B20采集温度,LCD1602作为显示模块。3.7本章小结本章主要介绍了系统要实现的功能和万年历系统硬件平台的选择,比较了主控模块,时钟模块,显示模块,温度采集模块中不同器件的优劣,最后确定了电路设计的整体方案。这也是完成设计的先决条件。第四章系统的硬件设计与实现4.1电路设计框图根据上章确定的方案给出了系统整体的设计框图:图4.1系统结构框图为使时钟走时与标准时间一致,校时电路是必不可少的,键盘模块用来校正液晶上显示的时间;温度传感器则用来检测当前的环境温度;STC89C52单片机通过输出各种电脉冲信号来驱动控制各部分正常工作;而系统的时间、温度等数据则最终通过液晶模块显示出来。4.2系统硬件概述本电路是以STC89C52单片机为控制核心,该芯片具有在线编程功能,功耗低,能在3.3V的超低压下工作;时钟芯片采用DS1302,它是一款高性能、低功耗、自带RAM的实时时钟芯片,具有使用寿命长,精度高和功耗低等特点,同时具有掉电自动保存功能,可以对年、月、日、星期、时、分、秒进行计时,具有闰年补偿功能,其工作电压为2.5V~5.5V;温度检测模块由DS18B20构成,它采用独特的单线接口仅需一个端口引脚进行通讯,具有测量精度高、测量围广等优点,其测温围在-55~+125℃,工作电压为3v~5.5v;显示部份使用1602液晶显示屏来实现,该显示屏具有低功耗、寿命长、可靠性高的特点,其工作电压为5v。4.3主要单元电路的设计4.3.1STC89C52单片机简介STC89C52是一种低功耗、高性能的8位CMOS微控制器,具有8K的可编程Flash存储器。使用高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8位CPU和在线系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。STC89C52具有以下标准功能:8K字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片晶振及时钟电路。另外,STC89C52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。引脚排列如图2.1所示。图2.1STC89C52引脚图从引脚功能来看,可将引脚分为三部分:1、电源及时钟引脚VCC:接+5V电源;VSS:接地;XTAL1和XTAL2:时钟引脚,外接晶体引线端。当使用芯片部时钟时,此两引脚端用于外接石英晶体和微调电容;当使用外部时钟时,用于接外部时钟脉冲信号。2、控制引脚RST/VPT:RST是复位信号输入端,VPT是备用电源输入端。当RST输入端保持2个机器周期以上高电平时,单片机完成复位初始化操作。当主电源VCC发生故障而突然下降到一定低电压或断电时,第2功能VPT将为片RAM提供电源以保护片RAM中的信息不丢失。ALE/PROG:地址锁存允许信号输出端。在存取外存储器时,用于锁存低8位地址信号。当单片机正常工作后,ALE端就会周期性地以时钟振荡频率的1/6固定频率向外输出正脉冲信号。此引脚的第2功能PROG是对片带有4K字节EPROM的8751固化程序时,作为编程脉冲输入端。PSEN:程序存储允许输出端。是片外程序存储器的读选通信号,低电平有效。CPU从外部程序存储器取指令时,PSEN信号会自动产生负脉冲,作为外部程序存储器的选通信号。EA/VPP:程序存储器地址允许输入端。当EA为高电平时,CPU执行片程序存储器指令,但当PC中的值超过0FFFFH时,将自动转向执行片外程序存储器指令;当EA为低电平时,CPU只执行片外程序存储器指令。对8031单片机,EA必须接低电平。在8751中,当对片EPROM编程时,该端接21V的编程电压。3、I/O口引脚P0.0~P0.7:P0口是一个8位漏极开路的双向I/O口。作为输出口,每位能驱动8个TTL逻辑电平。对P0端口写"1”时,引脚用作高阻抗输入。当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。P1.0~P1.7:P1口是一个具有部上拉电阻的8位双向I/O口。作为输出口,每位能驱动4个TTL逻辑电平。此外,P1.0和P1.2分别作定时器/计数器2的外部计数输入〔P1.0/T2和时器/计数器2的触发输入〔P1.1/T2EX。在flash编程和校验时,P1口接收低8位地址字节。P2.0~P2.7:P2口是一个具有部上拉电阻的8位双向I/O口。作为输出口,每位能驱动4个TTL逻辑电平。在访问外部程序存储器或用16位地址读取外部数据存储器时,P2口送出高八位地址。在使用8位地址访问外部数据存储器时,P2口输出P2锁存器的容。在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。P3.0~P3.7:P3口是一个具有部上拉电阻的8位双向I/O口。作为输出口,每位能驱动4个TTL逻辑电平。P3口亦作为STC89C52特殊功能〔第二功能使用。在flash编程和校验时,P3口也接收一些控制信号。4.3.2单片机主控制模块的设计本设计中单片机主要负责对外设的控制和各个功能模块间的协调,没有复杂的数据计算,因此,8位的51系列单片机足以胜任。51单片机以其低廉的价格以及较出色的性能成了很多控制系统的首选。它具有丰富的部资源,较大的数据、程序存储区。一个典型的单片机最小系统一般由时钟电路、复位电路、电源指示灯和外部扩展接口等部分组成,本系统也不例外,当单片机具备了这些最基本的条件后,就可以正常工作了。单片机的最小系统如图4.2所示,单片机的XTAL0和XTAL1引脚用于连接晶振电路。XTAL0接外部晶振和微调电容的一端,在片它是振荡器倒相放大器的输入,XTAL1接外部晶振和微调电容的另一端,在片它是振荡器倒相放大器的输出。RESET为复位引脚,连接复位电路,它用于对单片机进行初始化。复位电路包括复位电容〔C6、复位电阻〔R3和复位开关〔S4。VSS为电源地,VCC为电源正。图4.2单片机最小系统单片机最小系统复位、晶振电路简介1、复位电路的设计复位电路是使单片机的CPU或系统中的其他部件处于某一确定的初始状态,并从这上状态开始工作。〔1单片机常见的复位电路通常单片机复位电路有两种:上电复位电路,按键复位电路。上电复位电路:上电复位是单片机上电时复位操作,保证单片机上电后立即进入规定的复位状态。它利用的是电容充电的原理来实现的。按键复位电路:它不仅具有上电复位电路的功能,同时它的操作比上电复位电路的操作要简单的多。如果要实现复位的话,只要按下RESET键即可。它主要是利用电阻的分压来实现的在此设计中,采用的按键复位电路。按键复位电路如图4.3所示。图4.3复位电路〔2复位电路工作原理上电复位要求接通电源后,单片机自动实现复位操作。上电瞬间RESET引脚获得高电平,随着电容的充电,RERST引脚的高电平将逐渐下降。RERST引脚的高电平只要能保持足够的时间〔2个机器周期,单片机就可以进行复位操作。上电与按键均有效的复位电路不仅在上电时可以自动复位,而且在单片机运行期间,利用按键也可以完成复位操作2、晶振电路的设计晶振电路用于产生单片机工作所需要的时钟信号,而时序所研究的是指令执行中各信号之间的相互关系。单片机本身就如一个复杂的同步时序电路,为了保证同步工作方式的实现,电路应在唯一的时钟信号控制下严格地工作。通常在引脚XTALl和XTAL2跨接石英晶体和两个补偿电容构成自激振荡器,如图4.4中Y1、C1、C2。可以根据情况选择6MHz、12MHz或24MHz等频率的石英晶体,补偿电容通常选择30pF左右的瓷片电容。图4.4时钟振荡电路4.3.3时钟电路模块的设计DS1302是DALLAS公司推出的涓流充电时钟芯片,含有一个实时时钟/日历和31字节静态RAM,通过简单的串行接口与单片机进行通信。图4.5所示为DS1302的引脚排列,其中VCC1为后备电源,VCC2为主电源。DS1302由VCC1或VCC2两者中的较大者供电。所以在主电源关闭的情况下,也能保持时钟的连续运行。X1和X2是振荡源,外接32.768KHz晶振用来为芯片提供计时脉冲。RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。RST输入有两种功能:首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据的传送手段。当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。上电行动时,在VCC大于等于2.5V之前,RST必须保持低电平。在SCLK为低电平时,才能将RST置为高电平,I/O为串行数据输入端〔双向。SCLK始终是输入端。图4.5DS1302的硬件接线图时钟芯片DS1302的工作原理:<1>DS1302的控制字节DS1302控制字节的高有效位〔位7必须是逻辑1,如果它为0,则不能把数据写入DS1302中,位6如果0,则表示存取日历时钟数据,为1表示存取RAM数据;位5至位1指示操作单元的地址;最低有效位〔位0如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出<2>数据输入输出〔I/O在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0开始。同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位到高位7。<3>DS1302的寄存器DS1302有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式。"CH"是时钟暂停标志位,当该位为1时,时钟振荡器停止,DS1302处于低功耗状态;当该位为0时,时钟开始运行。"WP"是写保护位,在任何的对时钟和RAM的写操作之前,"WP"必须为0。当"WP"为1时,写保护位防止对任一寄存器的写操作。此外,DS1302还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM相关的寄存器等。时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器容。DS1302与RAM相关的寄存器分为两类:一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0H~FDH,其中奇数为读操作,偶数为写操作;另一类为突发方式下的RAM寄存器,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH<写>、FFH<读>。4.3.4温度传感器电路设计数字温度传感器DS18B20是由Dalles半导体公司生产的,它具有耐磨耐碰,体积小,使用方便,封装形式多样〔如图4.6,适用于各种狭小空间设备数字测温和控制领域。图4.6DS18B20的两种封装1、DS18B20的主要特性〔1适应电压围更宽,电压围:3.0~5.5V,在寄生电源方式下可由数据线供电。〔2独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。〔3DS18B20支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测温。〔4DS18B20在使用中不需要任何外围元件,全部传感元件及转换电路集成在形如一只三极管的集成电路。〔5温围-55℃~+125℃,在-10~+85℃时精度为±〔6可编程的分辨率为9~12位,对应的可分辨温度分别为0.5℃、0.25℃、0.125℃和〔7在9位分辨率时最多在93.75ms把温度转换为数字,12位分辨率时最多在750ms把温度值转换为数字,速度更快。〔8测量结果直接输出数字温度信号,以"一线总线"串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力。〔9负压特性:电源极性接反时,芯片不会因发热而烧毁,但不能正常工作。2、DS18B20的部结构DS18B20部结构主要由四部分组成:64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器〔如图4.7。图4.7DS18B20的部结构组成DS18B20的供电方式有两种:寄生电源供电方式和外部电源供电方式。本设计采用外部电源供电方式〔如图4.8,DS18B20工作电源由VDD引脚接入,此时I/O线不需要强上拉,不存在电源电流不足的问题,可以保证转换精度。外部电源供电方式是DS18B20最佳的工作方式,工作稳定可靠,抗干扰能力强,而且电路也比较简单,可以开发出稳定可靠的多点温度监控系统。图4.8DS18B20引脚接线引脚说明:GND为接地引脚;DQ为数据输入输出脚。用于单线操作,漏极开路;VCC接电源正;4.3.5独立式键盘设计实现键盘控制的方法有多种,它可以用FPGA来进行控制,也可以用单片机来进行控制。在本系统中,我们采用了单片机来进行控制,因为单片机可以很好的解决键抖动。由若干个按键组成一个键盘,其电路结构可分为独立式键盘和矩阵式键盘两种。独立式键盘每个键单独占用一根I/O口线,每根I/O口线上的按键工作状态不会影响其他I/O口线上的状态,矩阵式键盘按键排列为行列式矩阵结构,也称行列式键盘结构。4行4列共16个键,只占用8根I/O口线,键数目较多,可节省口线。本设计采用的是独立式键盘。键盘的工作方式可分为编程控制方式和中断控制方式。CPU在一个工作周期,利用完成其他任务的空余时间,调用键盘扫描子程序,经程序查询,若无键操作,则返回;若有键操作,则进而判断是哪个键,并执行相应的键处理程序。这种方式为编程扫描方式。由于单片机在正常应用过程中,可能会经常进行键操作,因而编程控制方式使CPU经常处于工作状态,在进行本次设计中,只涉及到了设置、上调、下调三个功能。因此采用独立式键盘。如下图所示:图4.9按键的设计显示模块的设计本设计中由于要对时间、温度进行显示,所以选择液晶显示屏1602模块作为输出。1602字符型LCD通常有14条引脚线或16条引脚线的LCD,多出来的2条线是背光电源线。它可以显示两行,每行16个字符,采用单+5V电源供电,外围电路配置简单,价格便宜,具有很高的性价比。1602液晶模块部的字符发生存储器〔CGROM>已经存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母"A"的代码是01000001B〔41H,显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母"A"。管脚功能如表4-1所示:表4-1LCD1602引脚功能引脚符号功能说明1VSS一般接地2VDD接电源〔+5V3V0液晶显示器对比度调整端。4RSRS为寄存器选择。5R/WR/W为读写信号线。6EE<或EN>端为使能<enable>端,下降沿使能。7DB0底4位三态、双向数据总线0位〔最低位8DB1底4位三态、双向数据总线1位9DB2底4位三态、双向数据总线2位10DB3底4位三态、双向数据总线3位11DB4高4位三态、双向数据总线4位12DB5高4位三态、双向数据总线5位13DB6高4位三态、双向数据总线6位14DB7高4位三态、双向数据总线7位〔最高位LCD1602主要管脚介绍:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生鬼影使用时可以通过一个10K的电位器调整对比度。RS为寄存器选择端,高电平时选择数据寄存器,低电平时选择指令寄存器。R/W为读写信号线端,高电平时进行读操作,低电平时进行写操作。当RS和R/W共同为低电平时可以写入指令或者显示地址;当RS为高电平R/W为低电平时可以写入数据。E为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。将L1602的RS端和P2.0,R/W端和P2.1,E端和P2.2相连,当RS=0时,对LCD1602写入指令;当RS=1时,对LCD1602写入数据。当R/W端接高电平时芯片处于读数据状态,反之处于写数据状态,E端为使能信号端。当R/W为高电平,E端也为高电平,RS为低电平时,液晶显示屏显示需要显示的示数。图4.10为1602液晶显示屏与单片机的硬件连接图。图4.10LCD液晶与单片机硬件连线图4.4本章小结本章主要介绍了系统硬件设计,其中对时钟芯片DS1302、1602液晶显示屏、DS18B20温度传感器和STC89C52最小系统的设计做了详细阐述。此外还介绍了各模块和单片机的连接方法、其特性及电路原理,最后确定系统的整体硬件设计方案。.第五章系统的软件设计5.1程序流程图系统总流程图系统总流程图如图5.1所示。流程图分析:首先系统初始化,系统开始运行,当有设置键按下时进入修改时间模式,无按键按下时读取时间、温度等数据送入液晶屏显示;在修改时间模式下设置时间完成后再送数据到液晶屏显示。图5.1系统总流程图温度程序流程图温度读取流程图如图5.2所示。流程图分析:开始进入初始化DS18B20,就是通过主机拉低单线产生复位脉冲然后释放该线,如果有应答脉冲,即发起ROM命令当成功的执行操作命令后,就使用ConvertT命令即开始温度转换,当转换完后,又初始化DS18B20是否有应答脉冲,若有,就发起ReadScratchpad〔读取暂存器和CRC字节命令,既同时读出第1,2个字节,即为温度的数据。图5.2温度显示流程图DS1302时钟程序流程图时钟流程图如图5.3所示。流程图分析:DS1302开始计时时,首先进行初始化,当有中断信号时,读取时钟芯片的数据送入液晶屏显示。这时若有设置键按下时,进行时间修改,完成后将数据送入时钟芯片;若没有按键按下,则直接存入EPROM,送入液晶屏显示。图5.3时钟流程图LCD显示程序流程图显示程序流程图如图5.4。流程图分析:首先对1602显示屏进行初始化〔初始化大约持续10ms左右,然后检查忙信号,若BF=0,则获得显示RAM的地址,写入相应的数据显示;若BF=1,则代表模块正在进行部操作,不接受任何外部指令和数据,直到BF=0为止。图5.4LCD显示程序流程图5.2程序的设计DS18B20测温程序DS18B20是一种单总线数字式温度传感器,它与单片机之间采用的是串行数据传送,所以在对DS18B20进行读写操作时必须按照它的时序进行。一般访问DS18B20时按如下步骤进行:初始化;ROM操作命令;存储器操作命令;执行/数据。部分源程序如下:ReadOneChar<void> { unsignedchari=0; unsignedchardat=0;for<i=8;i>0;i--> { DQ=1; DS18_delay<1>; DQ=0; dat>>=1;//复合赋值运算,等效dat=dat>>1 DQ=1; if<DQ> dat|=0x80; DS18_delay<4>; }return<dat>;}WriteOneChar<unsignedchardat>//有参函数,功能是"写",而写的容就是括号的参数{ unsignedchari=0; for<i=8;i>0;i--> { DQ=0; DQ=dat&0x01; DS18_delay<5>; DQ=1; dat>>=1;//复合赋值运算,等效dat=dat>>1<dat=dat右移一位后的值> } DS18_delay<4>;}unsignedintReadTemperature<void>{ Init_DS18B20<>; //初始化,调用初始化函数 WriteOneChar<0xcc>; //跳过读序列号的操作,调用写函数,写0xcc指令码 WriteOneChar<0x44>; //启动温度转换,调用写函数,写0x44指令码 DS18_delay<125>; //转换需要一点时间,延时 Init_DS18B20<>; //初始化,调用初始化函数 WriteOneChar<0xcc>; //跳过读序列号的操作,调用写函数,写0xcc指令码 WriteOneChar<0xbe>; //调用写函数,写0xbe指令码,读温度寄存器 tempL=ReadOneChar<>; //读出温度的低位LSB tempH=ReadOneChar<>; //读出温度的高位MSB tempa=<<tempH*256>+tempL>*0.0625;//温度转换DS18_delay<20>;return<tempa>;//运算结果返回到函数:ReadTemperature<>}DS1302读写程序DS1302是SPI总线驱动方式。它不仅要向寄存器写入控制字,还需要读取相应寄存器的数据。要想与DS1302通信,首先要先了解DS1302的控制字。DS1302的控制字如图5.5所示。图5.5DS1302的控制字控制字总是从最低位开始输出。在控制字指令输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从最低位〔0位开始。同样,在紧跟8位的控制字指令后的下一个SCLK脉冲的下降沿,读出DS1302的数据,读出的数据也是从最低位到最高位。数据读写时序如图5.6、5.7所示。图5.6单字节读图5.7单字节写在进行任何数据传输时,RST必须被置高电平,每个SCLK为上升沿时数据被输入,下降沿时数据被输出。先把RST置低,禁止数据传输,SCLK置低,清零时钟总线,RST再置高,允许数据传输。传送完成后,RST置低,禁止字节的传送。部分源程序如下:voidwrite_byte<uchardat>//写一个字节{ ACC=dat; RST=1; for<a=8;a>0;a--> { IO=ACC0; SCLK=0; SCLK=1; ACC=ACC>>1; }}ucharread_byte<>//读一个字节{ RST=1; for<a=8;a>0;a--> { ACC7=IO; SCLK=1; SCLK=0; ACC=ACC>>1; } return<ACC>;}voidwrite_1302<ucharadd,uchardat>//向1302芯片写函数,指定写入地址,数据{ RST=0; SCLK=0; RST=1; write_byte<add>; write_byte<dat>; SCLK=1; RST=0;}ucharread_1302<ucharadd>//从1302读数据函数,指定读取数据来源地址{ uchartemp; RST=0; SCLK=0; RST=1; write_byte<add>; temp=read_byte<>; SCLK=1; RST=0; return<temp>;}液晶显示程序1602通过D0~D7的8位数据端传输数据和指令,其模块的控制器有11条控制指令。当液晶显示屏的接口电路与单片机系统I/O按照并行数据传输方式连接完成以后,即可以对STC89C52单片机进行编程。在液晶屏完成显示之前首先要对液晶进行初始化。源程序如下:lcd_init<>//***液晶初始化函数****{ write_1602com<0x38>;//设置液晶工作模式,意思:16*2行显示,5*7点阵,8位数据 write_1602com<0x0c>;//开显示不显示光标 write_1602com<0x06>;//整屏不移动,光标自动右移 write_1602com<0x01>;//清显示 write_1602com<yh+1>;//日历显示固定符号从第一行第1个位置之后开始显示 for<a=0;a<14;a++> { write_1602dat<tab1[a]>;//向液晶屏写日历显示的固定符号部分 //delay<3>; } write_1602com<er+2>;//时间显示固定符号写入位置,从第2个位置后开始显示 for<a=0;a<8;a++> { write_1602dat<tab2[a]>;//写显示时间固定符号,两个冒号 //delay<3>; }}5.3本章小结本章对基于单片机的万年历系统软件模块进行设计,先对该系统进行了整体流程的设计,给出了设计的流程图,随后介绍了各模块的子程序。对一些模块常用的函数进行了解释,这一切都构成了这个系统的软件基础。.第六章仿真与调试6.1软件简介6.1.1Keil软件简介KeilC51是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统。这款软件提供了丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的是,KeilC51软件编译后生成的汇编代码,就能展现出生成的目标代码效率非常高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。Keil软件中uVision与Ishell分别是C51forWindows和forDos的集成开发环境<IDE>,可以完成编辑、编译、连接、调试、仿真等整个开发流程。开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。然后分别由C51及A51编译器编译生成目标文件<.OBJ>。目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件<.ABS>。ABS文件由OH51转换成标准的Hex文件,可载入Proteus仿真软件中的MCU中,进行功能仿真。Keil使用"工程"〔Project的概念,对工程〔而不能对单一的源程序进行编译/汇编、连接等操作。工程的建立、设置、编译/汇编及连接产生目标文件的方法非常易于掌握。应用Keil进行软件仿真开发的主要步骤为:1.编写源程序并保存;2.建立工程并添加源文件;3.设置工程;4.编译/汇编、连接,产生目标文件;5.程序调试。6.1.2ProteusISIS简介ProteusISIS是英国LabcenterElectronics公司开发的电路分析与实物仿真软件。它由ISIS和ARES两个软件构成,其中ISIS是一款便捷的电子系统仿真平台软件,它运行于Windows操作系统上,用户可以对模拟电路、数字电路、模数混合电路,以及基于微控制器的系统连同所有外围接口电子元器件一起仿真。该软件的特点是:〔1全部满足我们提出的单片机软件仿真系统的标准,并在同类产品中具有明显的优势。〔2具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS-232动态仿真、I2C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。〔3目前支持的单片机类型有:ARM7系列、68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各种外围芯片。〔4支持大量的存储器和外围芯片。总之,该软件是一款集单片机和SPICE分析于一身的仿真软件,功能极其强大,可仿真ARM、51、AVR、PIC。Proteus启动画面:此外,ARES软件是一款高级的布线编辑软件,它采用了32位数据库的高性能PCB设计系统,以及高性能的自动布局和自动布线方法。集成了高级原理布线图、混合模式SPICE电路仿真、PCB设计以及自动布线来实现一个完整的电子设计。6.2Keil软件调试流程首先选择菜单File-New…,在源程序编辑器中输入汇编语言或C语言源程序〔或选择File-Open…,直接打开已用其它编辑器编辑好的源程序文档并保存,注意保存时必须在文件名后加上扩展名.asm〔.a51或.c。然后选择菜单Project-NewProject…,建立新工程并保存〔保存时无需加扩展名,也可加上扩展名.uv2,工程保存后会立即弹出一个设备选择对话框,选择CPU后点确定返回主界面。如图6.1图6.1为项目选择CPU器件这时工程管理窗口的文件页〔Files会出现"Target1",将其前面+号展开,接着选择SourceGroup1,右击鼠标弹出快捷菜单,选择"AddFiletoGroup‘SourceGroup1’",出现一个对话框,要求寻找并加入源文件〔在加入一个源文件后,该对话框不会消失,而是等待继续加入其它文件。加入文件后点close返回主界面,展开"SourceGroup1”紧接着对工程进行设置,选择工程管理窗口的Target1,再选择Project-OptionforTarget‘Target1’〔或点右键弹出快捷菜单再选择该选项,打开工程属性设置对话框,共有8个选项卡,主要设置工作包括在Target选项卡中设置晶振频率、在Debug选项卡中设置实验仿真板等,如果要写片,还必须在Output选项卡中选中"CreatHexFi"〔如图6.2;其它选项卡容一般可取默认值。工程设置后按F7键〔或点击编译工具栏上相应图标进行编译/汇编、连接以及产生目标文件。图6.2生成HEX文件成功编译/汇编、连接后,选择菜单Debug-Start/StopDebugSession〔或按Ctrl+F5键进入程序调试状态〔如图6.3,Keil提供对程序的模拟调试功能,建一个功能强大的仿真CPU以模拟执行程序。Keil能以单步执行〔按F11或选择Debug-Step、过程单步执行〔按F10或选择Debug-StepOver、全速执行等多种运行方式进行程序调试。图6.3仿真调试状态窗口如果发现程序有错,可采用在线汇编功能对程序进行在线修改〔Debug-InlineAssambly…,不必执行先退出调试环境、修改源程序、对工程重新进行编译/汇编和连接、然后再次进入调试状态的步骤。对于一些必须满足一定条件〔如按键被按下等才能被执行的、难以用单步执行方式进行调试的程序行,可采用断点设置的方法处理〔Debug-Insert/RemoveBreakpoint或Debug-Breakpoints…等。在模拟调试程序后,还须通过编程器将.hex目标文件烧写入单片机中才能观察目标样机真实的运行状况。Keil软件由于其强大的软件仿真功能,友好的用户界面以及易于掌握的特点,应用此软件来编写程序有着巨大的优势,熟悉此软件也是调试整个万年历系统的基础。6.3Proteus软件运行流程ProteusISIS的工作界面是一种标准的Windows界面,如图所示。包括:标题栏、主菜单、标准工具栏、绘图工具栏、状态栏、对象选择按钮、预览对象方位控制按钮、仿真进程控制按钮、预览窗口、对象选择器窗口、图形编辑窗口。运行Proteus程序后,进入软件的主界面〔如图6.4。通过左侧工具栏中的P<从库中选择元件命令>命令,在PickDevices左侧窗口中选择所需元件的关键字,然后放置元件并调整方向和位置以及参数设置,最后进行连线。ProteusISIS的工作界面:图6.4ProteusISIS的工作界面按P在库中查找元器件:图6.5PickDevices窗口将所需要的元器件放置好后,绘制成原理图如图6.6图6.6proteus仿真万年历的原理图6.4万年历的功能仿真模拟调试:当电路搭建好之后,选中单片机STC89C52,左键点击STC89C52,在出现的对话框里点击ProgramFile按钮,找到刚才Keil软件编译得到的HEX文件,载入然后点击"OK"按钮就可以模拟了。点击模拟调试按钮的运行按钮,进人调试状态。图6.7为运行按键:图6.7运行按键上电后后LCD显示:图6.8LCD显示调节秒钟:图6.9秒钟的调节调节分钟:图6.10分钟的调节调节时钟:图6.11时钟的调节调节星期:图6.12星期的调节调节日期:图6.13日期的调节调节月份:图6.14月份的调节调节年份:图6.15年份的调节按键功能自上而下依次为:设置键、上调键、下调键:图6.16按键的设置温度调节:图6.17温度传感器6.5硬件调试结果电子万年历的电路系统比较复杂,对于焊接方面不可轻视,只要电路系统中出于一处的错误,就会对检测造成很大的不便,而且电路的交线较多,对于各种锋利的引脚要注意处理,否则会刺破带有包皮的导线,则会对电路造成短路现象。在本次电子万年历的设计调试中遇到了很多的问题。回想这些问题只要认真多思考都是可以避免的,以下为主要的问题:〔1对万年历修改时间或日期时,有时LCD液晶显示屏被屏蔽掉,造成不亮现象。解决:根据仪器的测试,发现电路的驱动能力不足,最后在DS1302时钟芯片的/CS、SCLK、RET端接入5.1K的上拉电阻后,电路的驱动能力才能满足,即可解决不亮现象。〔2烧入程序后,LCD液晶显示屏不显示或者亮度不好。解决:不显示时首先使用万用表对电路进行测试,观察是否存在漏焊,虚焊,或者元件损坏的现象。若无此问题查看烧写的程序是否正确无误,对程序进行认真修改。当显示亮度不好时一遍旋转10K欧的滑动变阻器,一遍观看LCD显示屏,直到看到合适的亮度为止。经过多次的反复调试试与分析,可以对电路的原理及功能更加熟悉,同时提高了设计能力与及对电路的分析能力。同时在软件的编程方面得到更到的提高,对编程能力得到加强,同时对所学的知识得到很大的提高与巩固。如下为硬件实物图:图6.18万年历硬件图图6.19万年历显示6.6本章小结本节介绍了Proteus软件和keil软件,阐述了如何用Proteus结合Keil软件仿真出电子万年历功能的过程并给出了仿真系统的操作过程。最后简要的介绍了硬件调试中的问题和解决办法。.第七章总结与展望至此,关于毕业设计的所有容就介绍完了,进行这次毕业设计一切都是从零开始,从最简单查资料、了解各个元件的功能起步,再确定设计方案、画流程图、编写程序到最后进行仿真,这次课题设计可以说成功完成。系统的硬件、软件设计合理,功能完备,运行稳定、可靠。实验结果表明此万年历实现后具有读取方便、显示直观、功能多样、电路简洁、等诸多优点,符合电子仪器仪表的发展趋势,具有广阔的市场前景。在整个设计过程中,充分发挥了人的主观能动性,自主学习,学到了许多没学到的知识。程序编写中,由于思路不清晰,开始时遇到了很多的问题,经过静下心来思考查资料,和同学讨论,向老师请教,理清了思路,完成对程序的编写。通过设计提高了对单片机的认识,进一步熟悉和掌握单片机的结构及工作原理。通过实际程序设计和调试,逐步掌握模块化程序设计方法和调试技术,提高软件设计、调试能力;通过这次设计熟悉以单片机核心的应用系统开发的全过程,掌握硬件电路设计的基本方法和技术,掌握相关电路参数的计算方法。最终较好的完成了设计,达到了预期的目的,完了最初的设想。但是由于时间和个人能力的原因,整个系统看起来还是显得非常的简单,只实现了一些最基本的功能,还有许多不足和可以扩展的地方。例如实现公历和农历的转换、闹钟报时等,这些有待以后来弥补,还望各位老师予以指正和修改。.参考文献[1]和平.单片机原理与应用[M].:机械工业,2002,201-209[2]守义.单片机应用技术[M].:电子科技大学,2002,98-107[3]勇.数字电路[M].:电子工业,2004,111-118[4]康光华.电子技术基础—模拟部分[M].〔第五版高等教育.2005,247-261[5]谭浩强.C程序设计[M].〔第三版:清华大学,2005,256-278[6]周润景,丽娜,印群.PROTEUS入门实用教程[M].:机械工业,2007,314-325[7]戴佳,戴卫恒.51单片机C语言应用程序设计实例精讲[M].:电子工业,2006,231-246[8]徐爱钧,秀华.KeilCx51V7.0单片机高级语言编程与uVision2应用实践[M].〔第二版:电子工业,2008,156-171[9]肖炎根,舒望.基于实时钟芯片的电子万年历设计[J].电子技术,2007,卷号〔36:91-94[10]王怀平,王仁波,胡开明.Proteus仿真设计基于单片机AT89C51的电子万年历[J].科技广场,2008,卷号〔10:197-198[11]鲁刚强.基于液晶显示器的单片机系统设计[J].科技资讯,2008,卷号〔35:22-23[12]余威明.MCU语音型电子万年历的开发[J].工贸职业技术学院学报,2004,卷号〔4:20-25[13]邱关源.电路[M].〔第四版:高等教育,2006,241-268.[14]凯.液晶显示万年历、时间、星期及温度[D].:理工学院,2009.[15]海兵,敏.Protel电路设计实例与分析[M].:人民邮电,2005,119-205[16]黄劼,徐晓秋.单片机原理及接口技术[M].:国防工业,2008,102-112[17]迎春.MCS-51单片机原理及应用教程[M].:清华大学,2005,145-157[18]齐,朱宁西.单片机应用系统设计技术:基于C51的Proteus仿真[M].<第二版>:电子工业,2009,245-264[19]来清民.传感器与单片机接口及实例[M].:航空航天大学.2008,134-141[20]宜仁.单片机硬件接口电路及实例解析[M].:电子工业,2009,210-219[21]付浩伟,向凤红,程加堂.基于DS18B20传感器的温度数据采集系统的设计[J].理工大学信息与自动化学院,2007,卷好〔6:131-134[22]AlexandruValeanu.Interfacing8051MCUswithI2CSerialEEPROMs.[D].MicrochipTechnologyInc,2008..附录一:系统原理图附录二:系统PCB板附录三:系统程序主程序:#include"DS18B20_3.H"#defineuintunsignedint#defineucharunsignedcharuchara,miao,shi,fen,ri,yue,nian,week,flag,key1n,temp;#defineyh0x80#defineer0x80+0x40//液晶屏的与C51之间的引脚连接定义sbitrs=P2^0;sbiten=P2^2;sbitrw=P2^1;//如果硬件上rw接地,就不用写这句和后面的rw=0了sbitled=P2^6;//LCD背光开关//DS1302时钟芯片与C51之间的引脚连接定义sbitIO=P1^1;sbitSCLK=P1^0;sbitRST=P1^2;sbitACC0=ACC^0;sbitACC7=ACC^7;//校时按键与C51的引脚连接定义sbitkey1=P1^5;//设置键sbitkey2=P1^6;//加键sbitkey3=P1^7;//减键sbitbuzzer=P1^3;//蜂鸣器,通过三极管9012驱动,端口低电平响/**************************************************************/ucharcodetab1[]={"20--"};//年显示的固定字符ucharcodetab2[]={"::"};//时间显示的固定字符//延时函数,后面经常调用voiddelay<uintxms>//延时函数,有参函数{ uintx,y; for<x=xms;x>0;x--> for<y=110;y>0;y-->;}/********液晶写入指令函数与写入数据函数,以后可调用**************/write_1602com<uchar>//****液晶写入指令函数****{ rs=0;//数据/指令选择置为指令 rw=0;//读写选择置为写 P0=;//送入数据 delay<1>; en=1;//拉高使能端,为制造有效的下降沿做准备 delay<1>; en=0;//en由高变低,产生下降沿,液晶执行命令}write_1602dat<uchardat>//***液晶写入数据函数****{ rs=1;//数据/指令选择置为数据 rw=0;//读写选择置为写 P0=dat;//送入数据 delay<1>; en=1;//en置高电平,为制造下降沿做准备 delay<1>; en=0;//en由高变低,产生下降沿,液晶执行命令}lcd_init<>//***液晶初始化函数****{ write_1602com<0x38>;//设置液晶工作模式,意思:16*2行显示,5*7点阵,8位数据 write_1602com<0x0c>;//开显示不显示光标 write_1602com<0x06>;//整屏不移动,光标自动右移 write_1602com<0x01>;//清显示 write_1602com<yh+1>;//日历显示固定符号从第一行第1个位置之后开始显示 for<a=0;a<14;a++> { write_1602dat<tab1[a]>;//向液晶屏写日历显示的固定符号部分 //delay<3>; } write_1602com<er+2>;//时间显示固定符号写入位置,从第2个位置后开始显示 for<a=0;a<8;a++> { write_1602dat<tab2[a]>;//写显示时间固定符号,两个冒号 //delay<3>; }}/*********************over***********************//***************DS1302有关子函数********************/voidwrite_byte<uchardat>//写一个字节{ ACC=dat; RST=1; for<a=8;a>0;a--> { IO=ACC0; SCLK=0; SCLK=1; ACC=ACC>>1; }}ucharread_byte<>//读一个字节{ RST=1; for<a=8;a>0;a--> { ACC7=IO; SCLK=1; SCLK=0; ACC=ACC>>1; } return<ACC>;}//voidwrite_1302<ucharadd,uchardat>//向1302芯片写函数,指定写入地址,数据{ RST=0; SCLK=0; RST=1; write_byte<add>; write_byte<dat>; SCLK=1; RST=0;}ucharread_1302<ucharadd>//从1302读数据函数,指定读取数据来源地址{ uchar
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 核医学基础知识课件
- 励志表演演讲300字10篇
- 酒店暑假实习报告合集七篇
- 买卖合同模板集锦9篇
- 信息技术的工作总结
- 初中数学教师教学反思范文5篇
- 同上一堂国家安全教育课线上直播心得10篇
- 大学生迎新策划书15篇
- 七年级下学期数学教学计划3篇
- 随机变量课件
- 岩体力学与工程智慧树知到答案2024年合肥工业大学
- 2025届高考数学复习 函数导数 备考策略分析课件
- 科室VTE工作总结课件
- 二年级上册数学教案-小小测量员 (2)-西师大版
- APQC跨行业流程分类框架(PCF)V7.4版-2024年8月21日版-雷泽佳编译
- 《2023-2024中国区块链发展年度报告》
- 国家开放大学本科《理工英语3》一平台机考总题库2025珍藏版
- 六年级上册美术说课稿 -第7课《 变化多样的脸谱》桂美版(广西版)
- 人教版七年级数学上册3.4 第3课时《 球赛积分表问题》说课稿1
- 2022-2023学年广东省深圳市高一(上)期末数学试卷-解析版
- 2024年物业经理(中级)职业鉴定考试题库(含答案)
评论
0/150
提交评论