基于S08的溫度檢測(cè)顯示系統(tǒng)的設(shè)計(jì)說(shuō)明_第1頁(yè)
基于S08的溫度檢測(cè)顯示系統(tǒng)的設(shè)計(jì)說(shuō)明_第2頁(yè)
基于S08的溫度檢測(cè)顯示系統(tǒng)的設(shè)計(jì)說(shuō)明_第3頁(yè)
基于S08的溫度檢測(cè)顯示系統(tǒng)的設(shè)計(jì)說(shuō)明_第4頁(yè)
基于S08的溫度檢測(cè)顯示系統(tǒng)的設(shè)計(jì)說(shuō)明_第5頁(yè)
已閱讀5頁(yè),還剩22頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、基于S08的溫度檢測(cè)顯示系統(tǒng)的設(shè)計(jì)目 錄1 緒論11.1設(shè)計(jì)背景11.2 數(shù)據(jù)采集系統(tǒng)簡(jiǎn)單介紹12 方案論證32.1微控制器的選擇32.2顯示方案選擇32.3溫度傳感器的選擇43 溫度測(cè)量顯示系統(tǒng)硬件設(shè)計(jì)53.1 溫度采集模塊硬件設(shè)計(jì)53.2 MCU控制器模塊設(shè)計(jì)63.3 顯示模塊電路的設(shè)計(jì)74 溫度測(cè)量顯示系統(tǒng)軟件設(shè)計(jì)74.1微控制器程序的開(kāi)發(fā)環(huán)境與語(yǔ)言84.2程序設(shè)計(jì)94.2.1 A/D轉(zhuǎn)換原理與程序94.2.2熱敏電阻阻值和溫度的非線性對(duì)性模塊原理與程序114.2.3 溫度顯示模塊程序13總結(jié)15參考文獻(xiàn)16附錄A 溫度采集與顯示程序17附錄B 接線原理圖231 緒論1.1設(shè)計(jì)背景在人類

2、的生活環(huán)境中,溫度扮演著極其重要的角色。無(wú)論你生活在哪里,從事什么工作,無(wú)時(shí)無(wú)刻不在與溫度打著交道。自18世紀(jì)工業(yè)革命以來(lái),工業(yè)發(fā)展對(duì)是否能掌握溫度有著絕對(duì)的聯(lián)系。在冶金、鋼鐵、石化、水泥、玻璃、醫(yī)藥等等行業(yè),可以說(shuō)幾乎80%的工業(yè)部門都不得不考慮著溫度的因素。溫度對(duì)于工業(yè)如此重要,由此推進(jìn)了溫度傳感器的發(fā)展。進(jìn)入21世紀(jì)后,溫度傳感器正朝著高精度、多功能、總線標(biāo)準(zhǔn)化、高可靠性與安全性、開(kāi)發(fā)虛擬傳感器和網(wǎng)絡(luò)傳感器、研制單片測(cè)溫系統(tǒng)等高科技的方向迅速發(fā)展。在工農(nóng)業(yè)生產(chǎn)中,溫度檢測(cè)與其控制占有舉足輕重的地位,隨著現(xiàn)代信息技術(shù)的飛速發(fā)展和傳統(tǒng)工業(yè)改造的逐步實(shí)現(xiàn) ,能夠獨(dú)立工作的溫度檢測(cè)和顯示系統(tǒng)已經(jīng)

3、應(yīng)用于諸多領(lǐng)域。要達(dá)到較高的測(cè)量精度需要很好的解決引線誤差補(bǔ)償問(wèn)題、多點(diǎn)測(cè)量切換誤差問(wèn)題和放大電路零點(diǎn)漂移誤差等問(wèn)題,使溫度檢測(cè)復(fù)雜化。模擬信號(hào)在長(zhǎng)距離傳輸過(guò)程中,抗電磁干擾時(shí)令設(shè)計(jì)者傷腦筋的問(wèn)題,對(duì)于多點(diǎn)溫度檢測(cè)的場(chǎng)合,各被檢測(cè)點(diǎn)到監(jiān)測(cè)裝置之間引線距離往往不同,此外,各敏感元件參數(shù)的不一致,這些都是造成誤差的原因,并且難以完全清除。單片機(jī)以其功能強(qiáng)、體積小、可靠性高、造價(jià)低和開(kāi)發(fā)周期短等優(yōu)點(diǎn),成為自動(dòng)化和各個(gè)測(cè)控領(lǐng)域中必不可少且廣泛應(yīng)用的器件,尤其在日常生活中也發(fā)揮越來(lái)越大的作用。采用單片機(jī)對(duì)溫度采集進(jìn)行控制,不僅具有控制方便、組態(tài)簡(jiǎn)單和靈活性大等優(yōu)點(diǎn),而且可以大幅度提高被控?cái)?shù)據(jù)的技術(shù)指標(biāo),

