AT89X52单片机多点测温程序:18b20 ROM匹配与读取

需积分: 12 50 下载量 114 浏览量 更新于2024-11-08 收藏 7KB TXT 举报
本资源是一份针对18b20温度传感器在AT89X52单片机平台上的多点测温和ROM匹配程序。18b20是一款用于测量温度的I²C接口数字温度传感器,它能将温度转换为数字信号,通过单片机进行处理。该程序主要包含以下几个部分: 1. 头文件导入:`#include<AT89X52.h>`引入了基本的AT89X52单片机库,提供了必要的硬件操作和函数定义。 2. 变量声明: - `uint temp=0` 定义了一个整型变量temp,用于存储温度值。 - `uint keyvalue=0` 和 `uint flag` 分别表示按键状态和匹配标志。 3. IO口定义: - `sbit rs = P2^6` 和 `sbit Lcden = P2^7` 分别是18b20的R/W和EN接口,用于数据交互。 - `sbit DS = P2^0` 是数据总线接口。 - `sbit key0 = P1^0` 和 `sbit key1 = P1^1` 是按键输入接口。 4. 字符串数组:用于显示欢迎信息和温度值的临时缓冲区。 5. ROM匹配:使用一组预定义的ID数组(如`ID1`至`ID9`),这些可能是芯片的序列号或制造商的标识符。程序试图通过读取18b20的序列号并与预设的ID进行比较,来识别传感器的型号或验证其身份。 6. 代码SN1_9:这部分是一个二维数组,存储了多个可能的序列号(SN),共9个,每个SN是一个8字节的数组,这表明可能存在多种类型的18b20传感器。 该程序的核心流程可能包括:首先,初始化I²C通信,然后读取18b20的序列号,将其与预定义的ID数组逐个匹配。匹配成功后,程序会显示相应的欢迎信息,并读取温度值。如果序列号不匹配,可能会提示错误或者等待用户输入更多的校验信息。 通过这个程序,开发者可以实现对多点温度传感器的集中管理和数据采集,同时也展示了如何通过单片机与I²C设备通信并进行基本的设备识别。对于学习I²C通信、18b20工作原理以及基本的嵌入式系统编程都是非常有帮助的实践资料。