吴忠躺衫网络科技有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于FPGA的4x4矩陣鍵盤驅動設計

CHANBAEK ? 來源:哈勒昆 ? 作者:沈長棋 ? 2023-07-23 11:41 ? 次閱讀

本次設計采用FPGA驅動4x4矩陣鍵盤,這個原理其實很簡單,但是我在做的時候曾經理解錯了一個地方,導致走了一天的彎路,因為感覺比較有意思,所以想在這分享一下。

014x4矩陣鍵盤驅動原理

首先看一下矩陣鍵盤的原理圖,矩陣鍵盤的原理與獨立按鍵類似,可以將單獨的一行或一列當做一個獨立按鍵使用。圖中的row_one ~ row_four表示矩陣鍵盤的四行,col_one~col_four表示矩陣鍵盤的四列。

圖片

矩陣鍵盤的掃描識別可以通過行列掃描來完成,首先我們先將4行的I/O口(row_one、row_two、row_three、row_four)全部輸出高電平,4列的I/O口(col_one、col_two、col_three、col_four)全部輸出低電平,若是這4行按鍵里有按鍵按下,那么按鍵按下的那一行對應的I/O口電平就會被拉低,這樣我們就能確定按下按鍵的行坐標。接下來便需要確定列坐標,獲取列坐標的方法與行坐標的方法類似,就是先讓4行的I/O口全部輸出低電平,4列的I/O口全部輸出高電平,這樣按鍵按下的那一列I/O口的電平就會被拉低,這樣我們便確定了對應的列坐標,如此便能獲取到對應按下按鍵的行列坐標。

02設計思路

這里需要討論的便是如何實現4×4矩陣鍵盤的程序,其邏輯流程圖如下圖所示。首先需要定義8個輸出端口,分別表示四行四列,然后先讓四行的I/O輸出高電平,四列的I/O輸出低電平,這是初始狀態。然后便是編寫消抖程序,當有按鍵按下時,首先便是進行消抖,利用狀態機編寫消抖程序,識別判斷當前狀態是否為抖動。確定為按鍵按下后便開始判斷4行中哪一行的電平被拉低,這樣便能確定是哪一行的按鍵被按下,這里需要定義一個表示行的標志位,用來標志是哪一行按鍵按下。隨后便將四行的I/O輸出低電平,四列的I/O輸出高電平,然后便開始逐列判斷哪一列的電平被拉低,如此便能判斷按下按鍵的列坐標。此處也需要定義一個表示列的標志位。最后便是綜合判斷,通過行的標志位和列的標志位來判斷按下按鍵的行列坐標,如此便確定具體按下的按鍵。

圖片

接下來看程序(此處分享的程序為沒有帶按鍵消抖的,只是按照矩陣鍵盤的掃描識別思路大致寫了一下),首先是端口的定義,定義四行四列,但是有一點,原理上講解的是輸出電平,在這里這四個端口先定義為輸入狀態,因為這不是頂層文件,在頂層文件中再定義為輸出。然后定義的key_lock為輸出控制端,我這里是利用矩陣鍵盤設置的密碼鎖,每一個矩陣按鍵對應一個鍵值,當按下四個按鍵對應密碼正確時,key_lock輸出高電平。key_row_flag為行標志位,當檢測到第一行的按鍵被按下時標志位置1,當第一行的按鍵被按下時標志位置2,同理,第三行置3第四行便置4。key_col_flag為列標志位,原理與行標志位一樣。然后row_flag與col_flag為行掃描標志位與列掃描標志位,當row_flag為1時進行行掃描,當col_flag為1時進行列掃描。key_output為輸出按下對應按鍵的鍵值。key_row_col為當前掃描狀態,為1時表示行掃描結束,為2時表示列掃描結束,標志列掃描結束后便開始獲取按鍵的鍵值。

圖片

接下來便開始看行掃描,行掃描和列掃描初始狀態為row_flag為1、col_flag為0。然后開始捕捉四行的引腳哪一行的引腳出現下降沿置0,若有一行的引腳被拉低置0時,行標志位立刻記下是第幾行被拉低,然后行列狀態標志位便置1,行掃描標志位row_flag清零,列掃描標志位置1,開始進入列掃描。

圖片

然后就是列掃描,在列掃描中與行掃描原理一樣,檢測每一列引腳的電平,若其中一列的電平被拉低,則列標志位立刻記錄被拉低的列數為第幾列,然后恢復行掃描標志位準備進入下一輪掃描,同時將列掃描標志位清零,行列狀態標志位置2,準備進入判斷按下按鍵鍵值模式。

