嵌入式流水燈實驗_第1頁
嵌入式流水燈實驗_第2頁
嵌入式流水燈實驗_第3頁
嵌入式流水燈實驗_第4頁
嵌入式流水燈實驗_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、試驗三 GPIO輸出把握試驗一、 試驗?zāi)康纳鐻PC2000系列ARM7微把握器的GPIO輸入把握。二、試驗設(shè)備l 硬件:PC機 一臺LPC2131教學(xué)試驗開發(fā)平臺 一套l 軟件:Windows 98/XP/2000系統(tǒng),ADS1.2集成開發(fā)環(huán)境。三、試驗內(nèi)容1. P0.7管腳把握EasyARM教學(xué)試驗開發(fā)平臺上的蜂鳴器報警。2. GPIO 輸出試驗流水燈試驗試驗預(yù)習(xí)要求:LPC2000 GPIO管腳的設(shè)置和把握。四、試驗原理1.GPIO 輸出試驗,蜂鳴器把握在 EasyARM2131 開發(fā)板上,接有一個蜂鳴器,由P0.7 把握,通過跳線JP11 選擇連接。蜂鳴器把握電路如所示。圖 3-1 蜂

2、鳴器把握電路假如跳線JP11 選擇蜂鳴器,當(dāng)P0.7 輸出低電平常,蜂鳴器鳴叫,當(dāng)P0.7 輸出高電平則停止鳴叫。程序設(shè)置PINSEL0 使P0.7 連接GPIO,并通過IO0DIR將其設(shè)置為輸出狀態(tài),然后通過IO0CLR和IO0SET清零和置位P0.7 口,把握蜂鳴器,流程圖見圖 3-2。圖 3-2 蜂鳴器把握試驗流程圖2 GPIO 輸出試驗流水燈試驗單路LED 把握EasyARM2131 開發(fā)板上有8 個獨立的LED,分別由8 個GPIO口把握,現(xiàn)在使用其中一路進行試驗,使用的電路如圖 3-3所示。圖 3-3 單路LED 電路圖當(dāng)跳線 JP12 連接LED1 時,P1.18 接受灌電流方式

3、驅(qū)動LED1,當(dāng)P1.18 輸出低電平常,LED1 點亮,當(dāng)P1.18 輸出高電平常,LED1 熄滅。試驗程序首先設(shè)置管腳連接GPIO,接著設(shè)置P1.18 口為輸出模式,然后通過IO1CLR和IO1SET把握P1.18,驅(qū)動LED1 的亮滅。GPIO 輸出試驗流水燈試驗EasyARM2131 開發(fā)板上的8 路LED(LED8LED1)分別可選擇P125:18進行把握,電路如圖 3-4 所示。圖 3-4 8 路LED 把握電路當(dāng)跳線JP12 全部選擇LED8LED1 后,P1.25P1.18 分別把握這8 路LED,就可以進行流水燈試驗。流水燈顯示花樣可以通過數(shù)組人為定義,亦可通過肯定的算法計算

4、,程序清單所示為接受人為定義數(shù)組把握顯示花樣的試驗程序,流程圖如圖 3-5 所示。圖 3-5 流水燈花樣顯示流程圖五、試驗步驟試驗內(nèi)容1步驟 啟動ADS1.2IDE集成開發(fā)環(huán)境,選擇ARM Executable Image for lpc2131工程模板建立一個工程BeepCon_C。 在user組里編寫主程序代碼main.c。將EasyARM教學(xué)試驗開發(fā)平臺上的P0.7管腳與Beep跳線短接gde臺ngtheng 444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444

5、444444444444。 選擇Project->Debug,啟動AXD進行JLINK仿真調(diào)試。在工程窗口中選擇DebugInRAM生成目標(biāo),然后編譯連接工程(單擊Make按鈕)。如圖所示。選擇 DebugInRAM 生成目標(biāo)時,編譯連接生成的目標(biāo)代碼就是用于在片內(nèi)RAM 調(diào)試。打開ADS開發(fā)環(huán)境下的【Edit】->【DebugInFLASH Settings.】,在”ARM fromELF”下Output format做如圖選擇,輸出文件選擇你的文件同一名目下,擴展名.HEX 全速運行程序,程序?qū)趍ain.c的主函數(shù)中停止(由于main函數(shù)起始處默認(rèn)設(shè)置有斷點)。 單擊Con

