基于msp430單片機和DS18B20使用數(shù)碼管顯示的溫度測量_第1頁
基于msp430單片機和DS18B20使用數(shù)碼管顯示的溫度測量_第2頁
基于msp430單片機和DS18B20使用數(shù)碼管顯示的溫度測量_第3頁
基于msp430單片機和DS18B20使用數(shù)碼管顯示的溫度測量_第4頁
基于msp430單片機和DS18B20使用數(shù)碼管顯示的溫度測量_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、 基于msp430單片機和DS18B20使數(shù)碼管顯示的溫度測量 漢口學院電子信息工程摘要:為了在現(xiàn)實生活和工業(yè)生產(chǎn)及過程控制中準確測量溫度,設計了一種基于低功耗MSP430單片機的數(shù)字溫度計,整個系統(tǒng)通過單片機MSP430F149控制DS18B20讀取溫度,采用數(shù)碼管顯示,溫度傳感器DS18B20與單片機之間通過串口進行數(shù)據(jù)傳輸,MSP430系列單片機具有超低功耗,且外圍的整合性高,DS18B20只需一個端口即可實現(xiàn)數(shù)據(jù)通信,連接方便,通過多次實驗證明,該系統(tǒng)的測試結(jié)果與實際環(huán)境溫度一致,除了具有接口電路簡單,測量精度高,誤差小,可靠性高等特點外,其成本低,功耗低的特點使其擁有更廣闊的應用前景

2、。關鍵字:溫度測量 MSP430單片機 溫度傳感器DS18B20 超低功耗Abstract: in order to accurately measure the temperature in real life and industrial production and process control, a digital thermometer was designed with low power consumption based on MSP430 single chip microcomputer, the control system of DS18B20 read the te

3、mperature through the single-chip MSP430F149, the use of digital tube display, temperature sensor DS18B20 and single chip microcomputer for data transmission through the serial port, MSP430 Series MCU with low power consumption the periphery, and high integration, DS18B20 only needs one port to real

4、ize the data communication, the connection is convenient, through many experiments, the test results of the system and the actual environment temperature is the same, except with the interface circuit is simple, high precision, small error, high reliability, low cost, low power consumption it has a

5、wider application prospect.圖表 1關鍵字:溫度測量 MSP430單片機 溫度傳感器DS18B20 超低功耗Keywords: temperature measurement MSP430 temperature sensor DS18B20 ultra low2 power consumption 目錄一溫度測量器的總體設計2二溫度測量器的硬件選擇31 主控器件:MSP430F14932 溫度信息采集單元:DS18B2042.1 DS18B2042.2 DS18B20管腳排列43.顯示單元:數(shù)碼管及其驅(qū)動53.1 數(shù)碼管53.2 驅(qū)動芯片:74HC5736三. 系統(tǒng)

6、軟件程序71、系統(tǒng)的程序流圖72.處理DS18B20的子程序82、1 初始化時序92、2 寫時序102、3 讀時序113、溫度計算子程序134、處理數(shù)碼管顯示的子程序15四、系統(tǒng)調(diào)試151、硬件檢測和調(diào)試152、軟件程序調(diào)試173、整體調(diào)試17五、結(jié)論分析17參考文獻:17附錄一:18附錄二:18附錄三:18清空內(nèi)容一溫度測量器的總體設計 生活中最常見的應該是利用物體的熱脹冷縮測溫度,比如家里用的溫度計、體溫計等等,這種很好做但是精密程度不夠,反正生活中用的也不需要那么精密。這里提出使用電子器件測溫度,利用溫度傳感器,就是利用某些材料電阻隨溫度的變化,通過電學上面測電阻用公式換算到溫度等于多少

7、度。傳感器用處應該很多,不光是測溫度,側(cè)壓力、光照強度等都可以用類似的方法,就是把想要測的量全轉(zhuǎn)化成測電學量,然后公式換算出溫度。我們提出用單片機MSP430為溫度測量的主控制器,溫度傳感器DS18B20通過單總線與單片機連接,數(shù)碼管顯示及其驅(qū)動原件位顯示單元,系統(tǒng)的基本組成如圖1所示。 溫度信號溫度傳感器DS18B20數(shù)據(jù)交換單片機電源數(shù)碼管供電供電數(shù)據(jù)顯示 圖 1 系統(tǒng)的基本組成二溫度測量器的硬件選擇1 主控器件:MSP430F149 MSP430F149是一種新型的混合信號處理器,采用了美國德州儀器(Texas Instruments)公司最新低功耗技術(工作電流為0.1一400 p A

8、 ),它將大量的外圍模塊整合到片內(nèi),特別適合于開發(fā)和設計單片系統(tǒng)。MSP430149單片機主要具有如下特點: 低 電 壓、超低功耗。工作電壓3.3V ,等待方式下工作電流為1.3 w A,在RAM保持關閉工作方式下工作電流僅為0 A 。 具 有 12位的模數(shù)轉(zhuǎn)換器(ADC12) ,可以得到很高的精度,并且省去了使用專門的模數(shù)轉(zhuǎn)換器給設計電路板帶來的麻煩。 擁 有 大容量的存儲空間。存儲器方面包括多達60 k Flash ROM和2 k RAM,如此數(shù)量的存儲空間完全可以滿足程序及數(shù)據(jù)的需要。 兩 通 道串行通信接口??捎糜谂c計算機進行異步或同步串行通信。 硬 件 乘法器。該乘法器獨立于CPU進

