毕业设计(论文)基于单片机的水温控制系统.doc
引言随着社会的发展,科技的进步,以及测温仪器在各个领域的应用,智能化已是现代温度控制系统发展的主流方向。温度测试控制系统,控制对象是温度。温度控制在日常生活及工业领域应用相当广泛,比如温室、水池、发酵缸、电源等场所的温度控制1。而以往温度控制是由人工完成的而且不够重视,其实在很多场所温度都需要监控以防止发生意外。针对此问题,本系统设计的目的是实现一种可连续高精度调温的温度控制系统,它应用广泛,功能强大,小巧美观,便于携带,是一款既实用又廉价的控制系统。特别是近年来,温度控制系统已应用到人们生活的各个方面,但温度控制一直是一个未开发的领域,却又是与人们息息相关的一个实际问题。温度检测控制系统在工业生产、科学研究和人们的生活领域中,得到了广泛应用。在工业生产过程中,很多时候都需要对温度进行严格的监控,以使得生产能够顺利的进行,产品的质量才能够得到充分的保证。使用自动温度控制系统可以对生产环境的温度进行自动控制,保证生产的自动化、智能化能够顺利、安全进行,从而提高企业的生产效率2。温度检测系统应用十分广阔。测量控制的作用是从生产现场中获取各种参数,运用科学计算的方法,综合各种先进技术,使每个生产环节都能够得到有效的控制,不但保证了生产的规范化、提高产品质量、降低成本,还确保了生产安全。所以,测量控制技术已经被广泛应用于炼油、化工、冶金、电力、电子、轻工和纺织等行业。单片机以其集成度高、运算速度快、体积小、运行可靠、价格低廉等优势,在过程控制、数据采集、机电一体化、智能化仪表、家用电器以及网络技术等方面得到了广泛的应用,特别是单片机技术的开发与应用,标志着计算机发展史上又一个新的里程碑3。作为计算机两大发展方向之一的单片机,以面向对象的实时控制为己任,嵌入到如家用电器、汽车、机器人、仪器仪表等设备中,使其智能化。目前国内外各大电气公司,大的半导体厂商正在不断的开发、使用单片机,使其无论在控制能力,减小体积,降低成本,还是开发环境的改善等方面,都得到空前迅速的发展4。第1章 任务及要求1.1设计任务设计一个水温控制系统,该系统采用AT89S52单片机作为主控芯片,用DS18B20来采集温度信息。首先通过键盘输入设定温度,保存在AT89S52的指定单元中,再利用温度传感器DS18B20进行信号的采集,送入单片机中,保存在采样值单元。然后把采样值与设定值进行比较运算,得出控制量,从而调节继电器触发端的通断,来实现将温度控制在一定的范围内。1.2 设计要求本机实现的功能:1、利用温度传感器采集到当前的温度,通过AT89S52单片机进行控制,最后通过LED数码管以串行口传送数据实现温度显示。2、可以通过按键任意设定一个恒定的温度。3、将水环境数据与所设置的数据进行比较,当水温低于设定值时,开启加热设备,进行加热;当水温高于设定温度时,停止加热,开始降温,从而实现对水温的自动控制。4、当当前温度超出控制温度范围时,自动蜂鸣报警。第2章 设计方案本设计中的芯片可以采用二种方案。方案一:采用普通电阻式温度传感器,放大器,A/D转换器作为测量温度的电路。采用两种不同材质的导体,如在某点互相连接在一起,对这个连接点加热,在它们不加热的部位就会出现电位差。这个电位差的数值与不加热部位测量点的温度有关,和这两种导体的材质有关。热电偶传感器有自己的优点和缺陷,它灵敏度比较低,容易受到环境干扰信号的影响,也容易受到前置放大器温度漂移的影响,因此不适合测量微小的温度变化5。由于热电偶温度传感器的灵敏度与材料的粗细无关,用非常细的材料也能够做成温度传感器。也由于制作热电偶的金属材料具有很好的延展性,这种细微的测温元件有极高的响应速度,可以测量快速变化的过程。硬件电路复杂,需要设计A/D转换电路,以及与其相关的编程,总体设计起来较困难,软件、硬件调试复杂,硬件成本较高。而且器传感器有以下缺点:它灵敏度比较低,容易受到环境干扰信号的影响,也容易受到前置放大器温度漂移的影响1。所以总体来说,在硬件、软件上的成本都比较高,而且易受外部环境的影响,系统工作不稳定。 方案二:采用数字可编程温度传感器作为温度检测元件。数字可编程温度传感器可以直接读出被测温度值。不需要将温度传感器的输出信号接到A/D转换器上,减少了系统的硬件电路的成本和整个系统的体积同时具有极强的抗干扰纠错能力;负压特性:电源极性接反时,芯片不会因发热而烧毁,但不能正常工作6。由于采用的是具有一总线特点的温度传感器,所以电路连接简单;而且该传感器拥有强大的通信协议,同过几个简单的操作就可以实现传感器与单片机的交互,包括复位传感器、对传感器读写数据、对传感器写命令6。软件、硬件易于调试,制作成本较低。也使得系统所测结果精度大大提高。通过以上二种方案的论证和比较,从设计的实用性、方便性和成本等诸多方面考虑,最终选择了以DS18B20为温度测量和传输元件的设计,这样设计在本次毕业设计中能够在经费有限的情况下,进行最优的实现方法。具体方案:采用AT89S52作为整个电路的核心控制器件,用DS18B20传感器采集温度信息。当采集到温度信息时,通过一系列处理后从单片机输出来实现声光报警及温度控制。总体框图如下图2-1,本设计方案的优点是结构简单、性能稳定、使用方便、价格低廉并且智能化。图2-1 总体框图第3章 主要元器件介绍3.1 AT89S52单片机AT89S52为 ATMEL 所生产的一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flsah存储器。AT89S52主要功能列举如下:1、拥有灵巧的8位CPU和在系统可编程Flash2、晶片内部具时钟振荡器(传统最高工作频率可至 12MHz)3、内部程序存储器(ROM)为 8KB4、内部数据存储器(RAM)为 256字节5、32 个可编程I/O 口线6、8 个中断向量源7、三个 16 位定时器/计数器8、三级加密程序存储器9、全双工UART串行通道AT89S52各引脚功能介绍:图3-1 AT89S52引脚图VCC:AT89S52电源正端输入,接+5V。VSS:电源地端。XTAL1:单芯片系统时钟的反相放大器输入端。XTAL2:系统时钟的反相放大器输出端,一般在设计上只要在 XTAL1 和 XTAL2 上接上一只石英振荡晶体系统就可以动作了,此外可以在两引脚与地之间加入一 20PF 的小电容,可以使系统更稳定,避免噪声干扰而死机。RESET:AT89S52的重置引脚,高电平动作,当要对晶片重置时,只要对此引脚电平提升至高电平并保持两个机器周期以上的时间,AT89S51便能完成系统重置的各项动作,使得内部特殊功能寄存器之内容均被设成已知状态,并且至地址0000H处开始读入程序代码而执行程序。EA:"EA"为英文"External Access"的缩写,表示存取外部程序代码之意,低电平动作,也就是说当此引脚接低电平后,系统会取用外部的程序代码(存于外部EPROM中)来执行程序。因此在8031及8032中,EA引脚必须接低电平,因为其内部无程序存储器空间。如果是使用 8751 内部程序空间时,此引脚要接成高电平。ALE/PROG:ALE是英文"Address Latch Enable"的缩写,表示地址锁存器启用信号。AT89S52可以利用这支引脚来触发外部的8位锁存器(如74LS373),将端口0的地址总线(A0A7)锁进锁存器中,因为AT89S52是以多工的方式送出地址及数据。平时在程序执行时ALE引脚的输出频率约是系统工作频率的1/6,因此可以用来驱动其他周边晶片的时基输入。PSEN:此为"Program Store Enable"的缩写,其意为程序储存启用,当8051被设成为读取外部程序代码工作模式时(EA=0),会送出此信号以便取得程序代码,通常这支脚是接到EPROM的OE脚。AT89S52可以利用PSEN及RD引脚分别启用存在外部的RAM与EPROM,使得数据存储器与程序存储器可以合并在一起而共用64K的定址范围。PORT0(P0.0P0.7):端口0是一个8位宽的开路汲极(Open Drain)双向输出入端口,共有8个位,P0.0表示位0,P0.1表示位1,依此类推。其他三个I/O端口(P1、P2、P3)则不具有此电路组态,而是内部有一提升电路,P0在当做I/O用时可以推动8个LS的TTL负载。如果当EA引脚为低电平时(即取用外部程序代码或数据存储器),P0就以多工方式提供地址总线(A0A7)及数据总线(D0D7)。设计者必须外加一锁存器将端口0送出的地址栓锁住成为A0A7,再配合端口2所送出的A8A15合成一完整的16位地址总线,而定址到64K的外部存储器空间。PORT2(P2.0P2.7):端口2是具有内部提升电路的双向I/O端口,每一个引脚可以推动4个LS的TTL负载,若将端口2的输出设为高电平时,此端口便能当成输入端口来使用。P2除了当做一般I/O端口使用外,若是在AT89S52扩充外接程序存储器或数据存储器时,也提供地址总线的高字节A8A15,这个时候P2便不能当做I/O来使用了。PORT1(P1.0P1.7):端口1也是具有内部提升电路的双向I/O端口,其输出缓冲器可以推动4个LS TTL负载,同样地若将端口1的输出设为高电平,便是由此端口来输入数据。如果是使用8052或是8032的话,P1.0又当做定时器2的外部脉冲输入脚,而P1.1可以有T2EX功能,可以做外部中断输入的触发脚位。PORT3(P3.0P3.7):端口3也具有内部提升电路的双向I/O端口,其输出缓冲器可以推动4个TTL负载,同时还多工具有其他的额外特殊功能,包括串行通信、外部中断控制、计时计数控制及外部数据存储器内容的读取或写入控制等功能。其引脚分配如下:P3.0:RXD,串行通信输入。P3.1:TXD,串行通信输出。P3.2:INT0,外部中断0输入。P3.3:INT1,外部中断1输入。P3.4:T0,计时计数器0输入。P3.5:T1,计时计数器1输入。P3.6:WR,外部数据存储器的写入信号。P3.7:RD,外部数据存储器的读取信号。3.2 数字化温度传感器DS18B20DS18B20是DALLAS公司生产的一线式数字温度传感器,具有3引脚TO92小体积封装形式;温度测量范围为55125,可编程为9位12位A/D转换精度,测温分辨率可达0.0625,被测温度用符号扩展的16位数字量方式串行输出;其工作电源既可在远端引入,也可采用寄生电源方式产生;多个DS18B20可以并联到3根或2根线上,CPU只需一根端口线就能与诸多DS18B20通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路7。以上特点使DS18B20非常适用于远距离多点温度检测系统。2DS18B20的内部结构:DS18B20内部结构如图3-2所示,主要由4部分组成:64位ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器8。图3-2 DS18B20内部结构图DS18B20的管脚排列如图3-3所示,DQ为数字信号输入输出端;GND为电源地;VDD为外接供电电源输入端图3-3 DS18B20管脚排列图3.3 固态继电器固态继电器是具有隔离功能的无触点电子开关,在开关过程中无机械接触部件,因此固态继电器除具有与电磁继电器一样的功能外,还具有逻辑电路兼容,耐振耐机械冲击,安装位置无限制,具有良好的防潮防霉防腐蚀性能,在防爆和防止臭氧污染方面的性能也极佳,输入功率小,灵敏度高,控制功率小,电磁兼容性好,噪声低和工作频率高等特点9。固态继电器专用的固态继电器可以具有短路保护,过载保护和过热保护功能,与组合逻辑固化封装就可以实现用户需要的智能模块,直接用于控制系统中。固态继电器由三部分组成:输入电路,隔离(耦合)和输出电路。 1、输入电路按输入电压的不同类别,输入电路可分为直流输入电路,交流输入电路和交直流输入电路三种。有些输入控制电路还具有与TTL/CMOS兼容,正负逻辑控制和反相等功能,可以方便的与TTL,MOS逻辑电路连接。 对于控制电压固定的控制信号,采用阻性输入电路。控制电流保证在大于5mA。对于大的变化范围的控制信号(如332V)则采用恒流电路,保证在整个电压变化范围内电流在大于5mA可靠工作。 2、隔离(耦合)固态继电器的输入与输出电路的隔离和耦合方式有光电耦合和变压器耦合两种:光电耦合通常使用光电二极管光电三极管,光电二极管双向光控可控硅,光伏电池,实现控制侧与负载侧隔离控制;高频变压器耦合是利用输入的控制信号产生的自激高频信号经耦合到次级,经检波整流,逻辑电路处理形成驱动信号。 3、输出电路SSR的功率开关直接接入电源与负载端,实现对负载电源的通断切换。主要使用有大功率晶体三极管(开关管-Transistor),单向可控硅(Thyristor或SCR),双向可控硅(Triac),功率场效应管(MOSFET),绝缘栅型双极晶体管(IGBT)。固态继电器的输出电路也可分为直流输出电路,交流输出电路和交直流输出电路等形式。按负载类型,可分为直流固态继电器和交流固态继电器。直流输出时可使用双极性器件或功率场效应管,交流输出时通常使用两个可控硅或一个双向可控硅。而交流固态继电器又可分为单相交流固态继电器和三相交流固态继电器。交流固态继电器,按导通与关断的时机,可分为随机型交流固态继电器和过零型交流固态继电器。图3-4 固态继电器第4章 硬件设计4.1 硬件总体模块温度检测模块:由DS18B20采集温度信息,是实现温度控制的基本条件。温度显示模块(LED数码显示):利用四位数码管显示当前温度。声光报警模块:来具体展现所采集到的温度的信息,通过蜂鸣器是否响和LED灯是否亮来体现。按键模块:通过人为操作来控制温度的控制功能。继电器模块:实现对当前环境温度的控制。时钟模块:产生时钟信号。4.2时钟电路设计时钟电路是用来产生AT89S52单片机工作时所必须的时钟信号,AT89S52本身就是一个复杂的同步时序电路,为保证工作方式的实现,AT89S52在唯一的时钟信号的控制下严格的按时序执行指令进行工作 ,时钟的频率影响单片机的速度和稳定性10。通常时钟由于两种形式:内部时钟和外部时钟。我们系统采用内部时钟方式来为系统提供时钟信号。AT89S52内部有一个用于构成振荡器的高增益反向放大器,该放大器的输入输出引脚为XTAL1和XTAL2,它们跨接在晶体振荡器和用于微调的电容,便构成了一个自激励振荡器。电路中的C1、C2的选择在30PF左右,但电容太小会影响振荡的频率、稳定性和快速性。晶振频率为在1.2MHZ12MHZ之间,频率越高单片机的速度就越快,但对存储器速度要求就高。为了提高稳定性我们采用温度稳定性好的NPO电容,采用的晶振频率为12MHZ。本次系统的时钟电路设计如图4-1所示。图4-1 时钟电路图4.3 系统复位电路在图4-2 中复位开关K1 被按下并松开,使端获得低电平,RST 端输出复位信号,单片机复位。或由于( VCC 加入并超过复位门限电压) 引起系统正常复位。图4-2 复位电路图4.4 报警与控制电路设计 在微型计算机控制系统中,为了安全生产,对于一些重要的参数或系统部位,都设有紧急状态报警系统,以便提醒操作人员注意,或采取紧急措施。其方法就是把计算机采集的数据或记过计算机进行数据处理、数字滤波,标度变换之后,与该参数设定值进行比较,如果高于设置值1度(或低于设置数1度)则进行报警,否则就作为采样的正常值,进行显示和控制。同样水箱内的温度超出低高设定的温度范围内时当P1.4输出低电平“0”时,晶体管导通,压电蜂鸣器两端获得约+5V电压而鸣叫,出报警声音;单片机的P1.0(P1.1)输出低电平,此时红色指示灯亮,直到低于(高于)于设定的最高(低)温度时,P1.4输出高电平时,三极管截止,蜂鸣器停止发声,P1.0(P1.1)输出电平高电平,发光二极管灭,报警和控制电路11而下图4-3所示:图4-3 报警与控制电路与单片机的连接4.5 LED显示电路设计LED数码管是一种半导体发光器件,其基本单元是发光二极管,通过对其不同的管脚输入相对的电流,会使其发亮,从而显示出数字。可以显示:时间、日期、温度等可以用数字代替的参数。 数码管按段数分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点显示);按能显示多少个“8”可分为1位、2位、4位等等数码管;按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。共阳极数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管。共阳极数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮。当某一字段的阴极为高电平时,相应字段就不亮。动态驱动是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,通过由各自独立的I/O线控制,当单片机的P0口输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对P2.0-P2.3位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的COM端,就使各个数码管轮流受控显示,这就是动态驱动。表4-1 共阳带小数点的数码管段码表dpgfedcba001000000101111001200100100300110000400011001500010010600000010701111000800001000900010000在本设计中采用了四位八段数码管,用动态驱动来显示温度的值,如图4-4所示。图4-4 显示电路图4.6 温度检测电路设计本次设计所采用的温度传感器为Dallas半导体公司的数字化温度传感器DS18B20,它是世界上第一片支持“一线总线”接口的温度传感器。“一线器件”体积更小、适用电压更宽、更经济。全部传感元件及转换电路集成在形如一只三极管的集成电路内。DS18B20可以程序设定912位的分辨率,精度为±0.5。可选更小的封装方式,更宽的电压适用范围。分辨率设定,及用户设定的报警温度存储在EEPROM中,掉电后依然保存。DS18B20:图4-5 DS18B20DS18B20与AT89S52单片机接口电路的设计DSl8B20数字温度计提供9位(二进制)温度读数,指示器件的温度信息经过单线接口送入DSl8B20或从DSl8B20送出,因此从主机CPU到DSl8B20仅需一条线,当DS18B20接收到温度转换命令后,开始启动转换。转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存存储器的第1、2字节。单片机可以通过单线接口读出该数据,读数据时低位在先,高位在后,数据格式以0.0625LSB形式表示。当符号位S0时,表示测得的温度值为正值,可以直接将二进制位转换为十进制;当符号位S1时,表示测得的温度值为负值,要先将补码变成原码,再计算十进制数值。表4-2是一部分温度值对应的二进制温度数据12。表4-2 温度值对应的二进制温度数据图4-6 DS18B20与AT89S52单片机的连接DS18B20支持“一线总线”接口,测量温度范围为 -55°C-+125°C,在-10-+85°C范围内,精度为±0.5°C。现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性。适合于恶劣环境的现场温度测量,如:环境控制、设备或过程控制、测温类消费电子产品等。1.DS18B20产品的特点 (1)只要求一个端口即可实现通信。 (2)在DS18B20中的每个器件上都有独一无二的序列号。 (3)实际应用中不需要外部任何元器件即可实现测温。 (4)测量温度范围在-55°C-+125°C之间。 (5)数字温度计的分辨率用户可以从9位到12位选择。 (6)内部有温度上、下限设置。 2.DS18B20的引脚介绍 TO92封装的DS18B20引脚功能描述见表1。表4-3DS18B20详细引脚功能描述序号名称引脚功能描述1GND地信号2DQ数据输入/输出引脚。开漏单总线接口引脚。当被用着在寄生电源下也可以向器件提供电源。3VDD可选择的VDD引脚。当工作于寄生电源时,此引脚必须接地。因为一线通信接口,必须在先完成ROM设定,否则记忆和控制功能将无法使用。主要首先DS18B20提供以下功能命令之一:读ROM, ROM匹配,搜索ROM,跳过ROM,报警检查。若指令成功地使DS18B20完成温度测量,数据存储在DS18B20的存储器。一个控制功能指挥指示DS18B20的演出测温。测量结果将被放置在DS18B20内存中,并可以让阅读发出记忆功能的指挥,阅读内容的片上存储器。温度报警触发器TH和TL都有一字节EEPROM 的数据。如果DS18B20不使用报警检查指令,这些寄存器可作为一般的用户记忆用途。在片上还载有配置字节以理想的解决温度数字转换。写TH,TL指令以及配置字节利用一个记忆功能的指令完成。所有的数据的读、写都是从最低位开始。4.7按键电路设计键盘共有三个键,判断K2K4键是否按下,可采用软件查询和中断的方法,当某个键按下时,低电平有效。3个键K2K4的功能定义如表所示。K3K5键的定义如表4-4表4-4 K3K5按键的定义按键键名功能K2功能转换键此键按下,显示温度设定值,按键松开,显示当前温度K3加1键设定温度值加1K4减1键设定温度值减1图4-7 按键电路4.8 继电器控制电路 AT89S52分别控制P12( P13)的高低电平来控制继电器的打开和闭合,从而能实现加热和降温的功能。当P12口为低电平时,三极管导通,加热发光二极管亮,控制继电器闭合,加热棒开始加热,当P12为高电平时,三极管截止,继电器断开,停止加热。图4-8 加热继电器电路图当P13口为低电平时,三极管导通,降温发光二极管亮,控制继电器闭合,风扇开始降温,当P13口为高电平时,三极管截止,继电器断开,停止降温。图4-9 降温继电器电路图第5章 软件设计5.1 主程序方案首先要根据系统的总体功能和键盘设置选择一种最合适的监控程序结构,然后根据实时性的要求,合理地安排监控软件和各执行模块之间地调度关系。本部分详细介绍了基于AT89S52单片机的多路温度采集控制系统的软件设计。根据系统功能,可以将系统设计分为若干个子程序进行设计,如温度采集子程序,数据处理子程序、显示子程序、执行子程序。采用Kiel uVision3集成编译环境和汇编语言来进行系统软件的设计13。本章从设计思路、软件系统框图出发,先介绍整体的思路后,再逐一分析各模块程序算法的实现,最终编写出满足任务需求的程序。并对温度进行实时显示。采用C语言编写代码, 鉴于篇幅限制及DS18B20 的应用已经规范和成熟, 本文仅就主程序流程图和显示子程序流程图及其代码进行说明。通过定时器T0 P3.4口的定时来实现, 在此不再赘述。主程序流程图主程序通过调用温度采集子程序完成温度数据采集, 然后调用温度转换子程序转换读取温度数据,调用显示子程序进行温度显示和判断温度数据。主程序(见附录3)调用四个子程序,分别是温度采集程序、数码管显示程序、温度处理程序和数据存储程序。温度采集程序:对温度芯片送过来的数据进行处理,进行判断和显示。数码管显示程序:向数码的显示送数,控制系统的显示部分。温度处理程序:对采集到的温度和设置的上、下限进行比较,做出判断,向继电器输出。数据存储程序:对键盘的设置的数据进行存储。显示当前温度判断当前温度值超过设定温度1度红灯亮设定温度值是否低于设定温度1度是红灯亮否图 5-1 系统总流程图5.2 各个模块子程序设计5.2.1主程序主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量的当前温度值,温度测量每1s进行一次14。这样可以在一秒之内测量一次被测温度,其程序流程见图5-2所示。通过调用读温度子程序把存入内存储中的整数部分与小数部分分开存放在不同的两个单元中,然后通过调用显示子程序显示出来。图5-2 主程序流程图5.2.2读出温度子程序读出温度子程序的主要功能是读出RAM中的9字节,在读出时需进行CRC校验,校验有错时不进行温度数据的改写15。DS18B20复位、应答子程序跳过ROM匹配命令写入子程序温度转换命令写入子程序显示子程序(延时)DS18B20复位、应答子程序跳过ROM匹配命令写入子程序读温度命令子程序 终 止图5-3 读出温度子程序DS18B20的各个命令对时序的要求特别严格,所以必须按照所要求的时序才能达到预期的目的,同时,要注意读进来的是高位在后低位在前,共有12位数,小数4位,整数7位,还有一位符号位。5.2.3数码管显示模块 本系统采用共阳极数码管,用模拟串口的动态显示数据。其流程图如图5-4所示:图5-4 数码管显示流程图5.2.4温度处理程序系统通过DS18B20采集到温度和设置的上、下限进行比较得出结果,进行报警。第6章 软硬件统调6.1 硬件调试硬件调试是系统的基础,只有硬件能够全部正常工作后才能在以此为基础的平台上加载软件从而实现系统功能。电源模块调试:当硬件完全焊接好后最应该测试的就是电源模块,因为电源是各部分电路模块正常工作的根本。由于本设计中的电源模块采用的是外接4.5V(理论上5V)的干电池,所以比较简单,但是应该注意电源进线的正负极性,因为该系统使用的是直流电输入,一旦接反会给系统的硬件带来损坏。温度显示模块(LED数码显示):通电后观察数码管是否有显示,如果没有显示说明外接电路有问题,如果有显示可以基本确定外接电路无误。DS18B20模块:此部分主要用来采集温度信息,然后传输给单片机。在温度显示模块可以的情况下,可以检测是否有温度显示。 6.2 软件调试软件调试主要是在系统软件编写是时体现的,一般使用keill3进行软件的编写和调试。进行软件编写时首先要分清软件应该分成哪些部分,不同的部分分开编写调试时是最方便的。为了让系统出现的问题少一点,我对一个个模块进行了单独的调试。先对DS18B20进行复位和初始化,并将其获得的温度进行转化。程序编号后再利用keill3自带的仿真软件进行仿真,一般情况下keill3可以满足我们的仿真需求。当仿真通过后,在将程序下载到单片机中做跟进一步的检测,直到程序正确。然后通过分别编写按键控制子程序、报警子程序、数码显示子程序、温度控制字程序后,分别进行仿真调试,当都仿真无误后进行软件统调。系统软件的整体调试主要还是依助于keill3的仿真软件,通过在软件中设计不同的断电和模拟量来进行仿真,知道系统软件完成所有模拟输入量做出与之相对应的正确反映。6.3 软硬件联调6.3.1 软硬件联调的方法在硬件调试正确和软件仿真也正确的前提下,就可以进行软硬件联调了。首先,先将调试好的程序通过下载器下载入单片机,然后就可以上电看结果。观察系统是否能够实现你所要的功能。如果不能就先利用示波器观察单片机的时钟电路,看是否有信号,因为时钟电路是单片机工作的前提,所以一定要保证时钟电路正常。如果不能分析出是硬件问题还是软件问题,就重新检查软硬件。一般情况下硬件电路可以通过万用表等工具来检测出来,如果硬件没有问题,则必然是软件问题,就应该重新检查软件。用这种方法调试系统指导系统完全正确。6.3.2 系统调试所出问题及解决方法在系统调试过程中出现的问题很多,有的是因为粗心大意造成的,也有的是真正的程序问题,下面就简单介绍几个问题及其解决方法。第一,在将程序下载进入单片机时,结果发现程序无法下载。这是一个很严重的问题,如果程序不能下载将导致整个系统不能实现功能。那当然首先得想到单片机工作的几个条件:一、单片机得EA端是否加了高电平;二、单片机的XTAL1和XTAL2端之间是否起振了;三、单片机的工作电压是否控制在5V左右。分析了情况后对电路进行检查,检查结果发现单片机外接的震荡电路出了问题才导致单片机无法工作,外接的两个30pf的电容之间没有连接。将两个电容连接起来,通电后测试发现问题解决了。第二,在整个调试过程中发现,当一切处于正常情况下时,其指示灯不亮。那考虑的情况可能是没有外加电源或者二极管接反了或者二极管坏了。结果检查发现在焊接发光二极管的时候接反了。第三,在测试时发现,数码管显示的温度一直为85摄氏度,不随着温度的加减而发生变化。分析原因可能是温度传感器没有正常采集温度信息,或者是内部程序出现问题。经检查发现原来是温度传感器DS18B20的GND脚没有接地,才出现了这种情况。将GND脚接上后温度显示正确。经过不断的调试与改进后,最终要求实现的功能就全部实现了。第7章 测试结果与分析按照毕业设计任务书的要求,在调试完成后对本次设计的作品进行了测试,首先是温度测试,对温度进行设置温度限(通过功能键和增大键、增小键来设置),当室内温度高于这个温度限时,蜂鸣器要报警,同时温度指示灯也会亮,且继电器LED显示灯会闪烁报警。因为芯片是塑料封装,所以对温度的感应灵敏度不是相当高,需要一个很短的时间才能达到稳定。由此可知,本设计已经是一个成品了。第8章 结论经过设计和实践,本设计已经完成了一个比较完整的温度检测预与报警系统。它可以通过键盘输入温度上限、下限值,然后计算其上限和下限的中间值作为最适温度值。不断的采集温度值,显示温度值,如果发现采集的温度值高于上限值就通过相应的提示灯亮。如果采集的温度值低于下限值,那么也有相应的灯提示操作人员。如果并没有超过上下限则不会报警。致此本人设计基本完成了预期的目标,系统在温度采集、温度处理和键盘处理方面做的比较好,而在数据的存储和数码管的显示方面不够理想。主要存在以下几个方面:(1) 程序的代码不够精练,浪费AT89S52内的FLASH ROM;(2) 未对以前的温度数值进行存储,使以后不能利用这些数据;(3) 对数码管的控制考虑不周,以致出现闪烁现象;参考文献:1彭立,张建洲,王少华. 自适应温度控制系统的研制J.东北师大学报(自然科学版), 1994,(01):15-18.2陈儿同,王芳,贺运红,叶继涛,华泽钊. 多功能低温试验台的研制与实验方法J.上海理工大学学报, 2002,(03):23-26.3张毅刚,彭喜元,姜守达,乔立岩.MSC-51单片机应用设计M.哈尔滨,哈尔滨工业大学出版社,2003.7.4王忠平,田作华.I2C总线在增强单片机系统安全性中的应用J.测控技术,2007年02期:11-14.5江孝国,王婉丽,祁双喜. 高精度PID温度控制器J.电子与自动化, 2000,(05):3-6.6 高明远.单片机在烤烟炕房温度测量和控制中的应用J.现代电子技术,2004,27(11):6-11.7张洪润,张亚凡.传感技术与应用教程M.北京,清华大学出版社,2005.1.8蔡兵,徐跃进.华中农业大学学报2002 第5期J.华中农业大学期刊社,2002.4:23-26。9康华光,陈大钦.电子技术基础M.高等教育出版社,1998.10王海阳,蒋野.多功能电子时钟J.电子制作,2011年08期:13-17.;11成友才.基于AT89S52的USB下载线的设计D.电子科技大学,2009年.12D. Tulone, S. Madden. Time series forecasting for approximate query answering,in sensor networks. In Proc,of the 3rd European Workshop on Wireless Sensor Networks, ppJ. Feb 2006,:21-37.13 Gordon Hogenson. C+/Cli The Visual C+ Language For .Net M. Wiley India Pvt. Ltd., 2007.14 J. Stanley Warford. Computer SystemsM. Jones & Bartlett Publishers, 2009.15刘青立.编制单片机程序的步骤和难点J.电子爱好者,2002,7(12):17-20.附录附录一 原理图附录二 元器件清单元器件名称型号/大小数目(个)单片机AT89S521四位一体数码管共阳1电解电容10uF1电位器10K1瓷片电容30pF2晶振12MHz1电阻4.7k5330欧101K5DIP插座40/81/1发光二极管红4三极管90127蜂鸣器1温度传感器DS18B201排阻1031电池盒1按键1二极管IN40072继电器固态继电器2附录三 源程序#include <reg52.h> /52系列头文件#include <stdio.h>#define uchar unsigned char#define uint unsigned intsbit ds=P20;sbit beep