C51编程:DS18B20数字温度传感器实战

需积分: 9 2 下载量 8 浏览量 更新于2024-10-27 收藏 46KB DOC 举报
"这篇资源提供了一个使用C51语言编写的DS18B20数字温度传感器程序,包含了CRC校验和多点功能。作者强调理解编程原理比直接获取完整代码更重要,因为这有助于个人技能的提升。" 这篇文章中介绍的程序是针对DS18B20数字温度传感器的C51语言实现。DS18B20是一款单总线数字温度传感器,它可以直接通过一根数据线与微控制器进行通信,非常适合在嵌入式系统中使用。C51是一种针对8051微控制器系列的C语言扩展,因此这个程序适用于基于8051内核的微控制器。 程序的核心部分包括以下几个关键函数: 1. `init_DS18B20()`: 这个函数负责初始化DS18B20传感器。它首先设置DQ引脚(数据线)为高电平,然后发送一个复位脉冲,等待适当的延时,最后检查是否存在响应脉冲以确保传感器已连接。 2. `write_onechar(uchar t)`: 这个函数用于向DS18B20写入一个8位数据。它依次将每个位设置为低电平,然后根据数据位决定DQ引脚的高低状态,最后在每个位之间插入一定延时以满足通信协议要求。 3. `read_onechar()`: 这个函数读取DS18B20返回的8位数据。它首先将DQ引脚设置为低电平,然后在每个位之间读取DQ的状态,根据DQ的状态更新返回值,同样需要在位间插入适当延时。 此外,代码中还包括了一些辅助函数,如`delay()`和`delay_us()`,它们分别用于实现毫秒级和微秒级的延时。 值得注意的是,DS18B20的通信协议中还包括CRC校验,用于验证传输数据的正确性。虽然这部分在描述中被提及,但在给出的代码片段中没有直接体现CRC计算的函数。通常,CRC校验会在写入或读取数据后进行,以确保传感器测量的温度值没有在传输过程中出错。 标签中的“多点”可能指的是DS18B20支持多个传感器共用一根数据线的特性,这使得用户可以在一个系统中轻松地接入多个温度传感器。 这个程序提供了DS18B20温度传感器的基本操作,但要完全理解和应用它,还需要对8051汇编语言、C51编程、单总线通信协议以及DS18B20的数据手册有深入的理解。学习这些知识对于嵌入式系统的开发者来说是非常有价值的,不仅可以掌握传感器的使用,还能提升对微控制器编程和通信协议的理解。