9、行乘法運算的操作,在提高乘法運算速度的同時也提升了CPU的利用效率。 串 行 在系統(tǒng)編程。通過仿真器對程序進行下載,并通過專用軟件對程序及單片機的工作狀態(tài)進行監(jiān)控,極大地方便了程序的調(diào)試。2 溫度信息采集單元:DS18B202.1 DS18B20 單線數(shù)字溫度傳感器,即“一線器件”,其具有獨特的優(yōu)點: 采用單總線的接口方式 與微處理器連接時 僅需要一條口線即可實現(xiàn)微處理器與 DS18B20 的雙向通訊。 單總線具有經(jīng)濟性好,抗干擾能力強,適合于惡劣環(huán)境的現(xiàn)場溫度測量,使用方便等優(yōu)點,使用戶可輕松地組建傳感器網(wǎng)絡,為測量系統(tǒng)的構建引入全新概念。 測量溫度范圍寬,測量精度高 DS18B20 的測量

10、范圍為 -55 + 125 ; 在 -10+ 85C 范圍內(nèi),精度為 0.5C 。 在使用中不需要任何外圍元件且有負壓特性 電源極性接反時,溫度計不會因發(fā)熱而燒毀,但不能正常工作。持多點組網(wǎng)功能 多個 DS18B20 可以并聯(lián)在惟一的單線上,實現(xiàn)多點測溫。供電方式靈活 DS18B20 可以通過內(nèi)部寄生電路從數(shù)據(jù)線上獲取電源。因此,當數(shù)據(jù)線上的時序滿足一定的要求時,可以不接外部電源,從而 使系統(tǒng)結(jié)構更趨簡單,可靠性更高。 測量參數(shù)可配置 DS18B20 的測量分辨率可通過程序設定 912 位。 DS18B20 具有體積更小、適用電壓更寬、更經(jīng)濟、可選更小的封裝方式,更寬的電壓適用范圍,適合于構建

11、自己的經(jīng)濟的測溫系統(tǒng),因此也就被設計者們所青睞。2.2 DS18B20管腳排列1. GND為電源 地;2. DQ為數(shù)字信號輸入輸出端;3. VDD為外接供電電源輸入端(在寄生電源接線方式時接地)。 圖 2 芯片BS18B20管腳圖3.顯示單元:數(shù)碼管及其驅(qū)動 3.1 數(shù)碼管 本次設計因為是要顯示溫度-55 + 125 ,則選擇了四位十二段共陰極的數(shù)碼管顯示,其引腳圖如下: seg1 a f seg2 seg3 b e d dp c g seg4 圖 3 四位陰極數(shù)碼管引腳圖3.2 驅(qū)動芯片:74HC573 74HC573的八個鎖存器都是透明的D型鎖存器,當使能(G)為高時,Q輸出將隨數(shù)據(jù)(D)

12、輸入而變。當使能為低時,輸出將鎖存在已建立的數(shù)據(jù)電平上。輸出控制不是影響鎖存器的內(nèi)部工作,即老數(shù)據(jù)可以保持,甚至當輸出被關閉時,新的數(shù)據(jù)也可以置入。這種電路可以驅(qū)動大電容或低阻抗負載,可與直接與系統(tǒng)總線接口并驅(qū)動總線,而不需要外接口。VccQ0Q1Q2Q3Q4Q5Q6Q7LPOED0D1D2D3D4D5D6D7GND74HC573 三. 系統(tǒng)軟件程序1、系統(tǒng)的程序流圖系統(tǒng)的程序主要包括主程序、讀出溫度子程序、寫出溫度子程序、溫度轉(zhuǎn)換命令字程序、計算溫度子程序和數(shù)碼管顯示數(shù)據(jù)子程序。程序的功能是實時顯示溫度、讀出并處理DS18B20的測量溫度值,溫度測量沒1s進行一次,其程序流程如圖: 初始化到