4、從而能夠大大提高產(chǎn)品的質(zhì)量和數(shù)量。1.2 數(shù)據(jù)采集系統(tǒng)簡(jiǎn)單介紹隨著自動(dòng)控制的發(fā)展,數(shù)據(jù)采集越來(lái)越被廣泛應(yīng)用,如醫(yī)療、工業(yè)等方面,數(shù)據(jù)采集是指將溫度,壓力,流量,位移等模擬量通過(guò)各種傳感元件做適當(dāng)轉(zhuǎn)換后,再經(jīng)信號(hào)調(diào)理、采樣、量化、編碼、傳輸?shù)炔襟E采集,轉(zhuǎn)換成數(shù)字量后,傳給PC 機(jī)進(jìn)行存儲(chǔ),處理,顯示或打印的過(guò)程,相應(yīng)的系統(tǒng)稱為數(shù)據(jù)采集系統(tǒng),可分為以下幾種:1.基于通用微型計(jì)算機(jī)的數(shù)據(jù)采集系統(tǒng)將采集來(lái)的信號(hào)通過(guò)外部的采樣和A/D轉(zhuǎn)換后的數(shù)字信號(hào)通過(guò)接口電路送入微機(jī)進(jìn)行處理,然后再顯示處理結(jié)果或經(jīng)過(guò)D/A轉(zhuǎn)換輸出,主要有以下幾個(gè)特點(diǎn):(1) 系統(tǒng)較強(qiáng)的軟、硬件支持。通用微型計(jì)算機(jī)系統(tǒng)所有的軟硬件資源

5、都可以用來(lái)支持系統(tǒng)進(jìn)行工作。(2) 具有自開(kāi)發(fā)能力。(3) 系統(tǒng)的軟硬件的應(yīng)用配置比較小,系統(tǒng)的成本較高,但二次開(kāi)發(fā)時(shí),軟硬件擴(kuò)展能力較好。(4) 在工業(yè)環(huán)境中運(yùn)行的可靠性差,對(duì)安放的環(huán)境要求較高;程序在RAM 中運(yùn)行,易受外界干擾破壞。2.基于單片機(jī)的數(shù)據(jù)采集系統(tǒng)它是由單片機(jī)與其些外圍芯片構(gòu)成的數(shù)據(jù)采集系統(tǒng),是近年來(lái)微機(jī)技術(shù)快速發(fā)展的結(jié)果,它具有如下特點(diǎn):(1) 系統(tǒng)不具有自主開(kāi)發(fā)能力,因此,系統(tǒng)的軟硬件開(kāi)發(fā)必須借助開(kāi)發(fā)工具。(2) 系統(tǒng)的軟硬件設(shè)計(jì)與配置規(guī)模都是以滿足數(shù)據(jù)采集系統(tǒng)功能要求為原則,因此系統(tǒng)的軟硬件應(yīng)用配置具有最佳的性價(jià)比。系統(tǒng)的軟件一般都有應(yīng)用程序。(3) 系統(tǒng)的可靠性好、使

6、用方便。應(yīng)用程序在ROM 中運(yùn)行不會(huì)因外界的干擾而破壞,而且上電后系統(tǒng)立即進(jìn)入用戶狀態(tài)。3.基于DSP數(shù)字信號(hào)微處理器的數(shù)據(jù)采集系統(tǒng)DSP數(shù)字信號(hào)微處理器從理論上而言就是一種單片機(jī)的形式,常用的數(shù)字信號(hào)處理芯片有兩種類型,一種是專用DSP芯片,一種是通用DSP芯片。基于DSP數(shù)字信號(hào)微處理器的數(shù)據(jù)采集系統(tǒng)的特點(diǎn)如下:精度高、靈活性好、可靠性好、容易集成、分時(shí)復(fù)用等,但其價(jià)格不菲。2 方案論證2.1微控制器的選擇微控制器是測(cè)量顯示裝置的核心部分,它要負(fù)責(zé)數(shù)據(jù)的處理與控制液晶屏顯示。因此,需要一個(gè)高集成度、穩(wěn)定性高和體積小的微控制器,同時(shí)還要注重低成本與實(shí)際情況。AT89S52是一種低功耗、高性能

7、8位微控制器,具有8K系統(tǒng)可編程FLASH存儲(chǔ)器和256字節(jié)ROM,可實(shí)現(xiàn)0Hz33Hz的全靜態(tài)操作,支持4.0V5.5V電源。使用Atmel公司高密度非易失性存儲(chǔ)器技術(shù)制造,與MCS-51產(chǎn)品指令和引腳完全兼容。片上Flash允許程序存儲(chǔ)器在系統(tǒng)可編程,亦適于常規(guī)編程器。其部沒(méi)有A/D轉(zhuǎn)換模塊,需要外部擴(kuò)展模數(shù)轉(zhuǎn)換芯片。S08AW60擁有62KB片上在線可編程FLASH存儲(chǔ)器和2KB片上RAM,具有模塊保護(hù)與安全選項(xiàng)功能,支持2.75.5V電源。片總線時(shí)鐘最高可達(dá)20MHz,可選擇寬圍的時(shí)鐘頻率。其部集成了高性能模/數(shù)轉(zhuǎn)換器(ADC)和串行通信模塊,具有很寬的工作溫度圍(-40+125),可