6、text Variable圖標(biāo)按鈕(或者選擇Processor Views->Variables)打開變量觀看窗口,通過此窗口可以觀看局部變量和全局變量。選擇System Views->Debugger Internals 即可打開LPC2000系列ARM7微把握器的片內(nèi)外寄存器窗口。 可以單步運行程序,可以設(shè)置/取消斷點;或者全速運行程序,停止程序運行,觀看變量的值,推斷蜂鳴器把握是否正確。在FLASH 中調(diào)試在工程窗口中選擇 DebugInFLASH 生成目標(biāo),然后編譯連接工程(單擊Make 按鈕)。選擇 DebugInFLASH 生成目標(biāo)時,編譯連接生成的目標(biāo)代碼就是用于在片

7、內(nèi)FLASH 調(diào)試。編譯連接通過后,按鍵盤的F5 鍵,啟動AXD進行調(diào)試。留意,由于程序要燒寫到片內(nèi)FLASH,默認(rèn)選項在每次裝載FLASH 地址的調(diào)試文件時,將會擦除FLASH 并下載代碼到FLASH 中。脫機運行使用 DebugInFLASH 生成目標(biāo),并進行調(diào)試后(使用JLINK 仿真器),程序即燒寫到片內(nèi)FLASH 中。將JLINK 電源斷開,重新上電,程序?qū)⒚摍C運行;試驗內(nèi)容2試驗步驟 啟動ADS1.2IDE集成開發(fā)環(huán)境,選擇ARM Executable Image for lpc2131工程模板建立一個工程LedDisp_C。 在user組里編寫主程序代碼main.c。 選用Deb

8、ugInRam生成目標(biāo),然后編譯鏈接工程。 將EasyARM教學(xué)試驗開發(fā)平臺上的P1.18:25管腳對應(yīng)與LED1:8跳線短接gde臺ngtheng 666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666。 選擇Project->Debug,啟動AXD進行JLINK仿真調(diào)試。 全速運行程序,程序?qū)趍ain.c的主函數(shù)中停止。 單擊Context Variable圖標(biāo)按鈕(或者選擇Processor Views->Variables

9、)打開變量觀看窗口,通過此窗口可以觀看局部變量和全局變量。選擇System Views->Debugger Internals 即可打開LPC2000系列ARM7微把握器的片內(nèi)外寄存器窗口。 可以單步運行程序,可以設(shè)置/取消斷點;或者全速運行程序,停止程序運行,觀看變量的值,推斷LED1LED8把握是否正確。(3)試驗參考程序GPIO輸出把握試驗的參考程序見3-1。程序清單1 Error! No text of specified style in document.GPIO輸出把握試驗1的參考程序/* 文件名:main.c* 功 能:蜂鳴器把握。對蜂鳴器進行把握,接受軟件延時方法。*

10、使用I/O口直接把握,接受灌電流方式。* 說 明:將P0.7與Beep短接。*/#include "config.h"#define BEEPCON 1<<7/ P0.7引腳把握Beep,低電平蜂鳴/* 名 稱:DelayNS()* 功 能:長軟件延時。* 入口參數(shù):dly延時參數(shù),值越大,延時越久* 出口參數(shù):無*/void DelayNS(uint32 dly) uint32 i; for(; dly>0; dly-) for(i=0; i<5000; i+); /* 名 稱:main()* 功 能:把握蜂鳴器蜂鳴。*/int main(void

11、) PINSEL0 = 0x00000000; / 設(shè)置管腳連接GPIO IO0DIR = BEEPCON; / 設(shè)置I/O為輸出 while(1) IO0SET = BEEPCON;/ BEEPCON = 1 DelayNS(200); IO0CLR = BEEPCON;/ BEEPCON = 0 DelayNS(200); return(0);程序清單 2#include "config.h"/* LED8LED1 8 個LED 分別由P1.25P1.18 把握 */const uint32 LEDS8 = (0xFF << 18); / P125:18把握

12、LED8LED1,低電平點亮/* 函數(shù)名稱:DelayNS()* 函數(shù)功能:長軟件延時* 入口參數(shù):dly 延時參數(shù),值越大,延時越久* 出口參數(shù):無*/void DelayNS (uint32 dly) uint32 i;for ( ; dly>0; dly-)for (i=0; i<50000; i+);/* 函數(shù)名稱:main()* 函數(shù)功能:流水燈顯示試驗。* 調(diào)試說明:連接跳線 JP12 至LED8LED1。*/* 流水燈花樣,低電平點亮,留意調(diào)用時候用了取反操作 */const uint32 LED_TBL = 0x00, 0xFF, / 全部熄滅后,再全部點亮0x01

