




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、實(shí)驗(yàn)四 GPIO 輸入實(shí)驗(yàn)一、實(shí)驗(yàn)?zāi)康?、能夠使用GPIO的輸入模式讀取開(kāi)關(guān)信號(hào)。2、掌握GPIO相關(guān)寄存器的用法和設(shè)置。3、掌握用C語(yǔ)言編寫(xiě)程序控制GPIO。二、實(shí)驗(yàn)環(huán)境 PC機(jī) 一臺(tái) ADS 1.2集成開(kāi)發(fā)環(huán)境 一套EasyARM2131教學(xué)實(shí)驗(yàn)平臺(tái) 一套 三、實(shí)驗(yàn)內(nèi)容1.實(shí)驗(yàn)通過(guò)跳線 JP8 連接KEY1與P0.16,程序檢測(cè)按鍵KEY1 的狀態(tài),控制蜂鳴器BEEP 的鳴叫。按下KEY1,蜂鳴器鳴叫,松開(kāi)后停止蜂鳴。(調(diào)通實(shí)驗(yàn)后,改為KEY3鍵進(jìn)行輸入)。 2.當(dāng)檢測(cè)到KEY1有按鍵輸入時(shí)點(diǎn)亮發(fā)光二極管LED4并控制蜂鳴器響,軟件延時(shí)后關(guān)掉發(fā)光管并停止蜂鳴,然后循環(huán)這一過(guò)程直到檢測(cè)按鍵沒(méi)
2、有輸入。(鍵輸入改為鍵KEY4,發(fā)光管改為L(zhǎng)ED6)。3.結(jié)合實(shí)驗(yàn)三,當(dāng)按下按鍵Key1時(shí),啟動(dòng)跑馬燈程序并控制蜂鳴器響,軟件延時(shí)后關(guān)掉發(fā)光管并停止蜂鳴,然后循環(huán)這一過(guò)程直到檢測(cè)按鍵再次按下。四、實(shí)驗(yàn)原理當(dāng)P0 口用于GPIO輸入時(shí)(如按鍵輸入),內(nèi)部無(wú)上拉電阻,需要加上拉電阻,電路圖參見(jiàn)圖 4.2。進(jìn)行 GPIO 輸入實(shí)驗(yàn)時(shí),先要設(shè)置IODIR 使接口線成為輸入方式,然后讀取IOPIN 的值即可。圖 4.2按鍵電路原理圖實(shí)驗(yàn)通過(guò)跳線 JP8 連接KEY1_P0.16,程序檢測(cè)按鍵KEY1 的狀態(tài),控制蜂鳴器BEEP 的鳴叫。按下KEY1,蜂鳴器鳴叫,松開(kāi)后停止蜂鳴。在這個(gè)實(shí)驗(yàn)中,需要將按鍵K
3、EY1 輸入口P0.16 設(shè)為輸入口而蜂鳴器控制口P0.7 設(shè)置為輸出口。蜂鳴器電路如圖 4.3 所示,當(dāng)跳線JP6 連接蜂鳴器時(shí),P0.7 控制蜂鳴器,低電平時(shí)蜂鳴器鳴叫。LED燈電路如圖4.4所示,低電平時(shí)燈亮。圖 4.3 蜂鳴器控制電路圖 4.4 LED 控制電路程序首先設(shè)置管腳連接寄存器PINSEL0 和PINSEL1,設(shè)置P0.16 為輸入,設(shè)置P0.7,P1.21 為輸出。然后檢測(cè)端口P0.16 的電平,對(duì)P0.7, P1.21進(jìn)行相應(yīng)的控制,流程圖如圖 4.5 所示,實(shí)現(xiàn)程序見(jiàn)程序清單 4.1。圖 4.5 按鍵輸入實(shí)驗(yàn)流程圖5、 實(shí)驗(yàn)步驟、源代碼及調(diào)試結(jié)果內(nèi)容1實(shí)驗(yàn)步驟 啟動(dòng)AD
4、S1.2IDE集成開(kāi)發(fā)環(huán)境,選擇ARM Executable Image for lpc2131工程模板建立一個(gè)工程BEEP_key。 在user組里編寫(xiě)主程序代碼main.c。 選用DebugInFLASH生成目標(biāo),然后編譯鏈接工程。 將EasyARM教學(xué)實(shí)驗(yàn)開(kāi)發(fā)平臺(tái)上的相應(yīng)管腳跳線短接gde臺(tái)ngtheng 444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444。 選擇Project-Debug,啟動(dòng)AXD進(jìn)行JLINK仿真調(diào)試。 全速運(yùn)行程
5、序,程序?qū)?huì)在main.c的主函數(shù)中停止。如下圖所示: 單擊Context Variable圖標(biāo)按鈕(或者選擇Processor Views-Variables)打開(kāi)變量觀察窗口,通過(guò)此窗口可以觀察局部變量和全局變量。選擇System Views-Debugger Internals 即可打開(kāi)LPC2000系列ARM7微控制器的片內(nèi)外寄存器窗口。通過(guò)變量窗口可以觀察變量BEEP、KEY1等的值和ARM7微控制器的片內(nèi)外寄存器窗口。如下圖所示: 可以單步運(yùn)行程序,先按下Key1,觀察IO0PIN寄存器的值,然后斷開(kāi)Key1,觀察IO0PIN寄存器的值。可以設(shè)置/取消斷點(diǎn);或者全速運(yùn)行程序,停止程
6、序運(yùn)行,觀察變量的值,判斷蜂鳴器控制是否正確。如下圖所示: 圖4.6 未按下Key1時(shí)IO0PIN的值 圖4.7 按下Key1時(shí)IO0PIN的值 由上兩圖可知,當(dāng)按下Key1時(shí),IO0PIN寄存器的第16位由1變?yōu)?(F變?yōu)镋),key1與P0.16相連,按下Key1時(shí),P0.16管腳輸出電平由1變?yōu)?,寄存器值變化,蜂鳴器響,說(shuō)明控制是正確的?,F(xiàn)象描述:按下KEY1,蜂鳴器鳴叫,松開(kāi)后停止蜂鳴。源代碼:#include config.hconst uint32 BEEP = 1 7; / P0.7 控制蜂鳴器const uint32 KEY1 = 1 16; / P0.16 連接KEY1 (
7、改為KEY3時(shí),只需“const uint32 KEY1 = 1 16”改為“const uint32 KEY3 = 1 Debug,啟動(dòng)AXD進(jìn)行JLINK仿真調(diào)試。 全速運(yùn)行程序,程序?qū)?huì)在main.c的主函數(shù)中停止。如下圖所示: 單擊Context Variable圖標(biāo)按鈕(或者選擇Processor Views-Variables)打開(kāi)變量觀察窗口,通過(guò)此窗口可以觀察局部變量和全局變量。選擇System Views-Debugger Internals 即可打開(kāi)LPC2000系列ARM7微控制器的片內(nèi)外寄存器窗口。通過(guò)變量窗口可以觀察變量BEEP、KEY1等全局變量、i等本地變量和AR
8、M7微控制器的片內(nèi)外寄存器窗口。如下圖所示: 左圖所示為ARM7微控制器的片內(nèi)寄存器窗口。 圖4.9 本地變量 圖4.8 全局變量 可以單步運(yùn)行程序,先按下Key1,觀察IO0PIN寄存器的值,然后斷開(kāi)Key1,觀察IO0PIN寄存器的值??梢栽O(shè)置/取消斷點(diǎn);或者全速運(yùn)行程序,停止程序運(yùn)行,觀察變量的值,判斷蜂鳴器控制是否正確。如下圖所示:.圖4.10 未按下KEY1時(shí)IO0PIN的值 圖4.11 按下KEY1后IO0PIN的值對(duì)比圖4.10和4.11,發(fā)現(xiàn)按下KEY1后,IO0PIN寄存器的第16位由1變?yōu)?;而KEY1對(duì)應(yīng)管腳P0.16,當(dāng)按下時(shí)輸入低電平,這說(shuō)明KEY1的控制是正確的。
9、上圖所示為運(yùn)行 “IO0CLR = BEEP”后IO0PIN寄存器的值,與圖4.10對(duì)比,發(fā)現(xiàn)第8位由1變?yōu)?,BEEP對(duì)應(yīng)P0.7管腳,這說(shuō)明BEEP的控制是對(duì)的。現(xiàn)象描述:當(dāng)按下KEY1時(shí),蜂鳴器鳴響,LED4亮;當(dāng)松開(kāi)KEY1后,蜂鳴器靜音,LED4滅。源代碼如下:#include config.hconst uint32 BEEP = 1 7; / P0.7 控制蜂鳴器const uint32 KEY1 = 1 16; / P0.16 連接KEY1 (改為KEY4按鍵時(shí),只需把上句代碼改為“const uint32 KEY4=119”,其余不變)const uint32 LEDS4=
10、1 21; / P121控制LED4,低電平點(diǎn)亮(改為L(zhǎng)ED6時(shí),只需把上句代碼改為“const uint32 LED6=123”,其余不變。)/* 函數(shù)名稱:main()* 函數(shù)功能:GPIO 輸入實(shí)驗(yàn)測(cè)試。* 檢測(cè)按鍵KEY1。KEY1 按下,蜂鳴器蜂鳴,松開(kāi)后停止蜂鳴。* 跳線說(shuō)明:把 JP8 的KEY1 跳線短接,JP11 連接蜂鳴器。*/int main (void) Uint32 i; PINSEL0 = 0x00000000; / 所有管腳連接GPIOPINSEL1 = 0x00000000;IO0DIR = BEEP; / 蜂鳴器控制口輸出0IO1DIR = LEDS4; /
11、設(shè)置LED4 燈亮while (1) if (IO0PIN & KEY1) = 0)for(i=0; i1000; i+); / 軟件延時(shí)IO0CLR = BEEP; / 如果KEY1 按下,蜂鳴器鳴叫IO1DCLR = LEDS4; / 設(shè)置LED4 燈亮else IO0SET = BEEP; / 松開(kāi)則停止蜂鳴IO1SET= LEDS4; / 設(shè)置LED4 燈滅for(i=0; iDebug,啟動(dòng)AXD進(jìn)行JLINK仿真調(diào)試。 全速運(yùn)行程序,程序?qū)?huì)在main.c的主函數(shù)中停止。如下圖所示: 單擊Context Variable圖標(biāo)按鈕(或者選擇Processor Views-Variab
12、les)打開(kāi)變量觀察窗口,通過(guò)此窗口可以觀察局部變量和全局變量。選擇System Views-Debugger Internals 即可打開(kāi)LPC2000系列ARM7微控制器的片內(nèi)外寄存器窗口。通過(guò)變量窗口可以觀察變量BEEP、KEY1等的值和ARM7微控制器的片內(nèi)外寄存器窗口。如下圖所示: 可以單步運(yùn)行程序,先按下Key1,觀察IO0PIN寄存器的值,然后斷開(kāi)Key1,觀察IO0PIN寄存器的值。可以設(shè)置/取消斷點(diǎn);或者全速運(yùn)行程序,停止程序運(yùn)行,觀察變量的值,判斷蜂鳴器控制是否正確。如下圖所示: 圖4.12未按下Key1時(shí)IO0PIN的值 圖4.13按下Key1時(shí)IO0PIN的值 由上兩圖
13、可知,當(dāng)按下Key1時(shí),IO0PIN寄存器的第16位由1變?yōu)?(F變?yōu)镋),key1與P0.16相連,按下Key1時(shí),P0.16管腳輸出電平由1變?yōu)?,寄存器值變化,蜂鳴器響,流水燈亮,說(shuō)明控制是正確的。現(xiàn)象描述:當(dāng)按下按鍵KEY1時(shí),蜂鳴器鳴響,流水燈亮;松開(kāi)后,蜂鳴器靜音,流水燈滅。源代碼如下:#include config.hconst uint32 BEEP = 1 7; / P0.7 控制蜂鳴器const uint32 KEY = 1 16; / P0.16 連接KEY1const uint32 LEDS8 = 0xFF 0; dly-) for(i=0; i50000; i+);
14、/* 函數(shù)名稱:liushuideng()* 函數(shù)功能:流水燈顯示實(shí)驗(yàn)。* 調(diào)試說(shuō)明:連接跳線 JP12 至LED8LED1。*/* 流水燈花樣,低電平點(diǎn)亮,注意調(diào)用時(shí)候用了取反操作 */const uint32 LED_TBL = 0x00, 0xFF, / 全部熄滅后,再全部點(diǎn)亮0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, / 依次逐個(gè)點(diǎn)亮0x01, 0x03, 0x07, 0x0F, 0x1F, 0x3F, 0x7F, 0xFF, / 依次逐個(gè)疊加0xFF, 0x7F, 0x3F, 0x1F, 0x0F, 0x07, 0x03, 0x01
15、, / 依次逐個(gè)遞減0x81, 0x42, 0x24, 0x18, 0x18, 0x24, 0x42, 0x81, / 兩個(gè)靠攏后分開(kāi)0x81, 0xC3, 0xE7, 0xFF, 0xFF, 0xE7, 0xC3, 0x81 / 從兩邊疊加后遞減;int liushuideng(void) uint8 i;PINSEL1 = 0x00000000; / 設(shè)置管腳連接GPIOIO1DIR = LEDS8; / 設(shè)置LED 控制口為輸出while (1) for (i=0; i42; i+) /* 流水燈花樣顯示 */IO1SET = (LED_TBLi) 18);DelayNS(20);IO1CLR = (LED_TBLi) 18);DelayNS(20);return 0;/主函數(shù)int main(void) uint32 i; PINSEL0 = 0x00000000; / 所有管腳連接GPIOPINSEL1 = 0x00000000;IO0DIR = BEEP; / 蜂鳴器控制口輸出0while (1) if (IO0PIN & KEY) = 0)for(i=0; i1000; i+); / 軟件延時(shí)IO0CLR = BEEP; / 如果KEY 按下,蜂鳴器鳴叫l(wèi)iushuideng();else IO0SET = BEEP; /
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025江西省財(cái)通供應(yīng)鏈金融集團(tuán)有限公司勞務(wù)派遣制人員招聘8人筆試參考題庫(kù)附帶答案詳解
- 2025京東方科技集團(tuán)股份有限公司全球校園招聘正式啟動(dòng)筆試參考題庫(kù)附帶答案詳解
- 鄭州城建職業(yè)學(xué)院《基礎(chǔ)教育研究專題》2023-2024學(xué)年第二學(xué)期期末試卷
- 哈爾濱工業(yè)大學(xué)《荷載與結(jié)構(gòu)設(shè)計(jì)方法》2023-2024學(xué)年第二學(xué)期期末試卷
- 哈爾濱醫(yī)科大學(xué)《運(yùn)作管理綜合實(shí)驗(yàn)》2023-2024學(xué)年第二學(xué)期期末試卷
- 廣州華商學(xué)院《海洋地質(zhì)學(xué)B》2023-2024學(xué)年第二學(xué)期期末試卷
- 江蘇城鄉(xiāng)建設(shè)職業(yè)學(xué)院《國(guó)際結(jié)算》2023-2024學(xué)年第二學(xué)期期末試卷
- 廣州涉外經(jīng)濟(jì)職業(yè)技術(shù)學(xué)院《運(yùn)籌學(xué)(全英)》2023-2024學(xué)年第二學(xué)期期末試卷
- 陽(yáng)泉師范高等專科學(xué)?!都夹g(shù)經(jīng)濟(jì)與企業(yè)管理》2023-2024學(xué)年第二學(xué)期期末試卷
- 沈陽(yáng)農(nóng)業(yè)大學(xué)《系統(tǒng)工程學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 2023年常州工程職業(yè)技術(shù)學(xué)院輔導(dǎo)員招聘考試真題
- 中國(guó)航天事業(yè)的軍事應(yīng)用與國(guó)防戰(zhàn)略
- 同伴關(guān)系與心理健康教育
- 2024年醫(yī)學(xué)高級(jí)職稱-普通外科學(xué)(醫(yī)學(xué)高級(jí))歷年考試高頻考點(diǎn)試題附帶答案
- 2024年廣東中煙工業(yè)有限責(zé)任公司招聘筆試參考題庫(kù)含答案解析
- 思想道德與法治2021版第六章第二節(jié)
- 工業(yè)機(jī)器人技術(shù)畢業(yè)論文范文
- DB11-T 2154-2023 城市軌道交通工程淺埋暗挖法施工技術(shù)規(guī)程
- 錫爐溫度及助焊劑比重測(cè)試記錄
- 施工單位主體驗(yàn)收自評(píng)報(bào)告
評(píng)論
0/150
提交評(píng)論