嵌入式技術(shù)基礎(chǔ)與實(shí)踐_第1頁(yè)
嵌入式技術(shù)基礎(chǔ)與實(shí)踐_第2頁(yè)
嵌入式技術(shù)基礎(chǔ)與實(shí)踐_第3頁(yè)
嵌入式技術(shù)基礎(chǔ)與實(shí)踐_第4頁(yè)
嵌入式技術(shù)基礎(chǔ)與實(shí)踐_第5頁(yè)
已閱讀5頁(yè),還剩9頁(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、 課 程 設(shè) 計(jì) 報(bào) 告課程設(shè)計(jì)名稱:嵌入式技術(shù)基礎(chǔ)與實(shí)踐 系 別 : 三 系 學(xué) 生 姓 名: 班 級(jí): 09通信工程 學(xué) 號(hào): 成 績(jī): 指 導(dǎo) 教 師: 王志超 開(kāi) 課 時(shí) 間: 2012-2013學(xué)年 1 學(xué)期 第一章 嵌入式系統(tǒng)的需求分析HC08和HCS08單片機(jī)是Freescale(飛思卡爾)公司于2000年前后推出的新一代單片機(jī)。HC08、HCS08系列單片機(jī)使用相當(dāng)?shù)膹V泛,集成度高不需外擴(kuò),減少外擴(kuò)帶來(lái)的干擾,符合嵌入式單片機(jī)的要求,性能穩(wěn)定、性價(jià)比高。飛思卡爾半導(dǎo)體是全球領(lǐng)先的半導(dǎo)體公司,為汽車、消費(fèi)、工業(yè)、網(wǎng)絡(luò)和無(wú)線市場(chǎng)設(shè)計(jì)并制造嵌入式半導(dǎo)體產(chǎn)品。在全球30多個(gè)國(guó)家和地區(qū)擁

2、有設(shè)計(jì)、研發(fā)、制造和銷售機(jī)構(gòu)。飛思卡爾半導(dǎo)體是全球最大的半導(dǎo)體公司之一。Freescale公司(2004年7月之前稱為Motorola公司的半導(dǎo)體事業(yè)部)為全球提供的各種MCU已 突破170片,廣泛用于各大品牌的產(chǎn)品:摩托羅拉手機(jī)、索尼電子、惠爾普電器、羅技(Logitech)鍵盤與鼠標(biāo)、美國(guó)力健(Lifefitness)心血管與力量訓(xùn)練器材、思科(Cisco)路由器、Bose音響、Trane供暖與制冷設(shè)備以及奔馳、寶馬、福特、現(xiàn)代和通用汽車。然而我國(guó)國(guó)內(nèi)大多數(shù)“熟悉”單片機(jī)的人卻不知曉這一底細(xì),國(guó)內(nèi)的微控制器市場(chǎng)從20世紀(jì)80年代開(kāi)始,一直由Intel公司推出的MCS-51占據(jù)著絕對(duì)的統(tǒng)治地

3、位。人們又逐漸發(fā)現(xiàn),從進(jìn)口的電子信息類產(chǎn)品,特別是各類通信產(chǎn)品中,其中有MCU的,多數(shù)使用了Freescale的產(chǎn)品,而不是MCS-51。因此學(xué)習(xí)Freescale HCS08是非常重要,本報(bào)告描述一個(gè)Freescale HCS08單片機(jī)實(shí)驗(yàn)系統(tǒng)軟件實(shí)例,通過(guò)各個(gè)不同模塊,驗(yàn)證單片機(jī)各模塊工作是否正常??梢元?dú)立工作觀察MCU工作是否正常,也可以通過(guò)串行通信與PC機(jī)連接,實(shí)現(xiàn)與PC機(jī)的相互控制。 嵌入式系統(tǒng)設(shè)計(jì)的學(xué)習(xí),首先把嵌入式系統(tǒng)軟件與硬件基礎(chǔ)打好了,再根據(jù)實(shí)際需要,選擇一種實(shí)時(shí)操作系統(tǒng)(RTOS)進(jìn)行學(xué)習(xí)實(shí)踐。使用RTOS也是視實(shí)際情況而定,使用RTOS適合實(shí)時(shí)多任務(wù)多線程的情況。 在此設(shè)

