嵌入式系統(tǒng)及應(yīng)用大作業(yè)嵌入式水溫控制系統(tǒng)_第1頁
嵌入式系統(tǒng)及應(yīng)用大作業(yè)嵌入式水溫控制系統(tǒng)_第2頁
嵌入式系統(tǒng)及應(yīng)用大作業(yè)嵌入式水溫控制系統(tǒng)_第3頁
嵌入式系統(tǒng)及應(yīng)用大作業(yè)嵌入式水溫控制系統(tǒng)_第4頁
嵌入式系統(tǒng)及應(yīng)用大作業(yè)嵌入式水溫控制系統(tǒng)_第5頁
已閱讀5頁,還剩26頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

《嵌入式系統(tǒng)及應(yīng)用》

(大作業(yè))

(題目:嵌入式水溫控制系統(tǒng))

姓爸___________________________

學(xué)號(hào):__________________________

專業(yè):_________自動(dòng)化班_________

院系:電子通信工程學(xué)院

指導(dǎo)老師:_________________________

完成時(shí)間:2013年X月X日

安徽新華學(xué)院《嵌入式系統(tǒng)及應(yīng)用》大作業(yè)

水溫控制系統(tǒng)設(shè)計(jì)

摘要

該實(shí)驗(yàn)設(shè)計(jì)基于飛思卡爾MC9S12DG128開發(fā)板平臺(tái),通過在

codewarrior開發(fā)環(huán)境編程而組成的一個(gè)水溫自動(dòng)控制系統(tǒng)。容

器內(nèi)的水溫可以通過外部掃描鍵盤來人工設(shè)定。溫度值設(shè)定后系

統(tǒng)將通過熱電阻絲來測定當(dāng)前的溫度值。當(dāng)系統(tǒng)的水溫下降時(shí),

當(dāng)前的水溫值會(huì)由LED顯示出來。系統(tǒng)的可實(shí)現(xiàn)的功能:1、四

位數(shù)碼管顯示容器里的當(dāng)前溫度,水溫可以顯示到小數(shù)點(diǎn)后一

位;2、可以用鍵盤人工設(shè)定水的溫度值;3、利用串口使實(shí)驗(yàn)面

板與計(jì)算機(jī)進(jìn)行通信。4.采用PID控制算法,使得溫度穩(wěn)定在一

定范圍內(nèi)。

關(guān)鍵字:水溫控制,單片機(jī)MC9s12DG128

安徽新華學(xué)院《嵌入式系統(tǒng)及應(yīng)用》大作業(yè)

Designoftemperaturecontrolsystem

ABSTRACT

TheexperimentaldesignbasedonFreescaleMC9S12DG128Carle

developmentboardplatform,IntheCodeWarriordevelopment

environmentprogrammingandawatertemperatureautomatic

controlsystemthatconsistsof.Thewatercontainercanbeset

byanexternalkeyboardscanningtoartificial.Thetemperature

valuesetbythethermalresistancewiresystemtodetermine

thecurrenttemperature.Whenthetemperaturedrops,the

currenttemperaturevaluescanbedisplayedbyLED.Thesystem

canrealizethefunction:1,fourdigitaltubedisplaythe

currenttemperatureinthecontainer,thewatertemperaturecan

bedisplayedtoonedecimalplace;2,youcanusethekeyboard

tosetthetemperatureofthewatervalue;3,usingserial

experimentalpanelandcomputercommunication.4theP1D

controlalgorithm,sothatthetemperatureisstablewithina

certainrange.

Keywords:temperaturecontrol,singlechipmicrocomputer

MC9S12DG128

n

安徽新華學(xué)院《嵌入式系統(tǒng)及應(yīng)用》大作業(yè)

目錄

1緒論.............................................4

1.1水溫控制系統(tǒng)設(shè)計(jì)要求..............................4

1.2水溫控制系統(tǒng)部分..................................4

2系統(tǒng)設(shè)計(jì)總體框圖及各模塊作用......................5

2.1系統(tǒng)設(shè)計(jì)總體框圖..................................5

2.2每個(gè)功能模塊作用介紹..............................5

3硬件設(shè)計(jì)原理圖及內(nèi)容...............................7

3.1硬件設(shè)計(jì)原理.......................................7

3.2串口通信部分的電路................................8

3.3鍵盤輸入電路......................................8

?4數(shù)碼/J:電路9

4系統(tǒng)軟件設(shè)計(jì)流程...................................10

5調(diào)試過程及數(shù)據(jù).....................................11

5.1串口調(diào)試..........................................11

5.2LED數(shù)碼管調(diào)試....................................11

5.3鍵盤輸入模塊調(diào)試..................................11

6實(shí)驗(yàn)心得和結(jié)果.....................................12

致謝................................................13

參考文獻(xiàn)..............................................14

附錄...............................................15

in

