51单片机连接18b20显示在lcdc语言程序
时间: 2023-07-10 22:02:00 浏览: 98
### 回答1:
使用51单片机连接18b20温度传感器并将温度显示在LCD屏幕上的C语言程序如下:
#include <reg51.h>
#include <intrins.h>
sbit DQ = P0^2; // 18b20传感器数据线接在P0.2口
sbit RS = P1^0; // LCD屏幕RS引脚接在P1.0口
sbit RW = P1^1; // LCD屏幕RW引脚接在P1.1口
sbit EN = P1^2; // LCD屏幕EN引脚接在P1.2口
void Delay10us() // 10微秒延时函数
{
unsigned char i;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
i = 11;
while (--i);
}
void LCD_WriteCommand(unsigned char Command) // 向LCD屏幕写命令函数
{
RS = 0; // RS引脚为0,表示写入命令
RW = 0; // RW引脚为0,表示写入模式
P2 = Command; // 将命令写入P2口
EN = 1; // EN置1,启动写入
Delay10us(); // 延时
EN = 0; // EN置0,停止写入
}
void LCD_WriteData(unsigned char Data) // 向LCD屏幕写数据函数
{
RS = 1; // RS引脚为1,表示写入数据
RW = 0; // RW引脚为0,表示写入模式
P2 = Data; // 将数据写入P2口
EN = 1; // EN置1,启动写入
Delay10us(); // 延时
EN = 0; // EN置0,停止写入
}
void LCD_Init() // LCD屏幕初始化函数
{
P2 = 0x38; // 设置显示模式为8位数据接口,2行显示模式
EN = 1; // EN置1,启动写入
Delay10us(); // 延时
EN = 0; // EN置0,停止写入
Delay10us(); // 延时
LCD_WriteCommand(0x0C); // 开启显示,无光标,不闪烁
LCD_WriteCommand(0x01); // 清除显示
}
void LCD_DisplayTemperature(unsigned char temperature) // 将温度显示在LCD屏幕上
{
LCD_WriteCommand(0x80); // 清屏,设置光标在第一行第一列
LCD_WriteData('T');
LCD_WriteData('e');
LCD_WriteData('m');
LCD_WriteData('p');
LCD_WriteData(':');
LCD_WriteData(' ');
LCD_WriteData(temperature / 10 + '0'); // 十位上的数字
LCD_WriteData(temperature % 10 + '0'); // 个位上的数字
LCD_WriteData('C');
}
void main()
{
unsigned char temperature;
LCD_Init(); // LCD屏幕初始化
while (1)
{
DS18B20_Init(); // 初始化18b20传感器
DS18B20_Start(); // 发送温度转换命令
DS18B20_ReadTemperature(&temperature); // 读取温度
LCD_DisplayTemperature(temperature); // 将温度显示在LCD屏幕上
}
}
### 回答2:
51单片机是一种常用的单片机,可以用来控制各种外设设备。18B20是一款温度传感器,可以通过单片机来读取温度值。LCD是一种液晶显示器,可以用来显示温度数值。
首先,我们需要将18B20连接到51单片机。18B20有三个引脚,分别是VCC、GND和DATA。将VCC引脚连接到单片机的正电源,GND引脚连接到单片机的地线,DATA引脚连接到单片机的I/O口。
接下来,我们需要编写程序来读取18B20的温度值,并将其显示在LCD上。可以使用C语言进行编程。首先,需要定义和初始化单片机所需的引脚和变量。然后,使用单片机的输入输出功能读取18B20的温度值。将温度值转换为适合LCD显示的字符串。最后,将字符串发送给LCD显示器进行显示。
以下是一个简单的示例程序:
```c
#include <reg51.h>
#include <lcd.h>
#include <18b20.h>
void main() {
unsigned char temp_str[5];
float temp;
// 初始化LCD
lcd_init();
while(1) {
// 读取温度值
temp = read_temperature();
// 将浮点数温度值转换为字符串
sprintf(temp_str, "%.2f", temp);
// 在LCD上显示温度值
lcd_gotoxy(0, 0);
lcd_puts("Temperature: ");
lcd_gotoxy(0, 1);
lcd_puts(temp_str);
delay(1000); // 延时1秒
}
}
```
以上是一个简单的51单片机连接18B20并通过LCD显示温度值的程序。需要注意的是,这只是一个示例程序,具体的引脚和库函数可能根据使用的具体开发板和编译器而有所不同,需要根据实际情况进行调整。
### 回答3:
51单片机连接18b20温度传感器并将温度值显示在LCD上,可以使用C语言编写程序。
首先,需要引入51单片机的头文件和相关库函数。在程序的开始处,需要初始化LCD和18b20传感器。然后,在无限循环中,读取传感器的温度值并将其显示在LCD上。
下面是一个简单的程序示例:
```c
#include <reg51.h>
#include <lcd.h>
#include <18b20.h>
void main() {
char temperature[7];
float temp;
// 初始化LCD和18b20传感器
lcd_init();
init_18b20();
while(1) {
// 读取温度值
temp = read_temperature();
// 将温度值转化为字符串
sprintf(temperature, "%.1f", temp);
// 清除LCD显示
lcd_clear();
// 在第一行显示字符串
lcd_gotoxy(0, 0);
lcd_puts("Temperature: ");
// 在第二行显示温度值
lcd_gotoxy(0, 1);
lcd_puts(temperature);
delay_ms(2000);
}
}
```
上述程序首先初始化LCD和18b20传感器,然后进入无限循环。在每次循环中,它读取传感器的温度值,并将其转化为字符串。然后,它清除LCD上的显示,并在第一行显示一个字符串,在第二行显示温度值。最后,程序延时2秒。
需要注意的是,以上代码只是一个简单的示例,具体的硬件连接和头文件的引入可能会因使用的开发板和编译器而有所不同。具体的实现需要根据实际情况进行调整。
阅读全文