4、計(jì),MCU與PC機(jī)間通信的數(shù)據(jù)是幾種不同外設(shè),為了區(qū)分,需給不同的外設(shè)數(shù)據(jù)前標(biāo)識(shí)不同的標(biāo)識(shí)符,用于確定不同外設(shè)的數(shù)據(jù)。編程之前確定每個(gè)模塊硬件正常與否,測(cè)試方法參考“實(shí)驗(yàn)指導(dǎo)”教材相應(yīng)章節(jié)。編程設(shè)計(jì)方法:MCU端每個(gè)模塊程序編寫完成后,及時(shí)用串行通信軟件通過(guò)SCI連接PC機(jī)調(diào)試MCU端程序。MCU的每個(gè)模塊調(diào)試成功后,再使用高級(jí)語(yǔ)言開(kāi)發(fā)編寫PC端的相應(yīng)通信模塊程序,直至綜合實(shí)驗(yàn)系統(tǒng)完全實(shí)現(xiàn)。 完成普通I/O口輸入輸出、驅(qū)動(dòng)LCD顯示、串行通信數(shù)據(jù)接收與發(fā)送、定時(shí)器計(jì)時(shí)、PWM、鍵盤輸入、AD轉(zhuǎn)換、FLASH讀寫模塊等功能。第2章 系統(tǒng)構(gòu)成2.1 硬件原理圖圖C-1 系統(tǒng)硬件原理圖(最小系統(tǒng))系

5、統(tǒng)使用MC9S08AW60 MCU 為核心,其最小原理圖見(jiàn)圖C-1 所示。 (1)用 PTC 口的 2 引腳連接1 號(hào)小燈; (2)用 PTD 口的 1 引腳連接撥碼開(kāi)關(guān); (3)用 PTE 口的 0 引腳、 1 引腳分別連接SCI 串行通信的發(fā)射口、接收口; (4)用 PTA 口的 07 引腳連接LCD 的數(shù)據(jù)口, PTC 口的 4、6 引腳、 PTF 口的 6 引腳連接LCD 的控制引腳RS、RW、E,共 3 個(gè)引腳驅(qū)動(dòng)LCD 顯示; (5)用 PTD 口的 2、3、7 引腳以及 PTG 口的 04 引腳共 8 個(gè)引腳連接鍵盤;其中 PTD 口的 2、3、7 引腳和 PTG 口的 4 引腳

6、定義為輸入線, PTG 口的 03 引腳定義為輸出線,利用掃描方式獲取健值; (6)用 PTD 口的 6 引腳定義為AD 采樣線,MCU 讀取該引腳,顯示對(duì)象的量化值; (7) PTE 口的 2 引腳輸出PWM 波,控制連接在該引腳小燈的亮度。 具體連線方式見(jiàn)圖C-2。 圖C-2 系統(tǒng)連線圖2.2 軟件結(jié)構(gòu)圖 軟件包括MCU端與PC端2部分組成,下面分別介紹2部分軟件的結(jié)構(gòu)。2.2.1 MCU端軟件結(jié)構(gòu) 圖C-3 MCU端軟件結(jié)構(gòu)圖 根據(jù)需求分析,選擇MCU端所需資源,MCU可以開(kāi)關(guān)控制、小燈顯示、LCD顯示、LED顯示、鍵盤輸入、AD轉(zhuǎn)換、定時(shí)器溢出計(jì)時(shí)、產(chǎn)生PWM波、FLASH讀寫、SCI

7、串行通信數(shù)據(jù)發(fā)送與接收等。 MCU端軟件結(jié)構(gòu)圖,如圖C-3所示。 硬件組建的方法:測(cè)試所選擇的每個(gè)模塊,成功一個(gè)添加一個(gè),同時(shí)做好測(cè)試軟件的備份,并注釋日期。模塊驗(yàn)證的方法見(jiàn)各實(shí)驗(yàn)的章節(jié)。 2.2.2 PC端軟件結(jié)構(gòu) 圖C-4 PC端軟件結(jié)構(gòu)圖 PC端使用C#編程,以串行通信為核心,使用串行通信與MCU進(jìn)行通信實(shí)現(xiàn),對(duì)MCU的控制和對(duì)MCU反饋信息進(jìn)行處理,并反映在用戶界面上。 根據(jù)MCU提供的功能,編寫程序匹配其工作。PC端程序包括串行通信數(shù)據(jù)輸入輸出、開(kāi)關(guān)小燈控制、AD轉(zhuǎn)換數(shù)據(jù)顯示、Time(定時(shí)器)、PWM控制、FLASH讀寫、鍵盤數(shù)據(jù)顯示模塊。軟件結(jié)構(gòu)圖如圖C-4所示。 第3章 MCU

