實驗的三4x4鍵盤控制實驗的_第1頁
實驗的三4x4鍵盤控制實驗的_第2頁
實驗的三4x4鍵盤控制實驗的_第3頁
已閱讀5頁,還剩9頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、實 驗 報 告課程名稱嵌入式系統(tǒng)實驗名稱4x4鍵盤控制實驗姓 名 王闖 學 號200907040318專業(yè)班級軟件0903實驗日期年 月 日成績指導教師王彩玲一、實驗?zāi)康? 、通過實驗掌握中斷式鍵盤控制與設(shè)計方法;2、掌握中斷式鍵盤檢測程序的設(shè)計思路;3、熟練編寫ARM核處理器S3C44B0X中斷程序;二、實驗設(shè)備1、 硬件:EMBEST S3CEV40實驗平臺,Embest ARM 標準/增強型仿真器套件,PC機;2、 軟件:Embest IDE 2003 集成開發(fā)環(huán)境, Windows 98/2000/NT/XP操 作系統(tǒng)。三、實驗內(nèi)容使用實驗板上4 X 4用戶鍵盤,編寫程序通過中斷的方式

2、讀入鍵值, 并在實驗板的LE D數(shù)碼管上顯示讀到的鍵值。四、實驗原理鍵盤接口電路如圖所示,板上擴展了一個4 X4行列式矩陣鍵盤接口。該鍵 盤是采用中斷掃描的方式進行工作,行線選用了 4個數(shù)據(jù)線,列線選用了 4個 地址線。行線接上拉電阻保持高電平,并通過與門74HC08將輸出信號與MCU 的中斷EXINT1連接;列線接下拉電阻保持低電平。當有鍵盤按下時,該行線被拉為低電平,使得EXINT1輸入也為低電平,MCU產(chǎn)生中斷。中斷產(chǎn)生后通過 對鍵盤的行和列進行掃描的方法可以計算出是哪個鍵按下,并跳到相應(yīng)的鍵盤處理程序中去。芯片74HC541是通過片選信號nGCS3來選通的,這樣可以保證 在鍵盤不使用的

3、情況下MCU讀不到行線的輸入信息。GNDkVCCGND6Y6A5Y5A4Y4A3Y3A2Y2A1Y1AU101L2 1074HC17L0 68VDD3H4L3 1210K、GND*20卅20必#20*10K10K10K*111112913一14R20074HC5413Y8Y7Y6Y510KY4Y3Y2U100GNDA8A7A6A5A4A3R20,10KVDD33 上Y1G2VCCA2A1G1U13B74HC084EXINT18974HC087U13C10 6111274HC08VDD33 U14*4KEYBOARD8CON7R36R384.7K1234567D8 1N4148R354.7K I

4、4.7KD7 1N41489A48A37A26A141/L33210 GND1GNDWD9 1N4148 比D10 1N414813VDD33g五、實驗操作步驟(1 )準備實驗環(huán)境。使用 Embest仿真器連接目標辦,使用 EmbestS3CEV40實驗板附帶的串口線連接實驗板上的 UART0和PC機串口。(2 )在PC機上運行 Windows自帶的超級終端串口通信程序(設(shè)置波特率為 115220b/ s,1各停止位,無校驗位,無硬件流控位);或者使用其他的串口通信程序。(3 )使用Embest IDE 并通過Embest仿真器連接實驗板,打開實驗例程目錄下Keyboard_test 子目錄中

5、的 Keyboard_Test.ews 例程。編譯、連接通過后,連接目標板,下載并運行它。(4 )在PC上觀察超級終端程序主窗口,可以看到如下顯示:Embest 44B0X Evaluti on Board(S3CEV40)Keyboard Test ExamplePlease press one key on keyboard and look at LED.(5)用戶可以按下實驗系統(tǒng)中的 4 x 4鍵盤,在8段數(shù)碼管上觀察顯示結(jié)果。六、實驗源程序1 、變量初始化硬件使用外部中斷1,程序設(shè)計可以先進行初始化,例如變量及相關(guān)中斷控制 寄存器等。volatile UCHAR *keyboard_

6、base=(UCHAR *)0x06000000? / 鍵盤訪問硬件基地址#define KEY_VALUE_MASK 0x0F ? / 初始數(shù)據(jù)狀態(tài)2、鍵盤控制初始化*函數(shù)名稱:in it_keyboard*函數(shù)功能:鍵盤控制初始化部分*參數(shù):無*返回:無void ini t_keyboard()rlNTMOD=0x0 ?/IRQ 模式rlNTCON=0x1 ?/ 允許 IRQ 中斷rlNTMSK=(BIT_GOBAL|BIT_EINT1) ?/ 開外部中斷 EINT1pISR_EINT=(int)Keyboardlnt?/ 鍵盤中斷入口函數(shù)/*PORT G/ rPCONG=0xffff ?

