• 5.30 MB
  • 2022-04-22 11:15:18 发布

基于51单片机的温度自动控制系统设计研究_毕业设计论文.doc

  • 39页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'河南理工大学万方科技学院毕业设计本科毕业设计(论文)题目基于51单片机的温度自动控制系统设计研究院(系部)电气与自动化工程系专业名称通信工程III 河南理工大学万方科技学院毕业设计摘要基于单片机的温度控制器,采用DS18B20温度传感器采集所要测量的当前环境的温度,通过单片机进行处理并加以显示。单片机采用的是AT89S52系列单片机。温度传感器DS18B20具有12位精度,可较为精确的测量当前环境的温度。该温度控制器具有设定温度上、下限的功能,通过控制继电器控制外部降温、加热装置,从而实现环境温度处于设定温度上、下限范围内。该温度控制器的显示部分采用LED数码管显示,具有显示当先温度、温度上、下限值的功能。按键部分采用四个按键,每个按键的功能不同,通过按键的配合使用,可以实现切换LED数码管显示,调节温度上下限的功能。该系统结构简单,精度高、量程宽、灵敏度高、体积小、功耗低,抗干扰能力强,适合于恶劣环境下进行现场温度测量,有广泛的应用前景。关键词:单片机AT89S52DS18B20数码管继电器III 河南理工大学万方科技学院毕业设计AbstractTemperaturecontrollerbasedonMCU,usingthecurrentenvironmenttomeasurethetemperatureofsensorDS18B20,processinganddisplaybyMCU.ThemicrocontrollerisseriesofMCUAT89S52.ThetemperatureofsensorDS18B20,with12accuracy,canaccuratelymeasurethecurrentenvironmenttemperature.Thetemperaturecontrollercansettemperature,andhavethelowerlimitfunction,controltherelaytocontroltheexternalcooling,heatedevice.Soastorealizetheenvironmentaltemperatureatthesettingtemperature,andlowerbounds.Thetemperaturecontrollerwiththedisplayparts,adoptsLEDdigitaltubedisplay.Displayingthecurrenttemperature,lowervalue.Thepartofthefourkeys,withdefferentfunction,canrealizetheswitchLEDdigitaltubedisplay,adjustthetemperatureupperlimition.Thissystemissimple,highprecision,widerange,highsensitivity,smallsize,lowpowerconsumption,stronganti-jammingcapability,suitableforharshenvironmentson-sitetemperaturemeasurement,hasabroadapplicationprospection.Keywords:MCUAT89S52DS18B20digitronrelayIII 河南理工大学万方科技学院毕业设计目录前言11系统方案设计21.1方案论证21.1.1方案一21.1.2方案二21.2系统设计框图32系统硬件设计42.1单片机选择42.1.1AT89S52特点42.1.2AT89S52功能描述52.1.3AT89S52引脚功能52.2温度传感器的选择62.2.1DS18B20简单介绍62.2.2DS18B20性能特点72.2.3DS18B20内部结构72.2.4DS18B20测温原理82.2.5DS18B20工作时序102.3硬件电路设计112.3.1测温电路112.3.2显示电路132.3.3报警电路152.3.4降温、加热电路152.3.5其他电路163系统软件设计183.1软件设计184系统调试204.1软件调试204.2元器件调试205总结22致谢23参考文献24附录一25附录二34i 河南理工大学万方科技学院毕业设计前言温度是工业生产中常见的工艺参数之一,任何物理变化和化学反应过程都与温度密切相关,因此温度控制是生产自动化的重要任务。例如:在农业温室大棚生产、冶金工业、化工生产、电力工程、造纸行业、机械制作、和食品加工等诸多领域中,人们都需要对各类环境、加热炉、热处理炉、反应炉和锅炉中的温度进行检测和控制。采用单片机对温度进行控制,不仅具有控制方便、组态简单和灵活性大等优点,而且可以大幅度提高被控温度的技术指标,从而能够大大提高产品的质量和数量。因此,单片机对温度的控制问题是一个工业中经常遇到的问题。基于单片机的温度控制系统可以实现温度的显示、预警等功能,对于工业生产效率的提高,可以起到很大的作用。科学技术是第一生产力,对温度实现比较系统化的检测控制使人们的生产节奏有一个良好的循环。从而将节约更多的人力物力,降低生产过程中可以省略的一些繁琐的细节。一个简单有效地控制系统可以在一定程度上使工厂的生产效益上一个台阶,只要运用得当,就有可能做到。本设计是基于当前社会发展的良好形势,经过慎重考虑后决定的,也是对自己所学知识的一次检验,期望能够获得温故而知新的效果。只有不断地学习才能不断的进步。结合社会的实际情况,然后根据自己的特点,更好的去了解自己,充分挖掘自己的潜力。学以致用是老师要求我们的努力方向,现今社会要求我们对知识的应用越来越熟练,只有靠自己锲而不舍的奋发图强,才能争取自己的一片天地。35 河南理工大学万方科技学院毕业设计1系统方案设计1.1方案论证由于本方案是基于温度传感器的温度自动控制。可以采用两种方案:一种是使用热敏电阻之类的元件;另一种是使用数字温度传感器1.1.1方案一选用热敏电阻电路,测温部分选用热敏电阻,将随被测温度变化的电压或电流采样,进行A/D转换后就可以用单片机进行数据处理,实现温度显示。这种设计需要用到A/D转换电路,增大了电路的复杂性,而且要做到高精度也比较困难。1.1.2方案二考虑到单片机属于数字系统,容易想到数字温度传感器,可选用DS18B20数字温度传感器,此传感器为单总线数字温度传感器,体积小、构成的系统结构简单,它可直接将温度转化成数字信号给单片机处理。另外DS18B20具有3引脚的小体积封装,测温范围为-55~+125摄氏度,测温分辨率可达0.0625摄氏度,其测量范围与精度都能符合设计要求。以上两种方案相比较,第二种方案的电路、软件设计更简单,此方案设计的系统在功耗、测量精度、范围等方面都能很好地达到要求,故本设计采用方案二。35 河南理工大学万方科技学院毕业设计1.2系统设计框图本方案设计的系统由单片机系统、数字温度传感器、数码管显示模块、按键控制模块、温度报警模块、温度控制模块组成,其总体架构如图1-1所示显示电路驱动电路单片机测温电路报警电路·电路时钟电路加热电路·电路按键输入电路降温电路复位电路图1-1系统框图35 河南理工大学万方科技学院毕业设计2系统硬件设计2.1单片机选择AT89S52作为温度测试系统的核心器件。该器件是INTEL公司生产的MCS-51系列单片机中的基础产品,采用可靠的CMOS工艺制造技术,具有高性能的8位单片机,属于标准的MCS-51产品。单片机AT89S52具有低电压供电和体积小等特点,四个端口只需要两个口就能满足电路系统的设计需要,单片机如图2-1所示。2.1.1AT89S52特点与MCS-51兼容;4K字节可编程闪烁存储器;寿命:1000写/擦循环;数据保留时间:10年;全静态工作:0MHz-33MHz;三级程序存储器锁定;128*8位内部RAM;32位可编程I/O线;两个16位定时器/计数器;5个中断源;可编程串行通道;低功耗的闲置和掉电模式;片内振荡器和时钟电路。图2-1AT89S52单片机35 河南理工大学万方科技学院毕业设计2.1.2AT89S52功能描述AT89S52是一种低损耗、高性能、CMOS八位微处理器,片内有4k字节的在线可重复编程、快速擦除、快速写入程序的存储器,能承复写入/擦除1000次,数据保存时间为十年。它与MCS-51系列单片机在指令系统和引脚上完全兼容,不仅可完全代替MCS-51系列单片机,而且能使系统具有许多MCS-51系列产品没有的功能[[]郭天祥.51单片机C语言教程--入门、提高、开发、拓展全攻略[M].北京:电子工业出版社,2009.]。AT89S52可构成真正的单片机最小应用系统,缩小系统休积,增加系统的可靠性,降低系统的成本。只要程序长度小于4K,四个I/O全部提供给用户。可用5V电压编程,而且擦写时间仅击10毫秒,仅为8751/87C51的擦除时间的百分之一,与8751/87C51的12V电压擦写相比,不易损坏器件,没有两种电源的需求,可以直接在5V电压下进行编程,不需要12V电源。改写时不拔下芯片,适合许多嵌入式控制领域。工作电压范围宽,全静态工作,工作频率宽在0MHz-33MHz之间,比8751/87C51等51系列的6MHz-12MHz更具有灵活性。AT89S52芯片提供三级程序存储器加密,提供了方便灵活而可靠的硬加密于段,能完全保证程序或系统不被仿制。2.1.3AT89S52引脚功能AT89S52单片机P3口第二功能如图2-2所示[[]蔡美琴、毛敏等.MCS-51系列单片机系统及其应用[M].北京:高等教育出版社,2009.]。35 河南理工大学万方科技学院毕业设计图2-2P3口的第二功能2.2温度传感器的选择由于传统的热敏电阻等测温元件测出的一般都是电压,再转换成对应的温度,需要比较多的外部元件支持,且硬件电路复杂,制作成本相对较高。这里采用DALLAS公司的数字温度传感器DS18B20作为测温元件。2.2.1DS18B20简单介绍DALLAS最新单线数字温度传感器DS18B20是一种新型的“一线器件”,其体积更小、更适用于多种场合、且适用电压更宽、更经济。DALLAS半导体公司的数字化温度传感器DS18B20是世界上第一片支持“一线总线”接口的温度传感器。温度测量范围为-55~+125摄氏度,可编程为9位~12位转换精度,测温分辨率可达0.0625摄氏度,分辨率设定参数以及用户设定的报警温度存储在EEPROM中,掉电后依然保存。被测温度用符号扩展的16位数字量方式串行输出;其工作电源既可以在远端引入,也可以采用寄生电源方式产生;多个DS18B20可以并联到3根或2根线上,CPU只需一根端口线就能与诸多DS18B2035 河南理工大学万方科技学院毕业设计通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。因此用它来组成一个测温系统,具有线路简单,在一根通信线,可以挂很多这样的数字温度计,十分方便。2.2.2DS18B20性能特点(1)独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。(2)DS18B20支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测温(3)DS18B20在使用中不需要任何外围元件,全部传感元件及转换电路集成在形如一只三极管的集成电路内(4)适应电压范围更宽,电压范围:3.0~5.5V,在寄生电源方式下可由数据线供电(5)测温范围-55℃~+125℃,在-10~+85℃时精度为±0.5℃(6)可编程的分辨率为9~12位,对应的可分辨温度分别为0.5℃、0.25℃、0.125℃和0.0625℃,可实现高精度测温(7)在9位分辨率时最多在93.75ms内把温度转换为数字,12位分辨率时最多在750ms内把温度值转换为数字,速度更快(8)测量结果直接输出数字温度信号,以"一线总线"串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力2.2.3DS18B20内部结构DS18B20内部结构主要由四部分组成:64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。图2-3为DS18B20的内部框图,它主要包括寄生电源、温度传感器、64位激光ROM单线接口、存放中间数据的高速暂存器(内含便笺式RAM),用于存储用户设定的温度上下限值的TH和TL触发器存储与控制逻辑、835 河南理工大学万方科技学院毕业设计位循环冗余校验码(CRC)发生器等七部分,如图2-3所示。64位ROM和单线接口存储器与控制逻辑高速缓存温度控制器温度控制器温度控制器温度控制器温度控制器图2-3DS18B20内部结构框图2.2.4DS18B20测温原理DS18B20的测温原理如图2-4所示,图中低温度系数晶振的振荡频率受温度的影响很小用于产生固定频率的脉冲信号送给减法计数器1,高温度系数晶振随温度变化其震荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入,图中还隐含着计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲进行计数,进而完成温度测量.计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将-55℃所对应的基数分别置入减法计数器1和温度寄存器中,减法计数器1和温度寄存器被预置在-55℃所对应的一个基数值。减法计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器1的预置值减到0时温度寄存器的值将加1,减法计数器1的预置将重新被装入,减法计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,35 河南理工大学万方科技学院毕业设计如此循环直到减法计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温图2中的斜率累加器用于补偿和修正测温过程中的非线性其输出用,于修正减法计数器的预置值,只要计数门仍未关闭就重复上述过程,直至温度寄存器值达到被测温度值,这就是DS18B20的测温原理。如图2-4所示。另外,由于DS18B20单线通信功能是分时完成的,他有严格的时隙概念,因此读写时序很重要。系统对DS18B20的各种操作必须按协议进行。操作协议为:初始化DS18B20(发复位脉冲)→发ROM功能命令→发存储器操作命令→处理数据。斜率累加器比较预置温度寄存器计数器=0预置低温度系数振荡器计数器2=0高温度系数振荡器Tx停止τ1τ2加1图2-4DS18B20测温原理图2.2.5DS18B20工作时序35 河南理工大学万方科技学院毕业设计图2-5为时序图中各总线状态。总线控制器低电平DS18B20低电平电阻上拉总线控制器和DS18B20同为低电平图2-5工作时序图(1)初始化(时序图见图2-6)。图2-6初始化时序图①先将数据线置高电平1。②延时(改时间要求不是很严格,但是要尽可能短一点)。③数据线拉到低电平0.④延时750us(改时间范围可以在480-960us)。⑤数据线拉到高电平1。⑥延时等待。如果初始化成功则在15-60ms内产生一个有DS18B20返回的低电平0,据该状态可以确定它的存在。但是应注意不能无限的等待,不然会使程序进入死循环,所以要进行超时判断。⑦若CPU读到数据线上的低电平0后,还要进行延时,其延时的时间从发出高电平算起(第5步的时间算起)最少要480us。⑧将数据线再次拉到高电平1后结束。(2)DS18B20写数据35 河南理工大学万方科技学院毕业设计①数据线先置低电平0。②延时确定的时间为15us。③按从低位到高位的顺序发送数据(一次只发送一位)。④延时时间为45us。⑤将数据线拉到高电平1。⑥重复①-⑤步骤,直到发送完整个字节。⑦最后将数据线拉到高电平1。(3)DS18B20读数据①将数据线拉到高电平1。②延时2us。③将数据线拉低到0。④延时6us。⑤将数据线拉高到1。⑥延时4us。⑦读数据线的状态得到一个状态位,并进行数据处理。⑧延时30us。⑨重复①-⑦步骤,直到读完一个字节。2.3硬件电路设计2.3.1测温电路本设计采用DS18B20温度传感器作为温度采集电路核心部件。DS18B20是美国DALLAS半导体公司推出的第一片支持“一线总线”接口的温度传感器,它具有微型化、低功耗、高性能、抗干扰能力强、易配微处理器等优点,可直接将温度转化成串行数字信号供处理器处理。目前常用的单片机与外设之间进行数据传输的串行总线主要有I²35 河南理工大学万方科技学院毕业设计C总线以同步串行二线方式进行通信(一条时钟线,一条数据线),SPI总线则以同步串行三线方式进行通信(一条时钟线,一条数据输入线,一条数据输出线),而SCI总线是以异步方式进行通信的(一条数据输入线,一条数据输出线)。这些总线至少需要两条或两条以上的信号线,而DS18B20使用的单总线技术与上述总线不同,它采用单条信号线,既可传输时钟,又可传输数据,而且数据传输是双向的,因而单总线技术具有线路简单,硬件开销少,成本低廉,便于总线扩展和维护等优点。单总线适用于单主机系统,能够控制一个或多个从机设备。主机可以是微控制器,从机可以是单总线器件,他们之间的数据交换只通过一条信号线。当只有一个从机设备时,系统可按单节点系统操作;当有从机设备时,系统则按多节点系统操作。设备(主机或从机)通过一个漏极开路或三态端口连至该数据线,以允许设备在不发送数据时能够释放出总线,而让其他设备使用总线。单总线要求外接4.7kΩ的上拉电阻。本设计系统的温度采集电路图如图2-7所示[[]闫胜利.AltiumDesigner实用宝典-原理图与PCB设计[M].北京,电子工业出版社,2007.]。图2-7测温电路由图可以看出,DS18B2035 河南理工大学万方科技学院毕业设计和单片机的连接非常简单,单片机只需要一个I/O口就可以控制DS18B20。这个图的接法是单片机与一个DS18B20通信,如果要控制多个DS18B20进行温度采集,只要将所有的DS18B20的I/O口全部连在一起就可以了。在具体操作时,通过读取每个DS18B20内部芯片的序列号来识别。本系统仅操作一个DS18B20进行温度采集。2.3.2显示电路单片机应用系统中,通常都需要进行人机对话,这包括人对应用系统的状态干预与数据输入,以及应用系统向人们显示运行状态与运行结果等。LED显示电路由段驱动电路和位驱动电路组成。由于单片机的并行口不能驱动LED显示器,必须采用专门的驱动电路芯片,使之产生足够大的电流,显示器才能正常工作。如果驱动电路能力差,即负载能力不够,显示器亮度就低,而且驱动电路长期在超负荷下运行容易损坏。LED显示器的显示控制方式分为静态显示和动态显示两种,若选择静态显示,则LED驱动器的选择较为简单,只要驱动器的驱动能力与显示器的电流相匹配即可;动态显示则不同,由于一位数据的显示是由段和位选信号共同配合完成的,因此,要同时考虑段和位的驱动能力,而且段的驱动能力决定位的驱动能力[[]朱清惠等.Prnteus教程:电子线路设计制版与仿真[M].北京:清华大学出版社,2008.]。数码管位选代码如图2-8所示。35 河南理工大学万方科技学院毕业设计管脚数显示dpgfedcba十六进制数0110000000C0H1111110010F9H2101001000A4H3101100000B0H41001001099H51001001092H61000001082H7111110000F8H81000000080H91001000090H图2-8数码管位选代码35 河南理工大学万方科技学院毕业设计2.3.3报警电路当温度超过设定温度时,实现声光报警,蜂鸣器鸣叫、二极管闪烁。蜂鸣器由单片机P3~7口控制,用三极管驱动,电路如图2-9所示[[]康华光.电子技术基础一模拟部分[M].北京:高等教育出版社,2008.]。图2-9报警电路2.3.4降温、加热电路继电器是一种电子控制器件,它具有控制系统(又称输入回路)和被控制系统(又称输出回路),通常应用于自动控制电路中,它实际上是用较小的电流去控制较大电流的一种“自动开关”。故在电路中起着自动调节、安全保护、转换电路等作用。当温度超过设定温度后,单片机控制继电器,继电器通过三极管驱动,但三极管由导通变为截止时,继电器绕组感生出一个较大的自感电压。它与电源电压叠加后加到控制继电器线圈的三极管上,使发射结有可能被击穿。为了消除这个感应电动势的有害影响,在继电器线圈两端反向并联抑制二极管,以吸收该电动势,保证三极管的安全。降温、加热电路如图2-10所示。图2-10降温、加热电路35 河南理工大学万方科技学院毕业设计2.3.5其他电路(1)按键输入电路考虑到系统的要求,还需设计按键输入电路,基于单片机的温度控制系统工作时应具备以下功能:可以切换显示实时温度和温度上限值。可以调节温度上、下限。要实现这些功能,可以通过按键输入电路。键盘结构可分为独立式键盘和行列式键盘(矩阵式)两类,由于本系统只采用4个按键,因此可选用独立式按键,按键采用轻触开关。这4个按键的功能分别是:调整温度上限、加1、减1,复位。如图2-11所示。图2-11按键电路(2)电源电路由于该系统需要稳定的5V电源,因此设计时必须采用能满足电压,电流和稳定性要求的电源。本电源采用三端集成稳压器LM7805。它仅有输入端、输出端及公共端三个引脚。其内部设有过流保护,过热保护及调整管安全保护电路。由于所需外接元件少,使用方便、可靠,因此可作为稳压电源。图2-12为电源电路连接图[[]康华光.电子技术基础一数字部分[M].北京:高等教育出版社,2009.]。35 河南理工大学万方科技学院毕业设计图2-12电源电路35 河南理工大学万方科技学院毕业设计3系统软件设计3.1软件设计整个系统的功能是由硬件电路配合软件来实现的,当硬件基本定型后,软件的功能也就基本定下来了。按照软件的功能,把软件分为两大类:一是监控软件(主程序),它是整个控制系统的核心,专门用来协调各执行模块和操作者的关系。二是执行软件(子程序),它是用来完成各种实质性的功能如测量、计算、显示、通讯等。每一个执行软件也就是一个小的功能执行模块。这里将各执行模块一一列出,并为每一个执行模块进行功能定义和接口定义。各执行模块规划好后,就可以规划监控程序了。首先要根据系统的总体功能选择一种最合适的监控程序结构,然后根据实时性的要求,合理地安排监控软件和各执行模块之间地调度关系。图3-1为读取数据流程图,具体代码参考附录一[[]铃术雅成.晶体管电路设计[M].科学出版社,2010.]。35 河南理工大学万方科技学院毕业设计开始延时15~45us释放总线延时45us读一位数据延时1us以上清DQ准备发送发温度读取命令DS18B20初始化                         N8位数据是否读完Y结束读取图3-1数据读取流程图[[]谭浩强.C程序设计[M].北京:清华人学出版社,2008.]35 河南理工大学万方科技学院毕业设计4系统调试4.1软件调试本次设计采用preteus仿真,测试采用模拟温度测试,测试结果如下。当环境温度大于38度时,蜂鸣器报警,并启动继电器,模拟降温装置启动。当环境温度小于5度时,蜂鸣器报警,并启动继电器,模拟加热装置启动。在用proteus仿真过程中出现一些问题,包括以下几个方面。(1)数码管显示乱码,出现这种情况主要是程序错误,我用的是四位共阴数码管,而在编写程序时,却误用成了共阳数码管的代码,经改正后显示正常。(2)降温、加热电路启动错误,在没有超过报警温度时,电路启动,超过报警温度后,却又关闭,经排查是单片机引脚是高电平,而降温加热子程序中,设置的是高电平启动。设置成低电平启动时,电路工作正常。(3)按键电路没反应,在按下设置键以及调整键时,系统没有反应。经排查后发现是按键没接地。接地后按键电路工作正常。4.2元器件调试在系统元件的焊接中出现过很多问题,在经过逐一排查后,系统最终运行起来,其中出现的包括以下几个方面。(1)开机后系统显示乱码,系统不起作用,经排查后发现晶振电路用错了电容,换成22pF后系统工作,但仍显示乱码。查资料后发现,由于用的是片内存储器,但EA/Vpp没有接高电平,接上高电平后数码管显示正常。(2)35 河南理工大学万方科技学院毕业设计系统工作不正常,温度一直显示85度,确定程序没有问题后,经排查后发现由于之前把传感器接反,导致DS18B20烧坏,重新更换后问题解决,显示正常。(1)数码管显示太暗,系统运行后发现,数码管显示的太暗,看不太清楚,故在数码管位选脚上加上拉电阻,经测试后,数码管显示正常。35 河南理工大学万方科技学院毕业设计5总结此次课程设计中,难点在于DS18B20的使用,即对它的时序控制、初始化以及字节读写方法,任何一个环节出错或是时序控制不到位的话就不能得到正确的数据。一旦学会了正确的使用方法,就能感觉到它带来的便利是热电偶不能比拟的,以后再次使用的话就能很快上手了。软件设计中,把程序按功能分模块的话能提高编程效率,把问题一一解决,同时画流程图能帮助理清思路,使问题简单化。定义变量时,尽量定义局部变量,在字符型变量能达到要求的情况下就不用定义成整形变量了,以节省内存空间。同时局部变量应避免与全局变量取同名,否则全局变量将被屏蔽或与局部变量相冲突而达不到设计的效果。另一方面,取变量名时也要讲究技巧,应尽量使其见名知意,同样地,写程序时加注释确是非常必要的,否则隔一段时间后,想再改进或做扩展的话就比较困难了,因为即使是自己写的程序也变得难读难懂了。在做键盘消抖时,延时的时间比较重要,一般为10ms左右,延时太短就会使按键太过灵敏,按一下就使数字跳变几次;而延时过长则可能使按键按下了却无响应,在外部定义初始化一个延时函数的入口参量则能很方便地调整延时时间,以达到比较好的效果。另外,如果对按键进行释放判断的话就能解决长时间按键导致按键重复响应的问题。总的来说,自己从这次独立的毕业设计中收获了一些知识与经验,一些从书本中学之不来的东西,不是说理论无用,而这恰恰是在理论的土壤中开出的花朵,是在理论的肩膀望见的更宽广的道路!成功来之不易,自主动手动脑实践,小小的成果亦能带来硕大的喜悦。35 河南理工大学万方科技学院毕业设计致谢首先,我要感谢河南理工大学万方科技学院,感谢电气系对我四年的培养,让我学到了许许多多的知识,感谢各位老师在这四年里对我的关怀与照顾,在此致以我深深的谢意。本论文从选题到最后定稿成文,本校赵鸿图老师一直给予了悉心指导,赵老师那种严谨求实的作风,广博深邃的洞察力,孜孜不倦的开拓精神和敬业精神令我深受启迪和教益,谨向我的指导老师赵鸿图老师致以深深的谢意。我国古代有句成语叫做“管中窥豹,略见一斑”,本文是基于单片机及温度传感器,组成温度自动控制装置。但是,由于我水平有限,在理论的描述、资料的运用等方面难免有不当、不深、不周之处,有些观点也尚欠成熟,敬请各位老师批评指正。最后,我还要向所有曾经帮助过我的同学和朋友们致敬。你们的鼓励和帮助永远是我前进的动力。35 河南理工大学万方科技学院毕业设计参考文献[1]郭天祥.51单片机C语言教程--入门、提高、开发、拓展全攻略[M].北京:电子工业出版社,2009.[2]蔡美琴、毛敏等.MCS-51系列单片机系统及其应用[M].北京:高等教育出版社,2009.[3]闫胜利.AltiumDesigner实用宝典-原理图与PCB设计[M].北京,电子工业出版社,2007.[4]朱清惠等.Prnteus教程:电子线路设计制版与仿真[M].北京:清华大学出版社,2008.[5]康华光.电子技术基础一模拟部分[M].北京:高等教育出版社,2008.[6]康华光.电子技术基础一数字部分[M].北京:高等教育出版社,2009.[7]铃术雅成.晶体管电路设计[M].科学出版社,2010.[8]谭浩强.C程序设计[M].北京:清华人学出版社,2008.35 河南理工大学万方科技学院毕业设计附录一源程序:/*************************************************************程序名称:DS18B20温度测量、报警系统简要说明:DS18B20温度计,温度测量范围0~99.9摄氏度可设置上限报警温度、下限报警温度即高于上限值或者低于下限值时蜂鸣器报警,并启动降温、加热电路默认上限报警温度为38℃、默认下限报警温度为5℃报警值可设置范围:最低上限报警值等于当前下限报警值最高下限报警值等于当前上限报警值将下限报警值调为0时为关闭下限报警功能*************************************************************/#include#include"DS18B20.h"#defineuintunsignedint#defineucharunsignedchar//宏定义#defineSETP3_1//定义调整键#defineDECP3_2//定义减少键#defineADDP3_3//定义增加键#defineBEEPP3_7//定义蜂鸣器#defineCoolP3_5//定义降温#defineHotP3_0//定义加热bitshanshuo_st;//闪烁间隔标志bitbeep_st;//蜂鸣器间隔标志35 河南理工大学万方科技学院毕业设计sbitDIAN=P2^7;//小数点ucharx=0;//计数器signedcharm;//温度值全局变量ucharn;//温度值全局变量ucharset_st=0;//状态标志signedcharshangxian=38;//上限报警温度,默认值为38signedcharxiaxian=5;//下限报警温度,默认值为5ucharcodeLEDData[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};ucharcodeALARMData[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};/*****延时子程序*****/voidDelay(uintnum){while(--num);}/*****初始化定时器0*****/voidInitTimer(void){TMOD=0x1;TH0=0x3c;TL0=0xb0;//50ms(晶振12M)}35 河南理工大学万方科技学院毕业设计/*****定时器0中断服务程序*****/voidtimer0(void)interrupt1{TH0=0x3c;TL0=0xb0;x++;}/*****外部中断0服务程序*****/voidint0(void)interrupt0{EX0=0;//关外部中断0if(DEC==0&&set_st==1){shangxian--;if(shangxian99)shangxian=99;}elseif(ADD==0&&set_st==2){xiaxian++;if(xiaxian>shangxian)xiaxian=shangxian;}}/*****读取温度*****/voidcheck_wendu(void){uinta,b,c;c=ReadTemperature()-5;//获取温度值并减去DS18B20的温漂误差a=c/100;//计算得到十位数字b=c/10-a*10;//计算得到个位数字35 河南理工大学万方科技学院毕业设计m=c/10;//计算得到整数位n=c-a*100-b*10;//计算得到小数位if(m<0){m=0;n=0;}//设置温度显示上限if(m>99){m=99;n=9;}//设置温度显示上限}/*****显示开机初始化等待画面*****/Disp_init(){P0=0xf7;Delay(200);P0=0xfb;Delay(200);P0=0xfd;Delay(200);P0=0xfe;Delay(200);P2=0xbf;//显示-P0=0xff;//关闭显示}/*****显示温度子程序*****/Disp_Temperature()//显示温度{P0=0xf7;P2=LEDData[n];//显示个位35 河南理工大学万方科技学院毕业设计Delay(300);P0=0xfb;P2=LEDData[m%10];//显示十位DIAN=1;//显示小数点Delay(300);P0=0xfd;P2=LEDData[m/10];//显示百位Delay(300);P0=0xff;//关闭显示}/*****显示报警温度子程序*****/Disp_alarm(ucharbaojing){P0=0xf7;P2=ALARMData[baojing%10];//显示十位Delay(200);P0=0xfb;P2=ALARMData[baojing/10];//显示百位Delay(200);P0=0xfd;if(set_st==1)P2=0x76;elseif(set_st==2)P2=0x38;//上限H、下限L标示Delay(200);P0=0xff;//关闭显示}35 河南理工大学万方科技学院毕业设计/*****报警子程序*****/voidAlarm(){if(x>=10){beep_st=~beep_st;x=0;}if((m>=shangxian&&beep_st==1)||(mshangxian-1)Cool=0;elseCool=1;}/*****加热子程序*****/voidjiare(){if(m2)set_st=0;}if(set_st==0){EX0=0;//关闭外部中断0EX1=0;//关闭外部中断1check_wendu();35 河南理工大学万方科技学院毕业设计Disp_Temperature();Alarm();//报警检测jiangwen();jiare();}elseif(set_st==1){BEEP=1;//关闭蜂鸣器EX0=1;//开启外部中断0EX1=1;//开启外部中断1if(x>=10){shanshuo_st=~shanshuo_st;x=0;}if(shanshuo_st){Disp_alarm(shangxian);}}elseif(set_st==2){BEEP=1;//关闭蜂鸣器EX0=1;//开启外部中断0EX1=1;//开启外部中断1if(x>=10){shanshuo_st=~shanshuo_st;x=0;}if(shanshuo_st){Disp_alarm(xiaxian);}}}}/*****END*****/35 河南理工大学万方科技学院毕业设计附录二仿真电路图:实物图一:35 河南理工大学万方科技学院毕业设计实物图二:35'