8、適應(yīng)各類惡劣環(huán)境。該芯片還可以通過(guò)BDM在計(jì)算機(jī)與微控制器進(jìn)行在線編程與后臺(tái)調(diào)試,避免頻繁的插拔單片機(jī),編譯軟件調(diào)試功能強(qiáng)大。對(duì)比之后,根據(jù)實(shí)際的應(yīng)用需求,本設(shè)計(jì)選擇了飛思卡爾公司生產(chǎn)的增強(qiáng)型8位微控制器MC9S08AW60(44引腳、LQFP封裝)。其擁有足夠大的FLASH存儲(chǔ)器和ROM,并帶有高性能模/數(shù)轉(zhuǎn)換器。另外,體積小,穩(wěn)定性高,調(diào)試方便。2.2顯示方案選擇方案一:LED數(shù)碼管顯示器可分為兩種顯示方式:靜態(tài)顯示和動(dòng)態(tài)顯示。LED數(shù)碼管靜態(tài)顯示,多片七段譯碼器驅(qū)動(dòng)顯示,這不僅增加了成本,還需要占用單片機(jī)多個(gè)I/O口,也給電路的焊接帶來(lái)一定的困難,因此不選用這種方案作為顯示模塊,所以排除

9、此方案。方案二:LED數(shù)碼管顯示器動(dòng)態(tài)顯示方式下,將所有位的段選線并聯(lián)在起,由位選線控制哪位接收字段碼。采用動(dòng)態(tài)掃描顯示,也就是在顯示過(guò)中,輪流向各位送出字形碼和相應(yīng)的字位選擇,同一時(shí)刻只有一位顯示,其他各位熄滅。但是此顯示方案穩(wěn)定性較差,并且還需要焊接外圍電路,所以不采用此方案。方案三:LCD液晶顯示,由單片機(jī)驅(qū)動(dòng).它主要用來(lái)顯示大量數(shù)據(jù)、文字、圖形,能夠顯示的位數(shù)多,顯示得清晰多樣、美觀,同時(shí)液晶顯示器的編寫程序簡(jiǎn)單,價(jià)格便宜,故采用此種方案。 LCD類型繁多,價(jià)格不等。根據(jù)本設(shè)計(jì)需要顯示的信息量小的特點(diǎn),選用價(jià)格便宜的LCD1602液晶屏。其特點(diǎn)如下:(1) 液晶顯示屏是以16列

10、5;2行=32個(gè)5×10或5×7點(diǎn)陣塊組成的顯示字符群,每個(gè)點(diǎn)陣為一個(gè)字符,字符間距和行距都為一個(gè)點(diǎn)的寬度。(2) 具有字符發(fā)生器ROM,可以顯示192種字符。(3) 具有64字節(jié)的自定義字符RAM,可自定義8個(gè)5×7或4個(gè)5×10點(diǎn)陣字符。(4) 具有80字節(jié)的RAM。(5) 結(jié)構(gòu)緊湊、輕巧、裝配容易。(6) 單+5V電源供電,低功耗,長(zhǎng)壽命,高可靠性。2.3溫度傳感器的選擇測(cè)量溫度的關(guān)鍵是溫度傳感器,因此需要靈敏度高、測(cè)溫圍寬、穩(wěn)定性好,同時(shí)還要考慮成本和實(shí)際情況。DS18B20數(shù)字式溫度傳感器,使用集成芯片,采用單總線技術(shù),其能夠有效的減小外界的干

11、擾,提高測(cè)量的精度,同時(shí),它可以直接將被測(cè)溫度轉(zhuǎn)化成串行數(shù)字信號(hào)供微機(jī)處理,接口簡(jiǎn)單,使數(shù)據(jù)傳輸和處理簡(jiǎn)單化。部分功能電路的集成,使總體硬件設(shè)計(jì)更簡(jiǎn)潔,能有效地降低成本,搭建電路和焊接電路時(shí)更快,調(diào)試也更方便簡(jiǎn)單化。熱敏電阻的主要特點(diǎn)是:靈敏度較高,其電阻溫度系數(shù)要比金屬大10100倍以上,能檢測(cè)出10-6的溫度變化;工作溫度圍寬,常溫器件適用于-55315,高溫器件適用溫度高于315(目前最高可達(dá)到2000),低溫器件適用于-27355;體積小,能夠測(cè)量其他溫度計(jì)無(wú)法測(cè)量的空隙、腔體與生物體血管的溫度;使用方便,電阻值可在0.1100k間任意選擇;易加工成復(fù)雜的形狀,可大批量生產(chǎn);穩(wěn)定性好、