安徽新華學(xué)院《嵌入式系統(tǒng)及應(yīng)用》大作業(yè)

1緒論

溫度控制電路廣泛應(yīng)用于社會(huì)生活的各個(gè)領(lǐng)域,如家用電

器、汽車、材料、電力電子等,同時(shí)在很多工業(yè)應(yīng)用場合都需要

溫度的恒定控制,比如電加熱爐,煙葉初烤炕房,某些傳感器的

工作環(huán)境溫度等。同時(shí),在實(shí)際工作和科研中,許多實(shí)驗(yàn)均需耍

用加熱器來加熱實(shí)驗(yàn)對(duì)象,使其達(dá)到并保持在某一設(shè)定溫度,而

且在實(shí)驗(yàn)過程中,對(duì)象的溫度有時(shí)要求穩(wěn)定性很高,有時(shí)需要不

斷地調(diào)節(jié)。正因?yàn)槿绱?,恒溫的控制在工業(yè)和科研中占有非同一

般的地位。

水溫恒溫控制就是其中的一種。水的恒溫控制是利用對(duì)加熱

系統(tǒng)(熱源)的控制,使之在不同的溫度輸出不同的功率,使得

在水溫我們預(yù)設(shè)的溫度附近作為小的變動(dòng),而不會(huì)超出太大的范

圍,從而達(dá)到我們使用的要求。在預(yù)設(shè)溫度的附近時(shí),溫度與加

熱器、散熱器之間的關(guān)系是很微妙的,我們沒辦法控制任意時(shí)刻

的準(zhǔn)確的水溫,但是我們可以通過測量來判斷其變化的趨勢,和

變化的幅度,從而來使之朝著我們預(yù)想的方向進(jìn)行。

1.1水溫控制系統(tǒng)設(shè)計(jì)要求

(1)溫度設(shè)定范圍為40?90℃,最小區(qū)分度為1℃,標(biāo)定溫度

<lro

1

安徽新華學(xué)院《嵌入式系統(tǒng)及應(yīng)用》大作業(yè)

(2)環(huán)境溫度降低時(shí)(例如用電風(fēng)扇降溫)溫度控制的靜態(tài)誤

差W1C。

(3)用十進(jìn)制數(shù)碼管顯示水的實(shí)際溫度保留一位小數(shù)。

(4)采用適當(dāng)?shù)目刂品椒ǎㄈ鐢?shù)字PID),當(dāng)設(shè)定溫度突變(由

40℃提高到60℃)時(shí),減小系統(tǒng)的調(diào)節(jié)時(shí)間和超調(diào)量。

(5)溫度控制的靜態(tài)誤差《0.2℃。

(6)從串口輸出水溫隨時(shí)間變化的數(shù)值。

1.2水溫控制系統(tǒng)部分

圖1控制系統(tǒng)框圖

從圖中易可知,本設(shè)計(jì)系統(tǒng)主要包括如下幾部分:單片機(jī)

控制模塊、溫度傳感器采樣模塊、A/D轉(zhuǎn)換模塊、溫度顯示模塊、

設(shè)置/存儲(chǔ)預(yù)定溫度模塊、加熱/散熱電路模塊。

系統(tǒng)的工作流程是這樣的:首先用戶要先使用設(shè)置/存儲(chǔ)預(yù)

定溫度模塊設(shè)置和存儲(chǔ)預(yù)定的溫度;溫度傳感器采樣模塊對(duì)水溫

進(jìn)行采樣,將采集到的溫度傳給A/D轉(zhuǎn)換模塊,A/D轉(zhuǎn)換模塊將

此溫度對(duì)應(yīng)的數(shù)值傳給單片機(jī)控制模塊,單片機(jī)控制模塊會(huì)判斷

此溫度是否在用戶預(yù)定的溫度+/-0.5。的范圍內(nèi),如果兩個(gè)溫度

不等就會(huì)調(diào)用加熱/散熱電路模塊,即如果此溫度高于用戶設(shè)定

溫度0.5。以上,則散熱電路就會(huì)開啟以將當(dāng)前的水溫降到預(yù)定

2

安徽新華學(xué)院《嵌入式系統(tǒng)及應(yīng)用》大作業(yè)

的溫度+/-0.5°的范圍內(nèi),反正則會(huì)啟動(dòng)加熱電路以加熱當(dāng)前的

水。同時(shí)如果用戶想顯示當(dāng)前的水溫或者預(yù)定的水溫,都可以通

過溫度顯示模塊顯示,而如果用戶要改變當(dāng)前的預(yù)定水溫,可以

通過設(shè)置/存儲(chǔ)預(yù)定溫度模塊進(jìn)行設(shè)置。

3

安徽新華學(xué)院《嵌入式系統(tǒng)及應(yīng)用》大作業(yè)

2系統(tǒng)設(shè)計(jì)總體框圖及各模塊作用

2.1系統(tǒng)設(shè)計(jì)總體框圖