圖片

接下來便是開始判斷按下按鍵的鍵值,因為我這里只需要0~9這十個數字,而矩陣鍵盤有16個按鍵,所以寫的稍微簡單一點。從第一行第一列開始為1,第一行第二列為2,后面的依次類推。將第四列和第四行的鍵值全部設置的為0。這里進入判斷鍵值的條件為行列標志位key_row_col置2,也就是必須在列掃描完成之后才能進入判斷。

圖片

這里在鍵值判斷完成之后便是將當前獲取的鍵值存儲起來。這里因為行列標志位key_row_col比按鍵輸出鍵值key_output差了一個時鐘周期,所以賦值錯誤,然后我便重新定義了一個寄存器key_row_col_r用來過渡一下。下面定義的one起初是為了在key_row_col為2時不重復賦值才寫的,是為了避免賦值后面輸出的按鍵鍵值,也就是20ns的周期中只進去賦值一次,但是后面發現了時序相差一個時鐘周期便在else中加入了那段,還未解決便定義了寄存器key_row_col_r,這才得以解決。

圖片

圖片

圖片

最后便是設置密碼,輸出控制部分。此處將密碼設置為2653。

圖片

接下來便是波形仿真部分,在這里寫入2653每一個鍵值對應按鍵的行列坐標便可。仿真腳本文件寫好之后便可導入仿真。

圖片

圖片

圖片

圖片

03仿真波形

在仿真波形圖中根據寫入的對應鍵值來觀察行、列標志位中的行列坐標是否正確,然后根據行列坐標來觀察按鍵輸出鍵值key_output是否一致,key_temp系列的值為存儲的四位密碼,當每一位與設置的密碼一致時,key_lock輸出高電平。

圖片

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • FPGA
    +關注

    關注

    1630

    文章

    21796

    瀏覽量

    605987
  • 原理圖
    +關注

    關注

    1300

    文章

    6358

    瀏覽量

    235161
  • 矩陣鍵盤
    +關注

    關注

    7

    文章

    207

    瀏覽量

    31543
  • 驅動設計
    +關注

    關注

    1

    文章

    111

    瀏覽量

    15314
