1-Wire器件與8051系列單片機的軟件接口





把單片機的8位存儲單元TEMP看成一個8位生成器,按圖4的結構,很容易得到計算一個字節(jié)的8位CRC校驗的匯編子函數(shù),輸入字節(jié)置于讀寫累加器A中,計算的累計CRC校驗結果置于暫存單元TEMP中。設TEMP的初值為00H,8次循環(huán)調用CRC函數(shù),即可得64位ROM號的CRC校驗結果,讀數(shù)正確時,前7個字節(jié)(Family Code+Serial Code)的CRC校驗計算結果TEMP應與ROM號最后一個字節(jié)(8BIT CRC)的值相同,最后的校驗值TEMP應為00H。

上述的總線初始化函數(shù)START、字節(jié)讀寫函數(shù)RDBYTE、WRBYTE和CRC校驗函數(shù)就構成了8051系列單片機與1-Wire器件通信的軟件平臺,在設計時只需按規(guī)程調用這4個函數(shù),就可輕松構建起一個1-Wire總線擴展的單片機應用系統(tǒng)。
4 軟件接口應用
數(shù)片DS1822按圖1連接到AT89C51的P1.0腳,按圖3的1-Wire總線通信規(guī)程,調用上述軟件接口,即可構成一個簡單實用的溫度測控系統(tǒng)DS1822是一種精度可調的(9至12比特)的1-Wire數(shù)字溫度傳感器,其RAM結構如圖6所示,最低兩字節(jié)只讀,用于保存每次采集溫度值;Th寄存器和T1寄存器分別用于設定溫度傳感器告警的最高和最低溫度;設置寄存器用于設定溫度傳感器的采和最低溫度;設置寄存器用于設定溫度傳感器的采樣精度;對應的EEPROM用于掉電時保存用戶設置。
DS1822的指令字及其功能如表1所示。

系統(tǒng)從主控器片內RAM30H至37H單元中讀取事先存儲的ROM號,從總線上選擇該器件,啟動溫度變換,再讀取溫度于70H、71H中的程序如下:



5 結束語
1-Wire總線連線簡捷,1-Wire器件種類多樣,功能豐富,必將得到日益廣泛的應用。本文詳細闡述了目前普遍使用的8051單片機與1-Wire總線的軟件接口,為單片機應用系統(tǒng)的串行擴展提供了一種行之有效的參考方案,它還可以方便地移植到其它系統(tǒng)中。
評論