基于S08單片機溫度測量顯示系統設計說明_第1頁
基于S08單片機溫度測量顯示系統設計說明_第2頁
基于S08單片機溫度測量顯示系統設計說明_第3頁
基于S08單片機溫度測量顯示系統設計說明_第4頁
基于S08單片機溫度測量顯示系統設計說明_第5頁
已閱讀5頁,還剩23頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、I / 28基于基于 S08S08 的溫度檢測顯示系統的設計的溫度檢測顯示系統的設計II / 28摘要隨著社會的進步和工業(yè)技術的發(fā)展,人們越來越重視溫度對產品的影響,許多產品對溫度圍要求嚴格,目前市場上普遍存在的問題有溫度信息傳遞不與時、精度不夠的缺點,不利于工業(yè)控制者根據溫度變化與時做出決定。在這樣的形式下,開發(fā)一種實時性高、精度高的溫度采集系統就很有必要。本設計采用一種基于單片機的數據采集系統方案,該方案根據熱敏電阻隨溫度變化而變化的特性,采用串聯分壓電路。單片機采集熱敏電阻的電壓,通過A/D轉換將模擬量電壓信號轉換成數字量電壓信號,經過查表轉換得到溫度值,控制液晶屏實時顯示溫度值。本系統

2、中所用到的器件是飛思卡爾公司MC9S08AW60單片機、NTC熱敏電阻和LCD1602液晶顯示屏。關鍵詞關鍵詞:MC9S08AW60;熱敏電阻;LCD1602III / 28目目 次次1 1 緒論緒論 1 11.1 設計背景 11.2 數據采集系統簡單介紹 12 2 方案論證方案論證 3 32.1 微控制器的選擇 32.2 顯示方案選擇 32.3 溫度傳感器的選擇 43 3 溫度測量顯示系統硬件設計溫度測量顯示系統硬件設計 6 63.1 溫度采集模塊硬件設計 63.2 MCU 控制器模塊設計 63.3 顯示模塊電路的設計 74 4 溫度測量顯示系統軟件設計溫度測量顯示系統軟件設計 9 94.1

3、 微控制器程序的開發(fā)環(huán)境與語言 94.2 程序設計 10總結總結 1717參考文獻參考文獻 1818附錄附錄 A A 溫度采集與顯示程序溫度采集與顯示程序 1919附錄附錄 B B 接線原理圖接線原理圖 25251 / 281 1 緒論緒論1.11.1 設計背景設計背景在人類的生活環(huán)境中,溫度扮演著極其重要的角色。無論你生活在哪里,從事什么工作,無時無刻不在與溫度打著交道。自18世紀工業(yè)革命以來,工業(yè)發(fā)展對是否能掌握溫度有著絕對的聯系。在冶金、鋼鐵、石化、水泥、玻璃、醫(yī)藥等等行業(yè),可以說幾乎80%的工業(yè)部門都不得不考慮著溫度的因素。溫度對于工業(yè)如此重要,由此推進了溫度傳感器的發(fā)展。進入21世紀

4、后,溫度傳感器正朝著高精度、多功能、總線標準化、高可靠性與安全性、開發(fā)虛擬傳感器和網絡傳感器、研制單片測溫系統等高科技的方向迅速發(fā)展。在工農業(yè)生產中,溫度檢測與其控制占有舉足輕重的地位,隨著現代信息技術的飛速發(fā)展和傳統工業(yè)改造的逐步實現 ,能夠獨立工作的溫度檢測和顯示系統已經應用于諸多領域。要達到較高的測量精度需要很好的解決引線誤差補償問題、多點測量切換誤差問題和放大電路零點漂移誤差等問題,使溫度檢測復雜化。模擬信號在長距離傳輸過程中,抗電磁干擾時令設計者傷腦筋的問題,對于多點溫度檢測的場合,各被檢測點到監(jiān)測裝置之間引線距離往往不同,此外,各敏感元件參數的不一致,這些都是造成誤差的原因,并且難

