汽車(chē)單片機(jī)系統(tǒng)設(shè)計(jì)實(shí)驗(yàn)教程_第1頁(yè)
汽車(chē)單片機(jī)系統(tǒng)設(shè)計(jì)實(shí)驗(yàn)教程_第2頁(yè)
汽車(chē)單片機(jī)系統(tǒng)設(shè)計(jì)實(shí)驗(yàn)教程_第3頁(yè)
汽車(chē)單片機(jī)系統(tǒng)設(shè)計(jì)實(shí)驗(yàn)教程_第4頁(yè)
汽車(chē)單片機(jī)系統(tǒng)設(shè)計(jì)實(shí)驗(yàn)教程_第5頁(yè)
已閱讀5頁(yè),還剩104頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

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

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

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

4、意義354.1.2 工作原理354.1.3 硬件連接354.1.5 源程序364.1.6 結(jié)論與討論394.2 酒精檢測(cè)及報(bào)警394.2.1 目的意義394.2.2 工作原理394.2.3 硬件連接404.2.4 軟件流程圖404.2.5 源程序404.2.6 結(jié)論與討論414.3 自動(dòng)車(chē)速報(bào)警器設(shè)計(jì)424.3.1 目的意義424.3.2 工作原理424.3.3 硬件連接424.3.4 軟件流程圖434.3.5 源程序434.3.6 結(jié)論與討論474.4 車(chē)燈自動(dòng)轉(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單片機(jī)教學(xué)系統(tǒng)介紹53A.1 系統(tǒng)組成53A.2 開(kāi)發(fā)板介紹53A.2.1開(kāi)發(fā)板結(jié)構(gòu)54A.2.2編程器55A.2.3開(kāi)發(fā)板的用法55附錄B Codewarrior軟件應(yīng)用介紹56B.1 Codewarrior軟件安裝56B.2 Codewarrior軟件使用56B.2.1 新建程序文件及編譯56B.2.2 程序調(diào)試與運(yùn)行65附錄C C程序設(shè)計(jì)71C.1 選擇結(jié)構(gòu)程序設(shè)計(jì)71C.1.1 關(guān)系運(yùn)算符和關(guān)系表達(dá)式71C.1.2 邏輯運(yùn)算符和邏輯表達(dá)式71C.1.3 if語(yǔ)句運(yùn)用72C.1.4 switch語(yǔ)句運(yùn)用72C.2 循環(huán)控制73C.2.1

6、while和do-while語(yǔ)句73C.2.2 for語(yǔ)句74C.3 函數(shù)簡(jiǎn)介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 定時(shí)模塊寄存器介紹90D.5 SCI模塊寄存器介紹95D.6 SPI模塊寄存器介紹100D.7 中斷模塊寄存器介紹104前 言汽車(chē)已經(jīng)進(jìn)入了電腦時(shí)代,大眾公司推出的輝騰汽車(chē)已經(jīng)裝備了60個(gè)MCU(微控制器)。單片機(jī)已經(jīng)成為汽車(chē)電子系

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

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

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

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

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

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

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

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

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

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

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

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

19、衡量開(kāi)關(guān)管導(dǎo)通或截至狀況,在這個(gè)前提下,設(shè)開(kāi)關(guān)管的導(dǎo)通時(shí)間為T(mén)o,脈沖周期為T(mén),則占空比為T(mén)o:T,如果占空比為1:1,那么,開(kāi)關(guān)管就處去常開(kāi)狀態(tài),也就是說(shuō),加在開(kāi)關(guān)管的控制極(一般是基極)的脈沖信號(hào)始終是使開(kāi)關(guān)管導(dǎo)通(實(shí)際上已經(jīng)不是脈沖信號(hào)了)。 2、你談到的占空比為1:1,我認(rèn)為該資料的說(shuō)法角度已經(jīng)改變了,你聯(lián)系一下該資料的上下文,我估計(jì)資料上所說(shuō)的1:1是指開(kāi)關(guān)管的導(dǎo)通時(shí)間與截止時(shí)間之比即:Ton:Toff=1:1,所以占空比為50%。這是從另一個(gè)角度來(lái)說(shuō)明占空比) 3定時(shí)基模塊 定時(shí)基模塊(時(shí)基模塊,TBM)產(chǎn)生周期性中斷,可選擇8種速率。它由定時(shí)基模塊控制寄存器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ēng)看門(mén)狗電路,其功能在微控制器工作不正常時(shí),產(chǎn)生一個(gè)復(fù)位信號(hào)。該模塊有一個(gè)計(jì)數(shù)器,COP允許后,軟件必須周期性地向$FFFF(COP控制寄存器)寫(xiě)入任意值,以清除COP計(jì)數(shù)器。若系統(tǒng)由于某種原因使軟件工作不正常時(shí),COP計(jì)數(shù)器就得不到清零。那么當(dāng)它溢出時(shí)便產(chǎn)生復(fù)位信號(hào),以防止程序進(jìn)入不可預(yù)料的操作。在系統(tǒng)設(shè)置寄存器中可以設(shè)置COP速率及允許、禁止COP。表1-1 定時(shí)基速率選擇(晶陣頻率為32.7

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

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

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

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

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

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

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

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

29、(PTC0PTC4)是C口;l 管腳12(PTE0/TxD)是E口0和通訊口;l 管腳13(PTE1/RxD)是E口1和通訊口;l 單片機(jī)可以通過(guò)管腳12和13與其他裝置進(jìn)行串行口通訊,(RXD是接收,TXD是發(fā)送);l 管腳14 IRQ 是外部中斷輸入引腳,內(nèi)有上拉電阻;l 管腳15 (PTD0/ SS)是特殊功能的雙向輸入/輸出口,PTD0PTD3可編程為串行外設(shè)接口(serial peripheral interface SPI), PTD4PTD5可單獨(dú)編程為定時(shí)器接口模塊(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是單片機(jī)的地;l 管腳20 VDD是單片機(jī)的電源;l 管腳21 PTD4/T1CH0是D口4和定時(shí)器通道0;l 管腳22 PTD5/T1CH1是D口5和定時(shí)器通道1;l 管腳2330 PTB0/AD0PTB7/AD7是B口和模擬量采集復(fù)用口,這些管腳根據(jù)設(shè)置不同,可實(shí)現(xiàn)輸入輸出和A/D采集的不同功能;l 管腳31VDDAD/VREFH(ADC)是A/D轉(zhuǎn)換的參考電壓正;l 管腳32 VSSAD /VREFL(ADC)是A/D轉(zhuǎn)換的參考電壓負(fù);l 管腳3340 PTA0/

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

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

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

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

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

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

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

38、。這在同類(lèi)的產(chǎn)品中具有無(wú)可比擬的優(yōu)越性。同時(shí)由于鎖相環(huán)頻率合成器的輸出頻率可以用軟件設(shè)定,這就為用戶(hù)編程提供了更大的靈活性。圖2-1 時(shí)鐘發(fā)生模塊結(jié)構(gòu)示意圖實(shí)際利用單片機(jī)開(kāi)發(fā)時(shí),如果對(duì)單片機(jī)執(zhí)行速度沒(méi)有很高的要求(比如實(shí)際產(chǎn)品要求A/D采集的速度比較低),可以在編程中不設(shè)置鎖相環(huán),如果對(duì)執(zhí)行速度比較高則必須設(shè)置鎖相環(huán)(例如SCI設(shè)置波特率9600需要總線(xiàn)頻率4.9152MHZ,而外部晶振只能提供32.768KHZ則必須使用鎖相環(huán)倍頻)。現(xiàn)介紹PLL編程的參考步驟:(1) 禁止PLL:PCTL=0;(2) 選擇自動(dòng)控制方式 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è)置輸出時(shí)鐘為CGMVCLK的二分頻PCTL_BCS=1; 注:相應(yīng)的寄存器見(jiàn)附錄D部分說(shuō)明。2.3 配置寄存器CONFIG設(shè)置CONFIG寄存器主要用于一些功能的初始化,每次復(fù)位以后,CONFIG寄存器的所有位均被清零,而且CONFIG寄存器每次復(fù)位以后只能寫(xiě)一次。因?yàn)檫@些功能影響微控制器的正常操作,所以每次上電復(fù)位后就應(yīng)盡快地設(shè)置CONFIG寄存器。CONFIG寄存器包括CONFIG2和CONFIGl兩個(gè)寄存器,地址分

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

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

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

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

