版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、試驗(yàn)四 GPIO 輸入試驗(yàn)一、試驗(yàn)?zāi)康?、能夠使用GPIO的輸入模式讀取開關(guān)信號。2、把握GPIO相關(guān)寄存器的用法和設(shè)置。3、把握用C語言編寫程序把握GPIO。二、試驗(yàn)環(huán)境 PC機(jī) 一臺 ADS 1.2集成開發(fā)環(huán)境 一套EasyARM2131教學(xué)試驗(yàn)平臺 一套 三、試驗(yàn)內(nèi)容1.試驗(yàn)通過跳線 JP8 連接KEY1與P0.16,程序檢測按鍵KEY1 的狀態(tài),把握蜂鳴器BEEP 的鳴叫。按下KEY1,蜂鳴器鳴叫,松開后停止蜂鳴。(調(diào)通試驗(yàn)后,改為KEY3鍵進(jìn)行輸入)。 2.當(dāng)檢測到KEY1有按鍵輸入時(shí)點(diǎn)亮發(fā)光二極管LED4并把握蜂鳴器響,軟件延時(shí)后關(guān)掉發(fā)光管并停止蜂鳴,然后循環(huán)這一過程直到檢測按鍵沒
2、有輸入。(鍵輸入改為鍵KEY4,發(fā)光管改為LED6)。3.結(jié)合試驗(yàn)三,當(dāng)按下按鍵Key1時(shí),啟動(dòng)跑馬燈程序并把握蜂鳴器響,軟件延時(shí)后關(guān)掉發(fā)光管并停止蜂鳴,然后循環(huán)這一過程直到檢測按鍵再次按下。四、試驗(yàn)原理當(dāng)P0 口用于GPIO輸入時(shí)(如按鍵輸入),內(nèi)部無上拉電阻,需要加上拉電阻,電路圖參見圖 4.2。進(jìn)行 GPIO 輸入試驗(yàn)時(shí),先要設(shè)置IODIR 使接口線成為輸入方式,然后讀取IOPIN 的值即可。圖 4.2按鍵電路原理圖試驗(yàn)通過跳線 JP8 連接KEY1_P0.16,程序檢測按鍵KEY1 的狀態(tài),把握蜂鳴器BEEP 的鳴叫。按下KEY1,蜂鳴器鳴叫,松開后停止蜂鳴。在這個(gè)試驗(yàn)中,需要將按鍵K
3、EY1 輸入口P0.16 設(shè)為輸入口而蜂鳴器把握口P0.7 設(shè)置為輸出口。蜂鳴器電路如圖 4.3 所示,當(dāng)跳線JP6 連接蜂鳴器時(shí),P0.7 把握蜂鳴器,低電平常蜂鳴器鳴叫。LED燈電路如圖4.4所示,低電平常燈亮。圖 4.3 蜂鳴器把握電路圖 4.4 LED 把握電路程序首先設(shè)置管腳連接寄存器PINSEL0 和PINSEL1,設(shè)置P0.16 為輸入,設(shè)置P0.7,P1.21 為輸出。然后檢測端口P0.16 的電平,對P0.7, P1.21進(jìn)行相應(yīng)的把握,流程圖如圖 4.5 所示,實(shí)現(xiàn)程序見程序清單 4.1。圖 4.5 按鍵輸入試驗(yàn)流程圖5、 試驗(yàn)步驟、源代碼及調(diào)試結(jié)果內(nèi)容1試驗(yàn)步驟 啟動(dòng)AD
4、S1.2IDE集成開發(fā)環(huán)境,選擇ARM Executable Image for lpc2131工程模板建立一個(gè)工程BEEP_key。 在user組里編寫主程序代碼main.c。 選用DebugInFLASH生成目標(biāo),然后編譯鏈接工程。 將EasyARM教學(xué)試驗(yàn)開發(fā)平臺上的相應(yīng)管腳跳線短接gde臺ngtheng 444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444。 選擇Project->Debug,啟動(dòng)AXD進(jìn)行JLINK仿真調(diào)試。 全
5、速運(yùn)行程序,程序?qū)趍ain.c的主函數(shù)中停止。如下圖所示: 單擊Context Variable圖標(biāo)按鈕(或者選擇Processor Views->Variables)打開變量觀看窗口,通過此窗口可以觀看局部變量和全局變量。選擇System Views->Debugger Internals 即可打開LPC2000系列ARM7微把握器的片內(nèi)外寄存器窗口。通過變量窗口可以觀看變量BEEP、KEY1等的值和ARM7微把握器的片內(nèi)外寄存器窗口。如下圖所示: 可以單步運(yùn)行程序,先按下Key1,觀看IO0PIN寄存器的值,然后斷開Key1,觀看IO0PIN寄存器的值??梢栽O(shè)置/取消斷點(diǎn);
6、或者全速運(yùn)行程序,停止程序運(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)?,寄存器值變化,蜂鳴器響,說明把握是正確的?,F(xiàn)象描述:按下KEY1,蜂鳴器鳴叫,松開后停止蜂鳴。源代碼:#include "config.h"const uint32 BEEP = 1 << 7; / P0.7 把握蜂鳴器const uin
7、t32 KEY1 = 1 << 16; / P0.16 連接KEY1 (改為KEY3時(shí),只需“const uint32 KEY1 = 1 << 16”改為“const uint32 KEY3 = 1 << 18”,其余不變。)/* 函數(shù)名稱:main()* 函數(shù)功能:GPIO 輸入試驗(yàn)測試。* 檢測按鍵KEY1。KEY1 按下,蜂鳴器蜂鳴,松開后停止蜂鳴。* 跳線說明:把 JP8 的KEY1 跳線短接,JP11 連接蜂鳴器。*/int main (void) PINSEL0 = 0x00000000; / 全部管腳連接GPIOPINSEL1 = 0x0000
8、0000;IO0DIR = BEEP; / 蜂鳴器把握口輸出,其余輸入while (1) if (IO0PIN & KEY1) = 0) IO0CLR = BEEP; / 假如KEY1 按下,蜂鳴器鳴叫else IO0SET = BEEP; / 松開則停止蜂鳴return 0;內(nèi)容二試驗(yàn)步驟 啟動(dòng)ADS1.2IDE集成開發(fā)環(huán)境,選擇ARM Executable Image for lpc2131工程模板建立一個(gè)工程BEEP_key。 在user組里編寫主程序代碼main.c。 選用DebugInFLASH生成目標(biāo),然后編譯鏈接工程。 將EasyARM教學(xué)試驗(yàn)開發(fā)平臺上的相應(yīng)管腳跳線短接
9、gde臺ngtheng 777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777。 選擇Project->Debug,啟動(dòng)AXD進(jìn)行JLINK仿真調(diào)試。 全速運(yùn)行程序,程序?qū)趍ain.c的主函數(shù)中停止。如下圖所示: 單擊Context Variable圖標(biāo)按鈕(或者選擇Processor Views->Variables)打開變量觀看窗口,通過此窗口可以觀看局部變量和全局變量。選擇System Views->Debugger
10、Internals 即可打開LPC2000系列ARM7微把握器的片內(nèi)外寄存器窗口。通過變量窗口可以觀看變量BEEP、KEY1等全局變量、i等本地變量和ARM7微把握器的片內(nèi)外寄存器窗口。如下圖所示: 左圖所示為ARM7微把握器的片內(nèi)寄存器窗口。 圖4.9 本地變量 圖4.8 全局變量 可以單步運(yùn)行程序,先按下Key1,觀看IO0PIN寄存器的值,然后斷開Key1,觀看IO0PIN寄存器的值??梢栽O(shè)置/取消斷點(diǎn);或者全速運(yùn)行程序,停止程序運(yùn)行,觀看變量的值,推斷蜂鳴器把握是否正確。如下圖所示:.圖4.10 未按下KEY1時(shí)IO0PIN的值 圖4.11 按下KEY1后IO0PIN的值對比圖4.10
11、和4.11,發(fā)覺按下KEY1后,IO0PIN寄存器的第16位由1變?yōu)?;而KEY1對應(yīng)管腳P0.16,當(dāng)按下時(shí)輸入低電平,這說明KEY1的把握是正確的。 上圖所示為運(yùn)行 “IO0CLR = BEEP”后IO0PIN寄存器的值,與圖4.10對比,發(fā)覺第8位由1變?yōu)?,BEEP對應(yīng)P0.7管腳,這說明BEEP的把握是對的?,F(xiàn)象描述:當(dāng)按下KEY1時(shí),蜂鳴器鳴響,LED4亮;當(dāng)松開KEY1后,蜂鳴器靜音,LED4滅。源代碼如下:#include "config.h"const uint32 BEEP = 1 << 7; / P0.7 把握蜂鳴器const uint32
12、 KEY1 = 1 << 16; / P0.16 連接KEY1 (改為KEY4按鍵時(shí),只需把上句代碼改為“const uint32 KEY4=1<<19”,其余不變)const uint32 LEDS4= 1 << 21; / P121把握LED4,低電平點(diǎn)亮(改為LED6時(shí),只需把上句代碼改為“const uint32 LED6=1<<23”,其余不變。)/* 函數(shù)名稱:main()* 函數(shù)功能:GPIO 輸入試驗(yàn)測試。* 檢測按鍵KEY1。KEY1 按下,蜂鳴器蜂鳴,松開后停止蜂鳴。* 跳線說明:把 JP8 的KEY1 跳線短接,JP11 連
13、接蜂鳴器。*/int main (void) Uint32 i; PINSEL0 = 0x00000000; / 全部管腳連接GPIOPINSEL1 = 0x00000000;IO0DIR = BEEP; / 蜂鳴器把握口輸出0IO1DIR = LEDS4; / 設(shè)置LED4 燈亮while (1) if (IO0PIN & KEY1) = 0)for(i=0; i<1000; i+); / 軟件延時(shí)IO0CLR = BEEP; / 假如KEY1 按下,蜂鳴器鳴叫IO1DCLR = LEDS4; / 設(shè)置LED4 燈亮else IO0SET = BEEP; / 松開則停止蜂鳴IO
14、1SET= LEDS4; / 設(shè)置LED4 燈滅for(i=0; i<1000; i+); / 軟件延時(shí)return 0;內(nèi)容三試驗(yàn)步驟 啟動(dòng)ADS1.2IDE集成開發(fā)環(huán)境,選擇ARM Executable Image for lpc2131工程模板建立一個(gè)工程BEEP_key。 在user組里編寫主程序代碼main.c。 選用DebugInFLASH生成目標(biāo),然后編譯鏈接工程。 將EasyARM教學(xué)試驗(yàn)開發(fā)平臺上的相應(yīng)管腳跳線短接gde臺ngtheng 1111111111111111111111111111111111111111111111111111111111111111111
15、11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111。 選擇Project->Debug,啟動(dòng)AXD進(jìn)行JLINK仿真調(diào)試。 全速運(yùn)行程序,程序?qū)趍ain.c的主函數(shù)中停止。如下圖所示: 單擊Context Variable圖標(biāo)按鈕(或者選擇Processor Views->Variables)打開變量觀看窗口,通過此窗口可以觀看局部變量和全局變量。選擇Sys
16、tem Views->Debugger Internals 即可打開LPC2000系列ARM7微把握器的片內(nèi)外寄存器窗口。通過變量窗口可以觀看變量BEEP、KEY1等的值和ARM7微把握器的片內(nèi)外寄存器窗口。如下圖所示: 可以單步運(yùn)行程序,先按下Key1,觀看IO0PIN寄存器的值,然后斷開Key1,觀看IO0PIN寄存器的值??梢栽O(shè)置/取消斷點(diǎn);或者全速運(yùn)行程序,停止程序運(yùn)行,觀看變量的值,推斷蜂鳴器把握是否正確。如下圖所示: 圖4.12未按下Key1時(shí)IO0PIN的值 圖4.13按下Key1時(shí)IO0PIN的值 由上兩圖可知,當(dāng)按下Key1時(shí),IO0PIN寄存器的第16位由1變?yōu)?(F
17、變?yōu)镋),key1與P0.16相連,按下Key1時(shí),P0.16管腳輸出電平由1變?yōu)?,寄存器值變化,蜂鳴器響,流水燈亮,說明把握是正確的。現(xiàn)象描述:當(dāng)按下按鍵KEY1時(shí),蜂鳴器鳴響,流水燈亮;松開后,蜂鳴器靜音,流水燈滅。源代碼如下:#include "config.h"const uint32 BEEP = 1 << 7; / P0.7 把握蜂鳴器const uint32 KEY = 1 << 16; / P0.16 連接KEY1const uint32 LEDS8 = 0xFF << 18; / P125:18把握LED8LED1,低
18、電平點(diǎn)亮void DelayNS(uint32 dly) uint32 i; for(; dly>0; dly-) for(i=0; i<50000; i+); /* 函數(shù)名稱:liushuideng()* 函數(shù)功能:流水燈顯示試驗(yàn)。* 調(diào)試說明:連接跳線 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, 0x0
19、7, 0x0F, 0x1F, 0x3F, 0x7F, 0xFF, / 依次逐個(gè)疊加0xFF, 0x7F, 0x3F, 0x1F, 0x0F, 0x07, 0x03, 0x01, / 依次逐個(gè)遞減0x81, 0x42, 0x24, 0x18, 0x18, 0x24, 0x42, 0x81, / 兩個(gè)靠攏后分開0x81, 0xC3, 0xE7, 0xFF, 0xFF, 0xE7, 0xC3, 0x81 / 從兩邊疊加后遞減;int liushuideng(void) uint8 i;PINSEL1 = 0x00000000; / 設(shè)置管腳連接GPIOIO1DIR = LEDS8; / 設(shè)置LED 把握口為輸出while (1) for
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度民辦學(xué)校教師教學(xué)科研獎(jiǎng)勵(lì)聘用合同4篇
- 2025版高端汽車零部件模具定制合同4篇
- 二零二五年度企業(yè)電子商務(wù)法律風(fēng)險(xiǎn)防范合同
- 2025版砂石開采與環(huán)保治理合同3篇
- 二零二五年度人才招聘居間服務(wù)合同范本(航天行業(yè)適用)2篇
- 二零二五年度圖書館建筑裝飾工程合同范本2篇
- 3 關(guān)節(jié)置換術(shù)止血與抗凝的綜合管理
- 二零二五年度裝配式內(nèi)裝工程承包合同范本4篇
- 2025年度臨街商店攤位租賃與垃圾分類處理合同3篇
- 二零二五年度企業(yè)形象宣傳片創(chuàng)意策劃與執(zhí)行合同
- 2023-2024學(xué)年度人教版一年級語文上冊寒假作業(yè)
- 培訓(xùn)如何上好一堂課
- 2024醫(yī)療銷售年度計(jì)劃
- 稅務(wù)局個(gè)人所得稅綜合所得匯算清繳
- 人教版語文1-6年級古詩詞
- 上學(xué)期高二期末語文試卷(含答案)
- 軟件運(yùn)維考核指標(biāo)
- 空氣動(dòng)力學(xué)仿真技術(shù):格子玻爾茲曼方法(LBM)簡介
- 中學(xué)英語教學(xué)設(shè)計(jì)PPT完整全套教學(xué)課件
- 移動(dòng)商務(wù)內(nèi)容運(yùn)營(吳洪貴)項(xiàng)目五 運(yùn)營效果監(jiān)測
- 比較思想政治教育學(xué)
評論
0/150
提交評論