7、/PG 口配置為 EINT7 0rPUPG=0x0 ?/上拉使能 rEXTINT=rEXTINT|0x20 7/EINT1 / 下降沿有效rl_ISPC=BIT_EINT1 ?/ 中斷清除 rEXTINTPND=Oxf ?/ 清寄存器 EXTINTPND3、中斷服務(wù)程序伴* 函數(shù)名稱:Keyboardlnt*函數(shù)功能:鍵盤中斷服務(wù)程序*參數(shù): 無*返回:無*void Keyboard In t(void)int value ?rl_ISPC=BIT_EINT1 ?/ 中斷清除rEXTINTPND=0xf ?/ 清寄存器 EXTITPNDvalue=key_read() ?if(value -1

8、)Dligit_Led_Symbol(value) ?rl_ISPC=BIT_EINT1 ?rlNTCON=Ox1 ?4、8段數(shù)碼管程序/*以下為定義8段數(shù)碼管字符顯示段碼*/# define SEG_A 0x80# define SEG_B 0x40# define SEG_C 0x20# define SEG_D 0x08# define SEG_E 0x04# define SEG_F 0x02# define SEG_G 0x01# define SEG_P 0x10# define DIGIT_F (SEG_A|SEG_G|SEG_E|SEG_F)# define DIGIT_E (

9、SEG_A|SEG_G|SEG_E|SEG_F|SEG_D)# define DIGIT_D (SEG_B|SEG_C|SEG_D|SEG_F|SEG_E)# define DIGIT_C (SEG_A|SEG_D|SEG_E|SEG_G)# define DIGIT_B (SEG_C|SEG_D|SEG_F|SEG_E|SEG_G)# define DIGIT_A (SEG_A|SEG_B|SEG_C|SEG_F|SEG_E|SEG_G)# define DIGIT_9 (SEG_A|SEG_B|SEG_C|SEG_F|SEG_G)# define DIGIT_8 (SEG_A|SEG_B|

10、SEG_C|SEG_D|SEG_F|SEG_E|SEG_G)# define DIGIT_7 (SEG_A|SEG_B|SEG_C)# define DIGIT_6 (SEG_A|SEG_C|SEG_D|SEG_F|SEG_E|SEG_G)# define DIGIT_5 (SEG_A|SEG_C|SEG_D|SEG_F|SEG_G)# define DIGIT_4 (SEG_B|SEG_C|SEG_F|SEG_G)# define DIGIT_3 (SEG_A|SEG_B|SEG_C|SEG_D|SEG_F)# define DIGIT_2 (SEG_A|SEG_B|SEG_D|SEG_E|

11、SEG_F)# define DIGIT_1 (SEG_B|SEG_C)# define DIGIT_0 (SEG_A|SEG_B|SEG_C|SEG_D|SEG_E|SEG_G)intSymbol=DIGIT_0,DIGIT_1,DIGIT_2,DIGIT_3,DIGIT_4,DIGIT_5,DIGIT_6,DIGIT_7,DIGIT_8,DIGIT_9,DIGIT_A,DIGIT_B,DIGIT_C,DIGIT_D,DIGIT_E,DIGIT_F ?I*定義8段數(shù)碼管控制地址*/#define LED8ADDR ( *(volatile unsigned char *)(0x2140000

12、)I*# 名稱:Digit_Led_Test*功能:循環(huán)顯示數(shù)字和字符*/void Digit_Led_Test(void)int i ?/*循環(huán)顯示0F的十六進制數(shù) */for(i=0,i=0) &(value16)LED8ADDR=Symbolvalue ?5、鍵盤檢測程序鍵盤檢測參考程4 X 4鍵盤的檢測使用4各不同地址,這些地址無先后順序序如下:/*函數(shù)名稱 :key_read*函數(shù)功能:讀鍵盤值*參數(shù): 無*返回: 正確時返回鍵盤值,錯誤時返回一1*劉inline int key_read()int value char temptemp=*(keyboard_base+OxFD)?

13、/讀地址1( A1為低)判斷是否有按鍵按下if(temp&KEY_VALVE_MASK)!=KEY_VALUE_MASK)/if(temp&0x1)=0) /判斷按鍵索對應(yīng)的數(shù)據(jù)位value=3 ?else if(temp&0x2)=0)value=2 ?else if(temp&0x4)=0)value=1 ?else if(temp&0x8)=0)value=0 ?retur n value ?為低)判斷是否有按鍵按下temp=*(keyboard_base+OxFB) ? / 讀地址 2( A2if(temp&KEY_VALUE_MASK)!=KEY_VALUE_MASK)/ if(te

14、mp&0x1)=0)/判斷按鍵所對應(yīng)的數(shù)據(jù)位value=7 ?else if(temp&0x2)=0)value=6 ?else if(temp&0x4)=0)value=5 ?else if(temp&0x8)=0)value=4 ?retur n value ?)判斷是否有按鍵按下temp=*(keyboard_base+0xF7) ? / 讀地址 3(A3 為低if(temp&KEY_VALUE_MASK)!=KEY_VALUE_MASK)/if(temp&0x1)=0)/判斷按鍵所對應(yīng)的數(shù)據(jù)位value=0xb ?else if(temp&0x2)=0)value=0xa ?else if(temp&0x4)=0)value=9 ?else if(temp&0x8)=0)value=8 ?retur n value ?)判斷是否有按鍵按下temp=*(keyboard_base+OxEF) ? / 讀地址 3(A3 為低if(temp&KEY_VALUE_MASK)!=KEY_VALUE_MASK)/if(temp&0x1)=0)/判斷按鍵所對應(yīng)的數(shù)據(jù)位value=Oxf ?else if(temp&0x2)=0)value=0xe ?else if(temp&0

溫馨提示

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

評論

0/150

提交評論