基于c51单片机温度报警器设计代码
时间: 2023-10-20 12:03:07 浏览: 314
基于51单片机的温度报警器设计.doc
5星 · 资源好评率100%
基于C51单片机设计温度报警器的代码主要包括两个模块:温度传感器模块和报警模块。
温度传感器模块的代码如下:
```C
#include <regx51.h> // 包含C51单片机头文件
sbit tempSensor = P2^1; // 温度传感器连接P2.1引脚
void delay(unsigned int time) // 延时函数
{
unsigned int i, j;
for (i = time; i > 0; i--)
for(j = 110; j > 0; j--);
}
unsigned int getTemperature() // 获取温度函数
{
unsigned int temperature = 0;
while(tempSensor); // 等待温度传感器准备就绪
EA = 0;
tempSensor = 0; // 向温度传感器发送请求信号
delay(18); // 等待温度传感器响应
tempSensor = 1; // 停止发送请求信号
delay(20); // 等待温度传感器发送温度数据
if(tempSensor) // 检查温度传感器是否发送完整温度数据
{
temperature = 127; // 温度传感器数据错误,设置温度为最大值
}
else
{
int i;
for(i = 0; i < 8; i++)
{
temperature >>= 1; // 温度数据从最高位开始存储
tempSensor = 1; // 等待温度传感器发送下一位数据
delay(2);
if(tempSensor) // 检查温度传感器发送的位是否为高电平
{
temperature |= 0x80; // 若为高电平,则将对应位设置为1
}
delay(2);
tempSensor = 0; // 温度传感器发送下一位
}
}
EA = 1;
return temperature; // 返回温度数据
}
```
报警模块的代码如下:
```C
#include <regx51.h> // 包含C51单片机头文件
sbit buzzer = P3^5; // 警报器连接P3.5引脚
void checkTemperature() // 检查温度函数
{
unsigned int temperature = getTemperature(); // 获取温度数据
if(temperature > 30) // 判断温度是否超过阈值
{
buzzer = 1; // 警报器鸣响
}
else
{
buzzer = 0; // 关闭警报器
}
}
void main() // 主函数
{
while(1)
{
checkTemperature(); // 检查温度
}
}
```
以上代码实现了基于C51单片机的温度报警器功能,通过温度传感器模块获取温度数据,并采用报警模块对温度进行实时监测和判断,若温度超过指定阈值则触发报警器。在主函数中,通过循环不断调用检查温度函数实现持续报警器监测温度。
阅读全文