基于MSP430單片機(jī)的溫度測量及顯示系統(tǒng)_第1頁
基于MSP430單片機(jī)的溫度測量及顯示系統(tǒng)_第2頁
基于MSP430單片機(jī)的溫度測量及顯示系統(tǒng)_第3頁
基于MSP430單片機(jī)的溫度測量及顯示系統(tǒng)_第4頁
基于MSP430單片機(jī)的溫度測量及顯示系統(tǒng)_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

目錄1.系統(tǒng)設(shè)計(jì)與框圖 22.系統(tǒng)硬件主要電路 22.1MSP430單片機(jī)模塊 22.1.1MSP430單片機(jī)工作特點(diǎn) 32.1.2MSP430單片機(jī)最小系統(tǒng) 32.2LCD1602液晶顯示模塊 42.2.1LCD1602引腳功能 42.2.2LCD1602指令說明 52.2.3LCD1602操作時(shí)序 62.3.DS18B20溫度采集模塊 72.3.1DS18B20封裝形式及引腳功能 72.3.2DS18B20內(nèi)部結(jié)構(gòu) 82.3.3DS18B20測溫原理 92.4.串口通信模塊 102.4.1串行通信概述 102.4.2RS232接口電路 113.系統(tǒng)軟件設(shè)計(jì) 123.1主程序 133.2DS18B20溫度采集程序 133.3LCD1602液晶溫度顯示程序 153.4串口程序 164.系統(tǒng)調(diào)試與結(jié)果分析 174.1LCD1602液晶溫度顯示 174.2串口通信上位機(jī)溫度顯示 174.3串口示波器顯示溫度變化曲線 185.總結(jié) 19參考文獻(xiàn): 19基于MSP430單片機(jī)的溫度測量及顯示系統(tǒng)摘要:隨著現(xiàn)代信息技術(shù)的飛速發(fā)展和傳統(tǒng)工業(yè)改造的逐步實(shí)現(xiàn),溫度自動(dòng)檢測和顯示系統(tǒng)在很多領(lǐng)域得到廣泛應(yīng)用。人們在溫度檢測的準(zhǔn)確度、便捷、快速等方面有著越來越高的要求。而傳統(tǒng)的溫度傳感器已經(jīng)不能滿足人們的需求,其漸漸被新型的溫度傳感器所代替。本文基于MSP430單片機(jī),設(shè)計(jì)對環(huán)境溫度進(jìn)行采集的溫度采集系統(tǒng)。利用DS18B20單總線進(jìn)行溫度測量,并通過單片機(jī)將溫度顯示在LCD1602上,并利用虛擬串口顯示溫度變化的曲線。關(guān)鍵詞:MSP430;LCD1602;DS18B20;串口通信1.系統(tǒng)設(shè)計(jì)與框圖溫度采集系統(tǒng)是以MSP430單片機(jī)為核心的系統(tǒng),它主要包括溫度的采集、采集數(shù)據(jù)的處理、單片機(jī)通信、LCD液晶顯示等幾大模塊,具體方案如圖1-1所示:圖1-1系統(tǒng)框圖信號(hào)采集主要是由DS18B20及其外圍電路構(gòu)成。所得到的數(shù)字信號(hào)經(jīng)過單片機(jī)的處理后,將溫度值輸出到LCD1602液晶上顯示出來,同時(shí)通過串口通信發(fā)送到上位機(jī)上,并在串口示波器上顯示出溫度變化曲線,從而完成整個(gè)系統(tǒng)的工作。2.系統(tǒng)硬件主要電路2.1MSP430單片機(jī)模塊MSP430F149是一種新型的混合信號(hào)處理器,采用了美國德州儀器(TexasInstruments)公司最新低功耗技術(shù)(工作電流為0.1一400pA),它將大量的外圍模塊整合到片內(nèi),特別適合于開發(fā)和設(shè)計(jì)單片系統(tǒng)。2.1.1MSP430單片機(jī)工作特點(diǎn)MSP430149單片機(jī)主要具有如下特點(diǎn):①低電壓、超低功耗。工作電壓3.3V,等待方式下工作電流為1.3wA,在RAM保持關(guān)閉工作方式下工作電流僅為0A。②具有12位的模數(shù)轉(zhuǎn)換器(ADC12),可以得到很高的精度,并且省去了使用專門的模數(shù)轉(zhuǎn)換器給設(shè)計(jì)電路板帶來的麻煩。③擁有大容量的存儲(chǔ)空間。存儲(chǔ)器方面包括多達(dá)60kFlashROM和2kRAM,如此數(shù)量的存儲(chǔ)空間完全可以滿足程序及數(shù)據(jù)的需要。④兩通道串行通信接口。可用于與計(jì)算機(jī)進(jìn)行異步或同步串行通信。⑤硬件乘法器。該乘法器獨(dú)立于CPU進(jìn)行乘法運(yùn)算的操作,在提高乘法運(yùn)算速度的同時(shí)也提升了CPU的利用效率。⑥串行在系統(tǒng)編程。通過仿真器對程序進(jìn)行下載,并通過專用軟件對程序及單片機(jī)的工作狀態(tài)進(jìn)行監(jiān)控,極大地方便了程序的調(diào)試。2.1.2MSP430單片機(jī)最小系統(tǒng)MSP430單片機(jī)最小系統(tǒng)電路如圖2-1-2(1)和圖2-1-2(2)所示2.2LCD1602液晶顯示模塊LCD1602液晶顯示器也叫1602字符型液晶顯示器。它是一種專門用來顯示字母、數(shù)字、符號(hào)等的點(diǎn)陣型液晶模塊。它由若干個(gè)5X7或者5X11等點(diǎn)陣字符位組成。每個(gè)點(diǎn)陣字符位都可以顯示一個(gè)字符,每位之間有一個(gè)點(diǎn)距的間隔,每行之間也有間隔,起到了字符間距和行間距的作用。LCD1602是指顯示的內(nèi)容為16X2,即可以顯示兩行,每行16個(gè)字符液晶模塊。2.2.1LCD1602引腳功能1602LCD采用標(biāo)準(zhǔn)的14腳(無背光)或16腳(帶背光)接口,各引腳接口說明如表2.1所示:表2.1引腳接口說明表編號(hào)符號(hào)引腳說明編號(hào)符號(hào)引腳說明1VSS電源地9D2數(shù)據(jù)2VDD電源正極10D3數(shù)據(jù)3VL液晶顯示偏壓11D4數(shù)據(jù)4RS數(shù)據(jù)/命令選擇12D5數(shù)據(jù)5R/W讀/寫選擇13D6數(shù)據(jù)6E使能信號(hào)14D7數(shù)據(jù)7D0數(shù)據(jù)15BLA背光源正極8D1數(shù)據(jù)16BLK背光源負(fù)極第1腳:VSS為地電源。第2腳:VDD接5V正電源。第3腳:VL為液晶顯示器對比度調(diào)整端,接正電源時(shí)對比度最弱,接地時(shí)對比度最高,對比度過高時(shí)會(huì)產(chǎn)生“鬼影”,使用時(shí)可以通過一個(gè)10K的電位器調(diào)整對比度。第4腳:RS為寄存器選擇,高電平時(shí)選擇數(shù)據(jù)寄存器、低電平時(shí)選擇指令寄存器。第5腳:R/W為讀寫信號(hào)線,高電平時(shí)進(jìn)行讀操作,低電平時(shí)進(jìn)行寫操作。當(dāng)RS和R/W共同為低電平時(shí)可以寫入指令或者顯示地址,當(dāng)RS為低電平R/W為高電平時(shí)可以讀忙信號(hào),當(dāng)RS為高電平R/W為低電平時(shí)可以寫入數(shù)據(jù)。第6腳:E端為使能端,當(dāng)E端由高電平跳變成低電平時(shí),液晶模塊執(zhí)行命令。第7~14腳:D0~D7為8位雙向數(shù)據(jù)線。第15腳:背光源正極。第16腳:背光源負(fù)極。2.2.2LCD1602指令說明1602液晶模塊內(nèi)部的控制器共有11條控制指令,如表2.2所示:表2.2控制命令表序號(hào)指令RSR/WD7D6D5D4D3D2D1D01清顯示00000000012光標(biāo)返回000000001*3置輸入模式00000001I/DS4顯示開/關(guān)控制0000001DCB5光標(biāo)或字符移位000001S/CR/L**6置功能00001DLNF**7置字符發(fā)生存貯器地址0001字符發(fā)生存貯器地址8置數(shù)據(jù)存貯器地址001顯示數(shù)據(jù)存貯器地址9讀忙標(biāo)志或地址01BF計(jì)數(shù)器地址10寫數(shù)到CGRAM或DDRAM)10要寫的數(shù)據(jù)內(nèi)容11從CGRAM或DDRAM讀數(shù)11讀出的數(shù)據(jù)內(nèi)容1602液晶模塊的讀寫操作、屏幕和光標(biāo)的操作都是通過指令編程來實(shí)現(xiàn)的。(說明:1為高電平、0為低電平)指令1:清顯示,指令碼01H,光標(biāo)復(fù)位到地址00H位置。指令2:光標(biāo)復(fù)位,光標(biāo)返回到地址00H。指令3:光標(biāo)和顯示模式設(shè)置I/D:光標(biāo)移動(dòng)方向,高電平右移,低電平左移S:屏幕上所有文字是否左移或者右移。高電平表示有效,低電平則無效。指令4:顯示開關(guān)控制。D:控制整體顯示的開與關(guān),高電平表示開顯示,低電平表示關(guān)顯示C:控制光標(biāo)的開與關(guān),高電平表示有光標(biāo),低電平表示無光標(biāo)B:控制光標(biāo)是否閃爍,高電平閃爍,低電平不閃爍。指令5:光標(biāo)或顯示移位S/C:高電平時(shí)移動(dòng)顯示的文字,低電平時(shí)移動(dòng)光標(biāo)。指令6:功能設(shè)置命令DL:高電平時(shí)為4位總線,低電平時(shí)為8位總線N:低電平時(shí)為單行顯示,高電平時(shí)雙行顯示F:低電平時(shí)顯示5x7的點(diǎn)陣字符,高電平時(shí)顯示5x10的點(diǎn)陣字符。指令7:字符發(fā)生器RAM地址設(shè)置。指令8:DDRAM地址設(shè)置。指令9:讀忙信號(hào)和光標(biāo)地址BF:為忙標(biāo)志位,高電平表示忙,此時(shí)模塊不能接收命令或者數(shù)據(jù),如果為低電平表示不忙。指令10:寫數(shù)據(jù)。指令11:讀數(shù)據(jù)。2.2.3LCD1602操作時(shí)序LCD1602讀寫操作時(shí)序如圖2-2-3(1)和圖2-2-3(2)所示:圖2-2-3(1)讀操作時(shí)序圖2-2-3(2)寫操作時(shí)序2.3.DS18B20溫度采集模塊DS18B20是Dallas公司繼DS1820后推出的一種改進(jìn)型智能數(shù)字溫度傳感器,與傳統(tǒng)的熱敏電阻相比,只需一根線就能直接讀出被測溫度值,并可根據(jù)實(shí)際需求來編程實(shí)現(xiàn)9~12位數(shù)字值的讀數(shù)方式。2.3.1DS18B20封裝形式及引腳功能圖2-3-1DS18B20封裝及引腳功能如圖3-1-1所示,DS18B20的外形如一只三極管,引腳名稱及作用如下:GND:接地端。DQ:數(shù)據(jù)輸入/輸出腳,與TTL電平兼容。VDD:可接電源,也可接地。因?yàn)槊恐籇S18B20都可以設(shè)置成兩種供電方式,即數(shù)據(jù)總線供電方式和外部供電方式。采用數(shù)據(jù)總線供電方式時(shí)VDD接地,可以節(jié)省一根傳輸線,但完成數(shù)據(jù)測量的時(shí)間較長;采用外部供電方式則VDD接+5V,多用一根導(dǎo)線,但測量速度較快。2.3.2DS18B20內(nèi)部結(jié)構(gòu)圖2-3-2DS18B20內(nèi)部結(jié)構(gòu)圖3-1-2中出示了DS18B20的主要內(nèi)部部件,下面對DS18B20內(nèi)部部分進(jìn)行簡單的描述:(1)64位ROM。64位ROM是由廠家使用激光刻錄的一個(gè)64位二進(jìn)制ROM代碼,是該芯片的標(biāo)識(shí)號(hào),如表2.3所示:表2.364位ROM標(biāo)識(shí)8位循環(huán)冗余檢驗(yàn)48位序列號(hào)8位分類編號(hào)(10H)MSBLSBMSBLSBMSBLSB第1個(gè)8位表示產(chǎn)品分類編號(hào),DS18B20的分類號(hào)為10H;接著為48位序列號(hào)。它是一個(gè)大于281*1012的十進(jìn)制編碼,作為該芯片的唯一標(biāo)示代碼;最后8位為前56位的CRC循環(huán)冗余校驗(yàn)碼,由于每個(gè)芯片的64位ROM代碼不同,因此在單總線上能夠并接多個(gè)DS18B20進(jìn)行多點(diǎn)溫度實(shí)習(xí)檢驗(yàn)。(2)溫度傳感器。溫度傳感器是DS18B20的核心部分,該功能部件可完成對溫度的測量通過軟件編程可將-55~125℃范圍內(nèi)的溫度值按9位、10位、11位、12位的分辨率進(jìn)行量化,以上的分辨率都包括一個(gè)符號(hào)位,因此對應(yīng)的溫度量化值分別為0.5℃、0.25℃、0.125℃、0.0625℃,即最高分辨率為0.0625℃。芯片出廠時(shí)默認(rèn)為12位的轉(zhuǎn)換精度。當(dāng)接收到溫度轉(zhuǎn)換命令(44H)后,開始轉(zhuǎn)換,轉(zhuǎn)換完成后的溫度以16位帶符號(hào)擴(kuò)展的的二進(jìn)制補(bǔ)碼形式表示,存儲(chǔ)在高速緩存器RAM的第0,1字節(jié)中,二進(jìn)制數(shù)的前5位是符號(hào)位。如果測得的溫度大于0,這5位為0,只要將測得的數(shù)值乘上0.0625即可得到實(shí)際溫度;如果溫度小于0,這5位為1,測得的數(shù)值需要取反加1再乘上0.0625即可得到實(shí)際溫度。(3)高速緩存器。DS18B20內(nèi)部的高速緩存器包括一個(gè)高速暫存器RAM和一個(gè)非易失性可電擦除的EEPROM。非易失性可點(diǎn)擦除EEPROM用來存放高溫觸發(fā)器TH、低溫觸發(fā)器TL和配置寄存器中的信息。(4)配置寄存器。配置寄存器的內(nèi)容用于確定溫度值的數(shù)字轉(zhuǎn)換率。DS18B20工作是按此寄存器的分辨率將溫度轉(zhuǎn)換為相應(yīng)精度的數(shù)值,它是高速緩存器的第5個(gè)字節(jié),該字節(jié)定義如表2.4所示:表2.4匹配寄存器TMR0R111111TM是測試模式位,用于設(shè)置DS18B20在工作模式還是在測試模式,在DS18B20出廠時(shí)該位被設(shè)置為0,用戶不要去改動(dòng);R1和R0用來設(shè)置分辨率;其余5位均固定為1。DS18B20分辨率的設(shè)置如表2.3所示:表3.3DS18B20分辨率的設(shè)置R1R0分辨率最大轉(zhuǎn)換時(shí)間/ms009位93.750110位187.51011位3751112位750DS18B20依靠一個(gè)單線端口通訊。在單線端口條件下,必須先建立ROM操作協(xié)議,才能進(jìn)行存儲(chǔ)器和控制操作。因此,控制器必須首先提供下面5個(gè)ROM操作命令之一:1)讀ROM;2)匹配ROM;3)搜索ROM;4)跳過ROM;5)報(bào)警搜索。這些命令對每個(gè)器件的激光ROM部分進(jìn)行操作,在單線總線上掛有多個(gè)器件時(shí),可以區(qū)分出單個(gè)器件,同時(shí)可以向總線控制器指明有多少器件或是什么型號(hào)的器件。成功執(zhí)行完一條ROM操作序列后,即可進(jìn)行存儲(chǔ)器和控制操作,控制器可以提供6條存儲(chǔ)器和控制操作指令中的任一條。一條控制操作命令指示DS18B20完成一次溫度測量。測量結(jié)果放在DS18B20的暫存器里,用一條讀暫存器內(nèi)容的存儲(chǔ)器操作命令可以把暫存器中數(shù)據(jù)讀出。溫度報(bào)警觸發(fā)器TH和TL各由一個(gè)EEPROM字節(jié)構(gòu)成。如果沒有對DS18B20使用報(bào)警搜索命令,這些寄存器可以做為一般用途的用戶存儲(chǔ)器使用??梢杂靡粭l存儲(chǔ)器操作命令對TH和TL進(jìn)行寫入,對這些寄存器的讀出需要通過暫存器。所有數(shù)據(jù)都是以最低有效位在前的方式進(jìn)行讀寫。2.3.3DS18B20測溫原理DS18B20的測溫原理如圖3-1-3所示,其主要由斜率累加器、溫度系數(shù)振蕩器、減法計(jì)數(shù)器、溫度存儲(chǔ)器等功能部件組成。圖2-3-3DS18B20測溫原理DS1820是這樣測溫的:用一個(gè)高溫度系數(shù)的振蕩器確定一個(gè)門周期,內(nèi)部計(jì)數(shù)器在這個(gè)門周期內(nèi)對一個(gè)低溫度系數(shù)的振蕩器的脈沖進(jìn)行計(jì)數(shù)來得到溫度值。計(jì)數(shù)器被預(yù)置到對應(yīng)于-55℃的一個(gè)值。如果計(jì)數(shù)器在門周期結(jié)束前到達(dá)0,則溫度寄存器(同樣被預(yù)置到-55℃)的值增加,表明所測溫度大于-55℃。同時(shí),計(jì)數(shù)器被復(fù)位到一個(gè)值,這個(gè)值由斜坡式累加器電路確定,斜坡式累加器電路用來補(bǔ)償感溫振蕩器的拋物線特性。然后計(jì)數(shù)器又開始計(jì)數(shù)直到0,如果門周期仍未結(jié)束,將重復(fù)這一過程。斜坡式累加器用來補(bǔ)償感溫振蕩器的非線性,以期在測溫時(shí)獲得比較高的分辨率。這是通過改變計(jì)數(shù)器對溫度每增加一度所需計(jì)數(shù)的的值來實(shí)現(xiàn)的。因此,要想獲得所需的分辨力,必須同時(shí)知道在給定溫度下計(jì)數(shù)器的值和每一度的計(jì)數(shù)值。DS18B20內(nèi)部對此計(jì)算的結(jié)果可提供0.5℃的分辨率。溫度以16bit帶符號(hào)位擴(kuò)展的二進(jìn)制補(bǔ)碼形式讀出,表2.5給出了溫度值和輸出數(shù)據(jù)的關(guān)系。數(shù)據(jù)通過單線接口以串行方式傳輸。DS18B20測溫范圍-55℃~+125℃,以0.5℃遞增。表2.5溫度數(shù)據(jù)關(guān)系溫度℃數(shù)據(jù)輸出(二進(jìn)制)數(shù)據(jù)輸出(十六進(jìn)制)+125000000001111101000FA+2500000000001100100032+0.500000000000000010001000000000000000000000-0.51111111111111111FFFF-251111111111001110FFCE-551111111110010010FF92S18B20遵循單總線協(xié)議,每次測溫時(shí)都必須有4個(gè)過程[6]:?初始化;?傳送ROM操作命令;?傳送ROM操作命令;?數(shù)據(jù)交換;2.4.串口通信模塊串行通信是一種能把二進(jìn)制數(shù)據(jù)按位(逐位)進(jìn)行傳送的一種通信方式。計(jì)算機(jī)與外界的通信有兩種基本方式:并行通信和串行通信。2.4.1串行通信概述串行通信按信息的格式又可分為異步通信和同步通信兩種方式。在異步通信中,每一個(gè)字符要用起始位和停止位作為字符開始和結(jié)束的標(biāo)志,它是以字符為單位一個(gè)個(gè)地發(fā)送和接收。串行異步通信方式的特點(diǎn)是:數(shù)據(jù)在線路上傳送時(shí)是以一個(gè)字符(字節(jié))為單位,未傳送時(shí)線路處于空閑狀態(tài),空閑線路約定為高電平“1”。傳送一個(gè)字符又稱為一幀信息,傳送一幀信息時(shí),每一個(gè)字符前加一個(gè)低電平的起始位,然后是數(shù)據(jù)位,數(shù)據(jù)位可以是5~8位,低位在前,高位在后,數(shù)據(jù)位后可以帶(也可以不帶)一個(gè)奇偶校驗(yàn)位,最后是停止位,停止位用高電平表示,它可以是1位、1位半或2位(通常采用1位)。串行口工作方式分為以下四種:方式0:移位寄存器方式;方式1:8位數(shù)據(jù)異步通訊方式;方式2和方式3都是11為異步收發(fā)。2.4.2RS232接口電路串口通信電路如圖2-4-2所示:圖2-4-2RS232通訊電路3.系統(tǒng)軟件設(shè)計(jì)系統(tǒng)的程序主要包括主程序、讀出溫度子程序、寫出溫度子程序、溫度轉(zhuǎn)換命令字程序、計(jì)算溫度子程序和液晶顯示數(shù)據(jù)子程序。程序的功能是實(shí)時(shí)顯示溫度、讀出并處理DS18B20的測量溫度值,并通過串口通信發(fā)送到上位機(jī)顯示溫度,同時(shí)在串口示波器上顯示溫度變化曲線。其程序流程如圖3:圖3主程序流程圖3.1主程序主程序如下:voidmain(void){unsignedchari;unsignedchardis[5]={"00.0"};WDTCTL=WDTPW+WDTHOLD;InitSys();LCD_PortInit();LCD_init();LCD_clear();LCD_write_str(0,0,"TheTemperature:");LCD_write_str(5,1,"C");DS18B20_Reset();UART_PortInit();UART_Config();//溫度顯示與串口接收while(1){ds1820_start();//啟動(dòng)一次轉(zhuǎn)換ds1820_read_temp();//讀取溫度數(shù)值dis[0]=temp_value%1000/100+0x30;dis[1]=temp_value%100/10+0x30;dis[2]='.';dis[3]=temp_value%10+0x30;LCD_write_str(0,1,dis);//Print_Str("123");for(i=0;i<4;i++){Send_Byte(dis[i]);Send_Byte('\n');}Delay_Nms(500);}}3.2DS18B20溫度采集程序在本次設(shè)計(jì)系統(tǒng)中P1^6口用來單片機(jī)與溫度傳感器通訊;它用到的相關(guān)函數(shù)如下:ds_init()18B20初始化;ds_write()向18B20中寫入數(shù)據(jù);ds_read()由18B20讀取數(shù)據(jù);ds_temp()從18B20中讀取溫度值;dis[]把溫度值送入1602中顯示。具體程序如下所示:#include"ds18b20.h"#include"delay.h"#defineuintunsignedint#defineucharunsignedchar#defineuintunsignedintuinttemp_value;unsignedcharDS18B20_Reset(void)//初始化和復(fù)位{unsignedchari;DQ_OUT;DQ_CLR;delay_us(500);//延時(shí)500uS(480-960)DQ_SET;DQ_IN;delay_us(80); //延時(shí)80uSi=DQ_R;delay_us(500);//延時(shí)500uS(保持>480uS)if(i){return0x00;}else{return0x01;}}//*************************************************************************// DS18B20讀一個(gè)字節(jié)函數(shù)//*************************************************************************unsignedchards1820_read_byte(void){unsignedchari;unsignedcharvalue=0;for(i=8;i!=0;i--){value>>=1;DQ_OUT;DQ_CLR;delay_us(4);//*延時(shí)4uS DQ_SET;DQ_IN;delay_us(10);//*延時(shí)10uS if(DQ_R){value|=0x80; }delay_us(60); //*延時(shí)60uS }return(value);}/*DS18B20字節(jié)寫入函數(shù)*/voidds1820_write_byte(unsignedcharvalue){unsignedchari;for(i=8;i!=0;i--){DQ_OUT;DQ_CLR;delay_us(4);//延時(shí)4uSif(value&0x01){DQ_SET; }delay_us(80); //延時(shí)80uSDQ_SET; //位結(jié)束value>>=1; }}//*************************************************************************// 發(fā)送溫度轉(zhuǎn)換命令//*************************************************************************/*啟動(dòng)ds1820轉(zhuǎn)換*/voidds1820_start(void){DS18B20_Reset();ds1820_write_byte(0xCC); //勿略地址ds1820_write_byte(0x44); //啟動(dòng)轉(zhuǎn)換}//*************************************************************************// DS8B20讀取溫度信息//*************************************************************************unsignedintds1820_read_temp(void){unsignedinti;unsignedcharbuf[9];DS18B20_Reset();ds1820_write_byte(0xCC); //勿略地址ds1820_write_byte(0xBE); //讀取溫度for(i=0;i<9;i++){buf[i]=ds1820_read_byte(); }i=buf[1];i<<=8;i|=buf[0];temp_value=i;temp_value=(uint)(temp_value*0.625);returni;}voiddata_do(uinttemp_d){uintA2t;A1=temp_d/100;//分出百,十,和個(gè)位A2t=temp_d%100;A2=A2t/10;A3=A2t%10;}3.3LCD1602液晶溫度顯示程序在本次設(shè)計(jì)系統(tǒng)中定義了P6^5口為1602液晶的使能端;P6^3為數(shù)據(jù)命令的選擇端;P6^4為讀寫選擇端。定義了有關(guān)的函數(shù):LCD_write_com()向1602寫入命令碼函數(shù)LCD_write_data()向1602寫入數(shù)據(jù)函數(shù)display()1602顯示函數(shù)lcd_init()1602初始化lcd_display()1602顯示初始化。具體程序如下所示:#include<msp430x14x.h>#include<math.h>#include"1602.h"#include"delay.h"voidLCD_PortInit(){P2DIR=0xff;P6DIR|=BIT3+BIT4+BIT5;}voidLCD_write_com(unsignedcharcom){ RS_CLR; RW_CLR; EN_SET; DATAPORT=com;//命令寫入端口 Delay_Nms(5); EN_CLR;}voidLCD_write_data(unsignedchardata){ RS_SET; RW_CLR; EN_SET; DATAPORT=data;//數(shù)據(jù)寫入端口 Delay_Nms(5); EN_CLR;}voidLCD_clear(void){//清屏幕顯示 Delay_Nms(5);}voidLCD_write_char(unsignedcharx,unsignedchary,unsignedchardata){if(y==0){ LCD_write_com(0x80+x);//第一行顯示}else{ LCD_write_com(0xC0+x);//第二行顯示}LCD_write_data(data);}voidLCD_write_str(unsignedcharx,unsignedchary,unsignedchar*s){ if(y==0){ LCD_write_com(0x80+x);//第一行顯示}else{ LCD_write_com(0xC0+x);//第二行顯示}while(*s!='\0'){ LCD_write_data(*s); s++;}}voidLCD_init(void){LCD_write_com(0x38); //顯示模式設(shè)置Delay_Nms(5);LCD_write_com(0x08); //顯示關(guān)閉Delay_Nms(5);LCD_write_com(0x01); //顯示清屏Delay_Nms(5);LCD_write_com(0x06); //顯示光標(biāo)移動(dòng)設(shè)置Delay_Nms(5);LCD_write_com(0x0C); //顯示開及光標(biāo)設(shè)置Delay_Nms(5);}3.4串口程序#include"UART.h"#defineuintunsignedint#defineucharunsignedchar#defineulongunsignedlongvoidUART_PortInit(){P3SEL|=BIT4+BIT5;//設(shè)置IO口為第二功能模式,啟用UART功能P3DIR|=BIT4;P3DIR&=~BIT5;}voidUART_Config(){U0CTL|=SWRST+CHAR;//復(fù)位SWRST,8位數(shù)據(jù)模式U0TCTL|=SSEL0;//SMCLK為串口時(shí)鐘U0BR1=0x00;//BRCLK=1MHZ,Baud=BRCLK/NU0BR0=0x03;//N=UBR+(UxMCTL)/8U0MCTL=0x4A;//微調(diào)寄存器為0,波特率9600bpsME1|=UTXE0;//UART0發(fā)送使能ME1|=URXE0;//UART0接收使能U0CTL&=~SWRST;//IE1|=URXIE0;//接收中斷使能位}//*************************************************************************//串口0發(fā)送數(shù)據(jù)函數(shù)//*************************************************************************voidSend_Byte(uchardata){while(!(IFG1&UTXIFG0));//發(fā)送寄存器空的時(shí)候發(fā)送數(shù)據(jù)U0TXBUF=data;}//*************************************************************************//串口0發(fā)送字符串函數(shù)//********************************************************************

溫馨提示

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

評論

0/150

提交評論