5、以完全清除。單片機以其功能強、體積小、可靠性高、造價低和開發(fā)周期短等優(yōu)點,成為自動化和各個測控領域中必不可少且廣泛應用的器件,尤其在日常生活中也發(fā)揮越來越大的作用。采用單片機對溫度采集進行控制,不僅具有控制方便、組態(tài)簡單和靈活性大等優(yōu)點,而且可以大幅度提高被控數據的技術指標,從而能夠大大提高產品的質量和數量。1.21.2 數據采集系統簡單介紹數據采集系統簡單介紹隨著自動控制的發(fā)展,數據采集越來越被廣泛應用,如醫(yī)療、工業(yè)等方面,2 / 28數據采集是指將溫度,壓力,流量,位移等模擬量通過各種傳感元件做適當轉換后,再經信號調理、采樣、量化、編碼、傳輸等步驟采集,轉換成數字量后,傳給PC 機進行存儲

6、,處理,顯示或打印的過程,相應的系統稱為數據采集系統,可分為以下幾種:1.基于通用微型計算機的數據采集系統將采集來的信號通過外部的采樣和A/D轉換后的數字信號通過接口電路送入微機進行處理,然后再顯示處理結果或經過D/A轉換輸出,主要有以下幾個特點:(1) 系統較強的軟、硬件支持。通用微型計算機系統所有的軟硬件資源都可以用來支持系統進行工作。(2) 具有自開發(fā)能力。(3) 系統的軟硬件的應用配置比較小,系統的成本較高,但二次開發(fā)時,軟硬件擴展能力較好。(4) 在工業(yè)環(huán)境中運行的可靠性差,對安放的環(huán)境要求較高;程序在RAM 中運行,易受外界干擾破壞。2.基于單片機的數據采集系統它是由單片機與其些外

7、圍芯片構成的數據采集系統,是近年來微機技術快速發(fā)展的結果,它具有如下特點:(1) 系統不具有自主開發(fā)能力,因此,系統的軟硬件開發(fā)必須借助開發(fā)工具。(2) 系統的軟硬件設計與配置規(guī)模都是以滿足數據采集系統功能要求為原則,因此系統的軟硬件應用配置具有最佳的性價比。系統的軟件一般都有應用程序。(3) 系統的可靠性好、使用方便。應用程序在ROM 中運行不會因外界的干擾而破壞,而且上電后系統立即進入用戶狀態(tài)。3.基于DSP數字信號微處理器的數據采集系統DSP數字信號微處理器從理論上而言就是一種單片機的形式,常用的數字信號處理芯片有兩種類型,一種是專用DSP芯片,一種是通用DSP芯片?;贒SP數字信號微

8、處理器的數據采集系統的特點如下:精度高、靈活性好、可靠性好、容易集成、分時復用等,但其價格不菲。3 / 282 2 方案論證方案論證2.12.1 微控制器的選擇微控制器的選擇微控制器是測量顯示裝置的核心部分,它要負責數據的處理與控制液晶屏顯示。因此,需要一個高集成度、穩(wěn)定性高和體積小的微控制器,同時還要注重低成本與實際情況。AT89S52是一種低功耗、高性能8位微控制器,具有8K系統可編程FLASH存儲器和256字節(jié)ROM,可實現0Hz33Hz的全靜態(tài)操作,支持4.0V5.5V電源。使用Atmel公司高密度非易失性存儲器技術制造,與MCS-51產品指令和引腳完全兼容。片上Flash允許程序存儲

9、器在系統可編程,亦適于常規(guī)編程器。其部沒有A/D轉換模塊,需要外部擴展模數轉換芯片。S08AW60 擁有 62KB 片上在線可編程 FLASH 存儲器和 2KB 片上 RAM,具有模塊保護與安全選項功能,支持 2.75.5V 電源。片總線時鐘最高可達 20MHz,可選擇寬圍的時鐘頻率。其部集成了高性能模/數轉換器(ADC)和串行通信模塊,具有很寬的工作溫度圍(-40+125),可適應各類惡劣環(huán)境。該芯片還可以通過 BDM 在計算機與微控制器進行在線編程與后臺調試,避免頻繁的插拔單片機,編譯軟件調試功能強大。對比之后,根據實際的應用需求,本設計選擇了飛思卡爾公司生產的增強型8位微控制器MC9S0

