使用简单的 C 语言程序,让 LM35 温度传感器测量温度,LM35 温度传感器采样的模拟信号输出送到 ADC0832 模数转换芯片的CH0管脚,转换完成后输出到单片机,ADC0832的CLK引脚连接单片机的P1.3引脚,ADC0832的DO引脚连接单片机的P1.4引脚,ADC0832 的CS 的引脚接单片机的 P1.5 引脚。 单片机预先设定 阈值为,最低18℃,最高28℃,当发现采集到的温度值不在预先设定的阈值内时,将通过单片机P2.1引脚输出低电平,延时1s进行预警,并使STC89C52 单片机的P1.6引脚输出低电平, 驱动继电器控制输出,时间为直到采集到温度值在阈值范围内。
时间: 2023-06-17 13:08:28 浏览: 237
以下是使用 C 语言编写的程序,可实现 LM35 温度传感器的温度采集和阈值判断功能:
```c
#include <reg52.h>
sbit ADC_CS = P1^5; // 定义 ADC0832 的 CS 引脚连接的管脚
sbit ADC_CLK = P1^3; // 定义 ADC0832 的 CLK 引脚连接的管脚
sbit ADC_DO = P1^4; // 定义 ADC0832 的 DO 引脚连接的管脚
sbit buzzer = P1^6; // 定义继电器控制引脚连接的管脚
sbit warning = P2^1; // 定义预警输出引脚连接的管脚
void delay(unsigned int t) // 延时函数
{
unsigned int i, j;
for (i = t; i > 0; i--)
for (j = 110; j > 0; j--);
}
void ADC0832_start() // 启动 ADC0832
{
ADC_CS = 0;
ADC_CLK = 0;
ADC_DO = 1;
delay(1);
ADC_CLK = 1;
delay(1);
ADC_CS = 1;
}
unsigned char ADC0832_read() // 读取 ADC0832 的采样值
{
unsigned char i, temp = 0;
for (i = 0; i < 8; i++)
{
ADC_CLK = 0;
delay(1);
ADC_CLK = 1;
temp <<= 1;
temp |= ADC_DO;
delay(1);
}
return temp;
}
void main()
{
unsigned char value;
float temp;
while (1)
{
ADC0832_start(); // 启动 ADC0832
value = ADC0832_read(); // 读取 ADC0832 的采样值
temp = (float)value / 255 * 5 * 100; // 将采样值转换成温度值
if (temp < 18 || temp > 28) // 判断温度值是否在阈值范围内
{
warning = 0; // 输出预警信号
buzzer = 0; // 控制继电器输出
delay(1000); // 延时 1s
}
else
{
warning = 1; // 清除预警信号
buzzer = 1; // 控制继电器输出
}
}
}
```
在上述程序中,我们首先定义了 LM35 温度传感器采样信号连接的 ADC0832 的管脚和继电器控制引脚、预警输出引脚连接的管脚。然后定义了延时函数和 ADC0832 的启动和读取函数。在主函数中,我们先使用 ADC0832 读取 LM35 温度传感器的采样值,并将采样值转换成温度值,然后判断温度值是否在预设的阈值范围内,如果不在,就输出预警信号和控制继电器输出,在延时 1 秒后再进行下一次采样。如果温度值在预设的阈值范围内,就清除预警信号和继电器输出。
阅读全文