電源電路

O驅(qū)動(dòng)電路匚=:LED顯示

=晶振電路

絲復(fù)位電路

BDM調(diào)試電路

鍵盤輸入電

圖2系統(tǒng)設(shè)計(jì)總框圖

2.2每個(gè)功能模塊作用介紹

單片機(jī):單片機(jī)是整個(gè)控制系統(tǒng)的核心,在此我用MC9s12DG128

提供系統(tǒng)控制所需要的I/O口,中斷、定時(shí)以及存放中

間結(jié)果的RAMo

數(shù)據(jù)采樣:數(shù)據(jù)采樣模塊是由熱電阻絲、調(diào)理電路和MCU內(nèi)部

的A/D轉(zhuǎn)換器組成的。其功能是將由熱敏傳感器及相

關(guān)電路采集到的溫度轉(zhuǎn)換為電壓信號(hào),經(jīng)A/D轉(zhuǎn)換器

4

安徽新華學(xué)院《嵌入式系統(tǒng)及應(yīng)用》大作業(yè)

后送入MC9s12DG128中,換算成溫度值,用于控制和

顯示。

串行口傳輸:將采樣溫度值上傳到PC機(jī),利用PC的端口下載程

序。

鍵盤設(shè)定:用于溫度值的人工設(shè)定。

SSR固態(tài)繼電器/電熱絲:通過控制繼電器的開關(guān)來完成對(duì)熱電

絲的加熱,從而達(dá)到溫度的控制。

電源電路:電源電路部分的兩個(gè)電容構(gòu)成濾波電路,用來改善系

統(tǒng)的電磁兼容性,降低電源波動(dòng)對(duì)系統(tǒng)的影響,增強(qiáng)

電路工作穩(wěn)定性。

PLL電路:片內(nèi)PLL電路兼有頻率放大和信號(hào)提純的功能,可以

使系統(tǒng)以較低的外部時(shí)鐘信號(hào)獲得較高的工作頻率,

以降低因高速開關(guān)時(shí)鐘造成的高頻噪聲。

復(fù)位電路:MCU在響應(yīng)各種外部或偵測到的內(nèi)部故障是可以進(jìn)行

系統(tǒng)復(fù)位。當(dāng)MCU檢測到需要復(fù)位時(shí),它將寄存器和

控制位設(shè)置成已知的起始默認(rèn)值。

晶振電路:向MCU提供基準(zhǔn)頻率,以保證MCU正常工作。

BDM電路:操作人員可以通過它初次向目標(biāo)板下載程序,同時(shí)也

可以通過BDM調(diào)試器對(duì)目標(biāo)板MCU的Flash存儲(chǔ)器進(jìn)

行寫入、擦除等操作

5

安徽新華學(xué)院《嵌入式系統(tǒng)及應(yīng)用》大作業(yè)

3硬件設(shè)計(jì)原理及內(nèi)容

3.1硬件設(shè)計(jì)原理圖

圖3硬件設(shè)計(jì)原理圖

從上圖可知從溫度傳感器采樣模塊標(biāo)記采集溫度值的電壓

6

安徽新華學(xué)院《嵌入式系統(tǒng)及應(yīng)用》大作業(yè)

V0輸入到A/D轉(zhuǎn)換器MAX153的VIN端,單片機(jī)控制模塊通過給

出MAX153的RD、WR、MAX153_CS控制信號(hào)來控制它的工作,同

時(shí)從MAX153的D0-D7獲取轉(zhuǎn)換出來的標(biāo)記實(shí)時(shí)溫度值的數(shù)值。

從溫度傳感器采樣模塊標(biāo)記采集溫度值的電壓V0輸入到A/D轉(zhuǎn)

換器MAX153的VIN端,單片機(jī)控制模塊通過給出MAX153的RD、

WR.MAX153CS控制信號(hào)來控制它的工作,同時(shí)從MAX153的D0-D7

獲取轉(zhuǎn)換出來的標(biāo)記實(shí)時(shí)溫度值的數(shù)值。

3.2串口通信部分的電路圖

圖4串口通信電路圖

串口電路是由一個(gè)MAX232ACPE和一個(gè)9芯接口的串行口構(gòu)成。

串口電路的作用:用于連接計(jì)算機(jī)與實(shí)驗(yàn)?zāi)0?,?shí)現(xiàn)數(shù)據(jù)傳輸與

通信。

本次采用9芯接口的串行口,其中,各個(gè)引腳的含義如下:

1.接收線信號(hào)檢測2.接收數(shù)據(jù)線(RxD)

3.發(fā)送數(shù)據(jù)線(TxD)4.數(shù)據(jù)中斷準(zhǔn)備就緒

7

安徽新華學(xué)院《嵌入式系統(tǒng)及應(yīng)用》大作業(yè)

5.信號(hào)地6.數(shù)據(jù)通信設(shè)備準(zhǔn)備就緒