12、過(guò)載能力強(qiáng)對(duì)比之后,根據(jù)實(shí)際的應(yīng)用需求,本設(shè)計(jì)采用熱敏電阻。熱敏電阻包括正溫度系數(shù)(PTC)和負(fù)溫度系數(shù)(NTC)熱敏電阻,以與臨界溫度熱敏電阻(CTR)本設(shè)計(jì)采用NTC熱敏電阻。NTC(Negative Temperature Coeff1Cient)是指隨溫度上升電阻呈指數(shù)關(guān)系減小、具有負(fù)溫度系數(shù)的熱敏電阻現(xiàn)象和材料該材料是利用錳、銅、硅、鈷、鐵、鎳、鋅等兩種或兩種以上的金屬氧化物進(jìn)行充分混合、成型、燒結(jié)等工藝而成的半導(dǎo)體瓷,可制成具有負(fù)溫度系數(shù)(NTC)的熱敏電阻其電阻率和材料常數(shù)隨材料成分比例、燒結(jié)氣氛、燒結(jié)溫度和結(jié)構(gòu)狀態(tài)不同而變化。它的測(cè)量圍一般為-10+300,也可做到-200+1

13、0,甚至可用于+300+1200環(huán)境中作測(cè)溫用。3 溫度測(cè)量顯示系統(tǒng)硬件設(shè)計(jì)溫度采集系統(tǒng)的硬件部分是由溫度采集模塊、MCU控制器模塊、溫度顯示模塊組成。具體框圖如下圖3.1所示: 圖3.1 系統(tǒng)硬件框圖3.1 溫度采集模塊硬件設(shè)計(jì)該模塊是根據(jù)熱敏電阻阻值隨溫度變化而變化的特性,利用串聯(lián)分壓的特點(diǎn),將熱敏電阻所分的電壓送到MC9S08AW60的模擬量輸入端。具體電路原理如圖3.2所示: 圖3.2 溫度采集模塊電路原理圖該電路中R4為熱敏電阻,其電壓傳輸?shù)組C9S08AW60單片機(jī)的模擬量輸入端,即B0口。3.2 MCU控制器模塊設(shè)計(jì)MC9S08AW60的外部工作電路如圖3.3所示。Vddad和V

14、ssad是MCU部模擬電路的電源,給模數(shù)轉(zhuǎn)換器(ADC)模塊供電,VREFH和VREFL是模數(shù)轉(zhuǎn)換的參考電壓。Vdd和Vss是S08MCU主要的電源引腳,工作電壓圍是2.7V5.5V,在該電路中提供的是5V電壓。在Vdd和Vss之間接10F鉭電容器和0.1F的瓷旁路電容器,10F鉭電容器來(lái)為系統(tǒng)提供大容量的電荷存儲(chǔ),同時(shí)應(yīng)在離MCU電源管腳盡可能近的地方安裝一個(gè)0.1F的瓷旁路電容器來(lái)抑制高頻噪音。 圖3.3 MC9S08AW60外部工作電路原理圖該電路為MCU控制器電路,其中,G0、G1、G2口分別與LCD1602的RS、R/W、E引腳連接;C0C3口與LCD1602的DB0DB3引腳連接;

15、D0D3口與LCD1602的DB4DB7引腳連接。.B0口是模擬量輸入端,用于輸入熱敏電阻的電壓。3.3 顯示模塊電路的設(shè)計(jì)該模塊是利用LCD1602液晶屏顯示,顯示的清晰度是關(guān)鍵,其Vee引腳作用是對(duì)比調(diào)整,原理是該引腳輸入電壓不同,調(diào)整度不同,所以采用電位器分壓作為它的電壓輸入。Vss與K引腳分別是電源地、LCD背光電源負(fù)極,直接接地。Vcc與A引腳分別是電源、LCD背光電源正極,采用+5V電源供電。其電路原理圖如圖3.4所示:圖3.4 顯示模塊電路原理圖該電路中,LCD1602的RS、R/W、E引腳分別與MC9S08AW60的G0、G1、G2口連接;DB0DB3引腳分別與MC9S08AW

16、60的C0C3口連接;DB4DB7引腳與MC9S08AW60的D0D3口連接。4 溫度測(cè)量顯示系統(tǒng)軟件設(shè)計(jì)4.1微控制器程序的開(kāi)發(fā)環(huán)境與語(yǔ)言在前面,本設(shè)計(jì)已經(jīng)選擇了MC9S08AW60微控制器,飛思卡爾的微控制器有其專用的開(kāi)發(fā)環(huán)境軟件CodeWarrior IDE。同時(shí),CodeWarrior IDE可以在不同的操作系統(tǒng)(包括Windows, Macintosh和Linux)下使用,而且在這些操作系統(tǒng)下的界面完全一樣。本設(shè)計(jì)使用CodeWarrior6.3版,其界面如圖4.1所示,只要在右邊打開(kāi)main.c窗口就可以進(jìn)行程序編寫。 圖4.1 CodeWarrior6.3程序開(kāi)發(fā)界面在對(duì)微控制器

