實驗4 4×4鍵盤實驗_第1頁
實驗4 4×4鍵盤實驗_第2頁
實驗4 4×4鍵盤實驗_第3頁
實驗4 4×4鍵盤實驗_第4頁
實驗4 4×4鍵盤實驗_第5頁
已閱讀5頁,還剩11頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、實驗目的實驗目的u通過實驗掌握行列式鍵盤工作原理及按鍵識別過通過實驗掌握行列式鍵盤工作原理及按鍵識別過程。程。u掌握掌握S3C2440處理器系統下行列式鍵盤識別程序處理器系統下行列式鍵盤識別程序的設計思想及實現方法。的設計思想及實現方法。實驗內容實驗內容一、驗證實驗一、驗證實驗 輸入并調試實驗教程提供的參考程序,實現當按下實驗輸入并調試實驗教程提供的參考程序,實現當按下實驗箱小鍵盤時,在所有數碼管上顯示按鍵值。箱小鍵盤時,在所有數碼管上顯示按鍵值。二、設計實驗二、設計實驗 分別在小鍵盤鍵入自己學號后分別在小鍵盤鍵入自己學號后6位數字并在位數字并在6位數碼管上位數碼管上順序顯示。順序顯示。行列式

2、鍵盤結構及工作原理行列式鍵盤結構及工作原理 行列式鍵盤電路通常采用的按鍵識別方法有行列掃描行列式鍵盤電路通常采用的按鍵識別方法有行列掃描法和反轉法。法和反轉法。u 行列反轉法行列反轉法 (略略)u 行列掃描法行列掃描法 主要實現過程主要實現過程: (1)輸出)輸出 (寫操作寫操作) 僅有一列為僅有一列為0的列數據,的列數據, (2)輸入)輸入 (讀操作讀操作) 全部行數據,并判斷全部行數據,并判斷4位行值是否全為位行值是否全為1。 (3)如果)如果4位行值全為位行值全為1,則無鍵按下。,則無鍵按下。 繼續掃描:變換下一列為繼續掃描:變換下一列為0,轉移到,轉移到 ( 1 ) 。 (4)如果)如

3、果4位行值不全為位行值不全為1,則有鍵按下。,則有鍵按下。實驗程序流程框圖實驗程序流程框圖熄滅所有數碼管熄滅所有數碼管運用行掃描法發現按鍵并獲得其掃描碼運用行掃描法發現按鍵并獲得其掃描碼將掃描碼轉換為按鍵值顯示碼碼表地址將掃描碼轉換為按鍵值顯示碼碼表地址獲取按鍵顯示碼并輸出到數碼管顯示獲取按鍵顯示碼并輸出到數碼管顯示ldr r0,= 0 x20006000ldr r1, =0 xffstr r1, r0ldr r0,=0 x20007000ldr r1,=0 x0str r1,r0用行掃描法發現按鍵并獲得其掃描碼用行掃描法發現按鍵并獲得其掃描碼流程流程輸出僅有一列為輸出僅有一列為0的的4位列數

4、據位列數據4位行數據全為位行數據全為1?有鍵按下有鍵按下輸入輸入 (讀操作讀操作) 全部全部4位行數據位行數據變換下一列為變換下一列為0防抖動延遲防抖動延遲+5VS00S01S02S10S20S30S03S13S23S33輸出輸出列數據列數據讀入讀入行數據行數據例例: 當當S02鍵按下時鍵按下時, 輸出列數據為輸出列數據為: 1011; 讀入行數據為讀入行數據為: 1110; 由由4位列和位列和4位位行數據組合成行數據組合成8位位的掃描的掃描碼。碼。3列列2列列1列列0列列3行行2行行1行行0行行輸出輸出 (寫操作寫操作) 所有列為所有列為0的的4位列數據位列數據4位行數據全為位行數據全為1?

5、輸入輸入 (讀操作讀操作) 全部全部4位行數據位行數據判斷是否有鍵按下判斷是否有鍵按下NYYNS32S31延時延時520mS無無鍵鍵按按下下行列式鍵盤行掃描法按鍵識別參考程序行列式鍵盤行掃描法按鍵識別參考程序LOOP0ldr r3,=0 x1; r3內最低位的內最低位的1不斷左移,標示掃描的列不斷左移,標示掃描的列LOOP1cmp r3,#0 x10; 當當1移位到移位到D4位時表明所有位時表明所有4列已全部掃描完列已全部掃描完beq LOOP0; 如果全部掃描完,則重新掃描如果全部掃描完,則重新掃描ldr r2,=0 x0ff; bic r2,r2,r3; 根據根據r3內內1的位置清零的位置

