C51单片机DS18B20温度传感器编程实战

需积分: 20 4 下载量 17 浏览量 更新于2024-09-08 收藏 4KB TXT 举报
"C51温度传感器代码示例" 这篇代码是基于C51语言的,用于处理DS18B20数字温度传感器的数据读取并显示在LCD1602显示器上。C51是一种专门针对8051微控制器系列的编译器,而DS18B20是一种常用的数字温度传感器,可以提供精确的温度测量值。 首先,代码包含了必要的头文件`<reg51.h>`和`<intrins.h>`,前者提供了51系列单片机寄存器的定义,后者包含了一些内联函数。接着,定义了一些字符数组,如`Str[]`、`Error[]`、`Temp[]`、`digit[]`和`Cent[]`,用于存储温度相关的字符串和数字表示。 代码中定义了几个I/O口用于与LCD1602接口通信:`DQ`、`E`、`RW`和`RS`分别对应数据线、使能、读写选择和寄存器选择。`BF`用于检测LCD是否忙碌。`delay1ms()`和`delaynms()`函数实现了延时功能,其中`delay1ms()`用于产生1毫秒的延时,`delaynms()`则可以实现可变延时。 `BusyCheck()`函数用于检查LCD是否准备好接收新数据,通过设置RS和RW引脚,并读取忙标志位BF来实现。`WriteCommand()`和`WritePosition()`函数用于向LCD发送指令,而`WriteASCII()`函数用于写入ASCII字符到LCD的指定位置。 `LcdInit()`函数初始化LCD,包括设置初始命令和等待LCD内部电路稳定。接下来,代码可能会包含读取DS18B20温度值的函数,以及将读取到的温度值转换为字符数组并显示在LCD上的逻辑。DS18B20的通信协议通常基于1-Wire,需要特定的时序来读取和写入数据,这可能涉及到`WriteCommand()`和`WritePosition()`的调用,以及额外的延时函数。 这段代码展示了如何在C51环境下结合DS18B20温度传感器和LCD1602显示器,构建一个基本的温度测量系统。用户可能需要添加读取DS18B20温度值的代码,以及根据实际温度值更新LCD显示的逻辑,以完成完整的应用。