汽車單片機系統(tǒng)設(shè)計實驗教程_第1頁
汽車單片機系統(tǒng)設(shè)計實驗教程_第2頁
汽車單片機系統(tǒng)設(shè)計實驗教程_第3頁
汽車單片機系統(tǒng)設(shè)計實驗教程_第4頁
汽車單片機系統(tǒng)設(shè)計實驗教程_第5頁
已閱讀5頁,還剩104頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、H030600 “汽車電子單片機系統(tǒng)設(shè)計”校實驗選修課汽車單片機系統(tǒng)設(shè)計實驗教程Experimental Guide of Automobile MCU System Design 寫:張幽(第五版V5.0)- 汽車電子技術(shù)創(chuàng)新中心(AETC)- 2007年9月目 錄前 言5第一章 MC68HC908GP32概述61.1單片機概念61.2MC68HC08單片機特點61.2.1 MC68HC08系列微控制器的主要特點61.2.2 MC68HC08GP32單片機特點61.3 MC08單片機功能結(jié)構(gòu)71.4 MC08單片機管腳與封裝131.5 MC08單片機系統(tǒng)設(shè)置14第二章 MC08GP32單片機

2、系統(tǒng)設(shè)計編程152.1 MC08GP32單片機系統(tǒng)設(shè)計流程152.2 08程序的基本框架152.2.1 查詢式程序框架152.2.2 中斷式程序框架162.3 鎖相環(huán)編程指導(dǎo)172.3 配置寄存器CONFIG設(shè)置17第三章 MC08GP32單片機功能演示例程193.1A/D采集及數(shù)碼顯示193.1.1 實驗?zāi)康?93.1.2 實驗準備193.1.3 實驗步驟193.1.4 源程序193.1.5 思考題213.2TIC測量周期及占空比213.2.1 實驗?zāi)康?13.2.2 實驗準備213.2.3 實驗步驟213.2.4 源程序223.2.5 思考題243.3脈寬調(diào)制輸出243.3.1 實驗?zāi)康?

3、43.3.2 實驗準備243.3.3 實驗步驟:243.3.4 源程序253.3.5 思考題263.4鍵盤中斷263.4.1 實驗?zāi)康?63.4.2 實驗準備263.4.3 實驗步驟273.4.4 源程序273.4.5 思考題303.5SCI串口通訊演示303.5.1 實驗?zāi)康?03.5.2 實驗準備313.5.3 實驗步驟313.5.4 源程序313.5.5 思考題323.6*SPI串口通訊演示323.6.1 實驗?zāi)康?23.6.2 實驗準備323.6.3 實驗步驟333.6.4 源程序333.6.5 思考題34第四章 MC08單片機應(yīng)用實例354.1 車門防撞系統(tǒng)的設(shè)計354.1.1 目的

4、意義354.1.2 工作原理354.1.3 硬件連接354.1.5 源程序364.1.6 結(jié)論與討論394.2 酒精檢測及報警394.2.1 目的意義394.2.2 工作原理394.2.3 硬件連接404.2.4 軟件流程圖404.2.5 源程序404.2.6 結(jié)論與討論414.3 自動車速報警器設(shè)計424.3.1 目的意義424.3.2 工作原理424.3.3 硬件連接424.3.4 軟件流程圖434.3.5 源程序434.3.6 結(jié)論與討論474.4 車燈自動轉(zhuǎn)向裝置474.4.1 目的意義474.4.2 工作原理474.4.3 硬件連接474.4.4 軟件流程圖484.4.5 源程序49

5、4.4.6 結(jié)論與討論51附錄A MC68HC08單片機教學(xué)系統(tǒng)介紹53A.1 系統(tǒng)組成53A.2 開發(fā)板介紹53A.2.1開發(fā)板結(jié)構(gòu)54A.2.2編程器55A.2.3開發(fā)板的用法55附錄B Codewarrior軟件應(yīng)用介紹56B.1 Codewarrior軟件安裝56B.2 Codewarrior軟件使用56B.2.1 新建程序文件及編譯56B.2.2 程序調(diào)試與運行65附錄C C程序設(shè)計71C.1 選擇結(jié)構(gòu)程序設(shè)計71C.1.1 關(guān)系運算符和關(guān)系表達式71C.1.2 邏輯運算符和邏輯表達式71C.1.3 if語句運用72C.1.4 switch語句運用72C.2 循環(huán)控制73C.2.1

6、while和do-while語句73C.2.2 for語句74C.3 函數(shù)簡介74C.3.1 函數(shù)定義的一般形式75C.3.2 函數(shù)參數(shù)和函數(shù)的值76C.3.3 函數(shù)的調(diào)用76C.4 預(yù)處理命令77C.4.1 宏定義77C.4.2 “文件包含”處理78附錄D 寄存器索引79D.1 配置寄存器介紹79D.2 PLL寄存器介紹81D.3 A/D模塊寄存器介紹87D.4 定時模塊寄存器介紹90D.5 SCI模塊寄存器介紹95D.6 SPI模塊寄存器介紹100D.7 中斷模塊寄存器介紹104前 言汽車已經(jīng)進入了電腦時代,大眾公司推出的輝騰汽車已經(jīng)裝備了60個MCU(微控制器)。單片機已經(jīng)成為汽車電子系

7、統(tǒng)設(shè)計的核心技術(shù),可以說,不了解單片機/微控制器將無法勝任現(xiàn)代汽車電子系統(tǒng)的設(shè)計,即使是高級維修,都需要對汽車電子技術(shù)有系統(tǒng)深入的學(xué)習(xí)。本教程是針對具有基本電子基礎(chǔ)和計算機操作能力的本科生操作教材。主要介紹基于飛思卡爾8位的單片機MC68HC908GP32的程序設(shè)計和應(yīng)用操作,結(jié)合程序設(shè)計實例了解和學(xué)習(xí)MC68HC908GP32單片機。單片機的學(xué)習(xí)主要依靠熟練的編程操作來實現(xiàn),本操作手冊是在已有教學(xué)系統(tǒng)的基礎(chǔ)上進行的修改,主要修改包括1)將原來的理論教程和實驗操作教程合并,刪簡了部分冗長的理論性介紹;2)介紹了編程中需要的C語言設(shè)計知識;3)分模塊集中介紹了寄存器。限于整理者水平,錯誤和不合理

