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