13、, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, / 依次逐個點亮0x01, 0x03, 0x07, 0x0F, 0x1F, 0x3F, 0x7F, 0xFF, / 依次逐個疊加0xFF, 0x7F, 0x3F, 0x1F, 0x0F, 0x07, 0x03, 0x01, / 依次逐個遞減0x81, 0x42, 0x24, 0x18, 0x18, 0x24, 0x42, 0x81, / 兩個靠攏后分開0x81, 0xC3, 0xE7, 0xFF, 0xFF, 0xE7, 0xC3, 0x81 / 從兩邊疊加后遞減;int main (void) uint8

14、 i;PINSEL1 = 0x00000000; / 設(shè)置管腳連接GPIOIO1DIR = LEDS8; / 設(shè)置LED 把握口為輸出while (1) for (i=0; i<42; i+) /* 流水燈花樣顯示 */IO1SET = (LED_TBLi) << 18);DelayNS(20);IO1CLR = (LED_TBLi) << 18);DelayNS(20);return 0;參考程序3/* 文 件 名:main.c* 功 能:LED顯示把握。* 通過GPIO直接把握8個LED產(chǎn)生流水燈效果* 說 明:P1.18:25管腳對應(yīng)與LED1:8跳線短接,

15、把P0.16與KEY跳線短接,* 使用KEY1鍵來操作流水燈的運行方向*/#include "config.h"const uint32 LEDS8 = 0xFF << 18;/P125:18把握LED1LED8,低電平點亮const uint32 KEY = 1 << 16;/P0.16連接KEY1const uint32 DISP_TAB10 = 0x01, 0x02, 0x04, 0x08,0x10,0x20,0x40,0x80, 0xff, 0xff;const uint32 DISP_TAB210 = 0x80 , 0x40, 0x20,

16、0x10, 0x08,0x04, 0x02,0x01, 0xff, 0xff;/ 兩個 LED 圖案 碼表/* 名 稱:DelayNS()* 功 能:長軟件延時* 入口參數(shù):dly-延時參數(shù),值越大,延時越久* 出口參數(shù):無*/void DelayNS(uint32 dly) uint32 i; for(; dly>0; dly-) for(i=0; i<5000; i+); /* 名 稱:main()* 功 能:依據(jù)表DISP_TAB來把握LED顯示。*/int main(void) uint8 i; PINSEL0 = 0x00;/ P015:0 用作GPIOPINSEL1 =

17、 0x00;/ P031:16 用作GPIO PINSEL2 = PINSEL2 & (0x08);/ P125:16連接GPIOIO1DIR = LEDS8;/ 設(shè)置P125:18為輸出口,把握LED7:0 while(1) if(IO0PIN&KEY)!=0) / 測試KEY 按鍵 for(i=0; i<8; i+)IO1CLR = DISP_TABi<<18;DelayNS(50);IO1SET = 0xffffffff; DelayNS(10); if(IO0PIN&KEY)=0) / 測試KEY 按鍵 for(i=0; i<8; i+)

18、IO1CLR = DISP_TAB2i<<18;DelayNS(50);IO1SET = 0xffffffff; DelayNS(10); return(0);參考程序 41./* 文件名:LEDCON.C* 功能:LED閃爍把握。對發(fā)光二極管LED4進行把握,接受軟件延時方法。* 使用I/O口直接把握LED,接受灌電流方式。* 說明:將跳線器JP4_LED4短接。*/#include "config.h"#define LEDCON0x02000000/* P0.25引腳把握LED4,低電平點亮 */* 名稱:DelayNS()* 功能:長軟件延時* 入口參數(shù):dly延時參數(shù),值越大,延時越久* 出口參數(shù):無*/void DelayNS(uint32 dly) uint32 i; for(; dly>0; dly-) for(i=0; i<50000; i+); /* 名稱:main()* 功能:把握LED閃爍*/int main(void) PINSEL0 = 0x00000000;/ 設(shè)置全部管腳

溫馨提示

  • 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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論