DS18B20温度传感器C语言程序与数码管显示

需积分: 0 0 下载量 140 浏览量 更新于2024-09-11 收藏 47KB DOC 举报
这是一个基于单片机的DS18B20温度控制程序,用于读取DS18B20温度传感器的数据,并通过数码管显示当前环境温度。程序使用C语言编写,适用于18B20温度传感器和数码管显示。程序中包含了延时函数和与DS18B20通信的相关函数。 在该程序中,`ds18b20`是主要的温度传感器,它使用1-wire接口与单片机进行通信。`DS18B20`是一种精确的数字温度传感器,能够提供-55℃至+125℃的温度测量范围,并且具有较高的精度。`数码管`则负责显示读取到的温度值,通过`wela`和`dula`引脚控制数码管的位选和段选,实现字符的显示。 程序的核心部分包括以下几个方面: 1. **延时函数**:`delay(unsigned int i)`,这是一个简单的延时函数,通过循环来实现一定时间的延迟。在11.0592MHz的时钟频率下,`i`的值决定了延迟的长度。这个函数在与DS18B20的通信中非常重要,因为DS18B20的协议需要精确的时序控制。 2. **DS18B20初始化**:`dsInit()`函数负责初始化DS18B20,通过拉低和拉高`ds`引脚来启动传感器,使其进入等待应答状态。这个过程需要满足DS18B20协议中对高低电平持续时间的要求。 3. **等待应答**:`dsWait()`函数用于等待DS18B20的应答,检测到应答脉冲后进入下一个通信步骤。 4. **读取数据**:`readBit()`函数用于从DS18B20读取一位数据,通过控制`ds`引脚的高低电平,按照协议规定的时间间隔来接收传感器返回的数据。 5. **数码管显示编码**:程序定义了两个编码数组`codetable`和`codetableWidthDot`,分别用于无小数点和有小数点的0-9数字显示。这些编码对应于数码管的段选,使得数码管能正确显示温度值。 这个程序实现了DS18B20温度传感器的读取和数码管的数据显示功能,是单片机控制系统中常见的温度监测应用。在实际应用中,可能还需要添加错误处理、温度转换为摄氏度或华氏度的功能,以及用户交互等其他模块。