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中的程序如下:















評論