C语言实现DS18B20在51单片机测温:简单连接与程序调试

需积分: 10 2 下载量 195 浏览量 更新于2024-09-13 收藏 69KB DOC 举报
本篇文章主要介绍了如何在51单片机上使用DS18B20 1-wire测温芯片进行温度测量,并提供了相应的C语言编程示例。DS18B20是一种常用的数字温度传感器,它通过一根数据线与微控制器通信,使得在资源受限的嵌入式系统中也能实现温度监控。 文章首先提到了测温实验装置的简单连接,由于DS18B20的硬件连接较为直观且文档资源丰富,因此在此不再赘述。提供的程序是根据教材基础示例稍作修改的,其核心部分包括以下几个关键部分: 1. **头文件和宏定义**: - 包含了`<reg51.h>`头文件,这是51单片机的常用库,用于定义寄存器操作。 - 定义了几个常量,如`jump_ROM0xCC`、`start0x44`和`read_EEROM0xBE`,分别用于执行芯片的不同命令,如跳过ROM区域、启动温度转换和读取EEPROM数据。 2. **函数声明和变量定义**: - `sbit DQ = P3^7;` 定义了一个名为DQ的位变量,对应于51单片机的P3.7引脚,用于控制DS18B20的数据线。 - `unsigned char TMPH, TMPL;` 定义两个无符号字符变量,用来存储温度值的高8位和低8位。 3. **延时函数**: - `void delay(unsigned int N)` 是一个辅助函数,用于实现指定时间的延时,这里使用16*N+24个时钟周期来确保精确性。实际应用中,可能需要根据系统时钟频率进行调整。 4. **复位函数**: - `unsigned char Reset(void)` 用于对DS18B20进行复位操作,涉及先拉低DQ线,保持一段时间后恢复到高电平,等待芯片响应deceive_ready信号。该信号用于确认复位完成。 5. **主程序或主函数调用**: - 这部分代码未提供,但可以预期这部分会包含主循环,调用上述定义的函数,进行温度测量,处理数据并可能显示在LCD或其他输出设备上。 本文档的价值在于为51单片机开发者提供了一个实践案例,通过学习和理解这段代码,用户可以掌握如何将DS18B20集成到自己的项目中,实现温度传感器的功能。对于想要入门51单片机或熟悉DS18B20的开发者来说,这是一个很好的学习资源。