7.請(qǐng)求發(fā)送(RTS)8.清除發(fā)送

9.振鈴提示

3.3鍵盤輸入電路

鍵盤輸入電路采用掃描的方式獲得鍵值。如圖,這里將列線

分別接PPCTPP3,且編程時(shí)將PPO?PP3定義為輸入并有內(nèi)部上拉

電阻,行線分別接PP4~PP7,且編程時(shí)將其定義為輸出,那么1

鍵對(duì)應(yīng)PP7?PP0=11101110,依此類推,可得到其他鍵對(duì)應(yīng)的鍵

值。其中,A鍵按下后可以進(jìn)入溫度設(shè)定,B鍵按下后可以對(duì)溫

8

安徽新華學(xué)院《嵌入式系統(tǒng)及應(yīng)用》大作業(yè)

3.4數(shù)碼顯示電路

上圖是4連排8段數(shù)碼管的借口電路,在硬件連接上,利用

MCU的PA口控制8個(gè)位段,用PT口的低四位控制數(shù)碼管的位選

信號(hào)。選用支持12c的DS1307芯片作為系統(tǒng)的擴(kuò)展EEPROM存儲(chǔ)器,它用于

存儲(chǔ)預(yù)定的溫度,它的SCL、SDA端要與MAX7219的SCL、

SDA端相連,并同時(shí)連上單片機(jī)的IOB口的I0B1和I0B2端,

以將用戶設(shè)定的預(yù)定溫度存儲(chǔ)起來,還可以提供給顯示模塊進(jìn)行

顯小0

9

安徽新華學(xué)院《嵌入式系統(tǒng)及應(yīng)用》大作業(yè)

4系統(tǒng)軟件設(shè)計(jì)流程

溫顯

溫顯掃描鍵盤按巴型___一-

度示

度示

I加(減)1鍵按下

鍵預(yù)

鍵當(dāng)

按定

按前

調(diào)整預(yù)定溫度值

數(shù)碼管顯示溫度

圖13.系統(tǒng)軟件總流程圖

根據(jù)系統(tǒng)的工作原理,對(duì)本系統(tǒng)的軟件總流程要進(jìn)行比較嚴(yán)

格的設(shè)計(jì),其流程圖如上圖

10

安徽新華學(xué)院《嵌入式系統(tǒng)及應(yīng)用》大作業(yè)

5調(diào)試過程及數(shù)據(jù)

在做實(shí)驗(yàn)開始時(shí),按照老師的要求,把系統(tǒng)的每個(gè)部分分成

不同的模塊,每個(gè)模塊單獨(dú)作為一個(gè)工程建立,每個(gè)模塊調(diào)試成

功后才將各部分組合在一起,最終調(diào)試。

5.1串口調(diào)試

通過串口RS232和PC機(jī)進(jìn)行連接,同時(shí)利用PC機(jī)上的超級(jí)

終端進(jìn)行串口調(diào)試,輸入串口通信函數(shù),并把單片機(jī)和PC機(jī)的

波特率設(shè)置為相同的值,即9600bit/s,調(diào)試完成后輸入數(shù)據(jù)和

輸出數(shù)據(jù)符合理論要求,說明通信正常,此時(shí)串口調(diào)試完畢。

調(diào)試遇到的問題:鍵盤輸入的字符或數(shù)字不再計(jì)算機(jī)上顯

z]\O

解決方法:將串行口默認(rèn)波特率改為9600,重新調(diào)試。

5.2LED數(shù)碼管調(diào)試

調(diào)試過程中按實(shí)驗(yàn)電路上數(shù)碼管與單片機(jī)的連接,在計(jì)算機(jī)

中載入程序,若數(shù)碼管顯示“0000”,說明數(shù)碼管模塊可以使用,

否則不能,需要繼續(xù)對(duì)程序進(jìn)行修改和編譯。

調(diào)試遇到的問題:數(shù)碼管不能正常顯示。

解決方法:經(jīng)過仔細(xì)的檢查,發(fā)現(xiàn)課本上的數(shù)碼管管腳和控

制位端口和老師給的不一樣,修正后繼續(xù)調(diào)試測驗(yàn)。

5.3鍵盤輸入模塊調(diào)試

在調(diào)試過程中按下A鍵后,按下鍵盤上要設(shè)定的數(shù)值,如果

LED上顯示正確,說明鍵盤模塊的使用正常,否則,不正。此時(shí)

就要繼續(xù)對(duì)程序進(jìn)行修改和編譯。

調(diào)試遇到的問題:鍵盤使用不正常,按鍵執(zhí)行后,LED沒有

顯不。

11

安徽新華學(xué)院《嵌入式系統(tǒng)及應(yīng)用》大作業(yè)

解決方法:經(jīng)過檢查,才知道鍵盤函數(shù)沒有在main,c中調(diào)

