1-Wire器件与8051系列单片机的软件接口





把单片机的8位存储单元TEMP看成一个8位生成器,按图4的结构,很容易得到计算一个字节的8位CRC校验的汇编子函数,输入字节置于读写累加器A中,计算的累计CRC校验结果置于暂存单元TEMP中。设TEMP的初值为00H,8次循环调用CRC函数,即可得64位ROM号的CRC校验结果,读数正确时,前7个字节(Family Code+Serial Code)的CRC校验计算结果TEMP应与ROM号最后一个字节(8BIT CRC)的值相同,最后的校验值TEMP应为00H。

上述的总线初始化函数START、字节读写函数RDBYTE、WRBYTE和CRC校验函数就构成了8051系列单片机与1-Wire器件通信的软件平台,在设计时只需按规程调用这4个函数,就可轻松构建起一个1-Wire总线扩展的单片机应用系统。
4 软件接口应用
数片DS1822按图1连接到AT89C51的P1.0脚,按图3的1-Wire总线通信规程,调用上述软件接口,即可构成一个简单实用的温度测控系统DS1822是一种精度可调的(9至12比特)的1-Wire数字温度传感器,其RAM结构如图6所示,最低两字节只读,用于保存每次采集温度值;Th寄存器和T1寄存器分别用于设定温度传感器告警的最高和最低温度;设置寄存器用于设定温度传感器的采和最低温度;设置寄存器用于设定温度传感器的采样精度;对应的EEPROM用于掉电时保存用户设置。
DS1822的指令字及其功能如表1所示。

系统从主控器片内RAM30H至37H单元中读取事先存储的ROM号,从总线上选择该器件,启动温度变换,再读取温度于70H、71H中的程序如下:
评论