10、8AW60(44引腳、LQFP封裝)。其擁有足夠大的FLASH存儲器和ROM,并帶有高性能模/數轉換器。另外,體積小,穩(wěn)定性高,調試方便。2.22.2 顯示方案選擇顯示方案選擇方案一:LED數碼管顯示器可分為兩種顯示方式:靜態(tài)顯示和動態(tài)顯示。LED數碼管靜態(tài)顯示,多片七段譯碼器驅動顯示,這不僅增加了成本,還需要占用單片機多個I/O口,也給電路的焊接帶來一定的困難,因此不選用這種方案作為顯示模4 / 28塊,所以排除此方案。方案二:LED數碼管顯示器動態(tài)顯示方式下,將所有位的段選線并聯在起,由位選線控制哪位接收字段碼。采用動態(tài)掃描顯示,也就是在顯示過中,輪流向各位送出字形碼和相應的字位選擇,同一

11、時刻只有一位顯示,其他各位熄滅。但是此顯示方案穩(wěn)定性較差,并且還需要焊接外圍電路,所以不采用此方案。方案三:LCD液晶顯示,由單片機驅動.它主要用來顯示大量數據、文字、圖形,能夠顯示的位數多,顯示得清晰多樣、美觀,同時液晶顯示器的編寫程序簡單,價格便宜,故采用此種方案。 LCD類型繁多,價格不等。根據本設計需要顯示的信息量小的特點,選用價格便宜的LCD1602液晶屏。其特點如下:(1) 液晶顯示屏是以16列2行=32個510或57點陣塊組成的顯示字符群,每個點陣為一個字符,字符間距和行距都為一個點的寬度。(2) 具有字符發(fā)生器ROM,可以顯示192種字符。(3) 具有64字節(jié)的自定義字符RAM

12、,可自定義8個57或4個510點陣字符。(4) 具有80字節(jié)的RAM。(5) 結構緊湊、輕巧、裝配容易。(6) 單+5V電源供電,低功耗,長壽命,高可靠性。2.32.3 溫度傳感器的選擇溫度傳感器的選擇測量溫度的關鍵是溫度傳感器,因此需要靈敏度高、測溫圍寬、穩(wěn)定性好,同時還要考慮成本和實際情況。DS18B20 數字式溫度傳感器,使用集成芯片,采用單總線技術,其能夠有效的減小外界的干擾,提高測量的精度,同時,它可以直接將被測溫度轉化成串行數字信號供微機處理,接口簡單,使數據傳輸和處理簡單化。部分功能電路的集成,使總體硬件設計更簡潔,能有效地降低成本,搭建電路和焊接電路時更快,調試也更方便簡單化。

13、5 / 28熱敏電阻的主要特點是:靈敏度較高,其電阻溫度系數要比金屬大10100 倍以上,能檢測出 10-6的溫度變化;工作溫度圍寬,常溫器件適用于-55315,高溫器件適用溫度高于 315(目前最高可達到 2000) ,低溫器件適用于-27355;體積小,能夠測量其他溫度計無法測量的空隙、腔體與生物體血管的溫度;使用方便,電阻值可在 0.1100k 間任意選擇;易加工成復雜的形狀,可大批量生產;穩(wěn)定性好、過載能力強對比之后,根據實際的應用需求,本設計采用熱敏電阻。熱敏電阻包括正溫度系數(PTC)和負溫度系數(NTC)熱敏電阻,以與臨界溫度熱敏電阻(CTR) 本設計采用 NTC 熱敏電阻。NT