收藏 人收藏

    評論

    相關推薦

    勇敢的芯伴你玩轉Altera FPGA連載19:4X4矩陣按鍵電路

    `勇敢的芯伴你玩轉Altera FPGA連載19:4X4矩陣按鍵電路特權同學,版權所有配套例程和更多資料下載鏈接:http://pan.baidu.com/s/1i5LMUUD FPGA
    發表于 11-03 18:46

    基于FPGA4x4鍵盤矩陣

    基于FPGA4x4鍵盤矩陣
    發表于 12-14 01:26

    【案例分享】基于FPGA4x4矩陣鍵盤驅動調試

    首先找了本書看了下矩陣鍵盤驅動原理,一般來說4x4矩陣鍵盤的原理圖如下,有四根行線和四根列線,
    發表于 07-09 08:30

    如何接口矩陣4x4鍵盤接口與spartan 3e fpga

    嗨,請幫我接口矩陣4x4鍵盤接口與spartan 3e fpga,描述fpga上要使用的引腳和要寫入的代碼。
    發表于 11-11 11:51

    帶有stm32的宏鍵盤4x4矩陣

    描述帶有stm32的宏鍵盤4x4矩陣
    發表于 08-16 06:48

    4X4鍵盤程序

    4X4鍵盤程序 //-----------4X4鍵盤程序--------------// uchar keboard(void) { uchar xxa,yyb,i,key
    發表于 10-17 15:15 ?1357次閱讀

    4x4矩陣鍵盤程序及原理圖PCB

    4x4矩陣鍵盤程序及原理圖PCB,供大家下載。
    發表于 12-21 18:25 ?0次下載

    4x4矩陣鍵盤工作原理及掃描程序

    矩陣鍵盤的動態掃描確實略顯復雜,不可能就是讀一個端口數據,然后馬上就出來結果。這需要對依次每一行的按鍵進行掃描、判斷,然后得出結果。本文主要介紹了矩陣鍵盤掃描以及
    的頭像 發表于 02-24 15:30 ?24.2w次閱讀
    <b class='flag-5'>4x4</b><b class='flag-5'>矩陣</b><b class='flag-5'>鍵盤</b>工作原理及掃描程序

    使用單片機實現4x4矩陣鍵盤的程序免費下載

    本文檔的主要內容詳細介紹的是使用單片機實現4x4矩陣鍵盤的程序免費下載。
    發表于 08-20 17:31 ?12次下載
    使用單片機實現<b class='flag-5'>4x4</b><b class='flag-5'>矩陣</b><b class='flag-5'>鍵盤</b>的程序免費下載

    使用51單片機實現4x4矩陣鍵盤的程序免費下載

    本文檔的主要內容詳細介紹的是使用51單片機實現4x4矩陣鍵盤的程序免費下載。
    發表于 07-04 17:41 ?11次下載
    使用51單片機實現<b class='flag-5'>4x4</b><b class='flag-5'>矩陣</b><b class='flag-5'>鍵盤</b>的程序免費下載

    使用51單片機設計4X4矩陣鍵盤的程序免費下載

    本文檔的主要內容詳細介紹的是使用51單片機設計4X4矩陣鍵盤的程序免費下載。
    發表于 06-27 17:42 ?16次下載
    使用51單片機設計<b class='flag-5'>4X4</b><b class='flag-5'>矩陣</b><b class='flag-5'>鍵盤</b>的程序免費下載

    微雪電子4x4矩陣式按鍵模塊小鍵盤簡介

    4x4矩陣式按鍵模塊 16個按鍵 占用8個IO接口 提供測試程序 原理圖 型號 4x4 Keypad
    的頭像 發表于 12-30 09:27 ?3002次閱讀
    微雪電子<b class='flag-5'>4x4</b><b class='flag-5'>矩陣</b>式按鍵模塊小<b class='flag-5'>鍵盤</b>簡介

    數碼管顯示4X4鍵盤矩陣按鍵的仿真原理圖免費下載

    本文檔的主要內容詳細介紹的是數碼管顯示4X4鍵盤矩陣按鍵的仿真原理圖免費下載。
    發表于 12-31 10:04 ?49次下載
    數碼管顯示<b class='flag-5'>4X4</b><b class='flag-5'>鍵盤</b><b class='flag-5'>矩陣</b>按鍵的仿真原理圖免費下載

    4X4矩陣鍵盤的應用仿真電路圖和keil程序免費下載

    本文檔的主要內容詳細介紹的是4X4矩陣鍵盤的應用仿真電路圖和keil程序免費下載。
    發表于 05-14 17:31 ?38次下載
    <b class='flag-5'>4X4</b><b class='flag-5'>矩陣</b><b class='flag-5'>鍵盤</b>的應用仿真電路圖和keil程序免費下載

    帶有stm32的宏鍵盤4x4矩陣

    電子發燒友網站提供《帶有stm32的宏鍵盤4x4矩陣.zip》資料免費下載
    發表于 07-28 14:19 ?5次下載
    帶有stm32的宏<b class='flag-5'>鍵盤</b><b class='flag-5'>4x4</b><b class='flag-5'>矩陣</b>
    百家乐官网凯时娱乐平台| 澳门百家乐玩法| 大发888游戏平台dafa888gw| 百家乐官网游戏玩法技巧| 百家乐新规则| 徐闻县| 太阳城百家乐试玩优惠| 网上真钱麻将游戏| 赌博百家乐的路单| 正品百家乐玩法| 澳门百家乐官网的故事| 最佳场百家乐的玩法技巧和规则 | 百家乐有哪些注| 威尼斯人娱乐城 老品牌值得信赖| 皇家国际娱乐| 百家乐洗码软件| 阿克苏市| 百家乐园百利宫娱乐城信誉好...| 澳门博彩网站| 百家乐视频裸聊| 布尔津县| 真人百家乐赢钱| 百家乐官网扑克投注赢钱法| 布加迪百家乐的玩法技巧和规则| 盛世国际| 太阳城百家乐筹码租| 百家乐官网庄家抽水| 沙龙百家乐娱乐网| 百家乐官网投注技巧球讯网| 威尼斯人娱乐城网上赌场| 澳门档百家乐官网的玩法技巧和规则| 百家乐园sun811| 百家乐官网稳赢投注| 大发888方管下载| 女优百家乐官网的玩法技巧和规则| 百家乐平7s88| 权威百家乐官网信誉网站| 大发888登不上| 利博百家乐官网的玩法技巧和规则 | 大连百家乐食品| 百家乐官网赢家|