LM35温度传感器与ADC0832代码
时间: 2024-05-06 11:18:14 浏览: 104
以下是使用LM35温度传感器和ADC0832进行温度测量的示例代码:
```c
#include <reg51.h>
sbit CLK = P1^0; //ADC0832时钟线,连接P1.0
sbit DIO = P1^1; //ADC0832数据线,连接P1.1
sbit CS = P1^2; //ADC0832片选线,连接P1.2
sbit LM35 = P0^0; //LM35温度传感器,连接P0.0
void delay(unsigned int t) //延时函数
{
unsigned int i;
while(t--)
{
for(i=0; i<125; i++);
}
}
unsigned char ADC0832_Read(unsigned char channel) //读取ADC0832转换结果
{
unsigned char i, dat = 0;
CS = 0; //使能ADC0832
DIO = 1; //起始位
CLK = 1;
CLK = 0;
DIO = 1; //单端输入模式
CLK = 1;
CLK = 0;
DIO = (channel<<6) | 0x20; //通道号
CLK = 1;
CLK = 0;
DIO = 0; //第11个时钟脉冲,忽略null bit
CLK = 1;
CLK = 0;
for(i=0; i<8; i++) //读取8位转换结果
{
dat <<= 1;
CLK = 1;
dat |= DIO;
CLK = 0;
}
CS = 1; //禁用ADC0832
return dat;
}
void main()
{
unsigned char dat;
unsigned int temp;
while(1)
{
dat = ADC0832_Read(0); //读取ADC0832通道0的转换结果
temp = dat * 1.07 * 100; //计算温度值
LM35 = 1; //使能LM35
delay(10); //延时10ms
dat = ADC0832_Read(0); //再次读取ADC0832通道0的转换结果,消除LM35残留电压
LM35 = 0; //禁用LM35
printf("Temperature: %d.%dC\r\n", temp/100, temp%100); //输出温度值
delay(1000); //延时1s
}
}
```
该代码使用了51单片机和ADC0832进行温度测量。LM35温度传感器与ADC0832连接在P0.0和P1.1上,ADC0832的时钟线、数据线和片选线分别连接在P1.0、P1.1和P1.2上。程序通过读取ADC0832的转换结果计算出温度值,并输出到串口。在读取LM35温度传感器之前,需要先使能它并延时一段时间,以消除其残留电压。
阅读全文