▌功能说明

(1)单片机读取温度传感器当前的温度值并在LCD液晶显示屏上的第一行显示当前的温度值,如Temp:27.5℃

(2)单片机读取按键状态并通过人为手动按键部分来设置最低温度到最高温度的温度范围后,由单片机内部进行转换并在LCD上显示出人为设定的正常时的温度范围。

(3)单片机把温度传感器当前值与人为设定的正常温度范围进行比较。若当前温度值低于人为设定的温度范围时,报警器部分的蜂鸣器会响以及报警指示灯会亮红色,同时升温电路的继电器闭合使得加热管开启工作达到加温功能,最终使得低温状态慢慢达到人为设定的正常温度范围内。若当前温度值高于人为设定的温度范围时,报警器部分的蜂鸣器会响以及报警指示灯会亮红色,同时降温电路的继电器闭合使得降温风扇开启工作达到降温功能,最终使得高温状态慢慢达到人为设定的正常温度范围内。若当前温度值等于人为设定的温度范围时,报警器部分的蜂鸣器不会响以及报警指示灯不会亮红色,同时升温电路和降温电路的继电器都不闭合,加热管和降温风扇都不工作,此时,已经达到人为设定的正常温度范围内的恒温状态。

(4)按下一次KEY1是在更改人为设置温度范围内的最低温度值,在LCD液晶显示屏的第二行的最低温度值前面显示一个“S”设置符号时,并通过多次按下KEY2或者KEY3来达到最低温度值增减的功能。按下两次KEY1是在更改人为设置温度范围内的最高温度值,在LCD液晶显示屏的第二行的最高温度值前面显示一个“S”设置符号时,并通过多次按下KEY2或者KEY3来达到最高温度值增减的功能。

(5)按下S1复位开关后,系统取消了原先人为设定的正常温度范围值,变成了代码最初设定的默认正常温度范围值并显示在LCD上。

▌电路组成

单片机最小系统,电源部分,温度传感器部分,报警器部分,降温电路部分,升温电路部分,按键部分和LCD温度显示部分组成。

图1:基于51单片机的恒温控制器proteus原理图

▌程序流程图

图2:程序流程图

▌仿真现象记录

(1)等于25-30℃正常恒温范围时:只显示此时温度27.5℃。

图3:正常温度恒温

(2)24.5℃温度低于25-30℃正常温度范围时:加热管工作且指示灯亮黄色,报警器灯亮红色,蜂鸣器发声。

图4:低于正常温度非恒温

(3)32℃温度高于25-30℃正常温度范围时:降温风扇工作且指示灯亮黄色,报警器灯亮红色,蜂鸣器发声。

图5:高于正常温度非恒温

(4)人为通过按键设置正常恒温范围内的最低温度值:最低温度值前面显示一个“S”设置符号。

图6:显示低温“S”设置符号。

最后设置最低温度为21℃。

图7:显示设置的最低温值

(5)人为通过按键设置正常恒温范围内的最高温度值:最高温度值前面显示一个“S”设置符号。

图8:显示高温“S”设置符号

最后设置最高温度为37℃。

图9:显示设置的最高温值

(6)按下S1复位开关后,系统取消了原先人为设定的正常温度范围值21-37℃,变成了代码最初设定的默认正常温度范围值25-30℃并显示在LCD上。

图10:显示设置的默认温度范围值

▌选择部分硬件时注意事项

(1)晶振和单片机内部时钟的属性频率:11.0592MHz。

(2)蜂鸣器BUZZER:应选择为直流有源的,更改属性电压值2V左右,不宜过大,因为报警器电路部分只有5V的VCC供电。

(3)继电器:RL1和RL2的电压也不应该过大更改属性驱动电压值由12V变为5V或者5V以下,因为在升/降温电路部分能使继电器工作的电源为5V的VCC。如果继电器的工作电压过大,即使与继电器相连接的三极管导通,继电器也达不到正常的工作电压值,使得继电器的吸引力不强,丧失了强电控制弱电的功能。

▌部分硬件及管脚的功能

(1)PNP三极管作用:基级,低电平导通,高电平截止,相当于开关功能。

(2)继电器作用:当有电流时开关吸合使电路闭合工作,当没有电流时开关弹开,使电路断路不工作。

(3)上拉电阻(排阻)作用:P0口作为I/O口输出的时候时,当输出的低电平为0,输出高电平为高组态(并非5V,相当于悬空状态,也就是说P0口不能真正的输出高电平)。P0口没有办法给所接的负载提供电流,因此必须连接上拉电阻(上拉电阻一端连接到VCC),由电源通过这个上拉电阻给负载提供电流。由于P0口内部没有上拉电阻,当为开漏的,不管它的驱动能力多大,相当于它是没有电源的,因此需要外部的电路提供电源,绝大多数情况下P0口是必需加上拉电阻的。

(4)LCD1602部分管脚作用:

VEE管脚作用:是液晶显示的偏压信号,VEE通过滑动变阻器接地,用来调整对比度,接正电源时对比度最弱,接地电源时对比度最高。RS是寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器;RW为读写信号线,高电平1时进行读操作,低电平0时进行写操作;E(EN)端是使能(enable)端,高电平1时读取信息,负跳变时执行指令。

(5)与温度传感器串联的10KΩ的电阻作用:由于单片机直接读出的是AD值,用10KΩ的电阻与温度传感器串联分压,单片机读取中间的分压AD。DS18B20是数字式单总线式温度传感器。(问题:这个10kΩ的分压电阻的阻值假如更改其大小,会影响温度传感器的转换精度吗?还有当环境温度为25℃时,能说明温度传感器的硬件阻值大小为10kΩ吗?)

(6)与LED灯串联的电阻作用:分压(限流)作用,其阻值不宜过大过小,一般200到300多欧姆,阻值过大使得电路的电流太小达不到LED灯的开启电压值然后不亮或者亮不明显,阻值过小使得电路的电流太LED灯分到的电压太大导致烧坏。

(7)电源部分:提供给整个电路图的所有5V电源。

▌代码和其他文件

在公众号回复「51单片机温度控制系统」获取。


推荐阅读:

专辑|Linux文章汇总

专辑|程序人生

专辑|C语言

我的知识小密圈

关注公众号,后台回复「1024」获取学习资料网盘链接。

欢迎点赞,关注,转发,在看,您的每一次鼓励,我都将铭记于心~

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