6、清零r2內對應位,保持內對應位,保持r2低低4位內僅位內僅1位為位為0ldr r0,=0 x2000c000 ; 設置列數據鎖存器設置列數據鎖存器74HC273選通信號地址選通信號地址str r2,r0; 將僅含將僅含1位為位為0的列數據輸出到鍵盤所有列的列數據輸出到鍵盤所有列bl Delay; 延遲,防抖動延遲,防抖動ldr r0,=0 x2000c000 ; 設置行數據驅動器設置行數據驅動器74LVCH244選通信號地址選通信號地址ldr r1,r0 ; 讀取鍵盤讀取鍵盤4位行數據賦予位行數據賦予r1and r1,r1,#0 x0f; 只保留讀取數據的低只保留讀取數據的低4位,高位清位,高

7、位清0cmp r1,#0 x0f; 判斷判斷r1內的低內的低4位行數據是否有為位行數據是否有為0的位(是否有健按下)的位(是否有健按下)bne LOOP2; 如果不相等則說明有為如果不相等則說明有為0的位(有按鍵按下),跳轉到的位(有按鍵按下),跳轉到LOOP2mov r3,r3,lsl #1; 如果相等則說明沒有按鍵按下,如果相等則說明沒有按鍵按下,r3左移一位,掃描下一列左移一位,掃描下一列b LOOP1; 繼續掃描繼續掃描LOOP2bl Delay; 延時延時mov r4,r1; 將將r1的值賦給的值賦給r4and r3,r3,#0 x0f; 列掃描碼列掃描碼and r4,r4,#0 x

8、0f; 行掃描碼行掃描碼實驗箱實驗箱4 44 4行列式小鍵盤行列式小鍵盤0 0F F值定義值定義 針對實驗箱內的針對實驗箱內的4 4行列式小鍵盤,編寫行列掃描方行列式小鍵盤,編寫行列掃描方式的按鍵識別程序,并將獲得的按鍵掃描碼轉換為對應的十式的按鍵識別程序,并將獲得的按鍵掃描碼轉換為對應的十六進制值顯示在六進制值顯示在8段數碼管上。顯示字符的對應關系如下。段數碼管上。顯示字符的對應關系如下。按鍵按鍵顯示顯示按鍵按鍵顯示顯示按鍵按鍵顯示顯示按鍵按鍵顯示顯示112233C445566D778899CELE00.ADELBENTF實驗箱小鍵盤鍵值安排及顯示碼表建立實驗箱小鍵盤鍵值安排及顯示碼表建立A

9、REA RamData, DATA, READWRITEseg7table DCB 0 x8e,0 x83,0 x88,0 xc0,0 x86,0 x90,0 x80,0 xf8,0 xa1,0 x82,0 x92,0 x99,0 xc6,0 xb0,0 xa4,0 xf9; F, B, A, 0, E, 9, 8, 7, D, 6, 5, 4, C, 3, 2, 1END123C456D789E0ABF3行行2行行1行行0行行3列列 2列列 1列列 0列列0 x8e0 x830 xc00 x860 xf80 xc60 xf9seg7tableFBA0E9 8 7C3210行行1行行0列列1列

10、列2列列3列列按鍵顯示碼地址按鍵顯示碼地址=seg7table + (行號行號4 + 列號列號)例:例:8鍵顯示碼地址鍵顯示碼地址=seg7table +4+2實驗箱小鍵盤實驗箱小鍵盤0列列1列列2列列3列列3行行將按鍵掃描碼轉換為將按鍵掃描碼轉換為8 8段顯示碼碼表地址段顯示碼碼表地址mov r2,#0 x0; r2清零清零, r2用于加用于加1計數至行號計數至行號mov r1,#1LOOP3mov r0,#0 x0fbic r0,r0,r1;以以r1內為內為1的位將的位將r0內對應位清內對應位清0cmp r0,r4;比較比較r0與與r4的值的值beq LOOP4;如果相等則跳轉到如果相等則

11、跳轉到LOOP4mov r1,r1,lsl #1;r0左移一位左移一位add r2,r2,#1;r2加加1b LOOP3LOOP4mov r4,r2;保存行號保存行號 mov r2,#0 x0;r2清零清零, r2用于加用于加1計數至列號計數至列號LOOP5mov r0,#0 x1mov r0,r0,lsl r2;r0左移左移r2位位cmp r0,r3;r0與與r3比較比較beq LOOP6;相等則跳轉到相等則跳轉到LOOP6add r2,r2,#1;r2加加1b LOOP5LOOP6 ldr r0,=seg7table;取取seg7table的地址的地址 mov r4,r4,lsl #2;

12、行號行號 4add r4,r4,r2;r4保存偏移地址保存偏移地址add r0,r0,r4;取鍵值的地址取鍵值的地址將將r4內的行數據內的行數據轉換為行序號。轉換為行序號。例例: 行數據行數據1011對應對應的行號為的行號為2將將r3內的列數據內的列數據轉換為列序號。轉換為列序號。按鍵顯示碼地址按鍵顯示碼地址 =seg7table + (行號行號4 + 列號列號)鍵盤行鍵盤行/ /列數據輸入列數據輸入/ /輸出端口地址輸出端口地址u列數據驅動采用了列數據驅動采用了8D鎖存器鎖存器74HC274,當,當CLK引腳信號有效時引腳信號有效時輸入端數據將選通到輸出端并保持到下一次輸入端數據將選通到輸出

