基于MSP430G2553和ds18b20的測溫系統(tǒng)_第1頁
基于MSP430G2553和ds18b20的測溫系統(tǒng)_第2頁
基于MSP430G2553和ds18b20的測溫系統(tǒng)_第3頁
基于MSP430G2553和ds18b20的測溫系統(tǒng)_第4頁
基于MSP430G2553和ds18b20的測溫系統(tǒng)_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

嵌入式控制系統(tǒng)與應(yīng)用課程論文題目:基于MSP430G2553和ds18b20的測溫系統(tǒng)院系名稱:專業(yè)班級:學(xué)生**:學(xué)號:摘要為了在現(xiàn)實生活和工業(yè)生產(chǎn)及過程控制中準(zhǔn)確測量溫度,設(shè)計了一種基于低功耗MSP430單片機的數(shù)字溫度計,整個系統(tǒng)通過單片機MSP430控制DS18B20讀取溫度,采用LCD1602顯示,溫度傳感器DS18B20與單片機之間通過串口進展數(shù)據(jù)傳輸,且外圍的整合性高,DS18B20只需一個端口即可實現(xiàn)數(shù)據(jù)通信,連接方便,通過屢次實驗證明,該系統(tǒng)的測試結(jié)果與實際環(huán)境溫度一致,除了具有接口電路簡單,測量精度高,誤差小,可靠性高等特點外,其本錢低,功耗低的特點使其擁有更廣闊的應(yīng)用前景。關(guān)鍵字:DS18B20MSP430G2553單片機液晶顯示目錄1引言12測溫系統(tǒng)硬件構(gòu)成12.1硬件設(shè)計13軟件設(shè)計63.1總體設(shè)計流程圖63.2初始化模塊64實驗展示74.1實物整體展示74.2報警顯示和蜂鳴器報警85設(shè)計心得116本設(shè)計的缺乏和反思12參考文獻13附錄14附一:元器件及儀器明細表14附二:實驗設(shè)計程序141引言溫度的測量和控制在儲糧倉庫、智能樓宇空調(diào)控制及其它的工農(nóng)業(yè)生產(chǎn)和科學(xué)研究中應(yīng)用廣泛。溫度檢測的傳統(tǒng)方法是使用諸如熱電偶、熱電阻、半導(dǎo)體PN結(jié)(如AD590)之類的模擬傳感器,經(jīng)信號取樣電路、放大電路和模數(shù)轉(zhuǎn)換電路處理,獲取表示溫度值的數(shù)字信號,再交由微處理器或DSP處理。被測溫度信號從敏感元件接收的非電模擬量開場,到轉(zhuǎn)換為微處理器可處理的數(shù)字信號之間,設(shè)計者須考慮的線路環(huán)節(jié)較多,相應(yīng)測溫裝置中元器件數(shù)量難以下降,隨之影響產(chǎn)品的可靠性及體積微小化。由此會造成整個檢測系統(tǒng)有較大的偏差.穩(wěn)定性和抗干擾性能都較差。本文設(shè)計一種基于數(shù)字溫度傳感器DSl8820的小型測溫系統(tǒng),主控芯片采用TI公司的MSP430單片機,數(shù)字溫度傳感器通過單總線與單片機連接,系統(tǒng)構(gòu)造簡單,抗干擾能力強,適合于惡劣環(huán)境下進展現(xiàn)場溫度測量,可應(yīng)用于倉庫測溫、樓宇空調(diào)控制和生產(chǎn)過程監(jiān)控等領(lǐng)域。2測溫系統(tǒng)硬件構(gòu)成2.1硬件設(shè)計2.1.1系統(tǒng)硬件設(shè)計總方案如圖1所示:電源模塊電源模塊MSP430G2553DS18B20LCD1602液晶顯示模塊溫度圖1硬件設(shè)計方框圖電源系統(tǒng)由miniUSB輸出5V以及芯片LE33組成,實現(xiàn)對MSP430G2553核心處理芯片、LCD1602液晶顯示等硬件模塊提供所需電源;顯示局部由LCD1602液晶對溫度進展實時顯示;軟件設(shè)計局部包括模擬串口對DS18B20數(shù)據(jù)進展讀取以及LCD1602液晶的驅(qū)動和顯示。2.1.2本次設(shè)計需要用到MSP430單片機的1腳電源、16腳復(fù)位端、20腳接地端、配置P2.2口為待測信號輸入端,P2.0為LCD片選信號端,P1為LCD并行數(shù)據(jù)輸出端,如表1所示。圖2所示為MSP430G2553單片機的最小系統(tǒng)圖。表1MSP430G2553引腳及功能說明引腳序號引腳名稱功能說明1VCC電源正2P2.2頻率信號輸入端5P2.0LCD片選信號端6P1.*LCD并行數(shù)據(jù)輸出端13P2.5蜂鳴器報警16RST復(fù)位腳20GND電源地圖2MSP430G2553最小系統(tǒng)2.1.3LCD1602LCD12864液晶顯示屏用到電源接口線,腳背光電源接口線,腳并行接口選擇。LCD1602引腳功能如表2所示。表2LCD1602引腳功能說明引腳序號引腳名稱功能說明1VSS模塊的電源地2VDD模塊的電源正端4RS(CS)并行指令/數(shù)據(jù)選擇信號、串行片選信號5R/W(SID)并行讀寫選擇信號、串行的數(shù)據(jù)口6E(CLK)并行使能信號、串行的同步時鐘15LED_A背光源正極16LED_K背光源負極〔0V〕2.1.4DSl8820是美國DALLAS公司推出的單總線數(shù)字測溫芯片。它具有獨特的單線接口方式,將非電模擬量溫度值轉(zhuǎn)換為數(shù)字信號輸出僅需占用1位/A)端口,能夠直接讀取被測物體的溫度值,提高了抗干擾能力和測量精度。它體積小,電壓適用*圍寬(3.0V一5.5v),可以采用外部供電方式(如圖1所示),也可以采用寄生電源方式.即從數(shù)據(jù)線上獲得電源。用戶還可以通過編程實現(xiàn)9一12位的溫度讀數(shù),即具有可調(diào)的溫度分辨率。因此它的實用性和可靠性比同類產(chǎn)品更高.DSl8820采用3腳TO一92封裝,形如三極管:同時也有8腳SOIC封裝。測溫*圍為一55℃一+125。C,在一10℃一+85℃*圍內(nèi),精度為±0.5℃。每一個DSl8820芯片的ROM中存放一個“位ID號:前8位是產(chǎn)品類型編號,隨后48位是該器件的自身序號,最后8位是前面56位的循環(huán)冗余校驗碼。又因其可采用寄生電源方式供電。因此,一條總線上可以同時掛接數(shù)個DSl8820,可方便的實現(xiàn)多點測溫系統(tǒng)。另外用戶還可根據(jù)實際情況自設(shè)定非易失性溫度報警上下限值TH和TL(掉電后依然保存)。DSl8820檢測到的溫度值經(jīng)轉(zhuǎn)換為數(shù)字量后,自動存入存儲器中,并與設(shè)定值TH或TL進展比擬,當(dāng)測量溫度超出給定*圍時,就輸出報警信號,并自動識別是高溫超限還是低溫超限。圖3DS18B20引腳連接圖4DS18B20溫度存放器格式圖5溫度/數(shù)據(jù)關(guān)系UART轉(zhuǎn)USB電路圖6UART電路PL2303是Prolific公司生產(chǎn)的一種高度集成的RS232-USB接口轉(zhuǎn)換器,可提供一個RS232全雙工異步串行通信裝置與USB功能接口便利聯(lián)接的解決方案。該器件內(nèi)置USB功能控制器、USB收發(fā)器、振蕩器和帶有全部調(diào)制解調(diào)器控制信號的UART,只需外接幾只電容就可實現(xiàn)USB信號與RS232信號的轉(zhuǎn)換,能夠方便嵌入到各種設(shè)備所以2000年左右開場經(jīng)常推薦使用該款芯片;該器件作為USB/RS232雙向轉(zhuǎn)換器,一方面從主機接收USB數(shù)據(jù)并將其轉(zhuǎn)換為RS232信息流格式發(fā)送給外設(shè);另一方面從RS232外設(shè)接收數(shù)據(jù)轉(zhuǎn)換為USB數(shù)據(jù)格式傳送回主機。這些工作全部由器件自動完成,開發(fā)者無需考慮固件設(shè)計.3軟件設(shè)計3.1總體設(shè)計流程圖系統(tǒng)軟件設(shè)計包括測量初始化局部、顯示局部、報警局部。系統(tǒng)軟件整體流程圖如圖7所示。圖7系統(tǒng)軟件整體設(shè)計流程圖3.2初始化模塊設(shè)備初始化包括關(guān)閉看門狗,I/O口輸入/輸出功能的配置,時鐘初始化,端口初始化以及液晶初始化,其流程圖如圖8所示。圖8系統(tǒng)初始化流程圖3.3顯示模塊首先根據(jù)LCD1602液晶的時序圖寫出液晶驅(qū)動函數(shù),并調(diào)用驅(qū)動函數(shù)完成在指定位置處顯示字符的功能函數(shù),這樣通過定時刷新液晶屏就可以顯示溫度值了。4實驗展示4.1實物整體展示圖9實物整體展示圖4.2報警顯示和蜂鳴器報警當(dāng)溫度t>30℃時蜂鳴器報警,紅燈閃亮模擬通風(fēng)降溫。LCD顯示警告。當(dāng)溫度t<27℃時蜂鳴器報警,黃燈閃亮模擬加熱升溫。LCD顯示警告。當(dāng)溫度27℃<t<30℃時LCD實時顯示溫度。圖10實物調(diào)試圖圖11實物調(diào)試圖5設(shè)計心得通過嵌入式控制系統(tǒng)與應(yīng)用這門課,通過這門課的學(xué)習(xí),我對MSP430G2553有了較為深入的了解。這門課王教師通過分工合作,同學(xué)講解,同學(xué)討論,以及課后周記總結(jié)這樣的方式來進展的,不僅提高了自己的自學(xué)能力和學(xué)習(xí)主動性,而且使自己得到了很多方面根本技能的訓(xùn)練。這次做的設(shè)計所需要的知識有很多在書本上是找不到的,而且這些知道并不是像以前一樣由教師系統(tǒng)的詳細的教授。所以,這就強迫我去圖書館和網(wǎng)上查閱資料,不過這也培養(yǎng)了我查閱資料的能力,讓我受益頗多。在第一節(jié)課上完之后覺得實在是無從下手,根本不知道干什么,對外電路和內(nèi)電路都十分迷茫,可是后來通過同學(xué)之間的分工合作,而且我們先從非常簡單的小實驗入手,一點一點我就每次可都有了很多收獲,通過同學(xué)講解中斷,定時器,計數(shù)器,捕捉,比擬器,PWM,串口,ADC,低功耗,觸屏等,我對這些知識能夠拿來應(yīng)用,并能實現(xiàn)根本功能要求,能夠把程序弄明白,發(fā)現(xiàn)自己會的越來越多,一次課比一次課進步。通過本次實驗,讓我對MSP430G2553芯片的輸入與輸出以及中斷查詢方式有了一定的了解。MSP430實驗雖然很簡單,但也費了不少功夫。首先,對CCS軟件操作不熟練,Grace工程可以快速方便地幫助我們配置存放器,但是自己還不太熟悉。設(shè)置斷點和單步調(diào)試,是一種很好的找到問題的方法。而且我學(xué)會了多文件編寫軟件,以后要盡量用多文件操作,把之前寫好的程序做成頭文件,方便以后調(diào)用。其次,DS18B20是單總線的通訊。硬件連接較容易,但是時序要求很嚴(yán)格,軟件編程一開場,讀不出數(shù)據(jù)。千方百計地調(diào)整時序,準(zhǔn)確延時,依舊沒有讀出溫度數(shù)據(jù)。查閱大量資料發(fā)現(xiàn),DS18B20的接法不通,會影響到時序問題。寄生模式和單獨電源供電模式,他們的時序一定的區(qū)別。而且電源和地直接接不接10k電阻,時序也不一樣的。這一塊廢了很大功夫。最后,MSP430的IO口最大6mA,整個芯片最大電流總和不超過48mA。然而有源蜂鳴器驅(qū)動需要130mA,所以就要加9012NPN三極管來獲得大電流。9012的常溫最大輸出500mA電流。6本設(shè)計的缺乏和反思最為一個溫度監(jiān)控系統(tǒng),應(yīng)該加上按鈕,當(dāng)溫度異常,蜂鳴器報警時,按下復(fù)位按鈕,蜂鳴器停頓報警,但是紅燈繼續(xù)閃爍。當(dāng)故障排除后,紅燈滅,系統(tǒng)恢復(fù)正常。如果一分鐘后故障沒有排除,蜂鳴器再次報警。檢測的實時溫度應(yīng)該通過UART上傳到上位機,記錄下來。參考文獻[1]胡大可.MSP430系列超低功耗16位單片機[M].航空航天大學(xué),2001.[2]童詩白,華成英.模擬電子技術(shù)根底〔第四版〕,清華大學(xué),2006.[3]MSP430G2553DataSheet.[4]MSP430中文手冊.[5]Op37DataSheet.[6]MSP430G2系列單片機原理與實踐教程.[7]MSP-E*P430G2系列單片機試驗板使用指南.附錄附一:元器件及儀器明細表見另外e*cel文檔。附二:實驗設(shè)計程序/**main.c*/*include"msp430g2553.h"*include"LCD1602.h"*include"DS18b20.h"intmain(void){//StopwatchdogtimertopreventtimeoutresetWDTCTL=WDTPW+WDTHOLD;P1DIR=0*FF;P2DIR=BIT0+BIT1+BIT2+BIT3+BIT4+BIT5;//P2DIR=BIT3+BIT4+BIT5;unsignedintt;LCD1602_Init();DS18b20_Init();while(1){ P2OUT&=~BIT3;//紅燈滅 P2OUT&=~BIT4;//綠燈滅//P2OUT&=~BIT5;//蜂鳴器關(guān)t=get_one_temperature();if(t>=300) { P2OUT|=BIT3;//紅燈亮 LCD1602_write_string(1,1,"warning!!!!!!!!"); LCD1602_write_string(2,0,"hig-"); LCD1602_display_temperature(2,4,t); P2OUT|=BIT5;//蜂鳴器kai }if(t<=270) { P2OUT|=BIT4;//綠燈亮 LCD1602_write_string(1,1,"warning!!!!!!!!!");LCD1602_write_string(2,0,"low-"); LCD1602_display_temperature(2,4,t); P2OUT|=BIT5;//蜂鳴器kai }if(t<300&&t>270) { P2OUT&=~BIT5;//蜂鳴器關(guān) LCD1602_write_string(1,1,"Thetemprature"); LCD1602_write_string(2,0,"is"); LCD1602_display_temperature(2,4,t); }}}/**DS18b20.H**Createdon:2015-6-28*Author:Administrator*/*ifndefDS18B20_H_*defineDS18B20_H_*include"msp430g2553.h"/***********************************引腳定義***********************************/*defineDQ_1P2OUT|=BIT2*defineDQ_0P2OUT&=~BIT2*defineDQ_inP2DIR&=~BIT2*defineDQ_outP2DIR|=BIT2*defineDQ_val(P2IN&BIT2)/**************************************命令字符定義***************************************/*defineRead_ROM0*33//讀ROM*defineMatch_ROM0*55//匹配ROM*defineSkip_ROM0*cc//跳過ROM*defineSearch_ROM0*f0//搜索ROM*defineAlarm_Search0*ec//告警搜索*defineConvert_Temperature0*44//溫度轉(zhuǎn)換*defineRead_Scratchpad0*be//讀暫存存儲器9字節(jié)內(nèi)容*defineWrite_Scratchpad0*4e//寫暫存存儲器,寫的是THandTL,接著發(fā)送兩位數(shù)據(jù)就可以/***********************************定義變量***********************************///e*ternunsignedintCheck_val;//初始化檢測變量//e*ternunsignedintTemp;//存放溫度//e*ternunsignedintTemp_l;//存放溫度低四位//e*ternunsignedintTemp_h;//存放溫度高四位/****************************************函數(shù)定義****************************************/e*ternvoidDS18b20_Port_Init(void);e*ternunsignedintDS18b20_Init(void);e*ternvoidDS18b20_write_byte(unsignedintdat);e*ternunsignedintDS18b20_read_byte(void);e*ternunsignedintget_one_temperature(void);*endif/*DS18B20_H_*//**DS18B20.C**Createdon:2015-6-28*Author:Administrator*/*include"msp430g2553.h"/***************************DQ接p2.4**************************/*include"DS18b20.h"voidDS18b20_Port_Init(void){P2DIR=BIT2;}/*******************************************************************************DS18b20操作時序:1.DS18b20初始化2.對64位ROM進展操作讀ROM搜索ROM跳過ROM告警搜索3.對存放器進展操作包括讀取溫度……4.精度默認的為0.0625,無法重新設(shè)定,沒找到相應(yīng)的指令相對應(yīng)的轉(zhuǎn)換時間為750ms**************************************************************************************************************************************************************DS18b20初始化方法:1主機發(fā)送480-960us的低電平,釋放總線2等待15-60us3檢測DQ上是否有低電平出現(xiàn)有:復(fù)位成功,通常時間為60-240us無:復(fù)位失敗,繼續(xù)等待4DQ上出現(xiàn)低電平后,低電平持續(xù)15us,然后DS18b20開場對單片機發(fā)送的數(shù)據(jù)進展采樣*******************************************************************************/unsignedintDS18b20_Init(void){unsignedCheck_val;DQ_out;DQ_0;__delay_cycles(600);DQ_1;__delay_cycles(60);DQ_in;_NOP();if(DQ_val==1){Check_val=0;//初始化失敗}if(DQ_val==0){Check_val=1;//初始化成功}__delay_cycles(10);DQ_out;DQ_1;__delay_cycles(100);returnCheck_val;}/*******************************************************************************DS18b20寫數(shù)據(jù)方法:1DS18b20是“一位一位〞的寫‘0’和‘1’2每寫一次‘1’或‘0’為一個周期,每個周期約為45-60us3DQ拉低1us,表示寫周期開場,釋放總線,讓DQ隨寫入的值變化4假設(shè)寫1:DQ拉高至少60us,保證在采樣周期內(nèi)采到的值均為高5假設(shè)寫0:DQ拉低至少60us,保證在采樣周期內(nèi)采到的值均為低6釋放總線********************************************************************************單片機發(fā)送數(shù)據(jù)時,是從寫的數(shù)據(jù)的最高位開場發(fā)送*/voidDS18b20_write_byte(unsignedintdat){unsignedinti;for(i=0;i<8;i++){DQ_0;__delay_cycles(2);if(dat&0*01)DQ_1;elseDQ_0;__delay_cycles(60);dat>>=1;;DQ_1;__delay_cycles(10);}}/**************************************************************************************************DS18b20讀數(shù)據(jù)方法:1DS18b20是“一位一位〞的讀‘0’和‘1’2每讀一次‘1’或‘0’為一個周期,每個周期約為45-60us3DQ拉低1us,表示讀周期開場,釋放總線,讓DQ隨DS18b20傳送的值變化4假設(shè)傳1:則檢測到高電平,持續(xù)時間為60us左右,所以檢測一次后要延時60us,再檢測下一位傳送的數(shù)據(jù)5假設(shè)傳0:則檢測到低電平,持續(xù)時間為60us左右***************************************************************************************************DS18b20傳送數(shù)據(jù)是從最低位開場傳**所以單片機在承受數(shù)據(jù)時,存儲變量一共移動8次,將所有數(shù)據(jù)都接收并回到最高位*/unsignedintDS18b20_read_byte(void){unsignedi;unsignedintbyte=0;for(i=0;i<8;i++){byte>>=1;DQ_0;__delay_cycles(2);DQ_1;__delay_cycles(2);DQ_in;_NOP();if(DQ_val)byte|=0*80;__delay_cycles(60);DQ_out;DQ_1;__delay_cycles(10);}returnbyte;}/*******************************************************************************當(dāng)用一個DS18b20進展溫度測量時步驟1.初始化2.跳過ROM3.控制存放器:溫度轉(zhuǎn)換,讀取ROM,讀取溫度低8位,溫度高8位注意的是,一定要初始化兩次*******************************************************************************/unsignedintget_one_temperature(void)//只讀取了整數(shù),沒讀取小數(shù)的局部{unsignedintTemp_l=0,Temp_h=0,Temp=0;floatf_temp;DS18b20_Init();DS18b20_write_byte(Skip_ROM);DS18b20_write_byte(Convert_Temperature);__delay_cycles(500000);DS18b20_Init();DS18b20_write_byte(Skip_ROM);DS18b20_write_byte(Read_Scratchpad);Temp_l=DS18b20_read_byte();Temp_h=DS18b20_read_byte();//Temp_l>>=8;Temp_h<<=8;Temp=Temp_h+Temp_l;f_temp=Temp*0.0625;//18b20的分辨率是0.0625Temp=f_temp*10+0.5;//乘以10表示小數(shù)點后面取一位,加0.5是四舍五入returnTemp;//Temp是整型}/**LCD1602.H**Createdon:2015-6-28*Author:Administrator*/*ifndefLCD1602_H_*defineLCD1602_H_*include"msp430g2553.h"*definers_0P2OUT&=~BIT1*definers_1P2OUT|=BIT1*defineen_0P2OUT&=~BIT0*defineen_1P2OUT|=BIT0/***********************************************************函數(shù)定義***********************************************************/e*ternvoidLCD1602_Port_Init(void);e*ternvoidLCD1602_write_mand(unsignedint);e*ternvoidLCD1602_write_data(unsignedintdat);e*ternvoidLCD1602_Init(void);e*ternvoidLCD1602_set_position(unsignedint*,unsignedinty);e*ternvoidLCD1602_write_string(unsignedint*,unsignedinty,unsignedchar*str);e*ternvoidLCD1602_display_temperature(unsignedint*,unsignedinty,unsignedinttemp);e*ternvoidLCD1602_write_varia(unsignedint*,unsignedinty,unsignedintvaria,unsignedintn);*endif/*LCD1602_H_*//**LCD1602.C**Createdon:2015-6-28*Author:Administrator*/*include"msp430g2553.h"*include"LCD1602.h"/**********************************數(shù)字變量顯示定義***********************************/charDigital[]={0*30,0*31,0*32,0*33,0*34,0*35,0*36,0*37,0*38,0*39};voidLCD1602_Port_Init(void){P1DIR|=0*FF;P2DIR|=BIT0+BIT1;}voidLCD1602_write_mand(unsignedint){rs_0;P1OUT=;__delay_cycles(500);en_1;__delay_cycles(500);en_0;}voidLCD1602_write_data(unsignedintdat){rs_1;P1OUT=dat;__delay_cycles(500);en_1;__delay_cycles(500);en_0;}voidLCD1602_Init(void){LCD1602_write_mand(0*38);//5*7點陣,雙行顯示LCD1602_write_mand(0*0c);//0*0f有光標(biāo),LCD1602_write_mand(0*01);//清屏LCD1602_write_mand(0*06);

溫馨提示

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

最新文檔

評論

0/150

提交評論