17、進(jìn)行編程時(shí),可以用匯編語(yǔ)言或者C語(yǔ)言,甚至可以二者混合編程。CodeWarrior IDE支持匯編語(yǔ)言,C、C+和Java高級(jí)語(yǔ)言。C語(yǔ)言功能豐富、表達(dá)能力強(qiáng)、使用靈活方便、目標(biāo)程序效率高、可移植性好,既具有高級(jí)語(yǔ)言的優(yōu)點(diǎn),又具有低級(jí)語(yǔ)言的許多特點(diǎn),是國(guó)外廣泛使用的一種計(jì)算機(jī)語(yǔ)言。本設(shè)計(jì)使用C語(yǔ)言對(duì)微控制器進(jìn)行編程,其能直接操作微控制器的硬件和接口,生成的機(jī)器代碼也是高水平的。4.2程序設(shè)計(jì)本設(shè)計(jì)程序主要包括A/D轉(zhuǎn)換模塊程序、熱敏電阻阻值和溫度的非線性對(duì)性模塊程序、溫度顯示模塊程序,其總程序流程圖如圖4.2所示:圖4.2 系統(tǒng)程序總流程圖4.2.1 A/D轉(zhuǎn)換原理與程序傳感器獲得的信號(hào)由于是

18、模擬信號(hào),而CPU處理的是數(shù)字信號(hào),故要經(jīng)過(guò)模數(shù)轉(zhuǎn)換。在MC9S08AW60芯片中集成了一個(gè)8位/10位精度可選的逐次逼近式ADC模塊,使用時(shí)不需再擴(kuò)展片外的A/D轉(zhuǎn)換器。逐次逼近式ADC是一個(gè)具有反饋回路的循環(huán)系統(tǒng),主要部件有電壓比較器、逐次逼近寄存器(SAR)、結(jié)果寄存器、數(shù)字/模擬轉(zhuǎn)換器(Digital -To- Analog,DAC)和控制電路,如圖4.3所示。逐次逼近式ADC用DAC的輸出電壓來(lái)驅(qū)動(dòng)比較器的反相端。轉(zhuǎn)換時(shí),要用一個(gè)逐次逼近寄存器存放轉(zhuǎn)換出來(lái)的數(shù)字量;轉(zhuǎn)換結(jié)束時(shí),將數(shù)字量送到結(jié)果寄存器。 圖4.3 逐次逼近式ADC原理圖逐次逼近ADC原理是:首先設(shè)置SAR中的最高位為1

19、,其余位為0,經(jīng)D/A轉(zhuǎn)換器轉(zhuǎn)換成模擬電壓VO,然后將VO與輸入電壓Vi在電壓比較器中進(jìn)行比較。如果ViVO,則置1保留,并使下一位置1。如果Vi<VO,則這一位給予清除,然后使下一位置1。按上述方法對(duì)次高位進(jìn)行轉(zhuǎn)換、比較、判斷,決定次高位應(yīng)取1還是0。重復(fù)上述過(guò)程,直到確定SAR最低位為止。這時(shí)控制電路送出一個(gè)轉(zhuǎn)換結(jié)束標(biāo)志信號(hào),這個(gè)信號(hào)將SAR中的數(shù)字量送入結(jié)果寄存器供CPU使用。本設(shè)計(jì)中,由于在S08AW60芯片中的SCI數(shù)據(jù)寄存器只有8位,所以模數(shù)轉(zhuǎn)換選擇8位精度,以滿足實(shí)際情況。針對(duì)振動(dòng)信號(hào)高頻多變,在ADC初始化中選擇連續(xù)轉(zhuǎn)換、高速轉(zhuǎn)換和短采樣時(shí)間。C語(yǔ)言編寫的MC9S08AW

20、60微控制器中A/D轉(zhuǎn)換的節(jié)選程序代碼如下:/* * *函數(shù)名稱:adc_init()* *作用:A/D模塊初始化*/void adc_init(void) APCTL1=0X01; /*ADCP01引腳I/O無(wú)效,即B口0位*/ ADC1CFG=0X00; /*高速模式 8位精度,ADCK=總線頻率*/ ADC1SC2=0X00; /*軟件觸發(fā),比較功能禁止*/ ADC1SC1=0X00; /*禁止轉(zhuǎn)換完成中斷,單次轉(zhuǎn)換*/* * *函數(shù)名稱:convert_begin()* *作用:?jiǎn)?dòng)A/D轉(zhuǎn)換*/unsigned int convert_begin(void) unsigned int

21、 Vtemp; ADC1SC1=0X00; /* 寫ADC1SC1啟動(dòng)轉(zhuǎn)換*/ while(!(ADC1SC1_COCO); /* 等待轉(zhuǎn)換結(jié)束 */ Vtemp=ADC1RL; /*讀取轉(zhuǎn)換結(jié)果 */ return Vtemp; /* 返回結(jié)果 */4.2.2熱敏電阻阻值和溫度的非線性對(duì)性模塊原理與程序熱敏電阻的阻值溫度特性曲線是一條指數(shù)曲線,非線性度較大,因此在使用時(shí)要進(jìn)行線性化處理??刹捎煤?jiǎn)單的查表法從電壓值中查出相應(yīng)的溫度值。預(yù)先將一系列溫度與電壓對(duì)應(yīng)值存貯到AW60微控制器程序存儲(chǔ)器中的一個(gè)表,當(dāng)給定任意一個(gè)電壓值時(shí),即可通過(guò)查表得出所對(duì)應(yīng)的溫度值。當(dāng)表中沒(méi)有對(duì)應(yīng)的電壓值時(shí),可找出電

