




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、二、矩陣鍵盤顯示電路設(shè)計(顯示鍵盤值的平方)矩陣鍵盤顯示電路的設(shè)計一、 實驗?zāi)康?、 了解普通 4×4 鍵盤掃描的原理。2、 進(jìn)一步加深七段碼管顯示過程的理解。3、 了解對輸入/輸出端口的定義方法。二、實驗原理實現(xiàn)鍵盤有兩種方案:一是采用現(xiàn)有的一些芯片實現(xiàn)鍵盤掃描;再就是用軟 件實現(xiàn)鍵盤掃描。作為一個嵌入系統(tǒng)設(shè)計人員,總是會關(guān)心產(chǎn)品成本。目前有很 多芯片可以用來實現(xiàn)鍵盤掃描,但是鍵盤掃描的軟件實現(xiàn)方法有助于縮減一個系 統(tǒng)的重復(fù)開發(fā)成本,且只需要很少的 CPU 開銷。嵌入式控制器的功能能強,可 能充分利用這一資源,這里就介紹一下軟鍵盤的實現(xiàn)方案。圖 10-1 簡單鍵盤電路通常在一個鍵盤
2、中使用了一個瞬時接觸開關(guān),并且用如圖 10-1 所示的簡單電路,微處理器可以容易地檢測到閉合。當(dāng)開關(guān)打開時,通過處理器的 I/O 口的一個上拉電阻提供邏輯 1;當(dāng)開關(guān)閉合時,處理器的/IO口的輸入將被拉低得到邏輯 0??蛇z憾的是,開關(guān)并不完善,因為當(dāng)它們被按下或者被釋放時,并不能夠產(chǎn)生一個明確的 1或者 0。盡管觸點可能看起來穩(wěn)定而且很快地閉合,但與微處理器快速的運行速度相比,這種動作是比較慢的。當(dāng)觸點閉合時,其彈起就像一個球。彈起效果將產(chǎn)生如圖 10-2所示的好幾個脈沖。彈起的持續(xù)時間通常將維持在 5ms30ms 之間。如果需要多個鍵,則可以將每個開關(guān)連接到微處理器上它自己的輸入端口。然而,
3、當(dāng)開關(guān)的數(shù)目增加時,這種方法將很快使用完所有的輸入端口。圖 10-2 按鍵抖動鍵盤上陣列這些開關(guān)最有效的方法(當(dāng)需要5個以上的鍵時)就形成了一個如圖 10-3 所示的二維矩陣。當(dāng)行和列的數(shù)目一樣多時,也就是方型的矩陣,將產(chǎn)生一個最優(yōu)化的布列方式(I/O 端被連接的時候),一個瞬時接觸開關(guān)(按鈕)放置在每一行與線一列的交叉點。矩陣所需的鍵的數(shù)目顯然根據(jù)應(yīng)用程序而不同。 每一行由一個輸出端口的一位驅(qū)動,而每一列由一個電阻器上拉且供給輸入端口一位。 圖 10-3 矩陣鍵盤鍵盤掃描的實現(xiàn)過程如下:對于4×4鍵盤,通常連接為4行、4列,因此要識別按鍵,只需要知道是哪一行和哪一列即可,為了完成這
4、一識別過程,我們的思想是,首先固定輸出 4 行為高電平,然后輸出 4 列為低電平,在讀入輸出的4行的值,通常高電平會被低電平拉低,如果讀入的 4 行均為高電平,那么肯定沒有按鍵按下,否則,如果讀入的4 行有一位為低電平,那么對應(yīng)的該行肯定有一個按鍵按下,這樣便可以獲取到按鍵的行值。同理,獲取列值也是如此,先輸出 4 列為高電平,然后在輸出4 行為低電平,再讀入列值,如果其中有哪一位為低電平,那么肯定對應(yīng)的那一列有按鍵按下。獲取到行值和列值以后,組合成一個 8 位的數(shù)據(jù),根據(jù)實現(xiàn)不同的編碼在對每個按鍵進(jìn)行匹配,找到鍵值后在 7 段碼管顯示。三、實驗內(nèi)容本實驗要求完成的任務(wù)是通過編程實現(xiàn)對4X4矩
5、陣鍵盤按下鍵的鍵值的讀 取,并在數(shù)碼管上完成一定功能(如移動等)的顯示。按鍵盤的定義,按下“*” 鍵則在數(shù)碼管是顯示“E”鍵值。按下“#”鍵在數(shù)碼管上顯示“F”鍵值。其它的鍵則按鍵盤上的標(biāo)識進(jìn)行顯示。在此實驗中數(shù)碼管與 FPGA的連接電路和管腳連接在以前的實驗中都做了詳細(xì)說明,這里不在贅述。本實驗箱上的 4X4 矩陣鍵盤的電路原理如圖 10-4 所示。與 FPGA 的管腳連接如表 10-1 所示。 圖 10-4 4X4 矩陣鍵盤電路原理圖表 10-1 4X4 矩陣鍵與 FPGA 的管腳連接表信號名稱對應(yīng) FPGA 管腳名說明KEY-C0B8矩陣鍵盤的第 1 列選擇KEY-C1A9矩陣鍵盤的第
6、2 列選擇KEY-C2B9矩陣鍵盤的第 3 列選擇KEY-C3E5矩陣鍵盤的第 4 列選擇KEY-R0B6矩陣鍵盤的第 1 行選擇KEY-R1A7矩陣鍵盤的第 2 行選擇KEY-R2B7矩陣鍵盤的第 3 行選擇KEY-R3A8矩陣鍵盤的第 4 行選擇四、實驗步驟1、 打開 QUARTUSII 軟件,新建一個工程。2、 建完工程之后,再新建一個 VHDL File,打開 VHDL編輯器對話框。3、 按照實驗原理和自己的想法,在 VHDL 編輯窗口編寫 VHDL 程序,用戶可參照光盤中提供的示例程序。4、 編寫完 VHDL 程序后,保存起來。方法同實驗一。5、 對自己編寫的 VHDL 程序進(jìn)行編譯
7、并仿真,對程序的錯誤進(jìn)行修改。6、 編譯仿真無誤后,依照 4X4 矩陣鍵、數(shù)碼管與 FPGA 的管腳連接表(表或參照附錄)進(jìn)行管腳分配。表 10-2 是示例程序的管腳分配表。分配完成后,再進(jìn)行全編譯一次,以使管腳分配生效。端口名使用模塊信號對應(yīng) FPGA 管腳說明CLK數(shù)字信號源C13時鐘為 1KHZKR04*4 矩陣鍵盤 R0B6矩陣鍵盤行信號KR14*4 矩陣鍵盤 R1A7KR24*4 矩陣鍵盤 R2B7KR34*4 矩陣鍵盤 R3A8KC04*4 矩陣鍵盤 C0B8矩陣鍵盤列信號KC14*4 矩陣鍵盤 C1A9表 10-2 端口管腳分配表KC24*4 矩陣鍵盤 C2B9矩陣鍵盤列信號KC
8、34*4 矩陣鍵盤 C3E5A數(shù)碼管模塊 A 段F13鍵值顯示B數(shù)碼管模塊 B 段F14C數(shù)碼管模塊 C 段F15D數(shù)碼管模塊 D 段E15E數(shù)碼管模塊 E 段F16F數(shù)碼管模塊 F 段F17G數(shù)碼管模塊 G 段E18SA數(shù)碼管模塊 SEL0G18SB數(shù)碼管模塊 SEL1G17SC數(shù)碼管模塊 SEL2G167、 用下載電纜通過 JTAG 口將對應(yīng)的 sof 文件加載到 FPGA 中。觀察實驗 結(jié)果是否與自己的編程思想一致。五、實驗結(jié)果與現(xiàn)象以設(shè)計的參考示例為例,當(dāng)設(shè)計文件加載到目標(biāo)器件后,將數(shù)字信號源模塊 的時鐘選擇為1KHz,按動“模式”按鍵使單8字?jǐn)?shù)碼管顯示“0”(參考實驗四),按下矩陣鍵
9、盤的某一個鍵,則在數(shù)碼管上顯示對應(yīng)的這個鍵標(biāo)識的鍵值,當(dāng)再按下第二個鍵的時候前一個鍵的鍵值在數(shù)碼管上左移一位。按下“*”鍵則在數(shù)碼管是顯示“E”鍵值。按下“#”鍵在數(shù)碼管上顯示“F”鍵 值。/*工 程:4x4矩陣鍵盤日 期:2011-08-3最后修改:功 能:鍵盤說 明:ROW【3:0】設(shè)為輸入,COL【3:0】設(shè)為輸出。 如果沒有按鍵按下,則ROW【3:0】一直被上 拉為高電平,且 COL【3:0】有低電平輸出, ROW【3:0】中才有可能低電平輸入。*/module keys(clk_50M,rst_n,row,col,dataout,smg_wei);/*/output 3:0col;
10、/矩陣鍵盤列input rst_n; /復(fù)位鍵input clk_50M; /系統(tǒng)時鐘input 3:0row; /矩陣鍵盤行output 7:0dataout; /鍵盤值數(shù)碼管顯示數(shù)據(jù)output 7:0smg_wei; /數(shù)碼管顯示使能reg 7:0dataout;reg 3:0col;reg 3:0key_board_val;/*/assign smg_wei=0; /八個數(shù)碼管顯示/*/ /分頻部分開始/*/reg19:0cnt; /計數(shù)子always (posedge clk_50M or negedge rst_n)if(!rst_n)cnt<=0;elsecnt<=c
11、nt+1'b1;wire key_clk=cnt19;/ 220/50M=21ms/* 狀態(tài)機部分 獨熱碼編碼*/parameter NO_KEY_PRESSED=6'b000_001;/沒有鍵按下parameter SCAN_COL0 =6'b000_010;/掃描第 0 列parameter SCAN_COL1 =6'b000_100;/掃描第 1 列parameter SCAN_COL2 =6'b001_000;/掃描第 2 列parameter SCAN_COL3 =6'b010_000;/掃描第 3 列parameter KEY_PRE
12、SSED =6'b100_000;/有鍵按下/*/reg 5:0current_state,next_state; /現(xiàn)態(tài)和次態(tài) /*/ /復(fù)位/*/always (posedge key_clk or negedge rst_n)if(!rst_n)current_state<=NO_KEY_PRESSED;else current_state<=next_state;/*/always * /(current_state) /根據(jù)條件轉(zhuǎn)移狀態(tài)case (current_state)NO_KEY_PRESSED: /沒有鍵按下 if(row!=4'hf)next_
13、state=SCAN_COL0; elsenext_state=NO_KEY_PRESSED; SCAN_COL0: /掃描第 0 列if(row!=4'hf)next_state=KEY_PRESSED;elsenext_state=SCAN_COL1;SCAN_COL1: /掃描第 1 列if(row!=4'hf)next_state=KEY_PRESSED;else next_state=SCAN_COL2;SCAN_COL2: /掃描第 2 列if(row!=4'hf)next_state=KEY_PRESSED;else next_state=SCAN_COL
14、3;SCAN_COL3: /掃描第 3 列if(row!=4'hf)next_state=KEY_PRESSED;else next_state=NO_KEY_PRESSED;KEY_PRESSED: /有按鍵按下if(row!=4'hf)next_state=KEY_PRESSED;elsenext_state=NO_KEY_PRESSED;endcase/*/reg key_pressed_flag; /按鍵按下標(biāo)志reg 3:0col_val; /列值reg 3:0row_val; /行值/*/根據(jù)次態(tài),給相應(yīng)的寄存器賦值/*/always (posedge key_cl
15、k or negedge rst_n)if(!rst_n) /復(fù)位begincol<=4'h0;key_pressed_flag<=0;endelsecase (next_state)NO_KEY_PRESSED:begincol<=4'h0;key_pressed_flag<=0;endSCAN_COL0: /掃描第 0 列col<=4'b1110;SCAN_COL1: /掃描第 1 列col<=4'b1101;SCAN_COL2: /掃描第 2 列col<=4'b1011;SCAN_COL3: /掃描第 3
16、列col<=4'b0111;KEY_PRESSED: /有按鍵按下begincol_val<=col; / 鎖存列值row_val<=row; / 鎖存行值key_pressed_flag<=1; / 置鍵盤按下標(biāo)endendcase /*/ / 掃描行列值部分 開始/*/always (posedge key_clk or negedge rst_n)if(!rst_n)key_board_val<=4'h0;elseif(key_pressed_flag)case(col_val,row_val)8'b11101110 : key_bo
17、ard_val <= 4'h0;8'b11101101 : key_board_val <= 4'h4;8'b11101011 : key_board_val <= 4'h8;8'b11100111 : key_board_val <= 4'hC;8'b11011110 : key_board_val <= 4'h1;8'b11011101 : key_board_val <= 4'h5;8'b11011011 : key_board_val <= 4
18、9;h9;8'b11010111 : key_board_val <= 4'hD;8'b10111110 : key_board_val <= 4'h2;8'b10111101 : key_board_val <= 4'h6;8'b10111011 : key_board_val <= 4'hA;8'b10110111 : key_board_val <= 4'hE;8'b01111110 : key_board_val <= 4'h3; 8'b01111101 : key_board_val <= 4'h7;8'b01111011 : key_board_val <= 4'hB;8'b01110111 : key_board_val <= 4'hF; endcase/*/ / 鍵盤值轉(zhuǎn)換為數(shù)碼管顯示 /*/always * /(key_board_val)begincase(key_board_val)4'h0:dataout<=8'b11000000; /04'h1:datao
溫馨提示
- 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度農(nóng)村土地租賃與農(nóng)產(chǎn)品訂單合同
- 二零二五年度美甲店知識產(chǎn)權(quán)保護(hù)合作協(xié)議
- 二零二五年度高端派遣出國勞務(wù)合同模板(IT領(lǐng)域)
- 2025年度貓咪寵物智能領(lǐng)養(yǎng)與買賣合同
- 二零二五年度醫(yī)療健康行業(yè)員工入職保密及服務(wù)合同
- 2025福建福州市建筑設(shè)計院有限責(zé)任公司招聘22人筆試參考題庫附帶答案詳解
- 2025廣西貴港市金融投資發(fā)展集團(tuán)有限公司招聘4人筆試參考題庫附帶答案詳解
- 交通運輸系統(tǒng)規(guī)劃知到智慧樹章節(jié)測試課后答案2024年秋黑龍江工程學(xué)院
- 2025年河北保定鈔票紙業(yè)有限公司人員招聘29名筆試參考題庫附帶答案詳解
- 2025年華電煤業(yè)集團(tuán)有限公司校園招聘筆試參考題庫附帶答案詳解
- 湖南高速鐵路職業(yè)技術(shù)學(xué)院單招職業(yè)技能測試參考試題庫(含答案)
- 《商務(wù)數(shù)據(jù)分析》 課件 項目一 商務(wù)數(shù)據(jù)分析認(rèn)知
- 2023學(xué)年、2024學(xué)年臨平區(qū)公辦學(xué)校校方責(zé)任險投保采購項目招標(biāo)文件
- 橋梁施工案例分析
- 2024露天煤礦智能化建設(shè)與管理規(guī)范
- 2024家政行業(yè)現(xiàn)狀分析
- 新教材-外研版高中英語必修第二冊全冊重點單詞短語句型匯總
- 間質(zhì)性腎炎-課件
- 中國成人患者腸外腸內(nèi)營養(yǎng)臨床應(yīng)用指南(2023版)
- 冠狀動脈粥樣硬化性心臟病患者藥物治療管理路徑專家共識2023版解讀
- GA/T 2012-2023竊照專用器材鑒定技術(shù)規(guī)范
評論
0/150
提交評論