DS18B20温度传感器编程与数据显示

需积分: 9 2 下载量 38 浏览量 更新于2024-09-11 1 收藏 5KB TXT 举报
"DS18B20温度传感器程序是一个使用C语言编写的控制程序,用于读取DS18B20传感器的温度数据,并将结果显示在LED显示器上。程序包含了必要的延时函数、温度传感器初始化、数据传输以及数据显示等关键模块。" 本文将详细讲解DS18B20温度传感器的使用以及程序中的关键知识点。 DS18B20是一种数字温度传感器,它可以直接输出数字信号,无需额外的A/D转换器。其工作原理是通过单总线(One-Wire)通信协议与微控制器进行交互,只需要一个数据线即可完成数据传输。在该程序中,`sbit DQ = P3^7;`定义了单总线的数据线DQ连接到P3口的第7位。 程序中,`ow_reset(void)`函数执行的是DS18B20的复位操作,这是与传感器通信的第一步。复位脉冲通常需要保持至少480us的高电平,然后迅速拉低,如果传感器存在,会在约960us后响应一个低电平。在程序中,`while(presence)`循环检测传感器是否已正确响应复位。 接着,程序中定义了多个数组,如`editab[]`,`dis_7[]`,`scan_con[]`,它们分别用于编码数字和符号,以便在LED显示器上显示。`disdataP0`和`discanP2`定义了数据线和扫描线的端口,而`uchar temp_data[2]`用于存储从DS18B20读取的温度数据。 `void delay(uint t)`函数实现了简单的延时功能,用于满足DS18B20通信过程中的时间要求。在单总线通信中,精确的延时是至关重要的,因为数据的发送和接收都依赖于特定的时间间隔。 `scan()`函数负责LED显示部分,它遍历4个LED位,根据`display[]`数组中的值点亮相应的LED,以显示温度。`display[]`数组存储了待显示的温度数值。 读取DS18B20温度数据的过程没有在给出的代码片段中完全展示,但通常会涉及发送读温度命令,等待转换完成,然后接收并解析返回的温度数据。这部分代码可能包含在其他未显示的函数中,如`read_temperature()`。 这个程序提供了DS18B20温度传感器的基本控制框架,包括传感器的初始化、数据读取以及结果显示。实际应用中,还需要补充完整读取和处理温度数据的代码,以及可能的错误处理机制。