用,調(diào)用后,使用正常。

由于本系統(tǒng)采用凌陽系列單片機(jī)的SPCE061單片機(jī)作為控

制核心來實(shí)現(xiàn)對(duì)溫度的恒定控制。因?yàn)樵瓉碓诒究齐A段學(xué)習(xí)時(shí)接

觸過這款單片機(jī),對(duì)它有一定的了解,配合它的開發(fā)工具非常簡

單可靠,它的開發(fā)環(huán)境(unSPIDE)非常經(jīng)典易用,但是要想將這

個(gè)系統(tǒng)完整的調(diào)試成功,還是很要下一些苦功夫的!

它的軟件編程采用C語言實(shí)現(xiàn)系統(tǒng)主要的工作流程,另外

還要帶一些匯編方面的程序以實(shí)現(xiàn)某些芯片底層驅(qū)動(dòng)及12c協(xié)

議,所以本系統(tǒng)的軟件實(shí)現(xiàn)的數(shù)據(jù)結(jié)構(gòu)和軟件算法相對(duì)非常簡

單,在此就不加以詳細(xì)講述了,下面將主要對(duì)本系統(tǒng)的軟件實(shí)現(xiàn)

全過程加以較詳細(xì)的講解。

首先安裝unSPIDE開發(fā)環(huán)境,它的界面比較類似于微軟的

VisualStudio開發(fā)環(huán)境,操作方式也比較的類似。在里面新建一

個(gè)SPIDEProject,它就會(huì)自動(dòng)的為我們創(chuàng)建一個(gè)SourceFile文

件夾和一個(gè)HeaderFile文件夾,為了實(shí)現(xiàn)我們的系統(tǒng)功能,首

先我們創(chuàng)建一個(gè)I2C.asm(注:參考過網(wǎng)上的一些資料寫出來的),

它主要的功能是完成對(duì)12c協(xié)議的支持;然后我們創(chuàng)建一個(gè)

MAX7219.asm文件,它主要的功能是完成對(duì)MAX7219、單片機(jī)

IOA/B口等芯片底層驅(qū)動(dòng)的實(shí)現(xiàn);然后我們創(chuàng)建一個(gè)Main.c文

件,它功能是完成我們的主要系統(tǒng)流程。下面列出Main.c文件

中的main()函數(shù),它的執(zhí)行流程基本上就是按照上面圖示13的

軟件總流程圖來實(shí)現(xiàn)的。

12

安徽新華學(xué)院《嵌入式系統(tǒng)及應(yīng)用》大作業(yè)

main()

(

floattmp_measure,tmp_setting;

〃初始化相應(yīng)器件

Init_IOA(OxFFFF,OxFFFF,OxFFFF);

Init_IOB(OxFFFF,OxFFFF,OxFFFF);

Init_7219();

status=show_measure_tmp;

〃初始化設(shè)定溫度為50°

if(readTmp()<0||readTmp()>100)

writeTmp(50);

while(l)

(

delay();

〃通過A/D轉(zhuǎn)換器采集當(dāng)前的實(shí)際溫度值

tmp_measure=GetADC()*(maxtmp-mintmp)/256;

tmp_setting=readTmpO;

〃判斷實(shí)測的溫度值是否在預(yù)定的溫度范圍內(nèi)(+-0.5。)

〃根據(jù)判斷的結(jié)果控制加熱器和電風(fēng)扇的開關(guān)

if(tmp_measure<tmp_setting-0.5)

fanOFF();

13

安徽新華學(xué)院《嵌入式系統(tǒng)及應(yīng)用》大作業(yè)

themON();

)

elseif(tmp_measure>tmp_setting+0.5)

(

themOFF();

fanON();

)

else

(

fanOFF();

themOFF();

)

〃掃描鍵盤按鍵情況

switch(keyScan())

(

case1:

status=show_measure_tmp;

break;

case2:

status=show_setting_tmp;

break;

case3:

14

安徽新華學(xué)院《嵌入式系統(tǒng)及應(yīng)用》大作業(yè)

tmp_setting二readTmp();

tmp_setting++;

writeTmp(tmp_setting);

break;

case4:

tmp_setting=readTmp();

tmp_setting—;

writeTmp(tmp_setting);

break;

)

//判斷顯示系統(tǒng)當(dāng)前的溫度或者是用戶預(yù)定的溫度

if(status==show_measure_tmp)

ShowResult(tmp_measure);

elseShowResult(tmp_setting);

}

)

其中的初始化函數(shù)包括Init」OA,Init_7219(),

前面兩個(gè)函數(shù)的引用來自MAX7219.asm文件,而后者的實(shí)現(xiàn)如

下,其中的Send_7219函數(shù)也來之MAX7219.asm文件。

voidInit_7219()//max7219初始化

Send_7219(0x0C01);

15

安徽新華學(xué)院《嵌入式系統(tǒng)及應(yīng)用》大作業(yè)