13、達1s?調(diào)用顯示子程序初次上電?讀出溫度值,溫度計算處理顯示數(shù)據(jù)刷新溫度轉(zhuǎn)換開始命令是否否是 2.處理DS18B20的子程序 DS18B20的一線工作協(xié)議流程是:初始化ROM操作指令存儲器操作指令數(shù)據(jù)傳輸。其工作時序包括:l 初始化時序l 寫時序l 讀時序2、1 初始化時序主機首先發(fā)出一個480960微秒的低電平脈沖,然后釋放總線變?yōu)楦唠娖?,并在隨后的480微秒時間內(nèi)對總線進行檢測,如果有低電平出現(xiàn)說明總線上有器件已做出應答。若無低電平出現(xiàn)一直都是高電平說明總線上無器件應答。做為從器件的DS18B20在一上電后就一直在檢測總線上是否有480960微秒的低電平出現(xiàn),如果有,在總線轉(zhuǎn)為高電平后等待

14、1560微秒后將總線電平拉低60240微秒做出響應存在脈沖,告訴主機本器件已做好準備。若沒有檢測到就一直在檢測等待。 圖4 初始化時序時間圖程序C代碼如下:/初始化DS18B20void DS18B20Init(void)DQ_OUT;/設置為輸出方向DQ_LOW;/拉低總線Delayus(50);DQ_HIGH;/釋放總線Delayus(6);DQ_IN;/設置為輸入方向while(DQ_DATA);/等待應答信號while(DQ_DATA);/等待釋放總線2、2 寫時序 接下來就是主機發(fā)出各種操作命令,但各種操作命令都是向DS18B20寫0和寫1組成的命令字節(jié),接收數(shù)據(jù)時也是從DS18B2

15、0讀取0或1的過程。因此首先要搞清主機是如何進行寫0、寫1、讀0和讀1的。寫周期最少為60微秒,最長不超過120微秒。寫周期一開始做為主機先把總線拉低1微秒表示寫周期開始。隨后若主機想寫0,則繼續(xù)拉低電平最少60微秒直至寫周期結(jié)束,然后釋放總線為高電平。若主機想寫1,在一開始拉低總線電平1微秒后就釋放總線為高電平,一直到寫周期結(jié)束。而做為從機的DS18B20則在檢測到總線被拉底后等待15微秒然后從15us到45us開始對總線采樣,在采樣期內(nèi)總線為高電平則為1,若采樣期內(nèi)總線為低電平則為0。 圖 5 寫時序圖程序C代碼如下:/寫一個字節(jié)void WriteByte(uchar WriteData

16、)uchar i;uchar tmpData;for(i=0;i=1;DQ_OUT;DQ_LOW;if(tmpData)DQ_HIGH;elseDQ_LOW;Delayus(5);DQ_HIGH;2、3 讀時序 對于讀數(shù)據(jù)操作時序也分為讀0時序和讀1時序兩個過程。讀時隙是從主機把單總線拉低之后,在1微秒之后就得釋放單總線為高電平,以讓DS18B20把數(shù)據(jù)傳輸?shù)絾慰偩€上。DS18B20在檢測到總線被拉低1微秒后,便開始送出數(shù)據(jù),若是要送出0就把總線拉為低電平直到讀周期結(jié)束。若要送出1則釋放總線為高電平。主機在一開始拉低總線1微秒后釋放總線,然后在包括前面的拉低總線電平1微秒在內(nèi)的15微秒時間內(nèi)完

17、成對總線進行采樣檢測,采樣期內(nèi)總線為低電平則確認為0。采樣期內(nèi)總線為高電平則確認為1。完成一個讀時序過程,至少需要60us才能完成。 圖 6 讀時序圖 程序C代碼如下: /讀一個字節(jié)uchar ReadByte(void)uchar i;uchar ReadData=0;for(i=0;i=1;DQ_HIGH;Delayus(1);DQ_IN;if(DQ_DATA) ReadData|=0x80;Delayus(6);return ReadData; 3、溫度計算子程序 DS18B20中的溫度傳感器完成對溫度的測量,用16位二進制形式提供,形式表達,其中S為符號位。 SLS ByteMS By

18、teSSSSbit7 bit6 bit15 bit4 bit3 bit2 bit1 bit0bit15 bit14 bit13 bit12 bit11 bit10 bit9 bit8 圖7 DS18B20的16位二進制形式例 如125的數(shù)字輸出為07D0H (正溫度 直接吧16進制數(shù)轉(zhuǎn)成10進制即得到溫度值 )-55的數(shù)字輸出為 FC90H。 (負溫度 把得到的16進制數(shù) 取反后 加1 再轉(zhuǎn)成10進制數(shù))程序C代碼如下:/溫度計算程序void GetT()if(MSB&0xF0)0) /判斷是否為負溫度flag=1;elseflag=0;if(flag) /如果為負溫度取反加1MSB=MSB;