14、C(Negative Temperature Coeff1Cient)是指隨溫度上升電阻呈指數關系減小、具有負溫度系數的熱敏電阻現象和材料該材料是利用錳、銅、硅、鈷、鐵、鎳、鋅等兩種或兩種以上的金屬氧化物進行充分混合、成型、燒結等工藝而成的半導體瓷,可制成具有負溫度系數(NTC)的熱敏電阻其電阻率和材料常數隨材料成分比例、燒結氣氛、燒結溫度和結構狀態(tài)不同而變化。它的測量圍一般為-10+300,也可做到-200+10,甚至可用于+300+1200環(huán)境中作測溫用。6 / 283 3 溫度測量顯示系統硬件設計溫度測量顯示系統硬件設計溫度采集系統的硬件部分是由溫度采集模塊、MCU 控制器模塊、溫度顯示

15、模塊組成。具體框圖如下圖 3.1 所示:溫度采集模擬量輸入MCULCD顯示輸出 圖 3.1 系統硬件框圖3.13.1 溫度采集模塊硬件設計溫度采集模塊硬件設計該模塊是根據熱敏電阻阻值隨溫度變化而變化的特性,利用串聯分壓的特點,將熱敏電阻所分的電壓送到 MC9S08AW60 的模擬量輸入端。具體電路原理如圖 3.2 所示:123456ABCD654321DCBATitleNumberRevisionSizeBDate:12-Jan-2011Sheet of File:E:creat_pretelM yD esign 召召召.ddbDraw n By:VCCR320kR4RE S4PT B0 圖

16、3.2 溫度采集模塊電路原理圖該電路中 R4 為熱敏電阻,其電壓傳輸到 MC9S08AW60 單片機的模擬量輸入端,即 B0 口。3.23.2 MCUMCU 控制器模塊設計控制器模塊設計MC9S08AW60的外部工作電路如圖3.3所示。Vddad和Vssad是MCU部模擬電路的電源,給模數轉換器(ADC)模塊供電,VREFH和VREFL是模數轉換的參考電壓。Vdd和Vss是S08MCU主要的電源引腳,工作電壓圍是2.7V5.5V,在該電路中提供的7 / 28是5V電壓。在Vdd和Vss之間接10F鉭電容器和0.1F的瓷旁路電容器,10F鉭電容器來為系統提供大容量的電荷存儲,同時應在離MCU電源

17、管腳盡可能近的地方安裝一個0.1F的瓷旁路電容器來抑制高頻噪音。123456ABCD654321DCBATitleNumberRevisionSizeBDate:12-Jan-2011Sheet of File:E:creat_pretelMyD esign 召召召.ddbDraw n By:PT B0PT B1PT B2PT B3PT D0PT D1VssadVddadPT D2PT D3PT G3VrefhVreflBKGDPTG5PTG6VssPTC0PTC1PTC2PTC3PTC5PT C4IRQRE SETPT F0PT F1PT F4PT F5PT E0PT E1PT E2PT E

18、3PTE4PTE5PTE6PTE7VssVddPTG0PTG1PTG2PTA0PTA1MC9S08AW60 44-Pin L QFP4MR11MC127pFC227pFC30.1uFR24.7kS1C40.1uFVCCC510uFVCC 圖3.3 MC9S08AW60外部工作電路原理圖該電路為MCU控制器電路,其中,G0、G1、G2口分別與LCD1602的RS、R/W、E引腳連接;C0C3口與LCD1602的DB0DB3引腳連接;D0D3口與LCD1602的DB4DB7引腳連接。.B0口是模擬量輸入端,用于輸入熱敏電阻的電壓。3.33.3 顯示模塊電路的設計顯示模塊電路的設計該模塊是利用 LC

19、D1602 液晶屏顯示,顯示的清晰度是關鍵,其 Vee 引腳作用是對比調整,原理是該引腳輸入電壓不同,調整度不同,所以采用電位器分壓作為它的電壓輸入。Vss 與 K 引腳分別是電源地、LCD 背光電源負極,直接接地。Vcc 與 A 引腳分別是電源、LCD 背光電源正極,采用+5V 電源供電。其電路8 / 28原理圖如圖 3.4 所示:123456ABCD654321DCBATitleNumberRevisionSizeBDate:12-Jan-2011Sheet of File:E:creat_pretelMyDesign 召召召.ddbDrawn By:VssVccVeeRSR/WEDB0D