Send_7219(OxOFOO);

Send_7219(0xO9FF);

Send_7219(0xOAO2);

Send_7219(0x()B07);

}

Main()函數(shù)中引用的其他函數(shù)包括系統(tǒng)延遲函數(shù)delay。,顯

示溫度函數(shù)ShowResult(floatCount),讀測量溫度函數(shù)GetADC。,

寫設(shè)定的溫度writeTmp(floattmp),讀設(shè)定的溫度函數(shù)

readTmpO,掃描鍵盤函數(shù)keyScan(),開加熱器函數(shù)themONO,

關(guān)加熱器函數(shù)themOFF(),開風(fēng)扇函數(shù)fanON(),關(guān)風(fēng)扇函數(shù)

fanOFF(),它們均在Main.c文件中實(shí)現(xiàn)了,具體代碼請(qǐng)查看上交

的電子版的設(shè)計(jì)內(nèi)容的附錄。

16

安徽新華學(xué)院《嵌入式系統(tǒng)及應(yīng)用》大作業(yè)

6實(shí)驗(yàn)心得和結(jié)果

雖然老師沒有要求我們將軟件編程完全實(shí)現(xiàn)出來,但是由于

上次課堂討論的時(shí)候大家做出來的東西都只是在理論上進(jìn)行了

設(shè)計(jì),而離實(shí)際的實(shí)現(xiàn)還是有很大的差距的,所以我特別想在本

次的課程設(shè)計(jì)中將設(shè)計(jì)的系統(tǒng)實(shí)現(xiàn)出來。正好原來在本科階段學(xué)

習(xí)時(shí)接觸過SPCE061這款單片機(jī),對(duì)它有一定的了解,再加上

它的開發(fā)環(huán)境(unSPIDE)相對(duì)較為簡單,所以最后就選擇了使用

這塊單片機(jī)構(gòu)建一個(gè)嵌入式設(shè)計(jì)系統(tǒng),由于原來還沒有在軟件、

硬件上完全設(shè)計(jì)實(shí)現(xiàn)過一個(gè)系統(tǒng),所以心里也明白要學(xué)的東西會(huì)

很多的,難度也會(huì)很大的,再加上平時(shí)在實(shí)驗(yàn)室還要忙著做自己

的項(xiàng)目,給我自己設(shè)計(jì)實(shí)現(xiàn)的時(shí)間肯定不多,因此就選擇設(shè)計(jì)了

這樣一個(gè)相對(duì)較為簡單的系統(tǒng),由于不用設(shè)計(jì)端口譯碼系統(tǒng)、存

儲(chǔ)系統(tǒng)以及中斷響應(yīng)系統(tǒng),使得它的外圍電路圖確實(shí)稍顯簡單。

就是這么樣的一個(gè)相對(duì)較簡單的系統(tǒng),在實(shí)際的實(shí)現(xiàn)當(dāng)中我還是

遇到了很多的困難,例如在硬件實(shí)現(xiàn)上,剛開始設(shè)計(jì)時(shí)對(duì)雙向可

控硅的不了解,在它的使用上遇到了很多預(yù)想不到的問題,剛開

始加熱電路始終沒有工作,從很多地方找原因,都沒有發(fā)現(xiàn)問題

所在,后來還是在原來本科同學(xué)的幫助下發(fā)現(xiàn)雙向可控硅的1、

2腳接錯(cuò)了,后來又遇到可控硅不能關(guān)斷等問題,不過還是通過

不斷的查資料,調(diào)整電路的各個(gè)參數(shù)才慢慢的解決。在軟件實(shí)現(xiàn),

由于采取大部分用C語言編寫的方法,但在實(shí)際完成后,我們發(fā)

現(xiàn)存在很多漏洞,C語言代碼過長,效率不高,使得調(diào)試工作花

17

安徽新華學(xué)院《嵌入式系統(tǒng)及應(yīng)用》大作業(yè)

費(fèi)了很多的時(shí)間。不過最后還是大致的將這個(gè)系統(tǒng)實(shí)現(xiàn)出來了,

雖然由于時(shí)間的關(guān)系,此系統(tǒng)還有一些地方需要調(diào)整,特別是采

樣溫度與實(shí)際溫度的誤差控制上存在這一些誤差,恒溫控制的超

調(diào)量比較大,特別是在高溫恒溫的時(shí)候效果不是特別的理想,但

是能實(shí)現(xiàn)出來已經(jīng)感到很滿意了。通過這次課程設(shè)計(jì),讓我體會(huì)

最深的是:實(shí)際調(diào)試中需要考慮的問題是很復(fù)雜的,需要對(duì)事物

的考慮更全面。

補(bǔ)充:本人上交的電子文檔中的附錄部分有三個(gè)目錄,一個(gè)