44、TB7作為輸入通道,其余作為輸出通道 PTB=0x00;/*啟動(dòng)A/D轉(zhuǎn)換*/ADSCR=0x27;/從7通道采集信號(hào),轉(zhuǎn)換結(jié)束不產(chǎn)生中斷,連續(xù)A/D轉(zhuǎn)換While(1)while(ADSCR_COCO=0); /檢驗(yàn)轉(zhuǎn)換是否完成,若沒(méi)有等待 a=ADR;/轉(zhuǎn)換完成則讀取結(jié)果/*將結(jié)果計(jì)算出來(lái)并顯示*/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;/超過(guò)范圍,顯示Abreak;3.1.5 思考題1. 嘗試滿(mǎn)足一定條件時(shí)輸出字母E和H?2. 如果要實(shí)現(xiàn)通道7和通道6兩路同時(shí)進(jìn)行A/D采集,程序應(yīng)該如何編寫(xiě)?3. A/D轉(zhuǎn)換器的頻率建議設(shè)定在1MHZ左右,如何選擇適當(dāng)?shù)臅r(shí)鐘源和分頻系數(shù)滿(mǎn)足這一要求?4. A/D采集

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

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

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

49、e(占空比)、f(頻率),觀察其采集的正確與否。(注意:要采集其他頻率和占空比的信號(hào)時(shí)要先點(diǎn)擊復(fù)位再運(yùn)行)7) 如果想重新設(shè)置程序,則點(diǎn)擊工具欄圖標(biāo),然后選擇Reset停止運(yùn)行。 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均為輸入通道/*定時(shí)器1初始化*/ T1SC_TRST=1; /清除以前定時(shí)器計(jì)數(shù) T1SC_TOIE=1; /允許溢出中斷 T1SC_TSTOP=1; /不啟動(dòng)計(jì)數(shù) T1SC_TRST=0; /計(jì)數(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; /啟動(dòng)計(jì)數(shù) asm CLI /中斷屏蔽位I清0,開(kāi)啟中斷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. 測(cè)量的周期與脈寬值小于定時(shí)器的溢出周期,只要將兩次的值相減。若測(cè)量值大于定時(shí)器的溢出周期,編程中應(yīng)該作何處理?2. 所給例程是測(cè)量周期和占空比,倘若僅僅測(cè)量周期程序可以如何簡(jiǎn)化? 3.3 脈寬調(diào)制輸出3.3.1 實(shí)驗(yàn)?zāi)康谋驹囼?yàn)通過(guò)只需改變輸出比較寄存器T1CH0H 和T1CH0L的值就可實(shí)現(xiàn)脈寬調(diào)制功能,最后輸出固定占空比的脈寬調(diào)制波。 3.3.2 實(shí)驗(yàn)準(zhǔn)備1. 熟悉定時(shí)器模塊功能特點(diǎn)(見(jiàn)第一章介紹),了解脈寬調(diào)制和輸出比較的概念。2. 在發(fā)生輸出比較時(shí),輸出電平將根據(jù)每一個(gè)通道的控制狀態(tài)寄存器的ELSxA,

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論