22、壓值在表中的區(qū)域,然后在區(qū)間的相鄰兩點(diǎn)經(jīng)線性插值得出對(duì)應(yīng)溫度值。存入表中點(diǎn)的多少影響溫度值的精度。這里以選16個(gè)點(diǎn)為例,選8位模式A/D可轉(zhuǎn)換結(jié)果圍是0255,因此每?jī)蓚€(gè)點(diǎn)的間隔是16。使用插值算法如下: (4.1)式中:當(dāng)前溫度;當(dāng)前溫度的A/D轉(zhuǎn)換值;,相鄰點(diǎn)的溫度值;,相鄰點(diǎn)的A/D轉(zhuǎn)換值;當(dāng)A/D轉(zhuǎn)換結(jié)果在區(qū)間016或240255時(shí),不再計(jì)算,直接按溫度值79或-40處理。C語(yǔ)言編寫的獲得溫度值的節(jié)選程序代碼如下:/* * *函數(shù)名稱: GetTemperature()* *作用:查表與插值程序得到溫度值*/signed int GetTemperature(int Value) si

23、gned int T; int i; if(Value<= V_T_table01) T=V_T_table11; /* 當(dāng)A/D轉(zhuǎn)換值在016時(shí),按79攝氏度賦值 */ else if(Value>= V_T_table015) T=V_T_table115; /* 當(dāng)A/D轉(zhuǎn)換值在240255時(shí),按-40攝氏度賦值 */ else for(i=1;i<=14;i+) if(Value= V_T_table0i) /* 表中是否有值 */ T=V_T_table1i; /* 有值,賦值給T */ break; else if(Value> V_T_table0i)&a

24、mp;&(Value< V_T_table0i+1) T=(V_T_table1i+1-V_T_table1i)*100)/16; T=T*(Value-V_T_table0i); /* 沒(méi)有,找到區(qū)間并插值 */ T=V_T_table1i+T/100; break; return T; /* 返回溫度值T */4.2.3 溫度顯示模塊程序LCD1602采用+5V電壓驅(qū)動(dòng),其數(shù)據(jù)接口和讀寫控制引腳與MC9S08AW60單片機(jī)的I/O口直接相連。MC9S08AW60單片機(jī)將采集到的模擬電壓值經(jīng)過(guò)A/D轉(zhuǎn)換后,查表得到溫度值,通過(guò)I/O口傳輸給LCD1602顯示。C語(yǔ)言編寫的溫度值

25、顯示的節(jié)選程序代碼如下:/* * *函數(shù)名稱:LCD1602_init()* *作用LCD1602初始化*/void LCD1602_init(void) LCD1602_DB(0x08 ,0x03); /*顯示模式 8位總線 雙行顯示 5*7點(diǎn)陣*/ RS_RW_E_init(); LCD1602_DB(0x04 ,0x01); /*光標(biāo)移動(dòng) 每輸入一次該指令 光標(biāo)向右移一格 整體畫面不滾動(dòng)*/ RS_RW_E_init(); LCD1602_DB(0x0C ,0x00); /* 屏幕開(kāi)關(guān) 打開(kāi)顯示屏 不顯示光標(biāo) 不閃爍 */ RS_RW_E_init(); LCD1602_DB(0x06

26、,0x00); /輸入方式 RS_RW_E_init(); LCD1602_DB(0x01 ,0x00); /清屏 RS_RW_E_init(); /* * *函數(shù)名稱:LCD1602_display()* *作用LCD1602顯示*/void LCD1602_display(void) if(neg_flag) /* 如果是負(fù),最高位顯示-*/ LCD1602_DB(0x00,0x08); /*需要顯示的字符的地址*/ RS_RW_E_init(); LCD1602_write_dat(0x0d,0x02); else /* 如果是正,最高位顯示+*/ LCD1602_DB(0x00,0x0

27、8); /*需要顯示的字符的地址*/ RS_RW_E_init(); LCD1602_write_dat(0x0b,0x02); LCD1602_DB(0x01,0x08); /*需要顯示的字符的地址*/ RS_RW_E_init(); LCD1602_write_dat(Disp_Value0s,Disp_Value1s); LCD1602_DB(0x02,0x08); /*需要顯示的字符的地址*/ RS_RW_E_init(); LCD1602_write_dat(Disp_Value0g,Disp_Value1g);27 / 27總結(jié)硬件方面。選擇硬件,要比較同類產(chǎn)品的穩(wěn)定性、功耗、體積