8、方的程序設(shè)計(jì) 本章節(jié)將詳細(xì)介紹MCU端的主程序和中斷程序,利用各個(gè)模塊完成本實(shí)驗(yàn)的各個(gè)功能,其中包括串行通信數(shù)據(jù)輸入輸出、LCD顯示、鍵盤、AD轉(zhuǎn)換、PWM、定時(shí)器計(jì)時(shí)、FLASH讀寫。 程序基于C語(yǔ)言編寫,使用面向硬件對(duì)象模塊封裝的思想。面向硬件對(duì)象模塊的封裝是對(duì)系統(tǒng)中的每個(gè)硬件對(duì)象建立相對(duì)應(yīng)的頭文件和硬件驅(qū)動(dòng)程序文件。頭文件中主要包含該硬件的接口和相應(yīng)的寄存器設(shè)置參數(shù),硬件驅(qū)動(dòng)程序文件主要是對(duì)該硬件的驅(qū)動(dòng),同時(shí)標(biāo)注出各個(gè)功能模塊的功能,入口,出口和堆棧深度。所以編程人員可以不用了解模塊的編程方法,即可利用這些模塊程序。于是剩下的編程工作只是面向總體各模塊配合以及PC顯示與控制的主程序和中斷

9、程序的編程。硬件模塊封裝屏蔽了具體硬件對(duì)象的差異性,提高了程序的移植性和復(fù)用性。 各個(gè)模塊的驅(qū)動(dòng)程序見(jiàn)隨書光盤。 3.1 串行通信數(shù)據(jù)接收與發(fā)送 interrupt void SCI1_Recv(void) uint8 f,i,flag; /標(biāo)志是否接受到數(shù)據(jù) DisableInterrupt(); /禁止總中斷 /接收32個(gè)字節(jié)的數(shù)據(jù) f = SCIReN(1,1, SerialBuff); /若收到數(shù)據(jù),則發(fā)送接到的數(shù)據(jù) if (f = 0) if(SerialBuff0=130 & SerialBuff0=137 ) flag=SerialBuff0; if(flag=130) /lig

10、ht模塊 LightBuff =SCIRe1(1,&i); else if(flag=131) /LCD標(biāo)志 /連續(xù)接收可以,代碼如下 LCDLen=SCIRe1(1,&i); /LCD顯示字符長(zhǎng)度 SCIReN(1,LCDLen,ShowBuff);/LCD顯示的內(nèi)容 else if(flag=132)/時(shí)鐘標(biāo)志 /接收3個(gè)字節(jié)的數(shù)據(jù) SCIReN(1,3, time); else if(flag=133) /LED標(biāo)志 /pwm處理模塊 pwmDutyPC = SCIRe1(1,&i); else if(flag=135)/LED標(biāo)志 /接收4個(gè)字節(jié)的數(shù)據(jù) i=SCIReN(1,4, LE

11、DBuff); if(i=0) SCISend1(1,135); SCISendN(1,4, LEDBuff); for(i=0;i4;i+) LEDBuffi+=0; else if(flag=137) /AD模塊 chanelNum = SCIRe1(1,&i); else SCISendN(1,1, SerialBuff); EnableInterrupt(); /開(kāi)放總中斷 3.2 定時(shí)器控制 MCU端的定時(shí)器 1s 產(chǎn)生1次中斷實(shí)現(xiàn)計(jì)時(shí)功能,MCU初始時(shí)鐘的設(shè)定通過(guò)PC端發(fā)送而確定,MCU內(nèi)部的定時(shí)器 1 實(shí)現(xiàn)計(jì)時(shí),該定時(shí)器同時(shí)用作產(chǎn)生PWM波。 定時(shí)器溢出中斷服務(wù)程序: inter

12、rupt void isrT1Out(void) INT8U temp; DisableMCUint(); /禁止總中斷 SecAdd1(); /1s到,遞增時(shí),分,秒緩沖區(qū)的值 SCIsend1(132); /發(fā)送串口的標(biāo)志 SCIsendN(3, time); temp = T1SC; /1.讀取定時(shí)器1狀態(tài)和控制寄存器T1SC T1SC &= (1 TOFBit); /2.向定時(shí)器溢出標(biāo)志位TOF寫0 EnableMCUint(); /開(kāi)放總中斷 3.3 主程序 主程序是完成系統(tǒng)各模塊的初始化,完成各模塊控制工作。 /主函數(shù) void main() /僅在本函數(shù)中用 uint8 i; u

