单片机C语言实现热敏电阻温度测量

5星 · 超过95%的资源 需积分: 50 113 下载量 73 浏览量 更新于2024-09-17 6 收藏 108KB PDF 举报
"这篇资源是关于使用C语言编写的一个单片机程序,用于通过热敏电阻测量温度,并在六位串行数码管上显示温度数据。程序主要涉及到两个部分:DS18B20数字温度传感器和热敏电阻的温度采集。" 详细解释: 1. **热敏电阻测温原理**: 热敏电阻是一种电阻值随温度变化的特殊电阻器,通常用于温度测量。其阻值与温度的关系可以通过温度系数或B值定律来描述。在该程序中,热敏电阻被用来感知环境温度,并将其转换为电信号。 2. **DS18B20温度传感器**: DS18B20是一款单线数字温度传感器,能够直接输出数字温度值,具有高精度和宽量程。在程序中,`Init_DS18B20()`函数初始化DS18B20,而`Read_OneChar()`函数负责从DS18B20读取温度数据。初始化过程包括对DQ线的复位和拉低、拉高操作,以确保传感器进入工作模式。 3. **C语言编程**: 代码使用C语言编写,针对8051系列单片机,包含了一些特定的头文件如`<reg51.h>`,`<math.h>`和`<intrins.h>`,它们提供了必要的功能库。`uchar`和`uint`是自定义的数据类型,分别代表无符号字符和无符号整数。 4. **I/O口配置**: 程序中定义了一系列的sbit变量,如`sbitstart=P2^7;`,这些变量用于控制单片机的输入输出引脚,如启动信号、地址线和数据线,以便与外部设备进行通信。 5. **串行数码管显示**: 数码管显示部分,前三位显示DS18B20测得的温度,后三位显示热敏电阻的温度。数码管的控制通过`P3^2`(时钟脚)和`P3^0`(数据端)实现,`delay`和`delay1`函数用于提供必要的延迟时间,确保数据传输的准确性。 6. **程序流程**: 在主循环中,程序会读取DS18B20和热敏电阻的温度数据,然后通过数码管显示。读取温度数据的过程涉及单总线通信协议,需要精确控制DQ线的状态,以完成数据的发送和接收。 7. **延迟函数**: `voiddelay(uint x)`和`voiddelay1(uint x)`是两个延迟函数,用于在数据传输和初始化过程中提供适当的延迟,确保操作的正确执行。 总结,这个程序实现了热敏电阻和DS18B20数字温度传感器的温度采集,并将结果在串行数码管上显示。它涉及了单片机控制、数字温度传感器的通信、以及温度数据的处理和显示等多个方面的知识。