19、LSB=LSB+1;t1=MSB4);/計算各位數(shù)碼管要顯示的數(shù)值if(flag)Bit1=16; /如果為負溫度則顯示-elseBit1=t1/100;Bit2=t1%100/10;Bit3=t1%10; 圖 8 溫度轉(zhuǎn)換的例圖4、處理數(shù)碼管顯示的子程序 本設計使用的是四位十二段共陰極數(shù)碼管,其中有四個位選引腳,控制數(shù)碼管的各個位,八個段選引腳,控制每一個數(shù)碼管的八個段位a、b、c、d、e、f、g、dp,詳細如上圖3的引腳圖,共陰極數(shù)碼管各引腳對高電平有效,實現(xiàn)其對溫度的顯示的C程序如下:/數(shù)碼管掃描顯示程序void Display(void)for(uchar i=0;i4;i+)P3OU

20、T=BitCode; /輸出位碼if(i=3) /輸出段碼,如果第三位顯示小數(shù)點P2OUT=CodeBiti&0x7F;elseP2OUT=CodeBiti;BitCode0;i-);while(IFG1&OFIFG);/判斷XT2 是否起振BCSCTL2=SELM1+SELS;/MCLK SMCLK 時鐘源為TX2CLK 不分頻/端口初始化函數(shù)void InitPort(void)P2SEL=0x00;/P2 口所有引腳設置為一般的IO 口P3SEL=0x00;/P3 口所有引腳設置為一般的IO 口P2DIR=0xFF;/P2 口所有引腳設置為輸出方向P3DIR=0xFF;/P3 口所有引腳

21、設置為輸出方向P2OUT=0x00;/P2 口先輸出低電平P3OUT=0x80;/P3 口先輸出低電平/P5SEL&=BIT7;/P5. 設7置為一般的IO 口/P5DIR|=BIT7;/P5.7 設置為輸出方向/P5OUT&=BIT7;/P5.7 輸出低電平來使能74HC573 來驅(qū)動數(shù)碼管/ms 級延時子程序void DelayMs(uint ms)while(ms-)for(uint i=0;i700;i+);/數(shù)碼管掃描顯示程序void Display(void)for(uchar i=0;i4;i+)P3OUT=BitCode; /輸出位碼if(i=3) /輸出段碼,如果第三位顯示小

22、數(shù)點P2OUT=CodeBiti&0x7F;elseP2OUT=CodeBiti;BitCode=1;/位碼右移一位if(BitCode=0x10) BitCode=0x01;DelayMs(2); /延時1msP2OUT=0XFF;/10us 級延時子程序void Delayus(uint us)while(us-)_NOP();_NOP();_NOP();_NOP();_NOP();_NOP();_NOP();_NOP();_NOP();_NOP();_NOP();_NOP();_NOP();_NOP();_NOP();_NOP();_NOP();_NOP();_NOP();_NOP();

23、_NOP();_NOP();_NOP();_NOP();_NOP();_NOP();_NOP();_NOP();_NOP();_NOP();_NOP();_NOP();_NOP();_NOP();_NOP();_NOP();_NOP();_NOP();_NOP();_NOP();_NOP();_NOP();_NOP();_NOP();_NOP();_NOP();_NOP();_NOP();_NOP();_NOP();_NOP();_NOP();_NOP();_NOP();_NOP();_NOP();_NOP();_NOP();_NOP();_NOP();_NOP();_NOP();_NOP()

24、;_NOP();_NOP();_NOP();_NOP();_NOP();_NOP();_NOP();_NOP();_NOP();_NOP();_NOP();_NOP();_NOP();_NOP();_NOP();_NOP();_NOP();/初始化DS18B20void DS18B20Init(void)DQ_OUT;/設置為輸出方向DQ_LOW;/拉低總線Delayus(50);DQ_HIGH;/釋放總線Delayus(6);DQ_IN;/設置為輸入方向while(DQ_DATA);/等待應答信號while(DQ_DATA);/等待釋放總線/讀一個字節(jié)uchar ReadByte(void)uchar i;uchar ReadData=0;for(i=0;i=1;DQ_HIGH;De

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論