注:获取全套资源,请见后文说明…
设计要求
1.测量温度值精度为±1℃;
2.系统允许的误差范围为1℃以内;
3.系统可由用户预设温度值,测温范围为-55℃~+125℃;
4.通过DS18B20传感器和系统连接,能实时准确检测到现场温度;
5.把现场实时检测到的温度值通过LCD1602液晶显示出来;
6.报警温度设定和报警:根据需要可以设置报警温度,并且当达到报警温度时会发出报警提示;
系统概述
本系统采用一种改进型温度传感器DS18B20作为检测元件,温度范围为-55~125ºC,最高分辨率可达0.0625ºC。DS18B20可以直接读出被测温度值,而且采用三线制与单片机相连,减少了外部的硬件电路,具有低成本和易使用的特点。
本设计是一种基于AT89C52单片机的温度监控系统仿真设计,系统采用DS18B20作为温度监测元件,测量范围-55℃-~+125℃,使用LCD1602液晶模块显示测取的温度值以及设定的温度上下限值,按键模块用来设置温度报警上下限。若当前获取的温度不在设定温度上下限范围内时,蜂鸣器报警,LED指示灯点亮,指示当前报警信息。
系统由4个部分组成,它们是AT89C52单片机最小系统(包括复位电路和晶振电路)、DS18B20采温模块、LCD显示模块、按键设置模块和报警模块,其设计框架如下。
仿真电路图
仿真结果运行
当从DS18B20采集到的温度低于温度下限时,仿真结果如下图所示,可知蓝色LED指示灯点亮,蜂鸣器报警。
部分C程序
主程序
void main()
{
init();//LCD初始化
Init_time();
Init_DS18B20();//DS18B20初始化
while(1)
{
if(s1==0||s1num>=1)
{keyscan(); TR0 = 0; D1 = 1; D2 = 1;}//按键扫描
else
{
ReadTemp();//读取温度值
write_temp_value(0,temp_value);//LCD显示温度值
comp();
}
}
}
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x–)
for(y=110;y>0;y–);
}
/LCD初始化程序***/
void init()
{
lcden=0;
lcdrw=0;
write_com(0x38); //设置16x2 显示5x7 点阵,8 位数据接口
write_com(0x0c); //设置开始显示不显示光标
write_com(0x06); //写一个字符后地址指针加1
write_com(0x01); //显示清零数据指针清零
write_com(0x80); //将数据指针第一行第一个字处,
write_com(0x80+9); //定义当前指针位置
write_data(‘H’);
write_data(’:’);
write_data(’+’);
write_data(‘2’);
write_data(‘0’);
write_data(0xdf);
write_data(‘C’);
write_com(0x80+9+0x40); //定义当前指针位置
write_data(‘L’);
write_data(’:’);
write_data(’+’);
write_data(‘1’);
write_data(‘0’);
write_data(0xdf);
write_data(‘C’);
h=0x14;
l=0+0x0a;
D1=1;
D2=1;
figh=0;
figl=1;
}
资源分享内容有
(1)基于DS18B20的数字温度监控系统Proteus仿真毕设报告【完整版】;
(2)Proteus仿真文件;
(3)Keil C语言程序文件;
(4)参考文献资料(DS18B20、LCD1602手册等);
(5)Visio流程图文件;
分享如下
资源获取方法
资源获取方法
资源获取方法
重要的事情说三遍!!!!!!!!!!!
由于本设计为作者原创设计,获取完整的论文报告、Keil C程序、Proteus仿真、Visio流程图文件和参考文献资料。请搜索关注我的公众号:交院小智