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

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

3天內不再提示

機械彈性按鍵的原理和編程方法介紹

冬至子 ? 來源:電子技術實驗XJTU ? 作者:孫敏 ? 2023-09-17 16:35 ? 次閱讀

按鍵是數字系統最基本的輸入接口設備,本文主要介紹機械彈性按鍵的原理和編程方法。

0****1

按鍵原理

以EGO1開放板按鍵為例,用戶可用的板載按鍵主要包括S6(低有效按鍵),S0~S4(高有效按鍵)。

圖片

由原理圖可以看到,按鍵S6在未按下時,FPGA引腳通過電阻連接3.3V高電平;當按鍵按下,與地連通,引腳電平被拉低。S0~S4則相反,按鍵未按下時,引腳為低電平;按鍵按下時,接通3.3V電源,引腳電平由低變高。

因此,我們通過檢測高低電平的變化,就可以檢測按鍵是否被按下。

但是實際情況是,我們使用的是機械彈性按鍵,在按鍵按下和彈起過程中會存在抖動,如圖(a)。

圖片

一般抖動會在5~10ms左右,按鍵持續時間在幾百ms,而FPGA時鐘是ns級的,檢測頻率很高,如果僅僅通過高低電平的變化去判斷按鍵是否被按下,則在一次按鍵按下時,就會被檢測為多次有效按鍵,如圖(b),從而造成誤觸發。

我們需要對按鍵信號進行消抖處理,得出圖(c)的穩定的按鍵信號。

0****2

按鍵消抖方法

由于抖動大約5-10ms,可以使用一個15ms的計數器。

圖片

每當檢測到輸入有變化就復位計數器,然后進行15ms的延時,如果在15ms之內有抖動,計數器就會復位重新計數,直到能夠連續計數15ms,說明按鍵鍵值在15ms內沒有發生改變,按鍵進入穩定狀態,此時,可以輸出穩定的鍵值。

同樣,當按鍵彈起時出現鍵值的改變,就復位計數器,只有當按鍵穩定,計數器能夠連續計數15ms時,才輸出穩定的鍵值。這樣我們就得到一個穩定的沒有抖動的采樣鍵值。

03

按鍵消抖的Verilog描述

遵循一個always描述一個信號的原則,下面分別對各個信號進行描述。

按鍵寄存器key_reg描述:

圖片

延時計數器delay_cnt描述:

圖片

鍵值key_value描述:

圖片

按鍵的標志信號key_p_flag和key_n_flag描述:

圖片

圖片

按鍵標志信號是一個指示按鍵有效的只持續1個時鐘周期的標志信號,一般作為后級模塊的控制信號。

當計數值為1并且鍵值為一是則為上升沿標志,當計數值為1,且鍵值為0,就輸出下降沿標志信號。

仿真波形如下圖。

圖片

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

    關注

    112

    文章

    15334

    瀏覽量

    172345
  • 寄存器
    +關注

    關注

    30

    文章

    5141

    瀏覽量

    118055
  • 計數器
    +關注

    關注

    32

    文章

    2199

    瀏覽量

    93302
  • FPGA芯片
    +關注

    關注

    3

    文章

    246

    瀏覽量

    39572
  • 按鍵電路
    +關注

    關注

    1

    文章

    35

    瀏覽量

    21633