8、之處在所難免,懇請使用者能提出寶貴的意見。第一章 MC68HC908GP32概述 1.1 單片機概念單片微計算機(Single Chip Computer) 簡稱單片機,也稱微控制器MCU(Micro Control Unit)。就是把中央處理器、存儲器、外設(shè)部件和IO做在一塊芯片上作為應(yīng)用系統(tǒng)中的控制部件來使用。隨著微控制器芯片上的外設(shè)部件越來越多,其功能將不斷增強。針對具體的應(yīng)用,利用微控制器可以設(shè)計出十分復(fù)雜的系統(tǒng),這種系統(tǒng)就稱作嵌入式系統(tǒng)。1.2 MC68HC08單片機特點1.2.1 MC68HC08系列微控制器的主要特點(1) 采用模塊化設(shè)計,各種不同型號微控制器由不同模塊組成,一個

9、星期就可以設(shè)計出用戶所需的微控制器。(2) 含有片內(nèi)監(jiān)控ROM,為用戶提供了在線編程及在線調(diào)試等功能。(3) 具有特色的Flash取代片內(nèi)EPROM和ROM,其價格低于相同容量的OTP型微控制器。(4) 具有鎖相環(huán)電路,可以使用32kHz的晶振產(chǎn)生8MHz的總線速度,大大降低了干擾。1.2.2 MC68HC08GP32單片機特點MC68HC908GP32以它的高性能、低功耗、低價位在推出后的短短一年時間內(nèi)就獲得了廣泛的應(yīng)用。它的主要特性為:(1) 32kB片內(nèi)Flash存儲器,具有在線編程能力和保密功能。(2) 512B片內(nèi)RAM。(3) 8兆赫內(nèi)部總線頻率。(4) 增強型串行通信口和串行外圍

10、接口。(5) 兩個16位雙通道定時器接口模塊,每個通道可選擇為輸入捕獲、輸出捕獲和脈寬調(diào)制輸出,其時鐘可分別選為內(nèi)部總線的1、2、4、8、16、32和64的分頻值。(6) 8路8位AD轉(zhuǎn)換器。(7) 系統(tǒng)保護特性,包括計算機工作正常(COP)復(fù)位;低電壓檢測復(fù)位,可選為3V或5V操作;非法指令碼檢測復(fù)位;非法地址檢測復(fù)位。(8) 時鐘發(fā)生器模塊,用32kHz晶振的鎖相環(huán)電路,可產(chǎn)生各種工作頻率。(9) 33根通用IO腳,包括26根多功能IO腳和5或7根專用IO腳。(10) PA、PC和鈀的輸入口有可選擇的上拉電阻。(11) 所有口有10mA吸流和放流能力,PTC0PTC4有15mA吸流和放流能

11、力(總體驅(qū)動電流應(yīng)小于150mA)。(12) 帶時鐘預(yù)分頻的定時基模塊有8種周期性實時中斷(1Hz、4Hz、16Hz、256Hz、512Hz、1024Hz、2048Hz和4096Hz),可在停止方式時使用外部32kHz晶振周期性喚醒CPU。(13) 8位鍵盤喚醒口。(14) 所有口有最高5mA輸入電流保護功能。(15) 具有PDIP40、SDIP42和QFP44封裝形式。(16) 支持C語言。(17) 完全向上兼容MC68HC05。(18) 等待、停止低功耗模式。(19) 上電復(fù)位。1.3 MC08單片機功能結(jié)構(gòu)圖1-1 MC68HC08GP32結(jié)構(gòu)圖1. 存儲器MC68HC908GP32可尋

12、址64kB地址空間。它主要包括:(1) 32kB的閃速存儲器Flash;(2) 32256B的用戶空間;(3) 512B的隨機存儲器RAM;(4) 36B用戶定義的矢量區(qū)(Flash存儲器);(5) 307B的監(jiān)控ROM。Flash存儲器是一種快速、非易失、在高壓下進行擦寫的存儲器。因為MC68HC908GP32有在片的電荷泵可以產(chǎn)生Flash擦寫所需要的高壓,所以其芯片只需要單一的外部電源就可實現(xiàn)Flash的讀、寫、擦除的全部操作。MC68HC908GP32內(nèi)部有32kBFlash存儲器,其寫入與擦除主要由FLCR寄存器($FE08)控制。Flash存儲器的控制寄存器中還有一個塊保護寄存器F

13、LBPR($FF7E),它指出被保護區(qū)的首地址,而末地址一律為$FFFF。被保護區(qū)是只讀區(qū),不能對它進行擦寫操作。FLBR保護值為:FLBPR=$00,保護全部Flash存儲器;FLBPR=$01,保護區(qū)為$8080$FFFF;FLBPR=$02,保護區(qū)為$8100$FFFF;FLBPR=$鐵,保護區(qū)為$FF00$FFFF;FLBPR=$FF,不保護。監(jiān)控ROM在微控制器出廠前已固化在其內(nèi)部,其中包含了有關(guān)系統(tǒng)檢測、Flash編程以及串行通信等功能的代碼。這就使得微控制器多了一種不同于正常用戶方式的特殊操作方式,稱為監(jiān)控方式。在特定條件下,微控器可以不進入用戶方式,而是進入監(jiān)控方式。監(jiān)控ROM

