本设计是基于51单片机的多路温度采集控制系统的设计
(仿真+源码+原理图+视频讲解+硬件清单)
仿真:proteus8.9
程序编译器:keil 4
编程语言:C语言
编号C0008
下载地址
C0008 网盘链接
功能说明:
本设计是基于单片机的多路温度采集控制系统的设计,主要实现以下功能:
1.可实现通过三个DS18B20采集三个不同位置的温度值,并通过RS485传送给主机;
2.可实现通过继电器控制加热降温模块,进行异常温度处理;
3.可实现通过按键调整初始设定的最大最小温度阈值;
4.可实现通过主机的LCD1602显示温度值、继电器状态、上下限温度阈值等信息
仿真图(提供源文件):
原理图(提供源文件):
源程序(提供源文件):
从机main函数
/***
**函数名:main()
**功能: 主函数
****/
void main()
{
int ans;
int ans1; //读取的温度寄存器
int ans2; //读取的温度寄存器
int ans3; //读取的温度寄存器
uchar flag; //正负位标志
UART_init();
while(1)
{
key_scan();
/************* 正常温度*********************/
if(Uart_flag == 0)
{
DS18B20_start_change1(); //开始读温度
delay(100);
ans1=DS18B20_read_date1();
DS18B20_start_change2(); //开始读温度
delay(100);
ans2=DS18B20_read_date2();
DS18B20_start_change3();
delay(100);
ans3=DS18B20_read_date3();
delay(100);
ans=(ans1+ans2+ans3)/3;
if(ans < TL)
{
P0=0x3f;
beep=0;
RELAY1=0;
RELAY2=1;
}
else if(ans > TH)
{
P0=0xcf;
beep=0;
RELAY1=1;
RELAY2=0;
}
else
{
P0=0xff;
beep=1;
RELAY1=1;
RELAY2=1;
}
UART_sent('1');
_nop_();
_nop_();
UART_sent( ( uchar )ans);
}
/**********调节上限温度*****************/
if(Uart_flag == 1)
{
UART_sent('2'); //调节上限温度标志
_nop_();
_nop_();
UART_sent(TH); //发送上限温度标志
}
/**********调节下限温度**************/
if(Uart_flag == 2)
{
UART_sent('3'); //调节下限温度标志
_nop_();
_nop_();
UART_sent(TL); //发送下限温度标志
}
}
}
主机mian函数
/****
******* 主函数
*****/
void main()
{
Temp_H = 30;
Temp_L = 10;
uart_init();
lcd_init();
lcd_write_str(0x80, tab1);
lcd_write_str(0x80+0x40, tab2);
lcd_write_str(0x80+0x0d,"T_H:30C");
lcd_write_str(0x80+0x4d,"T_L:10C");
while(1)
{
if(Temp > Temp_H)
{
P1=0xf3;
lcd_write_str(0x80+0x46, "Cool ");
}
else if(Temp < Temp_L)
{
P1=0xfc;
lcd_write_str(0x80+0x46, "Heat ");
}
else
{
P1=0xff;
lcd_write_str(0x80+0x40, tab2);
}
if(flag == 0)
{
lcd_wendu(0x85,Temp);
}
if(flag == 1) //显示限温最高值
{
lcd_wendu(0x80 + 0x11,Temp_H);
}
if(flag == 2) //显示限温最低值
{
lcd_wendu(0x80 + 0x51,Temp_L);
}
}
}
软件设计介绍:
资料清单如下: