DIY电子温度计:STC89C54RD+控制DS18B20显示温度

2星 需积分: 12 5 下载量 133 浏览量 更新于2024-09-13 收藏 7.89MB DOC 举报
该资源是一份关于使用DS18B20温度传感器和单片机STC89C54RD+制作实时电子温度计的教程。作者分享了原理图、实物图片以及经过修改的源代码。 在电子温度计的设计中,主要采用了以下几个关键知识点: 1. DS18B20温度传感器:DS18B20是一款数字温度传感器,可以直接输出数字信号,无需额外的ADC转换器。它支持一线总线(1-Wire)通信协议,只需要一个数据线就能实现数据传输,简化了硬件连接。 2. 单片机STC89C54RD+:这是一款高性能的8051单片机,具有丰富的I/O口和内部RAM、ROM,适用于各种嵌入式控制应用。在这个项目中,它负责接收和处理DS18B20传来的温度数据,并控制数码管显示。 3. 4位共阳数码管:用于显示温度值。共阳数码管意味着其阴极(段选)是连接在一起的,每个数码管的阳极分别由位选线控制。在程序中,位选1至4分别由P2^0到P2^3控制,段选通过编码数组实现。 4. 三极管PNPS8550:三极管通常用作开关元件,在这里可能是用来驱动数码管的段选线,增强驱动能力,确保数码管的正常显示。 5. 程序结构: - `Init_DS18B20()` 函数用于初始化DS18B20传感器,包括复位和等待响应的步骤。 - `ReadOneChar()` 函数读取DS18B20返回的温度数据字节。 - `delay1()` 和 `delay()` 函数提供延时功能,确保通信过程中的时序正确。 - 编码数组 `codetable` 用于将数字转换为数码管显示的段码。 6. 1-Wire通信协议:DS18B20与单片机之间的通信基于1-Wire协议,这是一种主从式通信协议,其中单片机作为主机,DS18B20作为从机。通过拉低和拉高DQ线进行数据的发送和接收。 7. 温度处理:原始程序中可能包含了对DS18B20读取的温度数据进行处理的代码,以便将其转换为适合数码管显示的格式。这部分代码未在提供的部分中展示,但通常会涉及到数据解析和温度单位转换。 通过以上知识点的整合,作者成功地创建了一个可以实时显示环境温度的DIY电子温度计。对于初学者来说,这是一个很好的实践项目,涵盖了传感器、单片机编程和硬件接口设计等多个方面。