基于ariduion ,设计一个基于51单片机的温度检测报警系统
时间: 2024-02-25 16:51:16 浏览: 87
好的,下面是一个简单的基于51单片机和Arduino的温度检测报警系统的设计方案:
1. 硬件设计
硬件材料包括:
- 51单片机
- Arduino Uno
- 温度传感器(DS18B20)
- 蜂鸣器
- LED灯
- 电位器
- 电阻、电容等元件
硬件连接:
- 将DS18B20温度传感器连接到Arduino Uno的数字引脚2。
- 将蜂鸣器连接到51单片机的P0.0口。
- 将LED灯连接到51单片机的P0.1口。
- 将电位器连接到51单片机的P1.0口。
2. 软件设计
首先,需要在Arduino IDE中安装DS18B20温度传感器的库文件。可以在库管理器中搜索并安装“DallasTemperature”库。
接下来,需要编写51单片机的程序代码,实现温度检测和报警功能。
具体实现步骤如下:
- 初始化温度传感器和蜂鸣器。
- 通过51单片机的P1.0口控制电位器,调节报警阈值。
- 使用Arduino Uno读取温度传感器的温度值,并将温度值发送到51单片机。
- 51单片机通过比较温度值与报警阈值的大小,控制LED灯和蜂鸣器进行报警。
以下是示例代码:
```c
#include <reg52.h>
#include <stdio.h>
#include <intrins.h>
#define DS18B20_PIN P2_0
sbit BEEP = P0^0;
sbit LED = P0^1;
unsigned char TempH,TempL;
void Delay_us(unsigned int t)
{
while(t--);
}
void Delay_ms(unsigned int t)
{
while(t--)
Delay_us(1000);
}
void Init_DS18B20()
{
DS18B20_PIN = 1;
Delay_us(2);
DS18B20_PIN = 0;
Delay_us(500);
DS18B20_PIN = 1;
Delay_us(60);
if(!DS18B20_PIN);
Delay_us(480);
}
void Write_DS18B20(unsigned char dat)
{
unsigned char i;
for(i=0;i<8;i++)
{
DS18B20_PIN = 0;
_nop_();
DS18B20_PIN = dat & 0x01;
dat >>= 1;
Delay_us(60);
DS18B20_PIN = 1;
}
}
unsigned char Read_DS18B20()
{
unsigned char i,dat = 0;
for(i=0;i<8;i++)
{
DS18B20_PIN = 0;
_nop_();
dat >>= 1;
DS18B20_PIN = 1;
if(DS18B20_PIN) dat |= 0x80;
Delay_us(60);
}
return dat;
}
void Get_DS18B20()
{
Init_DS18B20();
Write_DS18B20(0xcc);
Write_DS18B20(0x44);
Delay_ms(750);
Init_DS18B20();
Write_DS18B20(0xcc);
Write_DS18B20(0xbe);
TempL = Read_DS18B20();
TempH = Read_DS18B20();
}
void main()
{
unsigned int temp;
unsigned char temp_str[5];
unsigned char threshold = 30;
while(1)
{
Get_DS18B20();
temp = TempH;
temp <<= 8;
temp |= TempL;
temp >>= 4;
if(temp >= threshold)
{
BEEP = 0;
LED = 0;
Delay_ms(500);
BEEP = 1;
LED = 1;
Delay_ms(500);
}
else
{
BEEP = 1;
LED = 1;
}
sprintf(temp_str,"%d",temp);
//将温度值以字符串形式发送到51单片机
}
}
```
以上就是基于51单片机和Arduino的温度检测报警系统的设计方案,希望能给你提供一些参考。
阅读全文