基于單片機和DS18B20的數字溫度計
3.2 DS1SB20與單片機之間的通信命令和時序
DS18B20工作過程中的協議如下:
1)初始化;
2)ROM操作命令;
3)存儲器操作命令;
4)時序。
主機使用時間隙(time slots)讀寫DS18B20的數據位和寫命令字的位。
由于DS18B20采用單總線協議方式,即在1根數據線實現數據的雙向傳輸,而對MSP430F1121A單片機來說,硬件上并不支持單總線協議,因此,必須采用軟件方法模擬單總線的協議時序,完成對DS18B20的訪問。
DS18B20在1根I/O線上讀寫數據,因此,對讀寫的數據位有著嚴格的時序要求。DS18B20有嚴格的通信協議來保證各位數據傳輸的正確性和完整性。
該協議定義了初始化時序、讀時序、寫時序。
3.3 溫度數據的計算處理方法
從DS18B20讀取出的二進制值必須先轉換成十進制值,才能用于字符的顯示。因為DS18B20的轉換精度為9~12位可選的,為了提高精度采用12位。在采用12位轉換精度時,溫度寄存器里的值是以0.062 5為步進的,即溫度值為寄存器里的二進制值乘以0.062 5,就是實際的十進制溫度值。一個十進制值和二進制值之間有很明顯的關系,就是把二進制的高字節的低半字節和低字節的高半字節組成一個字節,這個字節的二進制值化為十進制值后,就是溫度值的小數部分。小數部分因為是半個字節,所以二進制值范圍是0~F,轉換成了十進制小數值就是0.062 5的倍數(0~15倍),這樣需要4位的數碼管來顯示小數部分,實際應用可以采用1位數碼管來顯示小數,可以精確到0.1℃。
4 系統調試
4.1 硬件檢測和調試
硬件調試比較簡單,在系統設計的過程中,由于主控制器(MSP430F1121A單片機)部分是集成在利爾達單片機技術有限公司MSP430仿真器FET上的。因此主要是對DS18B20測溫模塊以及LED數字顯示模塊進行硬件檢測和調試。
4.2 軟件調試
本程序采用單片機MSP430的語言編寫,用IAR system公司開發的IAR Embedded Workbench for MSP430 Kickstart編譯器編程調試。進入IAR Embedded Workbench集成環境,然后在該環境下建立一個項目,進入源程序編輯界面。在這里進行源程序的編輯,編譯結束后,源文件編譯通過之后,將生成目標代碼。最后進入CSFY調試環境,如圖6所示。
在CSPY環境中,分別進行主程序、讀出溫度子程序、溫度轉換命令子程序、計算溫度子程序、顯示數據刷新等子程序的編程及調試,通過觀察寄存器的窗口來判斷從DS18B20數字溫度計讀取的效據是否準確。由于該數字溫度測試儀的時序要求比較嚴,把握讀寫時隙才能準確地測量出溫度數值。因此在CSPY工作環境下,通過觀察程序運行的結果來斷定程序的正確以及準確度。在出現錯誤時返回IAR Embedded Workb-ench工作界面,重新對程序進行編寫和修改。
4.3 整體調試
通過硬件和軟件的調試后,連接各個模塊。由于主控制器模塊采用MSP430仿真調試器FET,其集成有MSP430F1121A單片機以及與其相關的外圍模塊,通過計算機串口連接并由計算機的串口供電(實際工作電壓為2.5 V),進入相關的調試控制程序后對單片機進行管理和操作。
溫度測量以及顯示模塊焊接在同一塊電路板上,由直流穩壓電源提供3 V的電壓。通過數據線將3個主要模塊連接,DS18B20數字溫度計的數據端與MSP430F1121A單片機的散據端連接。為了保證溫度數據的正常讀取,必須將二者的接地端短接,以保證其電勢相等。接通電源后,由計算機進入MSP430調試環境,運行程序,這時LED數碼管開始顯示“00”(程序的開始復位信號),然后顯示由DS18B20檢測的溫度數值。整體的調試過程必須一直調試到能正常的顯示溫度值,而且在有溫度變化時顯示溫度能改變就基本完成。
5 結論
在基于MSP430單片機的溫度測試儀的設計中。在低功耗設計方面,首先是選擇低功耗元件,從單片機、傳感器和LED顯示器及其驅動電路,都盡量選擇市場上功耗最低的產品;其次在硬件電路設計方面,降低系統工作電壓;再次,是軟件設計融入低功耗思想,核心的方法就是在最短的時間內把需要的工作完成,然后立即進入休息狀態,不論在工作還是休息狀態,立即關閉不必要的模塊,以最大限度地降低功耗,例如,采樣間歇狀態時,關閉單片機內部除看門狗定時器之外的所有模塊,切斷傳感器和放大器的供電,將外部存儲器置于休眠狀態,只有顯示器處于活動狀態,最大限度地降低了功耗。這些低功耗的措施起到了良好的效果,成功地控制了MSP430單片機的溫度測試儀的功耗,使用MSP430為核心構成的便攜式系統,MSP430單片機的溫度測試儀電池的使用壽命可以比基于一般CPU的系統延長3~5倍。在降低成本的措施方面,滿足性能的前提下,盡量選擇低成本元件,顯示部分采用了CD4511進行驅動顯示,溫度測量采用DS18B20數字溫度傳感器,具有線路簡單,體積小的特點。因此用它來組成一個測溫系統,在一根通信線上可以掛多個數字溫度測試儀,十分方便。相比其他的溫度傳感器,該系統設計具有結構簡單、分辨率高、可調節的特點,且無需硬件同步時鐘控制。
評論