14、可以通過單一的一條信號線與主機進行串行通信,接收和執(zhí)行預(yù)先定義的主機命令,如讀寫存儲器、執(zhí)行程序等,并返回結(jié)果。適當(dāng)運用監(jiān)控方式和這些主機命令,能夠完成一些特殊功能,例如:a. 下載代碼到或Flash存儲器中;b. 執(zhí)行RAM或Flash中程序代碼:c. Flash存儲器的加密;d. Flash存儲器擦除、寫入、校驗;e. 與主計算機進行標準的不歸零傳號空號串行通信,波特率為4.8k28.8kbaud;f. 在線編程; g. 用戶方式Flash編程。2定時器接口模塊MC68HC908GP32有兩個定時器接口模塊TIMl(timerinterfacemodule)和TIM2,具有定時器溢出、輸入

15、捕捉、輸出比較和脈寬調(diào)制功能。每個TIM有以下特點:(1) 兩個輸入捕獲輸出比較通道;(2) 緩沖或非緩沖脈寬調(diào)制;(3) TIM時鐘可編程為內(nèi)部總線時鐘的7種分頻值;(4) 自由運行或取模加1計數(shù)操作;(5) 溢出時變換通道;(6) 計數(shù)器可停止或復(fù)位。a. 輸入捕捉輸入捕捉是飛思卡爾微控制器定時器的基本功能,該功能用來監(jiān)測外部的事件和輸入信號。當(dāng)外部事件發(fā)生或信號發(fā)生變化時,在指定的輸入捕捉引腳上發(fā)生一個指定的沿跳變(可以指定該跳變是上升沿還是下降沿),定時器捕捉到特定的沿跳變后,把自由運行計數(shù)器當(dāng)前的值鎖存到輸入捕捉寄存器。如果在輸入捕捉控制寄存器中設(shè)定允許輸入捕捉中斷,系統(tǒng)會產(chǎn)生一次輸

16、入捕捉中斷,利用中斷處理軟件可以得到事件發(fā)生的時刻或信號發(fā)生變化的時刻。通過記錄輸入信號的連續(xù)的沿跳變,就可以用軟件算出輸入信號的周期和脈寬。b. 輸出比較輸出比較模塊也是MC68HC908GP32定時器的基本組成部分。該模塊用來在程序規(guī)定的時刻輸出需要的電平,實現(xiàn)對外部電路的控制。自由運行計數(shù)器的值每遞增一次,就和輸出比較寄存器的值比較一次。當(dāng)兩個值相等的時候,輸出比較模塊置位定時器通道的狀態(tài)和控制寄存器的CHxF位,并且在該通道的引腳上輸出預(yù)先規(guī)定的電平。如果輸出比較中斷允許,還會產(chǎn)生一個定時中斷。使用輸出比較的優(yōu)勢在于可以得到非常精確的輸出時間間隔。硬件的比較功能不受其他中斷的影響,而且

17、對用戶程序沒有額外的負擔(dān)。輸出比較最簡單和最常用的場合就是產(chǎn)生一定間隔的脈沖。典型的應(yīng)用實例就是實現(xiàn)軟件的串行通信。用輸入捕捉作為數(shù)據(jù)輸入,而用輸出比較作為數(shù)據(jù)輸出。首先根據(jù)通信的波特率向輸出比較寄存寫入延時的值,根據(jù)待傳的數(shù)據(jù)位確定有效輸出電平的高低。在輸出比較中斷處理例程中,重新更改輸出比較寄存器的值,并根據(jù)下一位數(shù)據(jù)改寫有效輸出電平控制位。c. 脈寬調(diào)制 脈寬調(diào)制波是一種可以使用程序來控制波形占空比、周期、相位的波形。它在三相電機的驅(qū)動、DA變換等場合有普遍的應(yīng)用。MC68HC908GP32的定時模塊也提供了脈寬調(diào)制的機制。定時器的每一個通道都可以設(shè)置為在溢出時自動翻轉(zhuǎn)電平。合理地使用這

18、個特性,定時器通道就可以產(chǎn)生脈寬調(diào)制波。預(yù)置計數(shù)寄存器的值將決定脈寬調(diào)制波的周期。當(dāng)自由運行計數(shù)器的計數(shù)達到預(yù)置計數(shù)器的值時,該通道的輸出將自動翻轉(zhuǎn)。所以兩次溢出之間的時間就是脈寬調(diào)制波的周期。每一個通道的輸出比較寄存器的值將決定脈寬調(diào)制波的占空比。因為在發(fā)生輸出比較時,輸出電平將根據(jù)每一個通道的控制狀態(tài)寄存器的ELSxA、ELSxB位的設(shè)置而發(fā)生改變。這樣在一次時鐘溢出的周期內(nèi)輸出電平將發(fā)生兩次翻轉(zhuǎn),而從發(fā)生輸出比較到發(fā)生時鐘溢出之間的時間就是脈寬調(diào)制波的占空比。脈寬調(diào)制PWM模塊的框圖如圖1-1所示。圖1-2 脈寬調(diào)制模塊框圖(1、占空比是在連續(xù)的脈沖信號頻率或周期不變的前提下定義的,用來

19、衡量開關(guān)管導(dǎo)通或截至狀況,在這個前提下,設(shè)開關(guān)管的導(dǎo)通時間為To,脈沖周期為T,則占空比為To:T,如果占空比為1:1,那么,開關(guān)管就處去常開狀態(tài),也就是說,加在開關(guān)管的控制極(一般是基極)的脈沖信號始終是使開關(guān)管導(dǎo)通(實際上已經(jīng)不是脈沖信號了)。 2、你談到的占空比為1:1,我認為該資料的說法角度已經(jīng)改變了,你聯(lián)系一下該資料的上下文,我估計資料上所說的1:1是指開關(guān)管的導(dǎo)通時間與截止時間之比即:Ton:Toff=1:1,所以占空比為50%。這是從另一個角度來說明占空比) 3定時基模塊 定時基模塊(時基模塊,TBM)產(chǎn)生周期性中斷,可選擇8種速率。它由定時基模塊控制寄存器TBCR($001C)

