用51单片机控制d S18 b20温度传感器,在10度的情况下,灯亮起
时间: 2023-11-19 15:04:18 浏览: 33
实现这个功能,可以按照以下步骤进行:
1. 连接DS18B20温度传感器:将传感器的VCC引脚接到单片机的正极,GND引脚接到单片机的负极,DQ引脚接到单片机的任意IO口上。
2. 编写温度传感器读取程序:通过单片机的IO口与DS18B20通信,读取传感器中存储的温度值。具体的通信协议可以参考DS18B20的数据手册。
3. 编写控制灯亮起的程序:如果读取到的温度值为10度,则将连接在单片机IO口上的LED灯亮起。
下面是一个简单的示例代码:
```c
#include <reg51.h>
// DS18B20 IO口定义
#define DQ P2_0
// LED灯 IO口定义
#define LED P1_0
// 延时函数
void delay(unsigned int t) {
while(t--);
}
// DS18B20复位
void ds18b20_reset() {
DQ = 0;
delay(500);
DQ = 1;
delay(30);
}
// DS18B20写1
void ds18b20_write1() {
DQ = 0;
delay(5);
DQ = 1;
delay(60);
}
// DS18B20写0
void ds18b20_write0() {
DQ = 0;
delay(60);
DQ = 1;
delay(5);
}
// DS18B20读1bit
unsigned char ds18b20_readbit() {
unsigned char bit;
DQ = 0;
delay(5);
DQ = 1;
delay(5);
bit = DQ;
delay(50);
return bit;
}
// DS18B20写字节
void ds18b20_writebyte(unsigned char byte) {
unsigned char i;
for(i = 0; i < 8; i++) {
if(byte & 0x01) {
ds18b20_write1();
} else {
ds18b20_write0();
}
byte >>= 1;
}
}
// DS18B20读字节
unsigned char ds18b20_readbyte() {
unsigned char i, byte = 0;
for(i = 0; i < 8; i++) {
byte >>= 1;
if(ds18b20_readbit()) {
byte |= 0x80;
}
}
return byte;
}
// 读取DS18B20温度值
int ds18b20_readtemp() {
int temp = 0;
unsigned char tl, th;
ds18b20_reset();
ds18b20_writebyte(0xcc);
ds18b20_writebyte(0x44);
delay(750);
ds18b20_reset();
ds18b20_writebyte(0xcc);
ds18b20_writebyte(0xbe);
tl = ds18b20_readbyte();
th = ds18b20_readbyte();
temp = th;
temp <<= 8;
temp |= tl;
return temp * 0.0625;
}
// 主函数
void main() {
int temp;
LED = 0;
while(1) {
temp = ds18b20_readtemp();
if(temp == 10) {
LED = 1;
} else {
LED = 0;
}
}
}
```
在这个示例代码中,我们使用P2.0口连接DS18B20温度传感器,P1.0口连接LED灯。程序会不断读取温度传感器的温度值,并判断是否等于10度,如果是,则点亮LED灯。注意,这里的读取温度值和控制LED灯的代码需要根据实际情况进行修改。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)