51单片机实现DS18B20多点测温程序解析

5星 · 超过95%的资源 需积分: 14 45 下载量 43 浏览量 更新于2024-10-20 4 收藏 227KB PDF 举报
"该资源提供了一段用于51单片机的DS18B20温度传感器程序,适用于多点测温系统。DS18B20是一种基于1-Wire总线协议的温度传感器,可以在单一总线上连接多个设备。1-Wire总线的特点是其漏极开路设计,需要外部上拉电阻来稳定线路。通信协议包括复位、读取和写入操作,所有数据传输均低位优先。" 本文主要介绍了DS18B20传感器在51单片机系统中的应用以及1-Wire总线的基本通信协议。1-Wire总线是一种单主机多从机系统,允许几乎无限制的从设备数量,每个设备的接口都是漏极开路,需外接约5kΩ的上拉电阻。 首先,1-Wire总线的复位操作是通信的基础,主机通过拉低总线480-960μs,然后释放,从设备在15-60μs内响应并拉低总线60-240μs。主机通过采样总线状态来检测是否有设备连接。如程序1.1所示,Reset()函数实现这一过程。 其次,1-Wire总线的写操作是逐位进行的,如程序1.2所示。每个bit的写入至少需要60μs,并确保连续写操作间有1μs以上间隔。写入0时,主机拉低总线60μs再释放;写入1时,主机拉低总线并在1-15μs内释放,之后等待一段时间再进行下一次写操作。 未完的操作描述中,接着应该是关于1-Wire总线的读操作,读操作通常包括保持总线低电平以启动读取,然后主机释放总线,从设备会在确定的时间内拉低总线以输出数据位。主机随后采样总线状态以获取数据。 DS18B20传感器在1-Wire总线上的工作方式使其特别适合于资源有限的微控制器系统,例如51单片机,进行多点温度监测。这种传感器可以直接通过单根线与微控制器交互,大大简化了硬件连接和软件编程。 在实际应用中,通过这样的程序,用户可以构建一个分布式温度监控系统,例如在温室、数据中心或工业环境中,以监测各个点的温度,并根据需要采取相应措施。程序中的延迟函数如delay480μs()和_nop_()对于精确控制时序至关重要,确保了1-Wire协议的正确执行。