20、的TBR2TBR0位所控制,在晶振頻率為32.768KHz,TBM產(chǎn)生的中斷速表1-1所示。4系統(tǒng)操作正常監(jiān)視模塊系統(tǒng)操作正常監(jiān)視模塊(computer operming properly,COP)俗稱看門狗電路,其功能在微控制器工作不正常時,產(chǎn)生一個復(fù)位信號。該模塊有一個計數(shù)器,COP允許后,軟件必須周期性地向$FFFF(COP控制寄存器)寫入任意值,以清除COP計數(shù)器。若系統(tǒng)由于某種原因使軟件工作不正常時,COP計數(shù)器就得不到清零。那么當(dāng)它溢出時便產(chǎn)生復(fù)位信號,以防止程序進入不可預(yù)料的操作。在系統(tǒng)設(shè)置寄存器中可以設(shè)置COP速率及允許、禁止COP。表1-1 定時基速率選擇(晶陣頻率為32.7

21、68KHz)5并行IO接口 并行IO接口是IO接口中最常用的。MC68HC08有多個并行口,其中有8位口、7位口,也有2位口。MC68HC908GP32的并行IO接口有5個口。(1) PA口PA為雙向IO口,作輸入時可具有上拉電阻。在允許時,PA可用作鍵盤中斷輸入。鍵盤中斷的觸發(fā)可以選擇為下跳變有效或下跳變和負電平有效。(2) PB口PB口為雙向IO口,也可用作AD輸入(這時不受DDRB所控制)。(3) PC口 PC為7位雙向IO口,在作輸入時,也具有上拉電阻。(4) PD口PA為8位雙向IO口,它也用作定時器和SPI引腳。在作輸入時,可具有上拉電阻。(5) PE口PE為2位雙向IO口,它也用

22、作SCI引腳(這時它不受DDRE影響)。6異步串行通信接口模塊異步串行通信模塊(serial communication interface,SCI)的用途是實現(xiàn)諸如RS-232、RS485等類能使用異步串行通信規(guī)則的通信,最主要的是用于和其他計算機的數(shù)據(jù)傳輸。SCI的主要功能是:(1) 全雙工高速非歸零通信;(2) 獨立式發(fā)送和接收操作;(3) 可編程波特率;(4) 硬件奇偶校驗(MC68HC05無此功能);(5) 噪聲檢測(MC68HC05無此功能)。MC68HC908GP32的SCI具有硬件奇偶校驗、噪聲檢測等功能。它有3個控制寄存器(SCCI、SCC2、SCC3)和2個狀態(tài)寄存器(SC

23、Sl、SCS2)。7串行外設(shè)接口具有主從工作方式的全雙工同步中行外設(shè)接口(serial peripheral interface,SPI)用于同步串行通信,也可以用于擴展并行接口、存儲器、LCD驅(qū)動電路等。MC68HC908GP32的SPI功能增加了2個出錯標志,有分開的接收與發(fā)送中斷,并有靈活的I0腳控制。MC68HC08GP32的SPI有2個控制和狀態(tài)寄存器。8斷點模塊斷點模塊(break module,BRK)可以在設(shè)定的地址處產(chǎn)生一個中斷,該中斷稱為斷點中斷,它使CPU中止當(dāng)前程序的執(zhí)行而進入中斷服務(wù)程序。斷點中斷可由下述2種方式引起。 (1) CPU產(chǎn)生的地址(該地址在程序計數(shù)器中)

24、與斷點地址寄存器的內(nèi)容相匹配時產(chǎn)生斷點中斷。(2) 用軟件向斷點狀態(tài)與控制寄存器的BRKA位寫1時產(chǎn)生斷點中斷。 當(dāng)這2種情況之一發(fā)生時,斷點模塊就產(chǎn)生一個斷點信號(BKPT),使CPU在結(jié)束當(dāng)前指令后,將一條SWI指令裝入內(nèi)部指令寄存器作為下一條指令執(zhí)行。這樣就如同發(fā)生一個軟件中斷,$FFFC和$FFFD(在監(jiān)控模式下為$FEFC和$FEFD)指定了中斷服務(wù)例程的起始地址。在斷點服務(wù)例程中執(zhí)行PTI指令,就結(jié)束了斷點中斷,使微控制器恢復(fù)到正常的程序流程。9AD轉(zhuǎn)換模塊A/D轉(zhuǎn)換器是模擬信號源與計算機或其他數(shù)字系統(tǒng)之間聯(lián)系的橋梁,它的任務(wù)是將連續(xù)變化的模擬信號轉(zhuǎn)換為數(shù)字信號,以便計算機或數(shù)字系

25、統(tǒng)進行處理、存儲、控制和顯示。在工業(yè)控制和數(shù)據(jù)采集及許多其他領(lǐng)域中,A/D轉(zhuǎn)換器是不可缺少的重要組成部分MCG8HC908GP32具有8路8位AD轉(zhuǎn)換器,它有一個狀態(tài)和控制寄存器ADSCR($003C)。 10存儲器直接存取模塊存儲器直接存取(Direct memory access,DMA)是一種高速的數(shù)據(jù)傳播方式,它可實現(xiàn)存儲器與存儲器,存儲器與外設(shè)之間數(shù)據(jù)的直接傳送。有些型號的MC68HC08,如MC68HC08XL36有3路DMA通道。11模糊控制模塊MC68HC08的KX、KJ系列,含有模糊控制模塊,通過幾條指令就可實現(xiàn)對被控對象的模糊控制。模糊控制是近年來越來越引起重視,并已用于軍

