1、简介
一种基于51单片机的多路温度检测报警系统。该设计采用数字温度传感器DS18B20,此传感器读取被测量温度值并进行转换。将转换后的多路数据送到单片机处理,再通过LCD1602显示出来。同时,可手动设置每路温度的上下限值,当实时温度超出时,对应的工作指示灯亮,蜂鸣器报警。
2、主要功能
a.通过LCD1602显示当前温度值,温度测量范围:0-99摄氏度。
b.通过独立按键设置多路温度上下限值,第一次按下设置键设置温度上限值,第二次按下设置键设置温度下限值,再按加减键就可以修改温度值。
c.当温度低于下限或高于上限温度时,蜂鸣器和LED灯同时报警。
d.可通过按键设置LCD1602温度显示模式:循环或手动。
3、环境搭建
资料清单:C程序+仿真+设计报告+使用说明+元件清单+操作视频
仿真版本:Proteus8.6及以上版本
编译平台:Keil C51
编程语言:C语言
4、源程序
使用keil C51软件(内附安装包)实现程序编写与编译。
//宏定义
#define uchar unsigned char
#define uint unsigned int
bit ZF1,ZF2,ZF3,ZF4; //温度的符号位,=0为正数,=1为负数
bit flag,shanshuo;
//头函数
#include<reg52.h>
#include<Lcd.h>
#include<DS18B20.h>
//函数声明
//IO说明
sbit LED1=P1^0;
sbit LED2=P1^1;
sbit LED3=P1^2;
sbit LED4=P1^3;
sbit LED5=P1^4;
sbit LED6=P1^5;
sbit LED7=P1^6;
sbit LED8=P1^7;
sbit BUZZER=P2^0;
sbit K1 =P3^3;
sbit K2 =P3^4;
sbit K3 =P3^5;
sbit K4 =P3^6;
sbit K5 =P3^7;
//变量声明
uchar Mode=0;//
uchar S=0;
uint SI=0;
uint TT0=0,TT1=0,TT2=0,TT3=0;//温度变量
bit flag_BJ1,flag_BJ2,flag_BJ3,flag_BJ4,flag_BJ5,flag_BJ6,flag_BJ7,flag_BJ8;
bit ZFH1=0,ZFL1=0,ZFH2=0,ZFL2=0,ZFH3=0,ZFL3=0,ZFH4=0,ZFL4=0;
char TEMH1=30,TEML1=20,TEMH2=31,TEML2=21,TEMH3=32,TEML3=22,TEMH4=33,TEML4=23;
uchar set;
void delay(uint ms)
{
uint i,j;
for(i=0;i<ms;i++)
for(j=0;j<110;j++);
}
void key()
{
if(K1==0)
{
delay(10);
if(K1==0)
{
set++;
if(set>=3)
{
set=0;
flag=0;
}
}
while(!K1);
}
if(set!=0)
{
flag=1;
BUZZER=1;
flag_BJ1=0;flag_BJ2=0;flag_BJ3=0;flag_BJ4=0;
LED1=1;LED2=1;LED3=1;LED4=1;
}
if(K2==0)
{
delay(10);
if(K2==0)
{
if(set==1)
{
if(Mode==0)
{
if(ZFH1==0)
{
TEMH1++;
if(TEMH1>=99)
TEMH1=99;
}
else
{
TEMH1--;
if(TEMH1==0)
ZFH1=0;
}
}
if(Mode==1)
{
if(ZFH2==0)
{
TEMH2++;
if(TEMH2>=99)
TEMH2=99;
}
else
{
TEMH2--;
if(TEMH2==0)
ZFH2=0;
}
}
if(Mode==2)
{
if(ZFH3==0)
{
TEMH3++;
if(TEMH3>=99)
TEMH3=99;
}
else
{
TEMH3--;
if(TEMH3==0)
ZFH3=0;
}
}
if(Mode==3)
{
if(ZFH4==0)
{
TEMH4++;
if(TEMH4>=99)
TEMH4=99;
}
else
{
TEMH4--;
if(TEMH4==0)
ZFH4=0;
}
}
}
if(set==2)
{
if(Mode==0)
{
if(ZFL1==0)
{
TEML1++;
if(TEML1==TEMH1)
TEML1=TEMH1-1;
if(TEML1>=99)
TEML1=99;
}
else
{
TEML1--;
if(ZFH1==1&&TEML1==TEMH1)
TEML1=TEMH1+1;
else if(ZFH1==0&&TEMH1==0&&TEML1==0)
TEML1=1;
if(TEML1==0)
ZFL1=0;
}
}
if(Mode==1)
{
if(ZFL2==0)
{
TEML2++;
if(TEML2==TEMH2)
TEML2=TEMH2-1;
if(TEML2>=99)
TEML2=99;
}
else
{
TEML2--;
if(ZFH2==1&&TEML2==TEMH2)
TEML2=TEMH2+1;
else if(ZFH2==0&&TEMH2==0&&TEML2==0)
TEML2=1;
if(TEML2==0)
ZFL2=0;
}
}
if(Mode==2)
{
if(ZFL3==0)
{
TEML3++;
if(TEML3==TEMH3)
TEML3=TEMH3-1;
if(TEML3>=99)
TEML3=99;
}
else
{
TEML3--;
if(ZFH3==1&&TEML3==TEMH3)
TEML3=TEMH3+1;
else if(ZFH3==0&&TEMH3==0&&TEML3==0)
TEML3=1;
if(TEML3==0)
ZFL3=0;
}
}
if(Mode==3)
{
if(ZFL4==0)
{
TEML4++;
if(TEML4==TEMH4)
TEML4=TEMH4-1;
if(TEML4>=99)
TEML4=99;
}
else
{
TEML4--;
if(ZFH4==1&&TEML4==TEMH4)
TEML4=TEMH4+1;
else if(ZFH4==0&&TEMH4==0&&TEML4==0)
TEML4=1;
if(TEML4==0)
ZFL4=0;
}
}
}
}
5、proteus8.6仿真
采用proteus8.6软件(内附安装包)实现仿真设计,如下图所示。proteus软件一般存在高低版本兼容问题,该仿真是通过proteus8.6导出的,所以请尽量使用proteus8.6打开文件,低于proteus8.6的版本不能够正常使用,高于proteus8.6的版本除了proteus8.8/8.9理论上可以正常使用。
T1当前温度:
T2当前温度:
T3当前温度:
T4当前温度:
当温度高于上限时,蜂鸣器和LED灯报警:
当温度低于下限时,蜂鸣器和LED灯报警:
6、设计资料清单
设计资料主要包括C程序+仿真+设计报告+使用说明+元件清单+操作视频等,设计报告主要包括硬件电路、软件设计、仿真调试等等,仅供参考。由于不定期更新,最新的资料包不一定与下面图片完全一致,但主要资料都有。
7、资料获取方式
EE05下载链接1:百度网盘(推荐)
EE05下载链接2:优快云免积分)
有偿获取,非诚勿扰🙏