是主要芯片的Datasheet,一個(gè)是程序代碼(包含在unSPIDE中新

建的項(xiàng)目的所有文件),一個(gè)是硬件設(shè)計(jì)全圖。

18

安徽新華學(xué)院《嵌入式系統(tǒng)及應(yīng)用》大作業(yè)

致謝

本《嵌入式系統(tǒng)》大作業(yè)是嵌入式水溫控制系統(tǒng),我們對(duì)于

該課程的理論部分有了更客觀、更直接的認(rèn)識(shí),大作業(yè)給了我們

將理論應(yīng)用的真實(shí)的系統(tǒng)開發(fā)上的機(jī)會(huì),對(duì)嵌入試系統(tǒng)的開發(fā)設(shè)

計(jì)流程、設(shè)計(jì)思路和設(shè)計(jì)方法有了深刻的印象,培養(yǎng)了我們開發(fā)

集成系統(tǒng)的初步思想,對(duì)今后進(jìn)一步深入研究嵌入式系統(tǒng)開發(fā)有

重要的指導(dǎo)意義。同時(shí),在課程設(shè)計(jì)的過程中,我們發(fā)現(xiàn)了以下

3點(diǎn)我們自身的不足:在理論學(xué)習(xí)當(dāng)中,我們?nèi)杂兄R(shí)盲區(qū),對(duì)

于易混淆知識(shí)點(diǎn)認(rèn)識(shí)模糊;在編程時(shí),對(duì)于某些指令的含義仍不

是很清楚,需要通過查詢資料才能獲得,降低了編程效率;編程

的整體性思維不好。

在今后的學(xué)習(xí)中,我們要努力通過學(xué)習(xí)來改掉這些不足。

最后,感謝指導(dǎo)老師王華本對(duì)我們的指導(dǎo),還要感謝和我

們一起進(jìn)行討論和研究的各位同學(xué),這次大作業(yè)的順利完成離不

開你們的幫助。

19

安徽新華學(xué)院《嵌入式系統(tǒng)及應(yīng)用》大作業(yè)

參考文獻(xiàn)

[1]徐千洋.LinuxC函數(shù)庫參考手冊CM]中國青年出版社.2中2

[2]陳堅(jiān),孫志月.MODEM通信編程技術(shù)[M].西安電子科技大學(xué)出

版社.1998

[3]李現(xiàn)勇.VisualC++串口通信技術(shù)與工程實(shí)踐[M].人民郵電

出版社.2004

[4]何小平.選擇適合ARM的嵌入式操作系統(tǒng)[J].BMRfech

Inc.2003

[5]馬忠梅,馬廣云,徐英慧,田譯.ARM嵌入式處理結(jié)構(gòu)與應(yīng)用

基礎(chǔ)[M].北京航空航天大學(xué)出版社.2002

[6]鄒思鐵.嵌入式Linux設(shè)計(jì)與應(yīng)用北京清華大學(xué)出版

社.2002

[7]杜春雷.ARM體系結(jié)構(gòu)與編程[M].清華大學(xué)出版社.2003

[8]KirkZurell[M].CProgramingForEmbeddedSystems

[9]楊海清,周安棟,羅勇,陳牧.嵌入式系統(tǒng)實(shí)時(shí)網(wǎng)絡(luò)通信中的

LCD顯示設(shè)計(jì)方法[J].計(jì)算機(jī)與數(shù)字工程.2010年02期

20

安徽新華學(xué)院《嵌入式系統(tǒng)及應(yīng)用》大作業(yè)

附錄

實(shí)驗(yàn)程序

Main,c

nclude<hidef.h>//for(j=0;j

/*commondefinesandmacros*/<=100;j++){

ttinclude<mc9sl2dgl28.h>//_FEED_COP();

/*derivativeinfornation*///}

ttpragmaLINK_INFODERIVATIVE}

〃mc9sl2dgi28b〃)

ttinclude<a.h>voidLEDShowl(inti,intc){

INT8ULEDbuf[4]=LEDcs=CStable[i];

數(shù)碼管顯示數(shù)if(i=2){

組LEDdata=

INT8UFlag_Send,Flag_ADC;CDtable[c])&0x7f;

INT16UNUM;}else{

INT16UTemperature_Set;LEDdata=^Dtable[c];

INT8URCVData[16];//}

接收數(shù)據(jù)幀}

voidLEDinit(void);*/