13、端并保持到下一次CLK有效。有效。 u 產生產生8D鎖存器鎖存器74HC274選通并向鍵盤輸出列數據的操作是向端選通并向鍵盤輸出列數據的操作是向端口地址口地址0 x2000c000輸出列數據。輸出列數據。u 行數據驅動采用了行數據驅動采用了8位數據驅動器位數據驅動器74LVCH244,當,當G引腳信號引腳信號有效時輸出端由高阻態變為開通態,輸入端數據出現在輸出端。有效時輸出端由高阻態變為開通態,輸入端數據出現在輸出端。u產生產生8位數據驅動器位數據驅動器74LVCH244選通并從鍵盤輸入行數據的操選通并從鍵盤輸入行數據的操作是從端口地址作是從端口地址0 x2000c000讀入行數據。讀入行數據

14、。 行列式鍵盤結構及工作原理行列式鍵盤結構及工作原理+5VS00S01S02S10S20S30S03S13S23S33D0 Q0D1 Q1D2 Q2D3 Q3D4 Q4D5 Q5D6 Q6D7 Q7CLKY0 D0Y1 D1Y2 D2Y3 D3Y4 D4Y5 D5Y6 D6Y7 D7G8D鎖存器鎖存器74HC2378位驅動器位驅動器74VCH244處理器數據總線處理器數據總線CS1CS2注注: CS1 = 0 x2000c000+0 x2000c000+寫操作控制信號寫操作控制信號WEWE,為為8D鎖存器鎖存器74273選通信號,選通信號, CS2 = 0 x2000c000+0 x2000c

15、000+讀操作控制信號讀操作控制信號RDRD,為為8位驅動器位驅動器74244選通信號。選通信號。01110111ldr r3,=0 x01ldr r2,=0 x0ffbic r2,r2,r3ldr r0,=0 x2000c000str r2,r0ldr r0,=0 x2000c000ldr r1,r0and r1,r1,#0 x0f cmp r1,#0 x0f向鍵盤列線輸出向鍵盤列線輸出(寫寫)僅有一列為僅有一列為0的數據。的數據。讀讀(輸入輸入)鍵盤行線數據鍵盤行線數據并判斷是否有為并判斷是否有為0的列。的列。8D鎖存器鎖存器74xx273結構及工作原理結構及工作原理CLKDQDQCLKD

16、0D7Q0Q7CLRCLR8 8位鎖存器位鎖存器74LVCH27374LVCH273功能表功能表u 鎖存器就是帶三態輸出的鎖存器就是帶三態輸出的D D觸發器,通常以觸發器,通常以8 8個個D D觸發器為一個封裝。觸發器為一個封裝。u 74LVCH27374LVCH273就是一個典型的就是一個典型的8D8D鎖存器。鎖存器。u 當當MRMR為高電平時,為高電平時,CPCP脈沖上升沿將使得輸出脈沖上升沿將使得輸出QiQi等于其輸入等于其輸入DiDi。u 若若CPCP脈沖無上升沿,則脈沖無上升沿,則DiDi的變化不會影響的變化不會影響QiQi的狀態,這種現象稱為鎖存。的狀態,這種現象稱為鎖存。CLRC

17、LRC CLKLK 操操 作作 1 Qi = Di 1其它其它Qi =不變不變 0 XQi =高高阻態阻態CLKCLKVccVcc Q7Q7 D7D7 D6D6 Q6Q6 Q5Q5 D5D5 D4D4 Q4Q4 CLKCLKCLRCLR Q0Q0 D0D0 D1D1 Q1Q1 Q2Q2 D2D2 D3D3 Q3Q3 GNDGND74LVCH27374LVCH27324位三態驅動器位三態驅動器74xx24474xx244內部邏輯結構內部邏輯結構 引腳功能引腳功能實驗程序流程框圖實驗程序流程框圖 建立異常向量表建立異常向量表 程序從程序從0X0開始開始 預存存儲器參數預存存儲器參數 關閉看門狗定時器關閉看門狗定時器 關閉所有中斷關閉所有中斷 設置系統時鐘設置系統時鐘將存儲器參數寫入處將存儲器參數寫入處理器特殊功能寄存器理器特殊功能寄存器區內的存儲器參數區區內的存儲器參數區獲取顯示碼表起始地址獲取顯示碼表起始地址向數碼管輸出顯示碼向數碼管輸出顯示碼選通選通6個數碼管位選擇個數碼管位選擇

溫馨提示

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

評論

0/150

提交評論