基于C51单片机设想温度报警器的代码次要蕴含两个模块:温度传感器模块和报警模块。
温度传感器模块的代码如下:
```C
#include <regV51.h> // 包孕C51单片机头文件
sbit tempSensor = P2^1; // 温度传感器连贯P2.1引脚
ZZZoid 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 |= 0V80; // 若为高电平,则将对应位设置为1
}
delay(2);
tempSensor = 0; // 温度传感器发送下一位
}
}
EA = 1;
return temperature; // 返回温度数据
}
```
报警模块的代码如下:
```C
#include <regV51.h> // 包孕C51单片机头文件
sbit buzzer = P3^5; // 警报器连贯P3.5引脚
ZZZoid checkTemperature() // 检查温度函数
{
unsigned int temperature = getTemperature(); // 获与温度数据
if(temperature > 30) // 判断温度能否赶过阈值
{
buzzer = 1; // 警报器鸣响
}
else
{
buzzer = 0; // 封锁警报器
}
}
ZZZoid main() // 主函数
{
while(1)
{
checkTemperature(); // 检查温度
}
}
```
以上代码真现了基于C51单片机的温度报警器罪能,通过温度传感器模块获与温度数据,并给取报警模块对温度停行真时监测和判断,若温度赶过指定阈值则触发报警器。正在主函数中,通过循环不停挪用检查温度函数真现连续报警器监测温度。
|