《基于AT89C52的恒温箱设计综述》由会员分享,可在线阅读,更多相关《基于AT89C52的恒温箱设计综述(25页珍藏版)》请在金锄头文库上搜索。
1、西华大学课程设计说明书 目录1 前言12 总体方案设计22.1 主控芯片选择22.2 测温电路方案选择22.3 调温电路方案选择32.4 单片机设计42.5 温度传感电路设计52.6 温控电路的设计63 软件程序设计73.1 主程序设计73.2 DS18B20初始化设计73.3 DS18B20读写子程序设计83.4 键盘扫描子程序设计103.5 温度调节子程序设计124 功能总结与说明145 结束语176 参考文献18附录一:系统总图19附录二:相关程序201 前言在国民经济各部门,如电力、化工、机械、冶金、农业、医学以及人们的日常生活中,温度检测是十分重要的。在许多模拟量控制和监视应用中,温
2、度测控通常是基于-40125温度范围内的应用,如环境监测、蔬菜大棚、粮库、热电偶冷端温度补偿、设备运行的可靠性等应用。实时采集温度信息,及时发现潜在故障,并采取相应的处理措施,对确保设备良好运行具有重要意义。 本文介绍了一个基于单片机的温度控制系统,该系统可以方便地实现温度采集、温度显示等功能。本系统的温度控制部分采用单片机完成。单片机有着体积小、功耗低、功能强、性能价格比高、使用电子元件较少、内部配线少、制造调试方便等显著优点,将其用于温度检测和控制系统中可大大地提高控制质量和自动化水平,具有良好的经济效益和推广价值。利用单片机对温度进行测控的技术,日益得到广泛应用。2 总体方案设计2.1
3、主控芯片选择方案一:可以用运放等模拟电路搭接一个控制系统,用模拟方式实现PID控制,稍显麻烦。况且附加的显示,温度的设定等功能无法在模拟电路中实现,实现还要附加许多电路,同样的用逻辑电路实现的话,总体的电路设计和制作较运放还要繁琐,所以舍弃这个方案。方案二:查阅网上资料发现使用FPGA可以实现控制功能,并且使用FPGA电路设计比较简单,只需要通过相应的编程设计,可以很容易实现控制、显示、键盘等功能。但是价格较高,并且对FPGA的具体应用方式不清楚,所以该方案也舍弃。 方案三:使用单片机作为核心,同时温控系统的温度显示和温度的设定也可用LED显示和3*3键盘控制。当环境温度低于设定的最低温度值时
4、,采用蜂鸣器进行报警。电路设计和制作比较简单合理,因此选择该方案。具体框图如下: 图2.1 总体设计框图2.2 测温电路方案选择方案一:可以使用热敏电阻作为测温元件,通过热敏电阻实现A/D转换,但是热敏电阻的精度比较高,并且需要配合电桥电路整流等,整个电路设计稍显麻烦,故不采用此方案。方案二:采用最新的单线数字温度传感器DS18B20作为测温元件,它能够直接读出被测温度,并且可根据实际要求通过简单的编程实现912位的数字值读数方式。可以分别在93.75ms和750ms内完成9位和12位的数字量,并且从DS18B20读出的信息或写入DS18B20的信息仅需要一根口线(单线接口)读写,只需要和单片
5、机相连接即可实现。温度变换功率来源于数据总线,总线本身也可以向所挂接的DS18B20供电,而无需额外电源,因此比较方便,同时其价格适中,使用比较简单,其读写时序主要有复位、读时间片和写时间片三种时序操作。芯片本身带有命令集和存储器,微处理器通过发出控制命令,对芯片存储器进行读写,完成温度测量。芯片电源也可由微处理器的一个I/O口提供。微处理器在读写DS1820前先使其复位,检测到其应答信号后,微处理器发ROM操作命令,然后再发控制命令。多点温度测量时,只需并联多只DS1820并放在各测温点上,在使用前对各个芯片进行ROM搜索并将各个芯片的序列号保存起来。以后对每个DS1820寻址时,只要发相应
6、的序列号,然后再对其进行其它操作即可。与DS1820类似的芯片还有DS1822,故采用该方案。具体电路如下:图2.2 DS18B20电路的连接2.3 调温电路方案选择根据题目,可以使用220V、40W的灯泡加热,当温度过高时,降温控制系统可以采用低压直流电风扇。当温度高于设定最高限温度时,启动风扇降温,当温度降到指定最高限温度以下后,风扇自动停止运转。加热电源选用220V交流电,制冷电源为5V直流电。根据查阅资料和网上参考可以使用固体继电器来控制加热,制冷的工作。固态继电器使用比较简单,而且没有触电,可以频繁工作,是一个比较好的方案,其在protues中RELAY即可选用。固态继电器的电路连接
7、如下:图2.3 固态继电器的电路连接2.4 单片机设计 本次设计采用AT89C52单片机,AT89S51单片机是低功耗的,具有4KB在线可编程FLASH存储器的单片机。它与通用AT89C51单片机的指令系统和管脚兼容。AT89C52单片机的引脚图如图4:图2.4 AT89C52引脚图对于AT89C52接口的使用:(1) 电源及时钟引脚:Vcc:电源接入引脚;GND:接地引脚;XTAL1:晶体振荡器接入的一个引脚(采用外部振荡器时,此引脚接地);XTAL2:晶体振荡器接入的另一个引脚(采用外部振荡器时,此引脚作为外部振荡信号的输入端)。(2) 控制线引脚RST:复位信号输入引脚。(3) 并行I/
8、O口引脚P0.0P0.7:作为数码管的输出;P1.0P1.2:用来作为数码管的片选和蜂鸣器与LED灯的选择;P1.3:DS18B20的单线接口端;P2.1P2.3与P2.5P2.7:构成一个3*3的键盘;P3.6:控制灯泡的启动与关断;P3.7:控制风扇的启动与关断。2.5 温度传感电路设计DS18B20的性能特点:(1)采用单总线专用技术,既可通过串行口线,也可通过其它I/O口线与微机接口,无须经过其它变换电路,直接输出被测温度值(9位二进制数,含符号位);(2)测温范围为-55-+125,测量分辨率为0.0625;(3)内含64位经过激光修正的只读存储器ROM;(4)适配各种单片机或系统机
9、;(5)用户可分别设定各路温度的上、下限;(6)内含寄生电源。DS18B20内部结构主要由四部分组成:64位光刻ROM,温度传感器,非挥发的温度报警触发器TH和TL,高速暂存器。DS18B20的管脚排列如图所示:图2.5 DS18B20的管脚排列在硬件上,DS18B20与单片机的连接有两种方法,一种是VCC接外部电源,GND接地,I/O与单片机的I/O线相连;另一种是用寄生电源供电,此时UDD、GND接地,I/O接单片机I/O。无论是内部寄生电源还是外部供电,I/O口线要接5K左右的上拉电阻.我们采用的是第一种连接方法,如图3.3所示:把DS18B20的数据线与单片机的P1.0管脚连接,再加上
10、上拉电阻。DS18B20有六条控制命令,如下表所示:表2.1 DS18B20控制命令指 令约定代码操 作 说 明温度转换44H启动DS18B20进行温度转换读暂存器BEH读暂存器9个字节内容写暂存器4EH将数据写入暂存器的TH、TL字节复制暂存器48H把暂存器的TH、TL字节写到E2RAM中重新调E2RAMB8H把E2RAM中的TH、TL字节写到暂存器TH、TL字节读电源供电方式B4H启动DS18B20发送电源供电方式的信号给主CPU2.6 温控电路的设计 单片机的P3.6、P3.7分别与SN74LS245N的9引脚和7引脚连接来控制灯泡与风扇的开断。当实际温度高于温度上限时,置P3.7口为低
11、电平,风扇启动,同时利用蜂鸣器和LED灯进行声光报警;当实际温度低于温度下限时,置P3.6口为低电平,灯泡启动,同时点亮LED灯表明加热器正在加热。仿真电路图如下:图2.6 温控电路仿真连接图 3 软件程序设计3.1 主程序设计开始程序初始化给温度上下限赋值采集温度值并显示实际温度和温度上下限判断实际温度是否在温度范围内并进行调节检测键盘并执行相应键功能图3.1 主程序框图3.2 DS18B20初始化程序初始化开始清除 DQ,向DS18B20发出reset脉冲等待480us以上?置位DQ,等待1560usDQ变低电平?置FLAG标志并延时200us初始化结束YNYN清除FLAG标志图3.2 D
12、S18B20初始化程序框图3.3 DS18B20读写子程序设计DS18B20读写子程序WRITE_1820、READ_1820、READ_18200完成对18B20的读写功能,其中,READ_1820从DS18B20中读出一个字节的数据,READ_18200从DS18B20中读出两个字节的温度数据。3.3.1 DS18B20写入子程序框图开始写入DS18B20初始化写入44H,发转换命令写入CCH,SKIP ROM清除 DQ,准备发送延时15us写入1位数据延时1545usSETB DQ,完成位写入位写完结束YN图3.3 DS18B20写入程序框图3.3.2 DS18B20读取子程序框图DS1
13、8B20初始化写入CCH,SKIP ROM写入BEH,发转换命令SETB DQ延时1us以上清除DQ准备发送延时1us以上SETB DQ释放总线读取1位数据延时1545us8位读完开始读取结束YN图3.4 DS18B20读取程序框图3.3 键盘扫描子程序设计开始计数单元清零Y置列为输入延时20ms消抖有键按下?有键按下?YY计数单元加一带进位位右移输入码C为0吗?输入码高低四位互换计数单元加四带进位位右移输入码C为0吗?Y下NN结束NN延时20ms消抖按键释放?Y上按键释放?YN结束N根据计数单元的内容执行相应键值功能图3.5 键盘扫描程序框图3.4 温度调节子程序设计前文讲述了其中P3.6
14、作为灯泡启动关闭的控制引脚, P3.7 作为风扇启动关闭的控制引脚。由于每次采集温度值时,DS18B20会先给温度赋初值85,这样在判断实际温度是否小于温度上限时,会受到干扰,因此判断之前我先命令:如果实际温度大于80就跳出温度调节程序。框图如下:实际温度比温度上限大吗?声光报警NN关风扇风扇已启动?灯泡已启动?NNY实际温度比温度上限大吗?实际温度小于80吗?YY点亮加热指示灯Y关灯泡实际温度比温度上限小吗?开启灯泡、点亮指示灯、开启定时N开启风扇、声光报警、开启定时YYN结束N实际温度比温度下限大吗?开始Y图3.6 温度调节程序框图4 功能总结与说明以下是我制作的简易温度控制系统可实现的功能:1、实时显示实际温度和设定温度,最小区分度为1。2、温度上下限可实现任意调整,调节范围为090,根据本次设计要求将上限设为20,下限设为60。3、当温度高于温度上限时,启动风扇降温,同时声光报警。温度降到温度上限以下后,风扇自动关闭。4、当温度低于温度下限时,自动启动灯泡加热,同时亮灯表示加热器正在加热。温度超过温度下