13、int8 flag; uint8 ma; uint8 LCDi=0; /定義初始顯示緩存并賦初值 const uint8 DisPalyInit = Wait Receiving. Soochow 2010.09; LCDLen=0; chanelNum = 30; /為30,說(shuō)明沒(méi)有收到AD轉(zhuǎn)換的客戶端信息 pwmDutyPC =101; /1 關(guān)總中斷 DisableInterrupt(); /禁止總中斷 /1.1 芯片初始化 MCUInit(); /2. 模塊初始化 SCIInit(1,SYSTEM_CLOCK,9600); /(1) 串口初始化 Light_Init(Light_Run

14、_PORT,Light_Run,Light_OFF); /(2) 燈的引腳初始化 KBInit(); /(3) 按鍵初始化 TPMinit(2); /(4) 定時(shí)器2初始化 LEDinit(); PWM(1,0,0x800,0); /定時(shí)器2通道0初始輸出占空比為0周期為1s的PWM波 ADCInit(); /AD初始化 /3. LCD顯示初始化 LCDshow(uint8 *)DisPalyInit); /4. 內(nèi)存初始化 /(1) 時(shí)分秒緩存初始化(00:00:00) time0 = 0; time1 = 0; time2 = 0; /(2) 小燈狀態(tài)初始化3,表示沒(méi)有命令發(fā)送過(guò)來(lái) Lig

15、htBuff = 3; /(3) 數(shù)碼管狀態(tài)初始化 LEDBuff0=8; LEDBuff1=8; LEDBuff2=8; LEDBuff3=8; /5. 開(kāi)放各模塊中斷 EnableSCIReInt(); /(1)開(kāi)放SCI接收中斷 EnableTimer(2); /(2)開(kāi)放定時(shí)器1溢出中斷 EnableKBint(); /6. 開(kāi)放總中斷 EnableInterrupt(); /主循環(huán) while (1) if(LightBuff!=3) /不等于3表明PC機(jī)有命令發(fā)送過(guò)來(lái),然后進(jìn)行處理 Light_Change(Light_Run_PORT,Light_Run); SCISend1(1

16、,130); /發(fā)送串口的標(biāo)志 SCISend1(1, LightBuff); LightBuff = 3; if(LCDLen!=0) /接收在中斷中進(jìn)行 for(i=LCDLen;i32;i+) /為了滿足32個(gè)字符 ShowBuffi=*; /LCD顯示MCU從串口接收到的32個(gè)數(shù)據(jù) LCDshow(uint8 *)ShowBuff); SCISend1(1,131); /發(fā)送LCD的標(biāo)志 SCISendN(1,32, ShowBuff); /發(fā)回給PC機(jī) LCDLen=0; if(pwmDutyPC101) PWM(1,0,0x800,pwmDutyPC); Delay(10); pw

17、mDutyPC = 101; if(chanelNum 100)this.TbShowString.Text = string.Empty;this.TbShowDec.Text = string.Empty;this.TbShowHex.Text = string.Empty;elseSCIUpdateRevtxtbox(TbShowString, str);/十進(jìn)制和十六進(jìn)制形式按字節(jié)進(jìn)行處理for (int i = 0; i = 130 & data 1 ? : : ) + (tmr = 3) SCIUpdateRevtxtbox(tbMCUTime, tmrStr); tmrCount

18、 = 0; tmrStr = string.Empty; commandType = 0; else if (commandType = 133) /PWM測(cè)試模塊 /高端不作處理僅留一接口在此 else if (commandType = 134) /鍵盤測(cè)試模塊 byte kbKey = data; for (byte j = 0; j = 4) ledCount = 0; else if (commandType = 137) /AD轉(zhuǎn)換模塊 int ADValue = data; SCIUpdateRevtxtbox(tbADValue, ADValue.ToString(); 4.2 PC端其它發(fā)送以及處理子程序 PC機(jī)與MCU端通信,可以將PC端控制指令發(fā)送給MCU端,從而控制MCU相應(yīng)模塊的工作狀態(tài)。其他子程序:private void btnTimeUpdate_Click(object sender, EventArgs e)private void btnLCDSend_Click(ob

溫馨提示

  • 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)論