版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、吉林大學(xué)自編教材單片機(jī)實(shí)驗(yàn)指導(dǎo)書陳萬忠 程禹 高威 編吉林大學(xué)教材發(fā)行與調(diào)配中心2012年11月目 錄一、實(shí)驗(yàn)要求3二、熟悉實(shí)驗(yàn)環(huán)境5實(shí)驗(yàn)一 I/O口使用練習(xí)12實(shí)驗(yàn)二 中斷實(shí)用練習(xí)14實(shí)驗(yàn)三、PIT模塊使用19實(shí)驗(yàn)四、SPI練習(xí)35實(shí)驗(yàn)五、SCI使用38實(shí)驗(yàn)六、AD轉(zhuǎn)換實(shí)驗(yàn)55實(shí)驗(yàn)七、數(shù)碼管動(dòng)態(tài)顯示59實(shí)驗(yàn)八、鍵盤61實(shí)驗(yàn)九、擴(kuò)展實(shí)驗(yàn)64附錄:Code Warrior V5.1軟件使用指南68一、實(shí)驗(yàn)要求(一)實(shí)驗(yàn)課目的單片機(jī)實(shí)驗(yàn)指導(dǎo)書是我院本科學(xué)生單片機(jī)原理與應(yīng)用課程的配套教材。單片機(jī)課程是一門重要的以應(yīng)用性與技術(shù)實(shí)踐性為鮮明特點(diǎn)的專業(yè)基礎(chǔ)課,而單片機(jī)實(shí)驗(yàn)是整個(gè)單片機(jī)教學(xué)過程中的重要組成部
2、分。本書共選編了個(gè)12個(gè)實(shí)驗(yàn),實(shí)驗(yàn)任務(wù)的安排由淺入深、由易到難,從驗(yàn)證性的實(shí)驗(yàn)任務(wù)逐漸過渡到綜合性設(shè)計(jì)任務(wù)。通過實(shí)驗(yàn)達(dá)到以下目的:1進(jìn)一步掌握和鞏固課堂所學(xué)的基本知識(shí),培養(yǎng)運(yùn)用單片機(jī)基本原理來分析、處理和解決實(shí)際問題的能力;2進(jìn)行實(shí)驗(yàn)基本技能的實(shí)習(xí)和訓(xùn)練;3學(xué)會(huì)正確觀察實(shí)驗(yàn)現(xiàn)象、讀取和處理實(shí)驗(yàn)數(shù)據(jù)、分析實(shí)驗(yàn)結(jié)果和編寫實(shí)驗(yàn)報(bào)告;4培養(yǎng)實(shí)事求是,嚴(yán)肅認(rèn)真的科學(xué)作風(fēng)和良好的實(shí)驗(yàn)習(xí)慣。(二)實(shí)驗(yàn)課要求1實(shí)驗(yàn)前準(zhǔn)備(1)認(rèn)真預(yù)習(xí)、仔細(xì)閱讀實(shí)驗(yàn)指導(dǎo)書和有關(guān)知識(shí),明確實(shí)驗(yàn)的目的、任務(wù),了解實(shí)驗(yàn)的基本原理,實(shí)驗(yàn)線路及完成實(shí)驗(yàn)的方法,步驟;清楚實(shí)驗(yàn)中將會(huì)觀察到的現(xiàn)象、需要記錄的數(shù)據(jù)和注意事項(xiàng)。(2)認(rèn)真聽取指導(dǎo)
3、教師關(guān)于儀器設(shè)備的使用方法,搭接實(shí)驗(yàn)線路的注意事項(xiàng)等有關(guān)內(nèi)容的講解和介紹。2實(shí)驗(yàn)過程中的注意事項(xiàng)(1)接線應(yīng)安排合理、清楚整齊,導(dǎo)線的長短要適當(dāng),接線不宜過于集中于某一點(diǎn)。(2)查線線路接好后,各組同學(xué)首先自檢,然后請教師檢查,經(jīng)教師檢查無誤后,方可接通電源進(jìn)行實(shí)驗(yàn)。(3)實(shí)驗(yàn)通電后,首先觀察實(shí)驗(yàn)板工作狀態(tài)是否正常,如發(fā)現(xiàn)異常現(xiàn)象,應(yīng)立即關(guān)斷電源,查找原因。如通電后情況正常,則按照實(shí)驗(yàn)內(nèi)容和步驟,有目的的調(diào)整參數(shù);注意觀察、分析實(shí)驗(yàn)中的變化情況,認(rèn)真分析實(shí)驗(yàn)原理,仔細(xì)觀察、記錄實(shí)驗(yàn)現(xiàn)象。在實(shí)驗(yàn)過程中,不能只埋頭于操作和讀數(shù),應(yīng)隨時(shí)觀察線路和實(shí)驗(yàn)板的工作情況,如有發(fā)光、發(fā)熱、聲音、氣味等異?,F(xiàn)象
4、,應(yīng)立即切斷電源,檢查故障及原因。在實(shí)驗(yàn)過程中,注意用電規(guī)范,確保人身安全。實(shí)驗(yàn)工作結(jié)束后,先斷開電源,然后再拆線、實(shí)驗(yàn)設(shè)備復(fù)原歸位、整理導(dǎo)線和清理桌面。(三)實(shí)驗(yàn)數(shù)據(jù)整理實(shí)驗(yàn)結(jié)果和記錄的現(xiàn)象、數(shù)據(jù),需經(jīng)老師簽字后方能生效,并作為編寫實(shí)驗(yàn)報(bào)告的依據(jù)。實(shí)驗(yàn)結(jié)果和數(shù)據(jù)一經(jīng)確定,不得隨意涂改。(四)實(shí)驗(yàn)報(bào)告編寫編寫實(shí)驗(yàn)報(bào)告,是對(duì)實(shí)驗(yàn)結(jié)果的歸納、總結(jié)、分析和提高,學(xué)生在每次實(shí)驗(yàn)后都必須獨(dú)立完成這項(xiàng)工作。實(shí)驗(yàn)報(bào)告的編寫按每個(gè)實(shí)驗(yàn)的要求認(rèn)真填寫。(五)實(shí)驗(yàn)過程中,聽從指導(dǎo)教師的指導(dǎo),保持實(shí)驗(yàn)室的清潔。為了利用有限的實(shí)驗(yàn)時(shí)間獲得最大的收益,我們希望每一個(gè)做實(shí)驗(yàn)的人都能做到以下四點(diǎn):1. 做實(shí)驗(yàn)之前熟讀相關(guān)的
5、資料,做到胸有成竹,最好能在課前準(zhǔn)備好程序;2. 不放過實(shí)驗(yàn)過程中遇到的每一個(gè)問題,盡量嘗試著自己去解決;3. 不拘泥于本書中的實(shí)驗(yàn)要求,敢于按照自己的想法做相關(guān)的實(shí)驗(yàn);4. 課后寫好實(shí)驗(yàn)報(bào)告,著重總結(jié)實(shí)驗(yàn)中遇到的問題和獲得的經(jīng)驗(yàn)。二、熟悉實(shí)驗(yàn)環(huán)境圖一和圖二是實(shí)驗(yàn)所用的單片機(jī)實(shí)驗(yàn)系統(tǒng)。S12XS128BDM connectorReset buttonCrystalLEDRS232 DB9(SCI0)MAX232Power socketPower socketSignal connector 圖一 最小系統(tǒng)板Signal connectorSignal connectorkeypadPulse
6、generatorPWM D/A convertAnalog voltage generator8 LEDswitchI2CSPIRS232 driver7Seg Numeric LEDConnect points圖二 實(shí)驗(yàn)擴(kuò)展板2.1 實(shí)驗(yàn)開發(fā)系統(tǒng)簡介1. S12實(shí)驗(yàn)開發(fā)系統(tǒng)特點(diǎn)(1)支持MC9S12DG128基本系統(tǒng)(子板)、MC9S12XDP512基本系統(tǒng)(子板)、MC9S12XS128基本系統(tǒng)(子板)等S12基本系統(tǒng)。(2)可基于監(jiān)控程序或者BDM方式調(diào)試程序。(3)監(jiān)控程序或者BDM方式為用戶提供了各種基本的開發(fā)和調(diào)試功能,包括程序的下載和運(yùn)行、斷點(diǎn)設(shè)置、單步執(zhí)行、內(nèi)存顯示修改等。(
7、4)用戶可以實(shí)現(xiàn)對(duì)自編程序的100%在線實(shí)時(shí)仿真與監(jiān)測。(5)目標(biāo)評(píng)估母板提供了大量外圍功能模塊,可輔助完成對(duì)并行I/O口、外中斷、ATD、SPI、SCI等模塊的實(shí)驗(yàn)和測試,也可直接嵌入到用戶應(yīng)用之中。2. S12實(shí)驗(yàn)開發(fā)系統(tǒng)套件S12實(shí)驗(yàn)開發(fā)系統(tǒng)套件包括:(1)核心子板(選用MC9S12XS128核心子板)。(2)目標(biāo)評(píng)估母板。(3)5V直流電源。(4)RS-232串口電纜。(5)PC終端串口調(diào)試程序、軟件編程范例、核心子板和目標(biāo)評(píng)估母板原理圖。3. S12實(shí)驗(yàn)開發(fā)系統(tǒng)對(duì)PC的要求S12實(shí)驗(yàn)開發(fā)系統(tǒng)對(duì)PC的要求如下:(1)與IBM-PC兼容的計(jì)算機(jī),約640KB的內(nèi)存和1MB以上硬盤空間。(
8、2)Windows98/NT/2000/XP操作系統(tǒng)。4. S12實(shí)驗(yàn)開發(fā)系統(tǒng)與PC的連接S12實(shí)驗(yàn)開發(fā)系統(tǒng)與PC的連接如圖1所示。該系統(tǒng)采用RS-232串行總線與PC通信,不需要安裝任何驅(qū)動(dòng)程序。用戶只需要將核心子板扣在目標(biāo)母板的指定位置上,并配置好S12基本系統(tǒng)核心子板,再將其與電源和PC簡單地連接起來便可使用。BDM編程接口用來為目標(biāo)系統(tǒng)下載程序。TargetSystemHost PCUSB接線BDMBKGDunused(Vpp)GNDVddRESET圖1 S12實(shí)驗(yàn)開發(fā)系統(tǒng)與PC的連接示意圖2.2 S12實(shí)驗(yàn)系統(tǒng)設(shè)計(jì)框架S12實(shí)驗(yàn)開發(fā)系統(tǒng)的硬件部分由核心子板與目標(biāo)評(píng)估母板組成。核心子板
9、提供了MCU正常工作的基本電路,包括MCU及復(fù)位電路、時(shí)鐘電路、RS-232串行口電路、電源電路等幾個(gè)部分。目標(biāo)評(píng)估母板上提供了多個(gè)外圍硬件電路,包括:(1)電源輸入、與核心子板的接口定義。(2)8位數(shù)字量輸入、輸出電路。(3)A/D模擬電平產(chǎn)生電路。(4)數(shù)碼管顯示電路。(5)鍵盤電路。(6)IRQ中斷信號(hào)產(chǎn)生電路。(7)SPI輸入、輸出電路。在了解了各外圍硬件電路的原理之后,用導(dǎo)線將這些外圍電路和單片機(jī)相應(yīng)的I/O口連接,便可以完成各種實(shí)驗(yàn)。母板上提供了許多單孔插座(稱為“導(dǎo)線接插點(diǎn)”)以方便導(dǎo)線的插拔。需要特別說明的是,在目標(biāo)評(píng)估母板上提供了MCU接口插座,其信號(hào)定義與MCU的端口定義一
10、一對(duì)應(yīng),并通過兩個(gè)歐式插座與核心子板上的MCU同名引腳直接相連。為了方便初學(xué)者迅速學(xué)習(xí)和掌握各個(gè)外圍硬件電路的使用方法,我們在下文介紹各個(gè)外圍電路的同時(shí),也會(huì)提供推薦的電路連接方法和對(duì)應(yīng)的C編程實(shí)現(xiàn),供選用。在本節(jié)關(guān)于硬件電路的介紹中,提供了許多硬件原理圖,其中所有在核心子板或目標(biāo)評(píng)估母板上已有的連接,都以實(shí)線表示;而所有需要用戶用導(dǎo)線實(shí)現(xiàn)的連接(推薦的電路連接),都以虛線表示。1. 目標(biāo)評(píng)估母板與MCU的接口定義核心子板與目標(biāo)評(píng)估母板之間通過兩對(duì)64針歐式插座連接,接口的具體定義請參見對(duì)核心子板的介紹部分,此處不再贅述。2. 8位數(shù)字量輸入電路目標(biāo)評(píng)估母板用撥位開關(guān)為用戶提供了8位數(shù)字量的輸
11、入模塊,其原理圖如圖2所示。當(dāng)撥位開關(guān)狀態(tài)為OFF時(shí),相應(yīng)的導(dǎo)線接插點(diǎn)上的電壓為高(1);當(dāng)撥位開關(guān)狀態(tài)為ON時(shí),相應(yīng)的導(dǎo)線接插點(diǎn)上的電壓為低(0)。撥位開關(guān)兩旁的1和0指示了開關(guān)撥動(dòng)的方向所對(duì)應(yīng)的電平高低。3. 8位數(shù)字量顯示電路目標(biāo)評(píng)估母板用LED為用戶提供了8位數(shù)字量的輸出模塊,其原理圖如圖3所示。當(dāng)導(dǎo)線接插點(diǎn)的接入電平為高時(shí),LED處于暗狀態(tài);當(dāng)導(dǎo)線接插點(diǎn)的接入電平為低時(shí),LED處于亮狀態(tài)。圖2 8位數(shù)字量輸入電路圖3 8位數(shù)字量輸出電路4. A/D模擬電平產(chǎn)生電路目標(biāo)評(píng)估母板為單片機(jī)的ATD模塊提供了兩路模擬電平輸入,其原理圖如圖4所示。其中,A_IN用于接入外部電路的待測電平,經(jīng)過
12、保護(hù)電路后,電平被限制在-0.35.3V之間,再從A_OUT輸出。用戶也可以通過調(diào)節(jié)可調(diào)電阻,在05V輸出端產(chǎn)生05V的模擬電平。5. 數(shù)碼管顯示電路目標(biāo)評(píng)估母板為用戶提供了數(shù)碼管顯示模塊。整個(gè)模塊包括4個(gè)選通信號(hào)、8個(gè)控制信號(hào),其原理圖如圖5所示。圖4 A/D模擬電平輸入電路圖5 數(shù)碼管顯示電路注意:為了減小MCU的灌入電流,將LED顯示燈的8個(gè)控制信號(hào)連接到74LS07作為其電流驅(qū)動(dòng),該部分沒有在圖5中標(biāo)明。關(guān)于74LS07的詳細(xì)信息可以查閱相關(guān)的技術(shù)文檔。所使用的數(shù)碼管器件為LG5641B,其結(jié)構(gòu)框圖如圖6所示。該器件包含4個(gè)8段數(shù)碼管,每一個(gè)8段數(shù)碼管都有一個(gè)選通引腳SS1SS4,而8
13、段數(shù)據(jù)引腳AG和DP是復(fù)用的。圖6 LG5641B結(jié)構(gòu)示意圖8段數(shù)碼管各個(gè)引腳與所控制的發(fā)光二極管的關(guān)系如圖12-8所示。數(shù)碼管顯示模塊下方的12個(gè)導(dǎo)線接觸點(diǎn)按照編號(hào)與數(shù)碼管器件LG5641B的12個(gè)引腳一一對(duì)應(yīng)。所有引腳都是低電平有效。6. 鍵盤電路目標(biāo)評(píng)估母板為用戶提供了16鍵貼膜鍵盤??梢灾苯訉㈡I盤的8個(gè)導(dǎo)線連接點(diǎn)(X1X4,Y1Y4)與MCU的鍵盤中斷輸入口或通用I/O的8個(gè)引腳相連,再通過編程,就可以實(shí)現(xiàn)16鍵鍵盤輸入的確認(rèn)過程。采用行掃描法掃描鍵盤以判斷哪個(gè)鍵被按下的原理如下:將接在4個(gè)X端的I/O引腳置為輸入,接在4個(gè)Y端的I/O引腳置為輸出(由于X和Y在這里是對(duì)稱的,故反之亦然
14、)。可以定義單片機(jī)鍵盤輸入I/O端口的內(nèi)部上拉電阻有效,當(dāng)接在X端的I/O端口方向?yàn)檩斎?,且沒有鍵按下時(shí),讀X端會(huì)讀到高電平,即邏輯1。讓4個(gè)Y端口都輸出0,即低電平,如果有任何一個(gè)鍵被按下,如左邊第一列中的某一個(gè)鍵,則X1端將會(huì)讀到0,X2、X3、X4仍為1。為判斷是第一列哪一行的鍵被按下,需要逐次將Y口的4個(gè)輸出端中的一個(gè)保持為0,另外3個(gè)置1,依次測試是哪一行的鍵被按下。實(shí)際上,判斷哪一列有鍵被按下最多要掃描4次,這個(gè)先逐列然后逐行測試的過程稱為鍵盤掃描。若8個(gè)鍵盤輸入口都作為掃描輸入端,另外8個(gè)口作為掃描輸出端就可以掃描64個(gè)鍵的鍵盤。如果沒有鍵盤中斷功能,單片機(jī)需要不停地掃描鍵盤,例
15、如每秒20次。由于按下鍵盤的動(dòng)作相對(duì)于CPU運(yùn)行速度是一個(gè)很慢的過程,觸點(diǎn)接觸時(shí)間在幾十到幾百ms量級(jí)而程序掃描一遍鍵盤的運(yùn)行時(shí)間只需十幾s。在實(shí)際應(yīng)用中,要用軟件消除鍵在按下瞬間觸點(diǎn)產(chǎn)生的信號(hào)抖動(dòng),基本做法是,讀到按鍵低電平后,軟件延遲20ms后再讀一次,以確認(rèn)鍵確實(shí)被按下。7. IRQ中斷信號(hào)產(chǎn)生電路目標(biāo)評(píng)估母板利用按鍵和74HCT14芯片,為用戶提供了正/負(fù)極性單脈沖產(chǎn)生電路,可用于外中斷信號(hào)的輸入。該電路同時(shí)提供了兩個(gè)導(dǎo)線接觸點(diǎn),分別對(duì)應(yīng)正極性和負(fù)極性單脈沖信號(hào)的輸出。如圖12-10所示,上面的接觸點(diǎn)為正極性信號(hào)輸出端;在按鍵未按下時(shí)保持低電平輸出:按鍵按下時(shí)輸出高電平。下面的負(fù)極性信
16、號(hào)輸出接觸點(diǎn),在按鍵未按下時(shí)保持高電平輸出,按鍵按下時(shí)輸出低電平。負(fù)極性信號(hào)可以直接接到MCU的IRQ引腳,作為MCU的外部中斷信號(hào)。8. SPI輸入電路目標(biāo)評(píng)估母板為用戶提供了通用芯片74LS165,用于實(shí)現(xiàn)8位數(shù)字量的SPI輸入。74LS165是8位并行或串行輸入/串行輸出移位寄存器,用戶可以通過8位撥位開關(guān)設(shè)定74LS165的并行輸入值,再通過編程從SPI讀入到MCU中。SPI輸入硬件原理和推薦連接方法如圖12-11所示。其中,撥位開關(guān)的設(shè)置方法與8位數(shù)字量輸入模塊中的設(shè)置方法一樣。9. SPI輸出電路目標(biāo)評(píng)估母板為用戶提供了通用芯片74LS164,用于實(shí)現(xiàn)8位數(shù)字量的SPI輸出。74L
17、S164是8位串行輸入/并行輸出移位寄存器,用戶可以通過編程將MCU中儲(chǔ)存的數(shù)據(jù)從SPI輸出,經(jīng)74LS164轉(zhuǎn)換成并行數(shù)據(jù)后連接到其他輸出顯示設(shè)備(如8位數(shù)字量輸出模塊等)。實(shí)驗(yàn)一 I/O口使用練習(xí)1.復(fù)位/*-*/*實(shí)驗(yàn)內(nèi)容:MCU復(fù)位 2011-11-06實(shí)驗(yàn)現(xiàn)象:運(yùn)行后,PB口指示燈連續(xù)閃爍五次后滅,按復(fù)位鍵后,再閃爍五次。*/*-*/#include <hidef.h> /* common defines and macros */#include "derivative.h" /* derivative-specific definitions */
18、unsigned char k; /用于計(jì)數(shù)/*/* 延時(shí)函數(shù) */*/void delay(void) unsigned int i,j; for(i=0;i<5;i+) for(j=0;j<50000;j+);/*/* 主函數(shù) */*/void main(void) DisableInterrupts; DDRB =0xff; /PB口輸出 PORTB =0x0f; /你可以改變PB口數(shù)據(jù),顯示不同形式的閃爍,如,0x0F,0xAA,0x55等 EnableInterrupts; for(k=0;k<5;k+) /5次閃爍 delay(); PORTB=PORTB; de
19、lay(); PORTB=PORTB; for(;); /死循環(huán)。 /將來應(yīng)用時(shí),以上可作為你設(shè)備的自檢程序, 2.流水燈實(shí)驗(yàn)二 中斷實(shí)用練習(xí)1. IRQ中斷控制流水燈/*實(shí)驗(yàn)內(nèi)容:IRQ中斷控制流水燈 2011-11-06實(shí)驗(yàn)說明:用單片機(jī)的PB口控制二極管的亮滅狀態(tài),管腳置1滅,置0亮。實(shí)驗(yàn)接線:IRQ-A或者IRQ-B連接目標(biāo)板上的"HCS12I/O"區(qū)域的IRQ引腳上。實(shí)驗(yàn)現(xiàn)象:如果連接的是IRQ-A,則按鍵松開燈移動(dòng)一位; 如果連接的是IRQ-B,則按鍵按下燈移動(dòng)一位。(用下降沿觸發(fā)中斷) 如果使用用XIRQ,將匯編那句注釋去掉,中斷處理號(hào)改為5*/#includ
20、e <hidef.h> /* common defines and macros */#include "derivative.h" /* derivative-specific definitions */unsigned char data=0x01;/*/* 延時(shí)函數(shù) */*/void delay(void) unsigned int i,j; for(j=0;j<10;j+) for(i=0;i<60000;i+) ;/*PE1口中斷設(shè)置*/void IRQ_Init(void) /IRQ中斷允許寄存器IRQCR IRQCR_IRQE=1;
21、/下降沿觸發(fā) /IRQCR_IRQEN=1; /中斷使能。復(fù)位默認(rèn)為1,可將此句去掉/*/* 主函數(shù) */*/void main(void) DisableInterrupts; /中斷禁止 DDRB=0xff; /設(shè)置為輸出 PORTB=data; /點(diǎn)亮LED1 asm ANDCC#$eF /XIRQ中斷允許,是低電平觸發(fā),無寄存器設(shè)置 IRQ_Init(); EnableInterrupts; /中斷允許 for(;); /死循環(huán),等中斷 /*中斷處理*/ #pragma CODE_SEG _NEAR_SEG NON_BANKED /中斷void interrupt 6 IRQ_inte
22、rrupt(void) / IRQ中斷號(hào)規(guī)定為6,見MC9S12XS128.h文件 /XIRQ中斷號(hào)規(guī)定為5,見MC9S12XS128.h文件 data=data<<1; /左移一位 if(data=0) data=0x01; PORTB= data; delay(); #pragma CODE_SEG DEFAULT2.流水燈及IRQ中斷+數(shù)碼管顯示/*實(shí)驗(yàn)內(nèi)容:流水燈及IRQ中斷+數(shù)碼管顯示 2011-11-06實(shí)驗(yàn)說明:用單片機(jī)的PB口控制二極管的亮滅,置1滅,置0亮。實(shí)驗(yàn)接線:1.IRQ-A或IRQ-B連接IRQ上,用于中斷。 2.四位數(shù)碼管的段選連接到PORTP,片選連接
23、到PORTT,上下對(duì)應(yīng)接上,原理見書259頁,數(shù)碼管的引腳: 12 11 10 9 87 6 5 4 3 2 1 板上的I/O引腳:T3 P0 P5 T2 T1 P1 T0 P6 P2 P7 P3 P4實(shí)驗(yàn)現(xiàn)象:上電LED全滅,數(shù)碼管顯示"OFF" 當(dāng)按下IRQ鍵時(shí),數(shù)碼管顯示"ON",同時(shí)LED燈循環(huán)點(diǎn)亮;再按,則上述現(xiàn)象交替出現(xiàn)。*/*-*/#include <hidef.h> /* common defines and macros */#include "derivative.h" /* derivative-sp
24、ecific definitions */unsigned char flag;unsigned char data=0x01;/*常量定義*const unsigned char DisplayDecode=0x3f,0x37,0x71,0xff; / 0 , n , F , 滅 const unsigned char WeiMa=0xf7,0xfb,0xfd,0xfe;void LED_yiwei(void);/*函數(shù)聲明* void display(unsigned char wei,int data); void delay_ms(int m); void dis(int time ,
25、int a, int b, int c,int d) ;/*/*-ms 級(jí)延時(shí)-*/*/void delay_ms(int m)int i,j; for(j=0;j<m;j+) for(i=0;i<800;i+); /*PE1的IRQ中斷設(shè)置*/void IRQ_Init(void) IRQCR_IRQE=1; /下降沿觸發(fā) IRQCR_IRQEN=1; /IRQ中斷允許/*/* 主函數(shù) */*/void main(void) flag=0; data=0x01;DisableInterrupts;DDRP=0xFF; /關(guān)顯示 DDRT=0xFF; DDRB=0xff; /設(shè)置為
26、輸出 PORTB=data; /點(diǎn)亮LED1 IRQ_Init(); EnableInterrupts; for(;) LED_yiwei(); void LED_yiwei(void) if(flag=0) PORTB=0xff; data=0x01; dis(1,3,0,2,2); else PORTB= data; data=data<<1; /左移一位 if(data=0) data=0x01; dis(1,3,3,0,1); /* 顯示函數(shù),第一個(gè)參數(shù)是顯示維持的時(shí)間,第二個(gè)到第五個(gè)參數(shù)分別是第一位到第四位顯示的數(shù)字*/ void dis(int time ,int a,
27、 int b, int c,int d) int i; for(i=1;i<time*25;i+) display(1,a); display(2,b); display(3,c); display(4,d); /* 顯示函數(shù)包含位選和段選*/void display(unsigned char wei,int data) PTT=WeiMawei-1; PTP=DisplayDecodedata; delay_ms(10); /*中斷處理*/ #pragma CODE_SEG _NEAR_SEG NON_BANKED /IRQ中斷 void interrupt 6 IRQ_interr
28、upt(void) flag=flag; #pragma CODE_SEG DEFAULT 實(shí)驗(yàn)三、PIT模塊使用1. PIT使用/*-*/*實(shí)驗(yàn)內(nèi)容:PIT使用實(shí)驗(yàn)說明:PIT是周期中斷定時(shí)器(Periodic Interrupt Timer)的名稱,實(shí)際上PIT模塊就是一個(gè)24位遞減計(jì)數(shù)器,用作精確計(jì)時(shí)。首先給計(jì)數(shù)器設(shè)定一個(gè)初值,每過一個(gè)總線周期,計(jì)數(shù)器進(jìn)行減1操作,當(dāng)計(jì)數(shù)器減為0之后,觸發(fā)中斷,并再次自動(dòng)載入初值。重要設(shè)置:在工程的"Project SettingsLinker File"文件夾下的"Project.prm"文件中設(shè)置對(duì)應(yīng)PIT中斷
29、的中斷向量 VECTOR ADDRESS 0xFF7A PIT_INTER實(shí)驗(yàn)現(xiàn)象:PB口的LED半秒循環(huán)亮滅。 */*-*/#include <hidef.h> /* common defines and macros */#include "derivative.h" /* derivative-specific definitions */#define LEDCPU PORTB#define LEDCPU_dir DDRB#define BUS_CLOCK 32000000 /總線頻率#define OSC_CLOCK 16000000 /晶振頻率/*/
30、* 初始化鎖相環(huán) */*/void INIT_PLL(void) CLKSEL &= 0x7f; /set OSCCLK as sysclk PLLCTL &= 0x8F; /Disable PLL circuit CRGINT &= 0xDF; #if(BUS_CLOCK = 40000000) SYNR = 0x44; #elif(BUS_CLOCK = 32000000) SYNR = 0x43; #elif(BUS_CLOCK = 24000000) SYNR = 0x42; #endif REFDV = 0x81; /PLLCLK=2×OSCCLK&
31、#215;(SYNR+1)/(REFDV+1)64MHz ,fbus=32M PLLCTL =PLLCTL|0x70; /Enable PLL circuit asm NOP; asm NOP; while(!(CRGFLG&0x08); /PLLCLK is Locked already CLKSEL |= 0x80; /set PLLCLK as sysclk /*/* PIT模塊初始化函數(shù) */*/ void init_PIT() PITMTLD0=249; /為0通道8位計(jì)數(shù)器賦值 PITLD0=63999; /為0通道16位計(jì)數(shù)器賦值 /(249+1)*(63999+1)=1
32、6000000個(gè)總線周期 PITMUX_PMUX0=0; /第0通道使用微計(jì)數(shù)器0 PITCE_PCE0=1; /第0通道計(jì)數(shù)器工作 PITCFLMT=0X80; /使能周期中斷定時(shí)器 PITINTE_PINTE0=1; /0通道定時(shí)器定時(shí)中斷被使能 #pragma CODE_SEG _NEAR_SEG NON_BANKEDinterrupt void PIT_INTER(void) if(PITTF_PTF0=1) PITTF_PTF0=1; LEDCPU=LEDCPU; #pragma CODE_SEG DEFAULT/*/* 主函數(shù) */*/void main(void) INIT_PL
33、L(); LEDCPU_dir=0xff; init_PIT();EnableInterrupts; for(;) 2. PIT程序1s測試/*實(shí)驗(yàn)內(nèi)容PIT使用練習(xí)實(shí)驗(yàn)說明:用中斷號(hào)調(diào)試的程序?qū)嶒?yàn)現(xiàn)象:PB口的LED每秒循環(huán)亮滅*/#include <hidef.h> #include "derivative.h" /*變量定義*unsigned int test_pulse=0; /*函數(shù)申明*void SetBusCLK_64M(void);void PIT_Init(void); /10ms定時(shí)設(shè)置/*主函數(shù)*void main(void) test_p
34、ulse=0; SetBusCLK_64M(); PIT_Init(); DDRB=0xff; PORTB=0xff; EnableInterrupts; for(;) /等待中斷的到來/*鎖相環(huán)初始化*void SetBusCLK_64M(void) CLKSEL=0X00; /解除鎖相環(huán)時(shí)鐘disengage PLL to system PLLCTL_PLLON=1; /打開鎖相環(huán)(turn on PLL) SYNR =0xc0 | 0x07; REFDV=0x80 | 0x01; POSTDIV=0x00; /pllclock=2*osc*(1+SYNR)/(1+REFDV)=128MH
35、z; while(!(CRGFLG_LOCK=1); /當(dāng)鎖相環(huán)穩(wěn)定時(shí)使用(when pll is steady ,then use it); CLKSEL_PLLSEL =1; /啟用鎖相環(huán)時(shí)鐘(engage PLL to system);/*速度捕捉定時(shí)中斷*void PIT_Init(void) /100ms定時(shí)設(shè)置 /必須全是通道0,才能保證是66號(hào)中斷 PITCFLMT_PITE=0; /關(guān)閉PIT PITCE_PCE0=1; /使能通道0 PITMTLD0= 160-1; /8位定時(shí)器初值設(shè)定。160分頻,在64MHzBusClock下,為0.4MHz,即2.5us PITLD0
36、= 40000 - 1 ; PITMUX_PMUX0=0; PITINTE_PINTE0=1; /開通PIT0定時(shí)器的溢出中斷 PITCFLMT_PITE=1; /使能PIT/*速度捕捉中斷入口*#pragma CODE_SEG _NEAR_SEG NON_BANKED /指示該程序在不分頁區(qū)/interrupt void PIT_INTER(void) /中斷號(hào)必須寫void interrupt 66 PIT_INTER(void) PITTF=0x1; test_pulse+; if(test_pulse=10) PORTB=PORTB; test_pulse=0; #pragma COD
37、E_SEG DEFAULT/*中斷結(jié)束*3數(shù)字秒表/*-*/*PIT是周期中斷定時(shí)器(Periodic Interrupt Timer)的名稱,實(shí)際上PIT模塊就是一個(gè)模數(shù)遞減計(jì)數(shù)器,用作精確計(jì)時(shí)。首先給計(jì)數(shù)器設(shè)定一個(gè)初值,每過一個(gè)總線周期,計(jì)數(shù)器進(jìn)行減一操作,當(dāng)計(jì)數(shù)器減為0之后,觸發(fā)中斷,并再次載初值連線:IRQ_A或者IRQ_B連接到IRQ上實(shí)驗(yàn)中可將段選連接到PORTP,將片選連接到PORTT,連線關(guān)系如下: 12 11 10 9 8 7 6 5 4 3 21 T3 P0 P5 T2 T1P1T0P6P2P7P3P4 在工程的“Project SettingsLinker Files”文
38、件夾下的“Project.prm”文件中設(shè)置對(duì)應(yīng)中斷的中斷向量 VECTOR ADDRESS 0xFF7A PIT_INTER現(xiàn)象:上電顯示全0,按一下按鍵,啟動(dòng)秒表,第二次按,停止,第三次,清零,之后循環(huán)*/*-*/#include <hidef.h> /* common defines and macros */#include "derivative.h" /* derivative-specific definitions */#define LEDCPU PORTB#define LEDCPU_dir DDRB#define BUS_CLOCK 320
39、00000 /總線頻率#define OSC_CLOCK 16000000 /晶振頻率 /*常量定義*const unsigned char DisplayDecode=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,/0-90xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef;/ 帶小數(shù)點(diǎn)的0-9const unsigned char WeiMa=0xf7,0xfb,0xfd,0xfe;int ms,s,flag;int status;/狀態(tài)位 0表示啟動(dòng)秒表,1停止,2清零int data1,data2,data3,data4;/*函數(shù)聲明* v
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 蘭州科技職業(yè)學(xué)院《循證護(hù)理實(shí)踐》2023-2024學(xué)年第一學(xué)期期末試卷
- 江西科技師范大學(xué)《商務(wù)智能與數(shù)據(jù)挖掘Ⅰ》2023-2024學(xué)年第一學(xué)期期末試卷
- 吉首大學(xué)《輕量化平臺(tái)開發(fā)》2023-2024學(xué)年第一學(xué)期期末試卷
- 【物理】重力 同步練習(xí)+2024-2025學(xué)年人教版物理八年級(jí)下冊
- 黑龍江幼兒師范高等??茖W(xué)?!董h(huán)境3S技術(shù)》2023-2024學(xué)年第一學(xué)期期末試卷
- 重慶郵電大學(xué)《公體戶外運(yùn)動(dòng)》2023-2024學(xué)年第一學(xué)期期末試卷
- 中央音樂學(xué)院《中醫(yī)大健康》2023-2024學(xué)年第一學(xué)期期末試卷
- 浙江農(nóng)林大學(xué)暨陽學(xué)院《汽車電氣設(shè)備》2023-2024學(xué)年第一學(xué)期期末試卷
- 鄭州食品工程職業(yè)學(xué)院《德國史專題》2023-2024學(xué)年第一學(xué)期期末試卷
- 小學(xué)2024-2025學(xué)年度勞動(dòng)技能大賽方案
- AQ 1029-2019 煤礦安全監(jiān)控系統(tǒng)及檢測儀器使用管理規(guī)范
- 太陽能驅(qū)動(dòng)的污水處理技術(shù)研究與應(yīng)用
- 未成年旅游免責(zé)協(xié)議書
- 預(yù)防保健科主任競聘課件
- 團(tuán)隊(duì)成員介紹
- 水泵行業(yè)銷售人員工作匯報(bào)
- 《流感科普宣教》課件
- 離職分析報(bào)告
- 春節(jié)家庭用電安全提示
- 醫(yī)療糾紛預(yù)防和處理?xiàng)l例通用課件
- 廚邦醬油推廣方案
評(píng)論
0/150
提交評(píng)論