20、B1DB2DB3DB4DB5DB6DB7AKLCD1602R510kVCCVCCPTG0PTG1PTG2PTC0PTC1PTC2PTC3PTD0PTD1PTD2PTD3圖 3.4 顯示模塊電路原理圖該電路中,LCD1602 的 RS、R/W、E 引腳分別與 MC9S08AW60 的 G0、G1、G2口連接;DB0DB3 引腳分別與 MC9S08AW60 的 C0C3 口連接;DB4DB7 引腳與MC9S08AW60 的 D0D3 口連接。9 / 284 4 溫度測量顯示系統軟件設計溫度測量顯示系統軟件設計4.14.1 微控制器程序的開發(fā)環(huán)境與語言微控制器程序的開發(fā)環(huán)境與語言在前面,本設計已經選

21、擇了MC9S08AW60微控制器,飛思卡爾的微控制器有其專用的開發(fā)環(huán)境軟件CodeWarrior IDE。同時,CodeWarrior IDE可以在不同的操作系統(包括Windows, Macintosh和Linux)下使用,而且在這些操作系統下的界面完全一樣。本設計使用CodeWarrior6.3版,其界面如圖4.1所示,只要在右邊打開main.c窗口就可以進行程序編寫。 圖 4.1 CodeWarrior6.3 程序開發(fā)界面在對微控制器進行編程時,可以用匯編語言或者C語言,甚至可以二者混合編程。CodeWarrior IDE支持匯編語言,C、C+和Java高級語言。C語言功能豐富、表達能力

22、強、使用靈活方便、目標程序效率高、可移植性好,既具有高級語言的優(yōu)點,又具有低級語言的許多特點,是國外廣泛使用的一種計算機語言。本設計使用C語言對微控制器進行編程,其能直接操作微控制器的硬件和接口,10 / 28生成的機器代碼也是高水平的。4.24.2 程序設計程序設計本設計程序主要包括 A/D 轉換模塊程序、熱敏電阻阻值和溫度的非線性對性模塊程序、溫度顯示模塊程序,其總程序流程圖如圖 4.2 所示:開始MCU LCD初始化模擬量輸入啟動A/D轉換查表得到溫度值溫度值處理LCD顯示結束圖 4.2 系統程序總流程圖4.2.1 A/D 轉換原理與程序傳感器獲得的信號由于是模擬信號,而CPU處理的是數

23、字信號,故要經過模數轉換。在MC9S08AW60芯片中集成了一個8位/10位精度可選的逐次逼近式ADC模塊,使用時不需再擴展片外的A/D轉換器。逐次逼近式ADC是一個具有反饋回路的循環(huán)系統,主要部件有電壓比較器、逐次逼近寄存器(SAR) 、結果寄存器、數字/模擬轉換器(Digital -To- Analog,DAC)和控制電路,如圖4.3所示。逐次逼近式ADC用DAC的輸出電壓來11 / 28驅動比較器的反相端。轉換時,要用一個逐次逼近寄存器存放轉換出來的數字量;轉換結束時,將數字量送到結果寄存器。逐次逼近寄存器(SAR)結果寄存器CLK轉換標志D/A 轉換器控制電路+-ViVo電壓比較器 圖

24、4.3 逐次逼近式ADC原理圖逐次逼近ADC原理是:首先設置SAR中的最高位為1,其余位為0,經D/A轉換器轉換成模擬電壓VO,然后將VO與輸入電壓Vi在電壓比較器中進行比較。如果ViVO,則置1保留,并使下一位置1。如果ViVO,則這一位給予清除,然后使下一位置1。按上述方法對次高位進行轉換、比較、判斷,決定次高位應取1還是0。重復上述過程,直到確定SAR最低位為止。這時控制電路送出一個轉換結束標志信號,這個信號將SAR中的數字量送入結果寄存器供CPU使用。本設計中,由于在S08AW60芯片中的SCI數據寄存器只有8位,所以模數轉換選擇8位精度,以滿足實際情況。針對振動信號高頻多變,在ADC

