51单片机实现DS18B20温度传感器程序及应用

需积分: 10 0 下载量 198 浏览量 更新于2024-09-16 收藏 193KB DOC 举报
"这篇资源是关于使用51单片机(具体型号为89C51)配合DS18B20温度传感器进行温度测量的程序。程序采用C语言编写,能够实现对DS18B20传感器的复位、写命令、读取数据等操作,并通过16x2的LED显示器展示温度读数。" DS18B20是一种数字温度传感器,具有较高的精度和宽广的温度测量范围。它可以直接通过单总线(1-Wire)与微控制器通信,减少了所需的硬件接口,降低了系统复杂性。该传感器的特点包括: 1. **电压范围**:3.0V至5.5V,适合各种电源环境。 2. **温度范围**:-55℃至+125℃,覆盖了大多数工业和消费电子应用的需求。 3. **分辨率可编程**:用户可以根据需求设置9至12位的分辨率,以达到不同的精度要求。 4. **温度报警设置**:可以设置非易失性的温度报警点,便于系统在超出预设范围时自动响应。 程序中涉及的主要子程序包括: 1. **reset()**:执行DS18B20的复位序列,初始化通信过程。 2. **write_byte(uchar val)**:向DS18B20发送一个8位的数据字节。 3. **read_byte(void)**:从DS18B20接收一个8位的数据字节。 4. **read_temp()**:调用DS18B20的温度转换功能,读取当前的温度值。 5. **work_temp()**:处理读取到的温度数据,可能包括数据校验、转换成适合显示的格式等操作。 6. **display数据变量**:用于存储和显示温度值的数组,这里使用5个字符来显示整数和小数部分。 此外,程序还包含了一个延迟函数`delay1(uint t)`,用于在通信过程中插入适当的延时,确保信号的稳定传输。主函数`main()`中循环调用这些子程序,持续监测和显示温度。 为了将温度值转化为易于人眼识别的形式,程序使用了一个查找表`editab[]`,这个表用于将二进制数据转换为对应的ASCII字符,显示在LED显示器上。通过这种方式,温度的小数部分可以被准确地表示出来。 这份资源提供了一个完整的DS18B20温度传感器与51单片机集成应用的实例,对于学习单片机控制温度传感器以及实践相关项目有着很高的参考价值。