收藏 人收藏

    評論

    相關推薦

    按鍵的硬件消抖電路原理詳解

    按鍵消抖通常的按鍵所用開關為機械彈性開關,當機械觸點斷開、閉合時,由于機械觸點的彈性作用,一個
    的頭像 發表于 02-02 09:42 ?8364次閱讀
    <b class='flag-5'>按鍵</b>的硬件消抖電路原理詳解

    按鍵消抖電路的實現方式

    按鍵消抖通常的按鍵所用開關為機械彈性開關,當機械觸點斷開、閉合時,由于機械觸點的彈性作用,一個
    的頭像 發表于 08-29 11:25 ?4211次閱讀

    單片機硬件消抖電路實現方法

    按鍵消抖通常的按鍵所用開關為機械彈性開關,當機械觸點斷開、閉合時,由于機械觸點的彈性作用,一個
    發表于 06-28 11:46 ?794次閱讀
    單片機硬件消抖電路實現<b class='flag-5'>方法</b>

    單片機按鍵消抖的原理和方法詳解

    通常的按鍵所用開關為機械彈性開關,當機械觸點斷開、閉合時,由于機械觸點的彈性作用,一個按鍵開關在
    的頭像 發表于 12-22 10:06 ?5510次閱讀
    單片機<b class='flag-5'>按鍵</b>消抖的原理和<b class='flag-5'>方法</b>詳解

    按鍵消抖及原理是什么

    淺談:在設計單片機按鍵輸入的時候,進行按鍵消抖是防止按鍵輸入被CPU誤讀多次的必要手段。一、按鍵抖動通常的按鍵所用開關為
    發表于 07-21 06:02

    獨立按鍵的使用相關資料分享

    機械彈性開關:當機械觸點斷開、閉合時,由于機械觸點的彈性作用,一個按鍵開關在閉合時不會馬上就穩定的接通,在斷開時也不會一下子徹底斷開,而是在
    發表于 01-06 07:57

    學習獨立按鍵方法

    按鍵按鍵是一種電子開關;按鍵消抖通常按鍵所用開關為機械彈性開關,當機械觸點斷開,閉合時電壓信號如
    發表于 01-07 07:05

    介紹獨立按鍵的消抖方法

    目錄按鍵介紹按鍵消抖方法按鍵檢測原理C51例程歡迎加QQ及郵件交流按鍵
    發表于 01-14 07:49

    vhdl按鍵消抖程序(七種方式實現按鍵消抖)

    按鍵消抖通常的按鍵所用開關為機械彈性開關,當機械觸點斷開、閉合時,由于機械觸點的彈性作用,一個
    發表于 01-29 16:04 ?5.5w次閱讀
    vhdl<b class='flag-5'>按鍵</b>消抖程序(七種方式實現<b class='flag-5'>按鍵</b>消抖)

    基于尖峰脈沖的按鍵消抖

    按鍵消抖通常的按鍵所用開關為機械彈性開關,當機械觸點斷開、閉合時,由于機械觸點的彈性作用,一個
    的頭像 發表于 11-20 07:09 ?2833次閱讀

    【單片機】按鍵消抖及原理(硬件和軟件方法詳解)

    淺談:在設計單片機按鍵輸入的時候,進行按鍵消抖是防止按鍵輸入被CPU誤讀多次的必要手段。一、按鍵抖動通常的按鍵所用開關為
    發表于 11-11 12:06 ?13次下載
    【單片機】<b class='flag-5'>按鍵</b>消抖及原理(硬件和軟件<b class='flag-5'>方法</b>詳解)

    為什么要進行按鍵消抖

    按鍵消抖通常的按鍵所用開關為機械彈性開關,當機械觸點斷開、閉合時,由于機械觸點的彈性作用,一個
    的頭像 發表于 04-19 14:55 ?9639次閱讀

    單片機按鍵為什么要進行按鍵消抖

    按鍵消抖通常的按鍵所用開關為機械彈性開關,當機械觸點斷開、閉合時,由于機械觸點的彈性作用,一個
    發表于 06-28 11:45 ?1110次閱讀
    單片機<b class='flag-5'>按鍵</b>為什么要進行<b class='flag-5'>按鍵</b>消抖

    FPGA內實現按鍵消抖的方法

    通常的按鍵所用開關為機械彈性開關,當機械觸點斷開、閉合時,由于機械觸點的彈性作用,一個按鍵開關在
    的頭像 發表于 09-05 10:43 ?775次閱讀
    FPGA內實現<b class='flag-5'>按鍵</b>消抖的<b class='flag-5'>方法</b>

    為什么要進行按鍵消抖?按鍵抖動的原理 按鍵消抖的方法

    按鍵消抖通常的按鍵所用開關為機械彈性開關,當機械觸點斷開、閉合時,由于機械觸點的彈性作用,一個
    的頭像 發表于 02-17 17:07 ?7628次閱讀
    為什么要進行<b class='flag-5'>按鍵</b>消抖?<b class='flag-5'>按鍵</b>抖動的原理 <b class='flag-5'>按鍵</b>消抖的<b class='flag-5'>方法</b>
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>