26、事、控制、家電等領(lǐng)域中的一種新型的控制方法。12鍵盤中斷模塊MC68HC908GP32的鍵盤中斷模塊(keyboard interrupt,KBl),通過端口A(PTA)的8個引腳提供8個獨立的可屏蔽的外部中斷。它們既可作為鍵盤中斷,又可作為普通的中斷源,這就大大增加了外中斷的個數(shù)。13時鐘發(fā)生模塊及鎖相環(huán)電路時鐘發(fā)生模塊包括晶振電路、鎖相環(huán)電路和基本時鐘電路。時鐘發(fā)生模塊的晶振電路采用由晶振、電容、電阻組成的通用晶振電路,或者采用外部時鐘源。鎖相環(huán)電路使微控制器在外部使用較低頻率(如32KHz)晶振時在內(nèi)部卻可以得到較高(如8MHz)的總線頻率,這是個非常成功的有效的電路。有關(guān)鎖相環(huán)得工作原

27、理、理論計算及使用方法,將在后面的章節(jié)中做詳細介紹。14低電壓禁止模塊低電壓禁止模塊(low voltage inhibition,LVI)的作用就是監(jiān)測加在VDD上的供電電壓。當(dāng)VDD低于某個預(yù)定電壓值LVITRIP時,認為發(fā)生電源故障,產(chǎn)生中斷信號并強制系統(tǒng)復(fù)位。15復(fù)位與中斷模塊MC68Hc908GP32具有上電復(fù)位(POR)、計算機工作正常(COP)、低電壓禁止復(fù)位、非法指令碼和非法地址等復(fù)位源。MC68HC908GP32共有24個中斷源。1.4 MC08單片機管腳與封裝MC68HC908GP32單片機是一個復(fù)雜的可編程集成電路,通過運行編寫的命令實現(xiàn)我們的要求。MC68HC908GP

28、32單片機有三種封裝形式:40腳的雙列直插(PDIP)、42腳的密腳雙列直插(SDIP)以及44腳的方扁形(QFP)。以40腳雙列直插為例介紹MC68HC908GP32單片機的管腳,如封面圖所示。許多管腳有不同的復(fù)用功能,中間用“/”隔開。單片機設(shè)置不同時,該管腳的功能不同。l 管腳1 VDDA (PLL)是鎖相環(huán)的邏輯電源;l 管腳2 VSSA (PLL)是鎖相環(huán)的邏輯地;l 管腳3 CGMXFC (PLL)是時鐘發(fā)生器模塊(CGM)的電源供給;l 管腳4 OSC2是片內(nèi)振蕩器引腳;l 管腳5 OSC1是片內(nèi)振蕩器引腳;l 管腳6 RST是復(fù)位引腳,低電平時,程序重新開始運行;l 管腳711

29、(PTC0PTC4)是C口;l 管腳12(PTE0/TxD)是E口0和通訊口;l 管腳13(PTE1/RxD)是E口1和通訊口;l 單片機可以通過管腳12和13與其他裝置進行串行口通訊,(RXD是接收,TXD是發(fā)送);l 管腳14 IRQ 是外部中斷輸入引腳,內(nèi)有上拉電阻;l 管腳15 (PTD0/ SS)是特殊功能的雙向輸入/輸出口,PTD0PTD3可編程為串行外設(shè)接口(serial peripheral interface SPI), PTD4PTD5可單獨編程為定時器接口模塊(Timer interface module-TIM1和TIM2)引腳;l 管腳16 PTD1/MISO是D1口

30、;l 管腳17 PTD2/MOSI是鎖相環(huán)的邏輯電源;l 管腳18 PTD3/SPSCK是鎖相環(huán)的邏輯地;l 管腳19 VSS是單片機的地;l 管腳20 VDD是單片機的電源;l 管腳21 PTD4/T1CH0是D口4和定時器通道0;l 管腳22 PTD5/T1CH1是D口5和定時器通道1;l 管腳2330 PTB0/AD0PTB7/AD7是B口和模擬量采集復(fù)用口,這些管腳根據(jù)設(shè)置不同,可實現(xiàn)輸入輸出和A/D采集的不同功能;l 管腳31VDDAD/VREFH(ADC)是A/D轉(zhuǎn)換的參考電壓正;l 管腳32 VSSAD /VREFL(ADC)是A/D轉(zhuǎn)換的參考電壓負;l 管腳3340 PTA0/

31、KBD0PTA7/KBD7是表示A口和鍵盤中斷輸入腳;1.5 MC08單片機系統(tǒng)設(shè)置MC68HC908GP32有兩個系統(tǒng)設(shè)置寄存器CONFIGl($001F)和CONFIG2($00lE),它們的主要功能為選擇SCI波特率時鐘源(內(nèi)部總線時鐘或外部振蕩器);確定晶振在停止狀態(tài)下是否繼續(xù)運行,確定在停止方式下低電壓禁止模塊LVI是否有效:選擇LVI為5V或3V方式:選擇停止的恢復(fù)時間:允許或禁止停止指令;允許或禁止COP功能;選擇COP速率;低電壓禁止模塊的各項控制等。第二章 MC08GP32單片機系統(tǒng)設(shè)計編程2.1 MC08GP32單片機系統(tǒng)設(shè)計流程參考設(shè)計流程如下:1. 硬件連接用串口線將編

32、程器與計算機連接起來,再與開發(fā)板連接好。用5V電源給開發(fā)板供電(連在編程器上也是一樣),通電后開發(fā)板與編程器上方的POWER燈都會亮。(見附錄A單片機教學(xué)系統(tǒng)介紹)。 2. 熟悉開發(fā)軟件Codewarrior環(huán)境,建立新的程序文件新建程序文件,然后編譯直至沒有語法錯誤為止(詳細介紹見附錄B中B.2Codewarrior軟件使用)。 3. 調(diào)試程序調(diào)試程序并運行直至滿足設(shè)計要求。具體操作時應(yīng)該重點檢查寄存器的設(shè)置,要善于利于外文手冊資料來核查程序。Codewarrior軟件允許調(diào)試程序時設(shè)置斷點,此功能便于逐步檢查程序逐步排除錯誤(見附錄B)。2.2 08程序的基本框架MC68HC08程序的框架

