C语言编程:12B20温度传感器读取与显示

需积分: 9 0 下载量 107 浏览量 更新于2024-09-11 收藏 6KB TXT 举报
这段代码是针对12B20温度传感器进行读取和显示的C语言程序,用于单片机(如8051系列)的开发环境。12B20是一种常用的数字温度传感器,它通过I2C或1-Wire通信协议提供温度读取数据。以下是关键知识点的详细解释: 1. **头文件包含**: - `#include "reg51.h"`:这是对8051汇编语言特性的包含,提供了基本的数据类型定义和指令集。 - `#include "intrins.h"`:这个头文件可能包含了特定于处理器的中断处理和延迟函数,如`_nop_()`,用于在等待时执行无操作。 2. **宏定义**: - `DisdataP0` 和 `iscanP2`:这些宏定义可能是I/O口的寄存器地址,用于控制数据输入(DIN)和数据读取(DQ)。 - `uchar`, `uint`:自定义的数据类型,可能分别代表无符号字符型和无符号整型,用于存储数据。 - `READROM_18b20_CM0x33`, `MATCHROM_18b20_CM0x55`, ...:一组与12B20传感器通信的命令字节,用于寻址和读取温度值。 - `CONVERTT_CM0x44`, `RSCRATCHPAD_CM0xBE`, ...:这些可能是12B20的其他功能寄存器地址,如转换寄存器、读取和写入缓冲区等。 3. **位操作**: - `sbit DQ = P1^0;` 和 `sbit DIN = P0^7;`:定义了DQ和DIN作为位操作,将它们关联到特定的引脚上,便于控制数据传输。 4. **编码数组**: - `ucharcodeditab[]`, `ucharcodedis_7[]`, `ucharcodescan_con[]`:这些数组分别存储了不同数字和字符的编码,用于将传感器读取的二进制数据转换为可显示的字符。 5. **变量声明**: - `uchardatatemp_data[]`:用于存储从传感器接收到的温度数据。 - `uchardatadisplay[]`:用于临时存储转换后的温度值,以便最终显示。 6. **延迟函数**: - `void delay(uint t)`:这是一个简单的延时函数,通过循环计数实现,时间单位可能是毫秒或周期,为11us。 整个程序流程可能是这样的:首先初始化I/O口,然后通过定义的命令字节与12B20进行通信,获取温度数据,利用编码数组将其转换为ASCII字符,存储在`uchardatatemp_data[]`中,进一步处理后显示在LED上。同时,代码中还包含了处理不同状态的函数,如搜索(SEARCHROM_18b20_CM0xF0)和报警(ALARMSEARCH_18b20_CM0xEC)。 总结来说,这段代码的核心部分是温度传感器的通信与数据解析,以及LED的驱动,展示了如何在嵌入式系统中利用C语言实现一个简单的数字温度计应用。注意实际应用时,可能还需要连接I2C或1-Wire总线,并确保硬件配置正确。