ds18b20 输入到LCD的代码
时间: 2024-02-12 09:09:40 浏览: 17
下面是将 DS18B20 温度传感器读取的温度值显示到 LCD1602 液晶屏幕上的 C 代码示例:
```
#include <stdio.h>
#include <stdlib.h>
#include <wiringPi.h>
#include <lcd.h>
#include <stdint.h>
#include <unistd.h>
#define LCD_RS 3 // Register select pin
#define LCD_E 0 // Enable Pin
#define LCD_D4 6 // Data pin 4
#define LCD_D5 1 // Data pin 5
#define LCD_D6 5 // Data pin 6
#define LCD_D7 4 // Data pin 7
#define TEMP_SENSOR_PIN 2 // DS18B20温度传感器的数据引脚
int main() {
int lcd; // 定义LCD句柄
int fd, i, j;
uint8_t data[12];
float temp_c, temp_f;
if (wiringPiSetup() == -1) // 初始化wiringPi库
exit(1);
lcd = lcdInit(2, 16, 4, LCD_RS, LCD_E, LCD_D4, LCD_D5, LCD_D6, LCD_D7, 0, 0, 0, 0); // 初始化LCD屏幕
if (lcd == -1) {
printf("lcdInit failed!\n");
exit(1);
}
while (1) {
fd = open("/sys/bus/w1/devices/28-000008d88ff4/w1_slave", O_RDONLY); // 打开DS18B20温度传感器的数据文件
if (fd == -1) {
printf("Could not open DS18B20 data file!\n");
exit(1);
}
read(fd, data, 12); // 读取数据
close(fd); // 关闭文件
temp_c = (float)((data[9] << 8) | data[8]) / 1000.0; // 解析温度值
temp_f = (temp_c * 1.8) + 32.0; // 将温度值转换为华氏度
lcdClear(lcd); // 清空LCD屏幕
// 将温度值显示到LCD屏幕上
lcdPosition(lcd, 0, 0);
lcdPrintf(lcd, "Temp: %.1f%cC", temp_c, 223);
lcdPosition(lcd, 0, 1);
lcdPrintf(lcd, "Temp: %.1f%cF", temp_f, 223);
sleep(1); // 延时1秒钟
}
return 0;
}
```
上述代码使用了 `wiringPi` 库和 `lcd` 库来控制 LCD1602 液晶屏幕。同时,使用了 Linux 系统下的文件读取操作 `/sys/bus/w1/devices/28-000008d88ff4/w1_slave` 来读取 DS18B20 温度传感器的温度值。读取到温度值后,将其转换为摄氏度和华氏度并显示在 LCD 屏幕上,每隔1秒钟更新一次。