33、比較統(tǒng)一,下面介紹兩種最常用的程序框架:查詢式程序框架和中斷式程序框架。所謂查詢,就是CPU不停地檢測某些標示位,當(dāng)其滿足一定條件時執(zhí)行某個操作,比如CPU檢測到接受數(shù)據(jù)緩沖區(qū)為空時執(zhí)行發(fā)送新數(shù)據(jù)的操作(SCI串口通訊的相關(guān)操作)。查詢式程序框架一般適用于CPU執(zhí)行單任務(wù),它結(jié)構(gòu)簡單、通俗易懂,不足之處是當(dāng)設(shè)定的查詢條件不滿足時,CPU一直執(zhí)行空操作,俗稱“死等”。如果有多個任務(wù)需要處理,優(yōu)先考慮中斷式程序框架。中斷是指當(dāng)某種條件滿足時,中斷源產(chǎn)生中斷申請,CPU在當(dāng)前指令執(zhí)行完畢后會檢測是否有中斷申請,如果有的話,立即將有關(guān)寄存器值存入堆棧。轉(zhuǎn)去執(zhí)行中斷源所對應(yīng)的中斷處理程序。中斷處理執(zhí)行完

34、畢后,回到原來的程序中繼續(xù)執(zhí)行。簡單地說CPU可以一直干自己的事,只有有中斷請求時才執(zhí)行中斷程序中相關(guān)操作,這樣避免了CPU“死等”,需要注意的是當(dāng)多個中斷請求同時發(fā)生時,CPU是依照優(yōu)先級別的順序依次執(zhí)行,用戶在編程時需參照手冊設(shè)定優(yōu)先級。2.2.1 查詢式程序框架#include #include /step1 變量定義(定義的變量可以供賦值、控制循環(huán)次數(shù)等功能的實現(xiàn)使用)void main(void)/step2初始化CONFIG控制字初始化(此步驟一般在使用SCI串口需要設(shè)置,其他模塊使用其默認值即可)CONFIG1=0x*;CONFIG2=0x*;/step3初始化鎖相環(huán)(此步驟在需

35、要總線頻率超過32.768KHZ時選用,對執(zhí)行速度要求不高可以不使用鎖相環(huán))。/step4設(shè)置其它初始化控制字,比如各功能模塊的寄存器設(shè)置、I/O端口設(shè)置等/step5 進入循環(huán)for(;)/step6 在循環(huán)中作端口輸入輸出的工作if (寄存器可以讀) 讀寄存器;if(寄存器可以寫)寫寄存器;2.2.2 中斷式程序框架#include #include /step1 變量定義(定義的變量可以供賦值、控制循環(huán)次數(shù)等功能的實現(xiàn)使用)void main(void)/ step2禁止中斷asm SEI /step3初始化CONFIG控制字初始化 (此步驟在使用SCI串口時需要設(shè)置,其他模塊使用其默認

36、值即可)CONFIG1=0x*;/CONFIG2=0x*;/step4初始化鎖相環(huán)(此步驟在需要總線頻率超過32.768KHZ時選用,對執(zhí)行速度要求不高可以不使用鎖相環(huán))。/step5設(shè)置其它初始化控制字并開啟有關(guān)中斷,比如各功能模塊的寄存器設(shè)置、I/O端口設(shè)置等/Step6 開中斷asm CLI /中斷屏蔽位I清0,開啟中斷/step6 進入死循環(huán)For(;);/step7 設(shè)計中斷服務(wù)程序,有幾個中斷向量就寫幾個Interrupt 中斷號 intResponce(void)禁止有關(guān)中斷;進行寄存器讀寫操作等;允許有關(guān)中斷;/其中intResponce是函數(shù)的名稱,可以自行訂制.2.3 鎖相

37、環(huán)編程指導(dǎo)MC68HC08的系統(tǒng)時鐘不僅可以由外部晶振輸入分頻得到,還可以由內(nèi)部鎖相環(huán)頻率合成器提供,如圖2-1所示。鎖相環(huán)頻率合成器是MC68HC08系列微控制器中最具特色的模塊之一。它可以在使用外接32kHz晶振的情況下,通過軟件編程得到最大8MHz的總線時鐘頻率。在以往不采用鎖相環(huán)電路的微控制器應(yīng)用系統(tǒng)中,晶振電路由于工作頻率高(通常都有幾兆赫至幾十兆赫),是一個很大的干擾源。在系統(tǒng)設(shè)計、線路板布局時都必須仔細考慮,采用各種方法降低對外界的干擾。而采用鎖相環(huán)頻率合成器作為微控制器時鐘源后,由于可采用32kHz的晶振,比起通常使用的28MHz晶振,大大降低了對外輻射干擾,提高了系統(tǒng)的可靠性

38、。這在同類的產(chǎn)品中具有無可比擬的優(yōu)越性。同時由于鎖相環(huán)頻率合成器的輸出頻率可以用軟件設(shè)定,這就為用戶編程提供了更大的靈活性。圖2-1 時鐘發(fā)生模塊結(jié)構(gòu)示意圖實際利用單片機開發(fā)時,如果對單片機執(zhí)行速度沒有很高的要求(比如實際產(chǎn)品要求A/D采集的速度比較低),可以在編程中不設(shè)置鎖相環(huán),如果對執(zhí)行速度比較高則必須設(shè)置鎖相環(huán)(例如SCI設(shè)置波特率9600需要總線頻率4.9152MHZ,而外部晶振只能提供32.768KHZ則必須使用鎖相環(huán)倍頻)?,F(xiàn)介紹PLL編程的參考步驟:(1) 禁止PLL:PCTL=0;(2) 選擇自動控制方式 PBWC=0x80;(3) 設(shè)置分頻系至PMSH和PMSL;(4) 設(shè)置

