《毕业设计(论文)-基于DS18B20的单片机设计(多点测温).docx》由会员分享,可在线阅读,更多相关《毕业设计(论文)-基于DS18B20的单片机设计(多点测温).docx(37页珍藏版)》请在金锄头文库上搜索。
1、目录一、系统硬件部分设计21系统总体设计方案2(1)系统的技术指标2(2)温度测量方案2(3)系统方案及元件的选择32系统的工作模块4(1)AT89C51芯片4(2) LCD显示5(3)温度采集模块5(4)声光模块5(5)驱动模块63系统电路原理图7二、系统软件部分设计81系统软件设计方案8(1)主程序流程图8(2)显示模块流程图9(3)温度采集模块流程图92程序清单10三、系统仿真过程及结果111.Keil编译及仿真112.Proteus仿真12四、系统实物制作与调试151系统实物器件清单152实物制作过程153系统调试过程与功能实现16(1)实验中遇到的问题和解决方案16(2)系统的功能实
2、现16五、心得体会:17六、参考文件18附录19附录一(系统实物器件清单)19附录二(源程序)21一、系统硬件部分设计1系统总体设计方案 如图1所示:图1系统方案本设计目的在于通过测量温度来判断外部设备是否工作,以维持室温的恒定,于是我们测温模块DS18B20来采集不同地方的温度,通过单片机89C51来判断温度是否在设定范围内,并输出到显示模块LCD1602,显示温度数值。如果温度在可控范围内,LED灯将显示正常工作,蜂鸣器不工作;如果温度超过设定值,系统将驱动降温模块,电机将开始运转,LED灯显示超温工作,蜂鸣器报警;如果温度低于设定值,系统将驱动升温模块,电阻丝将开始通电,将电能转化成热能
3、,LED灯将显示红色报警,蜂鸣器报警。(1)系统的技术指标利用DS18B20和AT89C51设计一个温度测量系统,系统功能:实现三点温度检测,用LCD显示温度;温度测量范围:-55125,精度0.1。设定温度上下限,当温度高于上限值或低于下限值时,系统能自动驱动降温与升温设备工作。(2)温度测量方案由于多点温度测量是本设计的主要内容,所以温度测量的精确非常重要,为了提高温度测量汇总的准确度,本设计采用了使用DS18B20温度测量模块直接对温度进行测量。然后将多个DS18B20温度测量模块得到的数据进行采集,可以达到多点的温度精确测量。DS18B20的64位ROM中存储着器件独一无二的序列号,缓
4、存器中包含两字节的温度寄存器,用于存储温度传感器的数字输出,缓存器中还提供一字节的上线警报触发(TH)和下线警报触发(TL)寄存器,和一字节的配置寄存器,使用者可以通过配置寄存器来设置温度转换的精度。缓存器的第五字节、第六字节和第七字节为器件内部保留使用。第八字节含有循环冗余码(CRC)。使用寄生电源时,DS18B20不需要额外的供电电源,当总线为新电平时,功率由单总线上的上拉电阻通过DQ引脚提供;高电平总线信号同时也向内部电容Cap充电,Cap在总线低电平时为器件供电。DS18B20中温度数据是以带符号位的16位补码存储在温度寄存器中的,符号位说明温度是正值还是负值,正值时,S=0;负值时,
5、S=1。DS18B20采用严格的单总线通信协议,以保证数据的完整性。该协议定义了6钟信号类型,即复位脉冲、应答脉冲、写0、写1、读0和读1.。除了应答脉冲,所有这些信号都有主机发出同步信号。总线上传输的所有数据和命令都是字节的低位在前。在写时序开始后的1560us期间,DS18B20采样总线的状态。如果总线为高电平,则逻辑1被写入DS18B20;如果总线为低电平,则逻辑0被写入DS18B20.。每个读时序均由主机发起,拉低总线至少1us。在主机发起读时序后,DS18B20开始在总线上传送0或1。若DS18B20发送1,则保持总线为高电平;若发送0,则拉低总线,当传送0时,DS18B20在该时序
6、结束时释放总线,再由上拉电阻将总线拉回空闲状态。DS18B20发出的数据在读时序下降沿起始后的15us内有效,因此主机必须在读时序开始后的15us内释放总线,并采样总线状态。DS18B20在使用时,一般采用单片机来进行数据采集。只需将DS18B20信号线与单片机一位I/O线相连,且单片机的一位I/O线可挂接多个DS18B20,从而实现多点温度测量。(3)系统方案及元件的选择机型的选择,通过对系统大致程序的估计和系统工作速度的估计以及I/O口需求量的估计,考虑价格因素、元器件市场因素,选定AT89C51单片机作为系统的主要控制芯片。各种经过DS18B20测量得到的温度值的电信号都需要经过LCD显
7、示出来,考虑到被测量的有效位数及其富裕量,选择LM016L液晶显示模块进行显示,由于需要显示的数字较多,需要进行排版处理,才能使得温度值能够更加直观地显示出来,选择LM016L液晶显示模块进行显示排版。由于升温和降温时,需要进行声音报警和灯光报警,所以采用LED指示灯和蜂鸣器进行报警提示。由于该电路的设计需要对升温和降温做出反应,在升温时散热,在降温时发热,所以采用电动机模块和电阻丝模块,在升温时发电机启动,带动风扇进行散热, 在降温时电阻丝模块接入电路,通过电流热效应进行放热。2系统的工作模块(1)AT89C51芯片51 单片机是一块芯片集成了 CPU、RAM、ROM、定时/计数器和多功能的
8、 I/O 口。 运算模块由DS18B20、设备和显示屏组成。 单片机通过对DS18B20输入数据的处理,来判断是否启动设备。如果温度超过所设置的上限值,单片机将在电机的输出口置1,启动电机散热,同时高温指示灯将亮起,蜂鸣器工作;如果温度低于所设置的下限值,电阻丝工作供热,低温指示灯将亮起,蜂鸣器工作;在所设置的温度范围内,设备将不会工作,绿灯亮起。如图2所示:图2 AT89C51(2) LCD显示本设计采用的是 LCD 液晶显示输出数据。液晶显示器 LM016L 液晶显示器 LCD液晶显示模块引出引脚标号为D7.0、RS、RW、E,接入单片机引脚P07.0、P20、P21 、P22如图3所示:
9、 图3液晶显示图(3)温度采集模块本设计采用DS18B20模块采集和输送温度,温度采集模块引出引脚标号为DQ-A、DQ-B、DQ-C接入单片机引脚P35、P36、P37。连接方式如图4所示: 图4 DS18B20(4)声光模块LED指示灯LED指示灯是单片机系统中最常用的显示设备,用户可以根据指示灯的亮灭状况判断设备的工作状态。指示灯需要完成的任务有:检查设备的运行状态,如果设备没启动,则相应的指示灯亮起,其他指示灯不工作;如果设备启动,则相应的指示灯亮起,其他不工作设备的指示灯熄灭,同时以不同颜色的指示灯来区别工作状况,使用户可以更加有顺序和效率的操作设备。LED指示模块引出引脚LED-A、
10、LED-B、LED-C、MOTOR-A、MOTOR-B、MOTOR-C、HEAT-A、HEAT-B、HEAT-C接入单片机引脚P24、P25、P26、P27、P30、P31、P32、P33、P34。如图5所示。图5 LED指示灯警报本设计采用扬声器speaker警报模块引出引脚BEE,接入单片机引脚P23连接方式如图6所示:图6蜂鸣器(5)驱动模块电动机驱动电动机属于强电设备,在弱电设备中无法应用,所以电动机的驱动就需要使用继电器,继电器是弱电驱动强电的中间设备,单片机可以在继电器的控制端输入一个高电平信号,使继电器的衔铁吸和,从而启动电动机。电动机驱动模块引出引脚MOTOR-A、MOTOR-
11、B、MOTOR-C,接入单片机引脚P27、P30、P31。如图7所示:图7电动机的连接图发热电阻丝驱动发热电阻丝的驱动原理同电动机的驱动一样,利用继电器使设备接入电源从而工作。电阻丝驱动模块引出引脚HEAT-A、HEAT-B、HEAT-C,接入单片机引脚P32、P33、P34.如图8所示:图8电阻丝的连接图3系统电路原理图二、系统软件部分设计1系统软件设计方案(软件流程图)(1)主程序流程图主程序通过对温度采集模块输送的信息进行处理,并在LCD显示处理,如图 9.图9主程序流程图(2)显示模块流程图通过单片机向显示模块写入命令和数据,对显示方式和显示内容作出选择,如图10.图10显示模块流程图
12、(3)温度采集模块流程图DS18B20温度采集模块的工作时序包括:初始化时序、写时序和读时序,如图11. 图11温度采集模块流程图2程序清单(见附录二)三、系统仿真过程及结果1.Keil编译及仿真将所编辑的C程序写入Keil软件,并运行仿真,所得程序编译无误,如图12。图12编译程序截图点击软件右上角的程序仿真按钮,对所编译成功的程序进行仿真,结果如图13。图13运行程序截图2.Proteus仿真接通电源开关后,仿真图如图14 15 16 17和18所示:LCD、DS18B20开始工作。DS18B20温度数值为27.0、27.0、27.0LCD示数分别为27.0、27.0、27.0未超过温度上
13、下限,电阻丝模块、电动机模块不工作,如图14。图14调整DS18B20感受到的温度值为31.5、33.0、29.4LCD示数为31.5、33.0、29.4未超过温度上下限,所以电动机模块和电阻丝模块都不动作,如图15。图15调整DS18B20温度数值为31.5、33.0、40.9LCD显示为31.5、33.0、40.9第三组温度超过温度上限,第三组对应发动机模块动作,电阻丝模块不动做,如图16。图16调整DS18B20温度数值分别为31.5、33.0、19.7,LCD显示为31.5、33.0、19.7,由于第三组低于温度下限,所以第三组对应电阻丝模块动作,电动机模块不动作,如图17。图17调整
14、DS18B20温度数值为39.7、39.0、20.0LCD显示为39.7、39.0、20.0按住KM2按钮,给B降温未超过温度上下限,但电动机模块动作,电阻丝模块没有动作。图18四、系统实物制作与调试1系统实物器件清单(见附录一)2实物制作过程为了缩短开发周期,采用购买完整的单片机开发板进行实验,购买单片机开发板中只包含本实验中的AT89C51芯片、AT89C51的周边电路和电动机模块和电阻丝模块,为了完善开发元件,我们购买了LCD液晶显示模块,型号为LM016L、三块DS18B20芯片和若干杜邦线。因为电动机模块和电阻丝模块并没有与开发板直接相连,所以采用杜邦线将电动机模块和电阻丝模块与开发
15、板进行连接,对照电路图进行完善连接。实物图如图19所示。图193系统调试过程与功能实现(1)实验中遇到的问题和解决方案实验初期,按照实验方案在温度范围内的LED应该点亮,仿真成功,但是应用于实验中的单片机开发板却并没成功,经过多次更换LED之后依然无发点亮,通过与老师、同学的讨论和分析,得出结论:在单片机开发板中使用的LED灯是共阳极连接的,所以实验现象与仿真结果无法一致。硬件修改过于繁琐,所以我们在软件即程序语言上做了修改,原是“0”点亮的程序,我们改为“1”点亮,通过软件即程序上的修改,我们达到了仿真结果。多次实验以后,我们将位定义直接集中在端口头文件,方便进行调试。我们将三组温度采集和处