28、、價(jià)格等,另外還要符合設(shè)計(jì)的全部要求。在顯示方案上,利用LCD1602顯示,程序簡(jiǎn)單,在硬件電路的設(shè)計(jì)方面,用Protel繪制電路圖時(shí)要標(biāo)明元件的大小,有些封裝元件要標(biāo)明名稱和封裝。其次,軟件方面。把程序分塊編寫能夠有效地提高正確性和編程效率。通過(guò)本次實(shí)驗(yàn),我學(xué)習(xí)了很多關(guān)于S08AW60的知識(shí),并能通過(guò)所學(xué)設(shè)計(jì)一款基于S08AW60的溫度測(cè)量顯示系統(tǒng),雖然有很多不足,也有很多不理解的地方,但是通過(guò)學(xué)習(xí)和討論,一一得到了解決,受益匪淺。參考文獻(xiàn)1 王威嵌入式微控制器S08AW原理與實(shí)踐M:航空航天大學(xué),20092 杰. 傳感器與檢測(cè)技術(shù)M:高教,20043 邵貝貝. 龔光華.單片機(jī)認(rèn)識(shí)與實(shí)踐M.

29、:航空航天大學(xué),20064閻石.數(shù)字電子技術(shù)基礎(chǔ)(第三版). :高等教育,19895蘭蓀.數(shù)據(jù)采集與處理M:能源,19876沙占友、王彥朋、孟志永.單片機(jī)外圍電路設(shè)計(jì).電子工業(yè),20037宜仁.單片機(jī)實(shí)用技術(shù)問(wèn)答. 人民郵電,20038傳友、漢澤西.測(cè)控系統(tǒng)原理與設(shè)計(jì).航空航天大學(xué),20029 章吉良,周勇,戴旭涵等微傳感器原理、技術(shù)與應(yīng)用M:交通大學(xué),2005附錄A 溫度采集與顯示程序/* * *文件名Temprature_LCD1602.c* *MCU:MC9S08AW60* *調(diào)試環(huán)境:CodeWarrior v6.3* *日期:2010.12*/#include <hidef.h

30、> /* for EnableInterrupts macro */#include "derivative.h" /* include peripheral declarations */const unsigned char Disp_Value210=0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03 ; /*存放顯示段碼*/const signed int V_T_table217=0,16,32,48,64,80

31、,96,112,128,144,160,176,192,208,224,240,255,0,79,56,43,34,27,21,15,10,5,-1,-6,-11,-18,-26,-40,0 /*存放A/D轉(zhuǎn)換值和溫度值的表*/ ; #define LCD1602_D03_PTB03 PTCD /*1602液晶屏數(shù)據(jù)接口低4位接C口低4位*/#define LCD1602_D47_PTD03 PTDD /*1602液晶屏數(shù)據(jù)接口高4位接D口低4位*/#define LCD1602_RS PTGD_PTGD0 /*1602液晶屏數(shù)據(jù)選擇接口接G口0位*/#define LCD1602_RW PT

32、GD_PTGD1 /*1602液晶屏讀寫選擇接口接G口1位*/#define LCD1602_E PTGD_PTGD2 /*1602液晶屏信號(hào)使能接口接G口2位*/signed int Temperature; /*溫度*/char neg_flag=0; /*溫度正負(fù)標(biāo)志,正時(shí)為0,負(fù)時(shí)為1*/int s,g; /*溫度十位,個(gè)位*/unsigned int adc_value; /*通道電壓值*/*函數(shù)聲明*/void data_deal(void); /*數(shù)據(jù)處理程序*/void adc_init(void) ; /*ADC初始化程序*/signed int GetTemperature

33、(int Value); /*查表得到溫度程序*/unsigned int convert_begin(void); /*啟動(dòng)轉(zhuǎn)換*/void delay40us(int count); /*LCD顯示延時(shí)程序*/void RS_RW_E_init(void); /*LCD1602控制程序*/void LCD1602_DB(char x ,char y); /*LCD1602數(shù)據(jù)接口*/void LCD1602_init(void); /*LCD1602數(shù)據(jù)接口*/void LCD1602_write_dat(char x,char y); /*寫數(shù)據(jù)程序*/void LCD1602_disp