39、輸出范圍系數(shù)至PMRS;(5) 設(shè)置PCTL,其中包括PRE值,VPR值和ACQ=1(6) 鎖相環(huán)使能PCTL_PLLON=1,等待穩(wěn)定后,設(shè)PBWC_LOCK=0;(7) 設(shè)置輸出時鐘為CGMVCLK的二分頻PCTL_BCS=1; 注:相應(yīng)的寄存器見附錄D部分說明。2.3 配置寄存器CONFIG設(shè)置CONFIG寄存器主要用于一些功能的初始化,每次復(fù)位以后,CONFIG寄存器的所有位均被清零,而且CONFIG寄存器每次復(fù)位以后只能寫一次。因為這些功能影響微控制器的正常操作,所以每次上電復(fù)位后就應(yīng)盡快地設(shè)置CONFIG寄存器。CONFIG寄存器包括CONFIG2和CONFIGl兩個寄存器,地址分

40、別為$001E和$001F, 它可以隨時被讀出來。這兩個寄存器允許和禁止以下功能:(1) STOP模式的恢復(fù)時間(32個或4096個CGMXCLK時鐘周期)。(2) 看門狗定時器溢出時間(26214416或者819216個CGMXCLK時鐘周期)。(3) STOP指令的允許與禁止。(4) 計算機操作正常模塊的允許與禁止。(5) 低電壓禁止模塊的控制和電壓跳變點的選擇。(6) 允許和禁止STOP模式下的振蕩器。注:相應(yīng)的寄存器見附錄D部分說明。第三章 MC08GP32單片機功能演示例程3.1 A/D采集及數(shù)碼顯示3.1.1 實驗?zāi)康膶崿F(xiàn)A/D采集和數(shù)碼顯示,即在單片機參考電壓為5伏的情況下,從外

41、部輸入05伏的外部模擬量(電壓),經(jīng)單片機處理后在數(shù)碼管上對應(yīng)顯示09。3.1.2 實驗準備1. 熟悉A/D模塊功能特點(見第一章介紹),了解A/D模塊各個寄存器控制位所代表的含義(見附錄D部分A/D模塊寄存器介紹)。2. LED由七段數(shù)碼管和一個小數(shù)點組成,當(dāng)不同段數(shù)碼管被點亮?xí)r可以組合成不同的數(shù)字和字母??刂茢?shù)碼管顯示不同的內(nèi)容就是將與相應(yīng)段數(shù)碼管連接的單片機輸出端口置為高電平,比如設(shè)置PTB=0X3F讓外圍的六段數(shù)碼管點亮就會顯示O,其他的數(shù)字和字母顯示方法類似。3. A/D模塊參考編程步驟:a. I/O初始化,設(shè)置由哪個通道輸入,哪個通道輸出;b. 鎖相環(huán)初始化(如果對A/D采集的速度

42、要求不高可以不設(shè)置鎖相環(huán));c. 設(shè)置ADSCR、ADR寄存器;d. 計算結(jié)果通過I/O驅(qū)動數(shù)碼管顯示。 4. 準備跳線端子8根。3.1.3 實驗步驟1) 用串口線將編程器與計算機連接起來,再與開發(fā)板連接好。用5V電源給開發(fā)板供電(連在編程器上也是一樣),通電后開發(fā)板與編程器上方的POW燈都會亮。2) 在CodeWarrior CW08_V3.0上新建文件,并在“選擇浮點格式?”中選擇為浮點格式(第二個選項即可),在main.c中輸入下邊程序查錯無誤后將其寫入Flash(詳見軟件Codewarrior介紹)。3) 用跳線器將J2上PB0到PB6與數(shù)碼管接頭S-a到S-g跳上,PB7與AD7跳上

43、。4) 點擊開始圖標,上方數(shù)碼管先熄滅,隨后便進入采集顯示狀態(tài)。5) 用手旋轉(zhuǎn)可變電阻上的旋鈕使電壓在05V范圍內(nèi)變化,顯示便會隨之改變,從0到5V分為10個檔次,顯示0到9,超過范圍則顯示A。6) 如果想重新設(shè)置程序,則點擊工具欄圖標,然后選擇Reset停止運行。3.1.4 源程序 #include /* for EnableInterrupts macro */#include /* include peripheral declarations */double a=0; /定義一個雙浮點型變量,因為要用到小數(shù) void main(void) /*I/O初始化*/DDRB=0x7f;/P

44、TB7作為輸入通道,其余作為輸出通道 PTB=0x00;/*啟動A/D轉(zhuǎn)換*/ADSCR=0x27;/從7通道采集信號,轉(zhuǎn)換結(jié)束不產(chǎn)生中斷,連續(xù)A/D轉(zhuǎn)換While(1)while(ADSCR_COCO=0); /檢驗轉(zhuǎn)換是否完成,若沒有等待 a=ADR;/轉(zhuǎn)換完成則讀取結(jié)果/*將結(jié)果計算出來并顯示*/switch(int)a/25)case 0:PTB=0X3F;/顯示數(shù)字0break;case 1:PTB=0X06;/顯示數(shù)字1break;case 2:PTB=0X5b;/顯示數(shù)字2break;case 3:PTB=0X4F;/顯示數(shù)字3break;case 4:PTB=0X66;/顯示數(shù)

45、字4break;case 5:PTB=0X6d;/顯示數(shù)字5break;case 6:PTB=0X7d;/顯示數(shù)字6break;case 7:PTB=0X07;/顯示數(shù)字7break;case 8:PTB=0X7F;/顯示數(shù)字8break;case 9:PTB=0X6F;/顯示數(shù)字9break;default :PTB=0x77;/超過范圍,顯示Abreak;3.1.5 思考題1. 嘗試滿足一定條件時輸出字母E和H?2. 如果要實現(xiàn)通道7和通道6兩路同時進行A/D采集,程序應(yīng)該如何編寫?3. A/D轉(zhuǎn)換器的頻率建議設(shè)定在1MHZ左右,如何選擇適當(dāng)?shù)臅r鐘源和分頻系數(shù)滿足這一要求?4. A/D采集

