51单片机实现DS1820温度传感器数码管显示

需积分: 0 1 下载量 98 浏览量 更新于2024-07-13 收藏 1.85MB PPT 举报
"该资源是关于C51单片机如何在LED数码管上显示温度值的教程,涉及了温度传感器DS1820的使用和数据处理方法。" 在这个教程中,我们聚焦于51系列单片机,特别是如何通过C51编程语言与温度传感器DS1820进行交互,将采集到的温度值在LED数码管上实时显示。DS1820是一种由Dallas公司生产的数字温度传感器,它采用独特的单总线接口,仅需连接到单片机的一个端口就能实现双向通信。这种传感器的优势在于可以直接将温度转化为串行数字信号,简化了数据处理步骤,同时支持在同一总线上挂接多个传感器,适合远距离多点温度检测。 DS18B20(DS1820的改进型号)的温度测量范围为-55℃至+125℃,具有±0.5℃的精度(在-10℃至+85℃范围内)。它有三个引脚:VDD(电源)、GND(接地)和DQ(数据)。即使电源极性接反,芯片也不会立即损坏,但会发热。 DS18B20的内部结构包括64位ROM、单线端口、电源检测、存储器、控制逻辑和温度传感器等组件。其工作过程依赖于两个振荡器:一个低温度系数振荡器为计数器1提供稳定的计数脉冲,另一个高温度系数振荡器则为计数器2提供随温度变化的计数脉冲。通过这两个计数器的相互配合,实现温度的精确测量。 温度测量原理是:首先预置温度寄存器为-55℃,然后计数器1从预置数开始递减计数,每计数到0,温度寄存器增加1℃。斜坡累加器负责提供新的预置数,确保在不同温度下,每增加1℃所需的计数个数适应温度的变化。计数器1持续此过程,直到计数器2计数到0,完成一次温度测量。 在C51程序中,`disp_temp`函数用于将温度值转换为便于显示的形式,分配给LED数组,而`display`函数则负责将这些值实际输出到数码管上。P2口用于选择数码管的段选,P0口则负责位选,通过`table[LED[i]]`查找对应的数码管编码并延时显示,确保每个数码管位有足够的点亮时间。 本教程讲解了如何使用C51单片机配合DS18B20温度传感器进行温度检测,并将结果显示在LED数码管上,为学习单片机应用和温度传感提供了实践案例。