25、初始化中選擇連續(xù)轉換、高速轉換和短采樣時間。C語言編寫的MC9S08AW60微控制器中A/D轉換的節(jié)選程序代碼如下:/* * *函數名稱:adc_init()* *作用:A/D模塊初始化*/void adc_init(void) APCTL1=0X01; /*ADCP01引腳I/O無效,即B口0位*/12 / 28 ADC1CFG=0X00; /*高速模式 8位精度,ADCK=總線頻率*/ ADC1SC2=0X00; /*軟件觸發(fā),比較功能禁止*/ ADC1SC1=0X00; /*禁止轉換完成中斷,單次轉換*/* * *函數名稱:convert_begin()* *作用:啟動A/D轉換*/un

26、signed int convert_begin(void) unsigned int Vtemp; ADC1SC1=0X00; /* 寫ADC1SC1啟動轉換*/ while(!(ADC1SC1_COCO); /* 等待轉換結束 */ Vtemp=ADC1RL; /*讀取轉換結果 */ return Vtemp; /* 返回結果 */4.2.2 熱敏電阻阻值和溫度的非線性對性模塊原理與程序熱敏電阻的阻值溫度特性曲線是一條指數曲線,非線性度較大,因此在使用時要進行線性化處理??刹捎煤唵蔚牟楸矸◤碾妷褐抵胁槌鱿鄳臏囟戎?。預先將一系列溫度與電壓對應值存貯到 AW60 微控制器程序存儲器中的一個表

27、,當給定任意一個電壓值時,即可通過查表得出所對應的溫度值。當表中沒有對應的電壓值時,可找出電壓值在表中的區(qū)域,然后在區(qū)間的相鄰兩點經線性插值得出對應溫度值。存入表中點的多少影響溫度值的精度。這里以選 16 個點為例,選 8 位模式 A/D 可轉換結果圍是 0255,因此每兩個點的間隔是 16。使用插值算法如下: 1_12/121xValueADxxyyyT13 / 28(4.1)式中:當前溫度;T當前溫度的 A/D 轉換值;ValueAD_,相鄰點的溫度值;2y1y,相鄰點的 A/D 轉換值;2x1x當 A/D 轉換結果在區(qū)間 016 或 240255 時,不再計算,直接按溫度值79或-40處

28、理。C語言編寫的獲得溫度值的節(jié)選程序代碼如下:/* * *函數名稱: GetTemperature()* *作用:查表與插值程序得到溫度值*/signed int GetTemperature(int Value) signed int T; int i; if(Value= V_T_table015) T=V_T_table115; /* 當 A/D 轉換值在 240255 時,按-40 攝氏度賦值 */ else for(i=1;i V_T_table0i)&(Value V_T_table0i+1) T=(V_T_table1i+1-V_T_table1i)*100)/16; T=T*(

29、Value-V_T_table0i); /* 沒有,找到區(qū)間并插值 */ T=V_T_table1i+T/100; break; return T; /* 返回溫度值 T */4.2.3 溫度顯示模塊程序LCD1602 采用+5V 電壓驅動,其數據接口和讀寫控制引腳與 MC9S08AW60 單片機的 I/O 口直接相連。MC9S08AW60 單片機將采集到的模擬電壓值經過 A/D 轉換后,查表得到溫度值,通過 I/O 口傳輸給 LCD1602 顯示。C語言編寫的溫度值顯示的節(jié)選程序代碼如下:/* * *函數名稱:LCD1602_init()* *作用LCD1602初始化*/void LCD16