46、就是將模擬量轉(zhuǎn)化為數(shù)字量,它在汽車電控中具有舉足輕重的作用,比如采集汽車上的冷卻水溫度、機油壓力、節(jié)氣門開度等等模擬信號經(jīng)過轉(zhuǎn)化后供ECU分析和調(diào)用,你還能想出A/D采集在汽車上還有哪些應(yīng)用?3.2 TIC測量周期及占空比3.2.1 實驗?zāi)康耐ㄟ^記錄輸入信號的跳變沿,用該軟件算出輸入信號的周期和占空比。3.2.2 實驗準備1. 熟悉定時器模塊功能特點(見第一章介紹),了解定時器模塊各個寄存器控制位所代表的含義(見附錄D部分定時器模塊寄存器介紹);2. 測量周期,捕捉兩個相鄰的上升沿的時間,相減可以得到周期。測量脈寬,記錄先高后低相鄰兩個不同極性的沿變化的時間。脈寬與周期之比為占空比;3. TI

47、C參考編程步驟:a. 變量定義;b. 定時器初始化(假定使用定時器1,設(shè)置TISC);c. 使能中斷,進入死循環(huán);d. 設(shè)計中斷服務(wù)程序;4. 準備信號發(fā)生器、示波器和連接導(dǎo)線若干。3.2.3 實驗步驟1) 將開發(fā)板CH0(J2從下邊起第一個)口與信號發(fā)生器輸出口TTL OUT的正極(紅)、示波器輸入口正極相連,再把三者的地共地;2) 將串口線和電源與開發(fā)板連接好,通電后板上方POW燈亮; 3) 在CodeWarrior CW08_V3.0上新建文件,并在“選擇浮點格式?”中選擇為浮點格式(第二個選項即可),在main.c中輸入下邊程序并將其寫入Flash(具體詳見軟件Codewarrior介

48、紹); 4) 調(diào)節(jié)信號發(fā)生器時,點擊控制面板中間的按鍵先將其調(diào)節(jié)為方波,再調(diào)節(jié)頻率范圍使其不要超過1K;右邊的函數(shù)信號輸出一欄中SYM鈕可以調(diào)節(jié)占空比; 5) 調(diào)節(jié)示波器時,先旋轉(zhuǎn)VOLTS/DIV檔使出現(xiàn)方波信號,調(diào)節(jié)右邊SEC/DIV檔改變時間軸可以將波形放大,再調(diào)節(jié)它下邊的“微調(diào)”鈕將其放慢(能看清脈寬和占空比為止); 6) 通過調(diào)節(jié)信號發(fā)生器頻率輸出,(變化頻率和占空比),示波器顯示的波形會隨之改變。采集時需在程序的case 2子程序的break語句前設(shè)置斷點(在case2前點擊右鍵,選擇set breakpoint),點擊圖標運行,停止后調(diào)試界面Data:1中就會顯示所采集到的rat

49、e(占空比)、f(頻率),觀察其采集的正確與否。(注意:要采集其他頻率和占空比的信號時要先點擊復(fù)位再運行)7) 如果想重新設(shè)置程序,則點擊工具欄圖標,然后選擇Reset停止運行。 3.2.4 源程序 #include /* for EnableInterrupts macro */#include /* include peripheral declarations */unsigned int first,second,third,n;Byte mode=0,count=0,c1,c2;float f,rate,c;double f1=1228800;void main(void) asm

50、SEI /禁止中斷/*I/O端口初始化*/DDRB=0xff; / / PTB均為輸入通道/*定時器1初始化*/ T1SC_TRST=1; /清除以前定時器計數(shù) T1SC_TOIE=1; /允許溢出中斷 T1SC_TSTOP=1; /不啟動計數(shù) T1SC_TRST=0; /計數(shù)、分頻不清零 T1SC_PS2=0; T1SC_PS1=0; T1SC_PS0=1; /分頻因子p=2 T1MODH=0x96; T1MODL=0x00; /1s產(chǎn)生1次溢出中斷,預(yù)置寄存器設(shè)定值=38400 T1SC0_CH0IE=1; /允許輸入捕捉中斷 T1SC0_MS0B=0; T1SC0_MS0A=0; T1S

51、C0_ELS0B=0; T1SC0_ELS0A=1; /上升沿捕捉T1SC0_TOV0=0;T1SC0_CH0MAX=0; T1SC_TSTOP=0; /啟動計數(shù) asm CLI /中斷屏蔽位I清0,開啟中斷for(;);interrupt 4 void jishu(void) switch(mode) case 0: count=0; c1=count; first=T1CH0; mode=1; T1SC0_ELS0B=1; T1SC0_ELS0A=0; break; case 1: c2=count; third=T1CH0; mode=2; T1SC0_ELS0B=0; T1SC0_EL

52、S0A=1; break; case 2: second=T1CH0; mode=0; n=(count*38401+second)-first; c=(c2-c1)*38401+third-first; f=f1/n; rate=(float)c/n; break; T1SC0_CH0F=0; interrupt 6 void yichu(void) count+; T1SC_TOF=0; 3.2.5 思考題1. 測量的周期與脈寬值小于定時器的溢出周期,只要將兩次的值相減。若測量值大于定時器的溢出周期,編程中應(yīng)該作何處理?2. 所給例程是測量周期和占空比,倘若僅僅測量周期程序可以如何簡化? 3.3 脈寬調(diào)制輸出3.3.1 實驗?zāi)康谋驹囼炌ㄟ^只需改變輸出比較寄存器T1CH0H 和T1CH0L的值就可實現(xiàn)脈寬調(diào)制功能,最后輸出固定占空比的脈寬調(diào)制波。 3.3.2 實驗準備1. 熟悉定時器模塊功能特點(見第一章介紹),了解脈寬調(diào)制和輸出比較的概念。2. 在發(fā)生輸出比較時,輸出電平將根據(jù)每一個通道的控制狀態(tài)寄存器的ELSxA,

溫馨提示

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

評論

0/150

提交評論