34、lay(void); /*LCD1602顯示程序*/void PORT_init(void) ; /*I/O口初始化程序*/*/* * *函數(shù)名稱:delay40us()* *作用:延時(shí)*/void delay40us(int count) int i; for(i=0;i<count;i+) _RESET_WATCHDOG(); /* * *函數(shù)名稱:adc_init()* *作用:A/D模塊初始化*/void adc_init(void) APCTL1=0X01; /*ADCP01引腳I/O無(wú)效,即B口0位*/ ADC1CFG=0X00; /*高速模式 8位精度,ADCK=總線頻率*

35、/ ADC1SC2=0X00; /*軟件觸發(fā),比較功能禁止*/ ADC1SC1=0X00; /*禁止轉(zhuǎn)換完成中斷,單次轉(zhuǎn)換*/* * *函數(shù)名稱:convert_begin()* *作用:?jiǎn)?dòng)A/D轉(zhuǎn)換*/unsigned int convert_begin(void) unsigned int Vtemp; ADC1SC1=0X00; /* 寫ADC1SC1啟動(dòng)轉(zhuǎn)換*/ while(!(ADC1SC1_COCO); /* 等待轉(zhuǎn)換結(jié)束 */ Vtemp=ADC1RL; /*讀取轉(zhuǎn)換結(jié)果 */ return Vtemp; /* 返回結(jié)果 */* * *函數(shù)名稱: GetTemperature(

36、)* *作用:查表與插值程序得到溫度值*/signed int GetTemperature(int Value) signed int T; int i; if(Value<= V_T_table01) T=V_T_table11; /* 當(dāng)A/D轉(zhuǎn)換值在016時(shí),按79攝氏度賦值 */ else if(Value>= V_T_table015) T=V_T_table115; /* 當(dāng)A/D轉(zhuǎn)換值在240255時(shí),按-40攝氏度賦值 */ else for(i=1;i<=14;i+) if(Value= V_T_table0i) /* 表中是否有值 */ T=V_T_ta

37、ble1i; /* 有值,賦值給T */ break; else if(Value> V_T_table0i)&&(Value< V_T_table0i+1) T=(V_T_table1i+1-V_T_table1i)*100)/16; T=T*(Value-V_T_table0i); /* 沒(méi)有,找到區(qū)間并插值 */ T=V_T_table1i+T/100; break; return T; /* 返回溫度值T */ /* * *函數(shù)名稱:data_deal()* *作用:實(shí)現(xiàn)十位,個(gè)位的分離*/void data_deal(void) if(Temperatur

38、e<0) /* 溫度為負(fù) */ neg_flag=1; /* neg_flag為1*/ Temperature=-Temperature; /* 取正*/ else neg_flag=0; s= Temperature/10; /* 分離十位*/ g= Temperature-s*10; /* 分離個(gè)位*/* * *函數(shù)名稱:RS_RW_E_init()* *作用:LCD1602控制*/void RS_RW_E_init(void) LCD1602_RS=0; LCD1602_RW=0; LCD1602_E =1; delay40us(10000); LCD1602_E =0;/* *

39、*函數(shù)名稱LCD1602_DB()* *作用:數(shù)據(jù)接口*/void LCD1602_DB(char x ,char y) LCD1602_D03_PTB03 =x; LCD1602_D47_PTD03 =y;/* * *函數(shù)名稱:LCD1602_init()* *作用LCD1602初始化*/void LCD1602_init(void) LCD1602_DB(0x08 ,0x03); /*顯示模式 8位總線 雙行顯示 5*7點(diǎn)陣*/ RS_RW_E_init(); LCD1602_DB(0x04 ,0x01); /*光標(biāo)移動(dòng) 每輸入一次該指令 光標(biāo)向右移一格 整體畫面不滾動(dòng)*/ RS_RW_E

40、_init(); LCD1602_DB(0x0C ,0x00); /* 屏幕開(kāi)關(guān) 打開(kāi)顯示屏 不顯示光標(biāo) 不閃爍 */ RS_RW_E_init(); LCD1602_DB(0x06 ,0x00); /輸入方式 RS_RW_E_init(); LCD1602_DB(0x01 ,0x00); /清屏 RS_RW_E_init(); /* * *函數(shù)名稱:LCD1602_write_dat()* *作用LCD1602寫數(shù)據(jù)*/void LCD1602_write_dat(unsigned char x,unsigned char y) LCD1602_DB(x , y); /*需要顯示的字符*/

41、LCD1602_RS=1; LCD1602_RW=0; LCD1602_E =1; delay40us(10000); LCD1602_E =0;/* * *函數(shù)名稱:LCD1602_display()* *作用LCD1602顯示*/void LCD1602_display(void) if(neg_flag) /* 如果是負(fù),最高位顯示-*/ LCD1602_DB(0x00,0x08); /*需要顯示的字符的地址*/ RS_RW_E_init(); LCD1602_write_dat(0x0d,0x02); else /* 如果是正,最高位顯示+*/ LCD1602_DB(0x00,0x08

42、); /*需要顯示的字符的地址*/ RS_RW_E_init(); LCD1602_write_dat(0x0b,0x02); LCD1602_DB(0x01,0x08); /*需要顯示的字符的地址*/ RS_RW_E_init(); LCD1602_write_dat(Disp_Value0s,Disp_Value1s); LCD1602_DB(0x02,0x08); /*需要顯示的字符的地址*/ RS_RW_E_init(); LCD1602_write_dat(Disp_Value0g,Disp_Value1g);/* * *函數(shù)名稱:PORT_init()* *作用:I/O口初始化*/void PORT_init(void) PTCDD=0XFF; PTDDD=0XFF; PTGDD=0XFF;/* * *函數(shù)名稱:main()* *作用:主函數(shù)*/void main(void) PORT_init(); LCD1602_init(); adc_init(); EnableInterrupts; /* enable interrupts */ /* inclu

溫馨提示

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

評(píng)論

0/150

提交評(píng)論