30、02_init(void) LCD1602_DB(0 x08 ,0 x03); /*顯示模式 8位總線 雙行顯示 5*7點陣*/ RS_RW_E_init();15 / 28 LCD1602_DB(0 x04 ,0 x01); /*光標移動 每輸入一次該指令 光標向右移一格 整體畫面不滾動*/ RS_RW_E_init(); LCD1602_DB(0 x0C ,0 x00); /* 屏幕開關 打開顯示屏 不顯示光標 不閃爍 */ RS_RW_E_init(); LCD1602_DB(0 x06 ,0 x00); /輸入方式 RS_RW_E_init(); LCD1602_DB(0 x01 ,0

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

32、02_write_dat(0 x0b,0 x02); 16 / 28 LCD1602_DB(0 x01,0 x08); /*需要顯示的字符的地址*/ RS_RW_E_init(); LCD1602_write_dat(Disp_Value0s,Disp_Value1s); LCD1602_DB(0 x02,0 x08); /*需要顯示的字符的地址*/ RS_RW_E_init(); LCD1602_write_dat(Disp_Value0g,Disp_Value1g);17 / 28總結總結設計就是要講究嚴謹,在這三周的創(chuàng)新設計中,我學到了很多知識,也使我的能力得到了提升。首先,硬件方面。選

33、擇硬件,要比較同類產品的穩(wěn)定性、功耗、體積、價格等,另外還要符合設計的全部要求。在顯示方案上,我考慮的時間相對長了一點。利用數碼管顯示,程序復雜,但是,自己編程比較熟悉,價格便宜。利用 LCD1602 顯示,程序簡單,但是以前自己從未使用過。經過比較,我選擇LCD1602,這樣可以學到新知識,提高自己的知識水平。在硬件電路的設計方面,用 Protel 繪制電路圖時要標明元件的大小,有些封裝元件要標明名稱和封裝。其次,軟件方面。把程序分塊編寫能夠有效地提高正確性和編程效率。在本次設計中,編程采取了“兩步走”:第一步,我把溫度采集部分的程序調試成功,其中包括 A/D 轉換程序。這就要求必須對 A/

34、D 轉換原理了解與 A/D 轉換寄存器熟悉。第二步,我把顯示程序調試成功。這部分需要對 LCD1602 的時序有充分的了解和足夠的認識,這也是 LCD1602 與 LED 數碼管的不同之處。經過查資料和編程實驗,最后使 LCD1602 正常顯示數據。在軟件編寫時,還要注意添加注釋,使程序更加清晰,便于理解。總而言之,在王老師的帶領和指導下,我順利的完成了創(chuàng)新設計,完成了老師交給的任務。18 / 28參考文獻參考文獻1 王威嵌入式微控制器 S08AW 原理與實踐M:航空航天大學,20092 杰. 傳感器與檢測技術M:高教,20043 邵貝貝. 龔光華.單片機認識與實踐M.:航空航天大學,2006

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

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

37、64,80,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 轉換值和溫度值的表*/ ; #define LCD1602_D03_PTB03 PTCD /*1602 液晶屏數據接口低 4 位接 C 口低 4 位*/#define LCD1602_D47_PTD03 PTDD /*1602 液晶屏數據接口高 4 位接 D 口低 4 位*/#define LCD1602_RS PTGD_PTGD0 /*1602 液晶屏數據選擇接口接 G 口

38、0 位*/#define LCD1602_RW PTGD_PTGD1 /*1602 液晶屏讀寫選擇接口接 G 口 1 位*/#define LCD1602_E PTGD_PTGD2 /*1602 液晶屏信號使能接口接 G 口 2 位*/signed int Temperature; /*溫度*/char neg_flag=0; /*溫度正負標志,正時為 0,負時為 1*/int s,g; /*溫度十位,個位*/unsigned int adc_value; /*通道電壓值*/*函數聲明*/void data_deal(void); /*數據處理程序*/void adc_init(void) ;

39、 /*ADC 初始化程序*/signed int GetTemperature(int Value); /*查表得到溫度程序*/unsigned int convert_begin(void); /*啟動轉換*/void delay40us(int count); /*LCD 顯示延時程序*/void RS_RW_E_init(void); /*LCD1602 控制程序*/void LCD1602_DB(char x ,char y); /*LCD1602 數據接口*/void LCD1602_init(void); /*LCD1602 數據接口*/void LCD1602_write_dat

40、(char x,char y); /*寫數據程序*/void LCD1602_display(void); /*LCD1602 顯示程序*/20 / 28void PORT_init(void) ; /*I/O 口初始化程序*/*/* * *函數名稱:delay40us()* *作用:延時*/void delay40us(int count) int i; for(i=0;icount;i+) _RESET_WATCHDOG(); /* * *函數名稱:adc_init()* *作用:A/D 模塊初始化*/void adc_init(void) APCTL1=0X01; /*ADCP01 引腳

41、 I/O 無效,即 B 口 0 位*/ ADC1CFG=0X00; /*高速模式 8 位精度,ADCK=總線頻率*/ ADC1SC2=0X00; /*軟件觸發(fā),比較功能禁止*/ ADC1SC1=0X00; /*禁止轉換完成中斷,單次轉換*/* * *函數名稱:convert_begin()* *作用:啟動 A/D 轉換*/unsigned int convert_begin(void) unsigned int Vtemp; ADC1SC1=0X00; /* 寫 ADC1SC1 啟動轉換*/ while(!(ADC1SC1_COCO); /* 等待轉換結束 */ Vtemp=ADC1RL; /

42、*讀取轉換結果 */ return Vtemp; /* 返回結果 */* * *函數名稱: GetTemperature()* *作用:查表與插值程序得到溫度值*/signed int GetTemperature(int Value) signed int T;21 / 28 int i; if(Value= V_T_table015) T=V_T_table115; /* 當 A/D 轉換值在 240255 時,按-40 攝氏度賦值 */ else for(i=1;i V_T_table0i)&(Value V_T_table0i+1) T=(V_T_table1i+1-V_T_table

43、1i)*100)/16; T=T*(Value-V_T_table0i); /* 沒有,找到區(qū)間并插值 */ T=V_T_table1i+T/100; break; return T; /* 返回溫度值 T */ /* * *函數名稱:data_deal()* *作用:實現十位,個位的分離*/void data_deal(void) if(Temperature0) /* 溫度為負 */ neg_flag=1; /* neg_flag 為 1*/ Temperature=-Temperature; /* 取正*/ else neg_flag=0; s= Temperature/10; /* 分

44、離十位*/ g= Temperature-s*10; /* 分離個位*/* 22 / 28* *函數名稱: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;/* * *函數名稱LCD1602_DB()* *作用:數據接口*/void LCD1602_DB(char x ,char y) LCD1602_D03_PTB03 =x; LCD1602_D47_PTD03 =y;/* * *函數名

45、稱:LCD1602_init()* *作用LCD1602 初始化*/void LCD1602_init(void) LCD1602_DB(0 x08 ,0 x03); /*顯示模式 8 位總線 雙行顯示 5*7 點陣*/ RS_RW_E_init(); LCD1602_DB(0 x04 ,0 x01); /*光標移動 每輸入一次該指令 光標向右移一格 整體畫面不滾動*/ RS_RW_E_init(); LCD1602_DB(0 x0C ,0 x00); /* 屏幕開關 打開顯示屏 不顯示光標 不閃爍 */ RS_RW_E_init(); LCD1602_DB(0 x06 ,0 x00); /輸入方式 RS_RW_E_init(); LCD1602_DB(0 x01 ,0 x00); /清屏 RS_RW_E_init(); /* * *函數名稱:LCD1602_write_dat()* *作用LCD1602 寫數據*/void LCD1602_write_dat(unsigned char x,unsigned char y)23 / 28 LCD1602_DB(x , y); /*需要顯示的字符*/ LC

溫馨提示

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

評論

0/150

提交評論