voidLEDShow(int*Buf):voidmain(void){

voidLEDShowl(inti,intc);/*putyourowncodehere*/

/*bytei,j,ge,shi,bai,point;

externDtableEl1]二constINT8UData[]=

(0x3f,0x06,0x5b,0x4f,0x66,0x6d,0“Hello!!!oooo〃;〃數(shù)據(jù)內(nèi)容

x7d,0x07,0x7f,0x6f,0x00);constINT8UDataLenth=6;

externCStable[4]=//數(shù)據(jù)長度

(0xf7,Oxfb,Oxfd,Oxfe};INT16UID;〃標(biāo)示符

voidLEDinit(void){//INT8Ui;

LEDdata_D=Oxff;

LEDcs_D|=OxOf;1NT16UWaitTime=0;//

循環(huán)延時(shí)

〃發(fā)送標(biāo)志=0,沒有空閑發(fā)

voidLEDShow(int*Buf,inti){送緩沖區(qū),發(fā)送不成功;=1,發(fā)送成

intc;功

intj;1NT8USNDFlag;

for(i=0:i<=3;i++){〃接收標(biāo)志二Oxff,未收到

c=Buf[i]-0,;幀;二1,收到數(shù)據(jù)幀;二2,收到遠(yuǎn)程幀

LEDShowl;3-i,c);1NT8URCVFlag;

21

安徽新華學(xué)院《嵌入式系統(tǒng)及應(yīng)用》大作業(yè)

DDRB=OXFF;示未收到數(shù)據(jù)

PORTB=OXff;(

ECT_Init();for(i=4;

LEDInitO;i<4+DataLenth;i++)

NUM=O;

Flag_ADC=0x00;SCIScndl(RCVData[i]);

Flag_Send=0:)

//ADCInitO;else〃未收到

AD_Init();數(shù)據(jù)

SCIInitO;(

KB_Init();

//CANInitO;SClSendN(13,^ReceiveError!z,);

TemperatureSet=500;}//Endof

Pwm_Init0;RCVFlag

)

//ID=Oxff;//(TNT16UJ(CANOTDAROV〃發(fā)送不成功

?8)+CAN0IDAR1V;else

EnableSCIRelnt;{

Enablelnterrupts;

while(l){SCISendN(10,“SendError!”);

/*WaitTime+-;}//EndofSNDFlag

//發(fā)送〃Hello!!!”WaitTime=0;

if(WaitTime>60000)}//EndofWaitTime

(*/

SNDFlag=

CANSND1DFRM(ID,(INT8UKey_Del();

木)(Data),DalaLenlh);Sample0;

〃發(fā)送成功SendToSCI();

if(SNDFlag二二1)}

(for(;;){}/*waitforever*/

RCVFlag=/*pleasemakesurethatyou

CANRCV1FRM((INT8U*)RCVData);//neverleavethisfunction*/

接收子程序

if(RCVFlag!=

OxFF)//接收子程序返回OXFF,表

a.c

22

安徽新華學(xué)院《嵌入式系統(tǒng)及應(yīng)用》大作業(yè)

//*******AD子函數(shù)⑶*******〃

#include<mc9sl2dgl28.h>

#include<a.h>

externINT8UFlag_ADC;

externINT8ULEDbuf[4];

INT16UAD_wData;

externINT16UTemperature_Set;

voidADInit(void){

ATD0TEST1=ObOOOOOOOO;〃禁止特殊通道

ATD0CTL2=ObllOOOOlO;〃快速清除模式,完成中斷允許

ATD0CTL3=ObOOOOlOOO;〃隊(duì)列長度為1

ATD0CTL4=ObOWOOOH;//ATDclock=lM

ATD0CTL5=OblOlOOHO;

_interrupt22Int_ADO(void){

ADwData=ATDODRO;//ReadouttheResultRegister

//PORTB=ATD0DR6L;

}

voidADCInit(void){

ATD0CTL2=OXCO:

ATD0CTL3=OXOB:

ATD0CTL4=0X07:

ATD0CTL4&=0X7F;

TNT16UADCvalue(INT8Uchannel){

INT16Utemp;

ATD0CTL5=(0x20|channel);

while(l){

if((ATD0STA70&(l?SCFBit))!=0)[

temp=ATDODRO;

temp=Uemp?6);

break;

)

}

returntemp;

)

bytePID(dwordresult)(

staticsignedintekl,Pikl;

signedintek,Ppk,Pik,Pdk,Pk;

23

安徽新華學(xué)院《嵌入式系統(tǒng)及應(yīng)用》大作業(yè)

unsignedchartmp;

ek=(result-Temperature_Set);

Ppk=kp*ok;

Pik=ki*ek-Pikl;

Pdk=kd*(ek-ekl);

Pk=Ppk+Pik+Pdk;

ekl=ek

Pikl=Pik;

if(Pk>0){

if(Pk>25500;{

tmp=255;

}else{

tmp=(byte)(Pk/100);

returntmp;

}else{

tmp=0;

returntmp;

)

)

voidSample(void){

bytege,shi,bai,point;

dwordresult;

if(FlagADC=Oxff){

resu1t=(dword;(ADwData)*1000/1023;

bai=(byte)(result/1000+,0));

shi-(byte)(Iresult%1000)/100+,0,);

ge=(byte)((result%100)/10+,0*);

point=(byte);result%10+,0));

if(bai=='0'){

LEDbuf[3]=

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(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)論