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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、實驗三 GPIO輸出控制實驗一、 實驗目的熟悉LPC2000系列ARM7微控制器的GPIO輸入控制。二、實驗設備l 硬件:PC機 一臺LPC2131教學實驗開發平臺 一套l 軟件:Windows 98/XP/2000系統,ADS1.2集成開發環境。三、實驗內容1. P0.7管腳控制EasyARM教學實驗開發平臺上的蜂鳴器報警。2. GPIO 輸出實驗流水燈實驗實驗預習要求:LPC2000 GPIO管腳的設置和控制。四、實驗原理1.GPIO 輸出實驗,蜂鳴器控制在 EasyARM2131 開發板上,接有一個蜂鳴器,由P0.7 控制,通過跳線JP11 選擇連接。蜂鳴器控制電路如所示。圖 3-1 蜂

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

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

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

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

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

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

8、ugInRam生成目標,然后編譯鏈接工程。 將EasyARM教學實驗開發平臺上的P1.18:25管腳對應與LED1:8跳線短接gde臺ngtheng 666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666。 選擇Project->Debug,啟動AXD進行JLINK仿真調試。 全速運行程序,程序將會在main.c的主函數中停止。 單擊Context Variable圖標按鈕(或者選擇Processor Views->Variables

9、)打開變量觀察窗口,通過此窗口可以觀察局部變量和全局變量。選擇System Views->Debugger Internals 即可打開LPC2000系列ARM7微控制器的片內外寄存器窗口。 可以單步運行程序,可以設置/取消斷點;或者全速運行程序,停止程序運行,觀察變量的值,判斷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()* 功 能:長軟件延時。* 入口參數:dly延時參數,值越大,延時越久* 出口參數:無*/void DelayNS(uint32 dly) uint32 i; for(; dly>0; dly-) for(i=0; i<5000; i+); /* 名 稱:main()* 功 能:控制蜂鳴器蜂鳴。*/int main(void

11、) PINSEL0 = 0x00000000; / 設置管腳連接GPIO IO0DIR = BEEPCON; / 設置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,低電平點亮/* 函數名稱:DelayNS()* 函數功能:長軟件延時* 入口參數:dly 延時參數,值越大,延時越久* 出口參數:無*/void DelayNS (uint32 dly) uint32 i;for ( ; dly>0; dly-)for (i=0; i<50000; i+);/* 函數名稱:main()* 函數功能:流水燈顯示實驗。* 調試說明:連接跳線 JP12 至LED8LED1。*/* 流水燈花樣,低電平點亮,注意調用時候用了取反操作 */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; / 設置管腳連接GPIOIO1DIR = LEDS8; / 設置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產生流水燈效果* 說 明:P1.18:25管腳對應與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()* 功 能:長軟件延時* 入口參數:dly-延時參數,值越大,延時越久* 出口參數:無*/void DelayNS(uint32 dly) uint32 i; for(; dly>0; dly-) for(i=0; i<5000; i+); /* 名 稱:main()* 功 能:根據表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;/ 設置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閃爍控制。對發光二極管LED4進行控制,采用軟件延時方法。* 使用I/O口直接控制LED,采用灌電流方式。* 說明:將跳線器JP4_LED4短接。*/#include "config.h"#define LEDCON0x02000000/* P0.25引腳控制LED4,低電平點亮 */* 名稱:DelayNS()* 功能:長軟件延時* 入口參數:dly延時參數,值越大,延時越久* 出口參數:無*/void DelayNS(uint32 dly) uint32 i; for(; dly>0; dly-) for(i=0; i<50000; i+); /* 名稱:main()* 功能:控制LED閃爍*/int main(void) PINSEL0 = 0x00000000;/

溫馨提示

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

評論

0/150

提交評論