国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

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

3天內不再提示

機械按鍵硬件原理

Linux閱碼場 ? 來源:Linux閱碼場 ? 作者:Linux閱碼場 ? 2022-05-30 10:37 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

1. 背景

1.1 機械按鍵硬件原理

機械按鍵是指在硬件電路中,通過機械按鍵開關實現電平信號的通斷來達到按鍵觸發的硬件組件,見圖1.1:

04794188-dfae-11ec-ba43-dac502259ad0.png

圖1.1

嵌入式等電子設計中,機械按鍵的檢測兩種方法:

● 掃描檢測:定時掃描IO口狀態

● 中斷檢測:啟用IO中斷

??此后的內容都是圍繞定時掃描IO口狀態的方式展開的。

1.2 機械按鍵抖動

1.2.1 抖動原因

由于機械觸點的彈性作用,一個按鍵開關在閉合時不會馬上就穩定的接通,在斷開時也不會一下子徹底斷開,而是在閉合和斷開的瞬間伴隨了一連串的抖動。設按鍵時間為Ta,抖動時間Td,則Ta、Td的特性如下(見圖1.2.1):
● Ta≈100ms(最快50ms);
● Td≈10ms;

04d21506-dfae-11ec-ba43-dac502259ad0.png

圖1.2.1

1.2.2 按鍵消抖

理想的按鍵波形是沒有抖動的,但實際的波形是有電平抖動的,對實際波形進行數字化抽象后會發現數字信號存在毛刺,見圖1.2.2:

0534d240-dfae-11ec-ba43-dac502259ad0.png

圖1.2.2

為了消除電平信號的毛刺,目前工程上有兩種手段,硬件消抖和軟件消抖:

A. 硬件消抖

● 在硬件電路上和按鍵并聯濾波電容

B. 軟件消抖

● 延時確認:當檢測到按鍵狀態改變時,先延時20ms,再次檢測按鍵;
● 持續采樣:持續采集按鍵狀態,用數字狀態機邏輯來判斷按鍵動作。

硬件消抖需要增加元器件,增加項目成本,軟件消抖采用延時確認方式時,軟件程序需要延時等待,延時過程不能進行其他處理,對程序架構不太友好,而持續采樣不會對程序流程造成阻塞,后續對持續采樣方式進行深入闡述。

2. 數字邏輯狀態機的軟件實現

2.1 抽象建模

2.1.1 按鍵操作狀態抽象

一次按鍵動作可以抽象為3個狀態,按下、抬起、長按:
● Keydown:一次按鍵操作的按下
● Keyup:一次按鍵操作的抬起
● Keypress:一次按鍵操作持續按住按鍵


058e5e78-dfae-11ec-ba43-dac502259ad0.png

圖2.1.1

2.1.2 系統抽象

將軟件掃描按鍵狀態的軟件系統進行數字邏輯電路抽象:
時鐘抽象:軟件每隔20ms采集一次按鍵的狀態;
● 狀態抽象:連續掃描3次得到狀態序列011時,keydown才置1;
● 邏輯電路抽象:可以抽象為串行數據檢測器,只有輸入011才置1,采用同步時序邏輯電路的設計思路。

05aedb80-dfae-11ec-ba43-dac502259ad0.png

圖2.1.2

2.2 數字邏輯算法實現

2.2.1 數字邏輯抽象

A. 變量定義

● Scankey:軟件定時掃描的按鍵IO口狀態(0/1);
● Keydown:一次按鍵操作的按下;

B. 狀態邏輯抽象

● 設按鍵輸入Scankey為X,輸出結果Keydown為Y;
● 設沒有1輸入以前的狀態為a;
● 設輸入一個1后為狀態為b;
● 設前后有兩個1輸入后狀態為c;
● 設連續有三個1狀態為d

C. 狀態轉換圖

經過上面的數字邏輯抽象后,可以得到狀態轉換圖和狀態轉換表:

05e08d38-dfae-11ec-ba43-dac502259ad0.png

圖2.2.1

2.2.2 求解過程

A. 化簡狀態轉換圖

通過上節的狀態轉換圖和狀態轉換表(圖2.2.1)可看出,狀態c和狀態d擁有相同的狀態轉換路徑,所以可以將狀態c和狀態d合并為同一個狀態c,化簡后得到相應的狀態轉換圖和狀態轉換表,見圖2.2.2.A:

0611da0a-dfae-11ec-ba43-dac502259ad0.png

圖2.2.2.A

B. 卡諾圖

根據狀態分配原則,狀態M=3,所以取觸發器位數n=2,可以選用兩個D觸發器:D0和D1,且輸出為Q0、Q1。如果取Q1Q0的狀態00、01、10分別代表狀態a、b、c,依據狀態轉換圖得到如下卡諾圖。

065ad7fa-dfae-11ec-ba43-dac502259ad0.png

圖2.2.2.B

C. 分解卡諾圖

將卡諾圖分解,得到圖2.2.2.C:

0684b854-dfae-11ec-ba43-dac502259ad0.png

圖2.2.2.C

D. 解方程

● 由Q1*、Q0*的卡諾圖,可得狀態方程:

Q1*=XQ0 +XQ1Q0*=XQ1ˊQ0ˊ

● 又因為D觸發器特性方程為Q*=D,所以有:

Q0* = D0Q1* = D1

● 結合狀態方程,得驅動方程:

D1 = XQ0 +XQ1D0 = XQ1ˊQ0ˊ

● 由Y的卡諾圖得輸出方程:

Y = XQ0

E. 轉為C程序算法

定義每次掃描得到的按鍵電平信號狀態的變量為Scankey,得按鍵按下Keydown相應C代碼:

D1=Scankey & (Q0 | Q1); D0=Scankey & (~Q0) & (~Q1); Keydown=Scankey & Q0;Q1=D1;Q0=D0;

系統設計時申請一個時鐘定時器資源,20sm觸發一次,每次觸發定時中斷時掃描得到按鍵電平狀態Scankey,并進行上述算法運算,得到Keydown狀態,同理可推出Keyup和Keypress的算法,感興趣者可自行推算。

3. 總結

上述數字狀態機軟件可以把一次按鍵操作的Keydown、Keyup、Keypress一起檢出,代碼精簡,效率高。當然這種方式對系統實時性有要求,狀態會隨輸入改變而改變,同時耗費系統定時器資源,需要定時查詢。

審核編輯 :李倩

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

    關注

    8

    文章

    1752

    瀏覽量

    43618
  • Linux
    +關注

    關注

    88

    文章

    11760

    瀏覽量

    219039
  • 開源項目
    +關注

    關注

    0

    文章

    38

    瀏覽量

    7607

原文標題:3. 總結

文章出處:【微信號:LinuxDev,微信公眾號:Linux閱碼場】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    MAX16150:納米功耗按鍵開關控制器的卓越之選

    按鍵開關控制器和電池保鮮密封器,為解決這些問題提供了一個出色的方案。下面我們就來詳細了解一下這款產品。 文件下載: MAX16150.pdf 一、產品概述 MAX16150是一款超低功耗的按鍵開關控制器,具備開關去抖和內置鎖存功能。它能夠接收來自
    的頭像 發表于 02-06 15:50 ?113次閱讀

    【瑞薩RA × Zephyr評測】LED、按鍵和UART

    實現在Zephyr操作系統下按鍵控制 LED 的開關狀態,并通過 UART 輸出按鍵事件日志,驗證 GPIO 和串口通信功能。
    的頭像 發表于 01-10 10:21 ?2441次閱讀
    【瑞薩RA × Zephyr評測】LED、<b class='flag-5'>按鍵</b>和UART

    如何進行按鍵檢測

    實際情況是由于按鍵機械抖動特性,在程序進入中斷后必須進行濾波處理才能判定是否有效的按鍵事件。如果每個按鍵都是獨立的接一個 IO 引腳,需要我們給每個 IO 都設置一個中斷,程序中過多
    發表于 12-10 06:03

    晶臺KLH11LX系列丨施密特觸發器光耦在按鍵消抖中的應用

    在電子系統中,機械按鍵機械結構特性,在按下或釋放時會產生5-10ms的抖動信號,可能導致電路誤判。施密特觸發器光耦憑借其獨特的遲滯特性,成為硬件消抖的核心器件,而晶臺推出的KLH11
    的頭像 發表于 12-06 09:04 ?473次閱讀
    晶臺KLH11LX系列丨施密特觸發器光耦在<b class='flag-5'>按鍵</b>消抖中的應用

    按鍵消抖的方法

    常用的方法是判斷按鍵按下的時候進行一定的延時,代碼如下: ((KEY==)delay_ms20;whilegpio_get)0;delay_ms20;beep)//蜂鳴器提示音}這種方法簡單易懂
    發表于 11-27 06:12

    硬件消抖方案元件參數的計算方法

    硬件消抖是通過電路設計消除機械開關(如按鍵、繼電器等)在閉合或斷開時產生的抖動信號。以下是常見硬件消抖方案及其元件參數計算方法: 1. RC濾波消抖(低通濾波) 原理:利用電容的充放
    發表于 11-19 06:31

    新品 | Chain DualKey,可編程雙按鍵輸入開發板

    ChainDualKey是一款可編程雙按鍵輸入開發板,搭載ESP32-S3FN8主控芯片。正面集成2個支持熱插拔的青軸機械鍵盤按鍵及2個可編程RGBLED,交互反饋優異;內置350mAh鋰電池,結合
    的頭像 發表于 10-31 16:31 ?1747次閱讀
    新品 | Chain DualKey,可編程雙<b class='flag-5'>按鍵</b>輸入開發板

    ZTP800按鍵升級 | 0.3mm凸起,100萬次按鍵壽命,手感爆棚!

    視頻推薦頻繁使用的薄膜按鍵如何提升操作體驗和耐用性?ZTP800示教器從設計、結構、聲音反饋等多方面對薄膜按鍵進行了升級,還優化了按鍵濾波算法,使其在實際應用中表現出色,快來了解一下吧。ZTP800
    的頭像 發表于 09-10 11:43 ?511次閱讀
    ZTP800<b class='flag-5'>按鍵</b>升級 | 0.3mm凸起,100萬次<b class='flag-5'>按鍵</b>壽命,手感爆棚!

    Key_Scan按鍵掃描函數詳解

    按鍵程序設計思路可以非常簡單:想要知道某個按鍵是否被按下,只需檢測連接到改按鍵的IO引腳是高電平還是低電平,若是低電平,說明按鍵正處于被按下的狀態。
    的頭像 發表于 08-04 14:01 ?1951次閱讀

    BitsButton嵌入式按鍵處理框架

    功能 ??位運算優化引擎? 高效處理按鍵狀態轉換邏輯 硬件抽象層? 統一接口適配各類硬件平臺 ??調試接口?? 可插拔日志輸出 四、核心數據結構 // 單按鍵對象 typedef s
    發表于 08-02 11:24

    請問k230 canmv平臺按鍵怎么使用硬件中斷?

    k230 canmv平臺按鍵怎么使用硬件中斷?
    發表于 06-13 07:10

    AS32X601驅動系列教程 GPIO_按鍵檢測詳解

    led熄滅。 硬件設計 評估板板載三個機械按鍵,分別接入MCU的PE10、PB4、PB3,當按鍵按下時,控制引腳通過按鍵接地,表現為低電平,
    的頭像 發表于 05-23 16:44 ?831次閱讀
    AS32X601驅動系列教程 GPIO_<b class='flag-5'>按鍵</b>檢測詳解

    第六章 GPIO輸入——按鍵檢測

    本篇文章講述了如何在W55MH32上實現按鍵輸入檢測,以及按鍵輸入檢測的注意事項、實現方式和代碼講解等。掌握了按鍵檢測方式之后,我們就可以用按鍵控制我們想要實現的其他功能啦。
    的頭像 發表于 05-22 16:41 ?980次閱讀
    第六章 GPIO輸入——<b class='flag-5'>按鍵</b>檢測

    觸摸按鍵噪聲對策 瑞薩CTSU MCU在應對噪聲困擾時軟硬件設計注意點

    ,以及軟硬件設計中的一些注意點。 ? 1 觸摸按鍵產品線及噪聲性能 瑞薩擁有廣泛的觸摸按鍵產品線,覆蓋了16/32位,3大內核MCU產品,客戶在選擇時擁有更多的選擇性。 ? 新的CTSU2產品擁有如下特性能夠增強噪聲性能的功能,
    的頭像 發表于 03-31 18:31 ?1875次閱讀
    觸摸<b class='flag-5'>按鍵</b>噪聲對策  瑞薩CTSU MCU在應對噪聲困擾時軟<b class='flag-5'>硬件</b>設計注意點

    SDRAM控制器設計之按鍵的處理

    邊沿檢測經常用于按鍵輸入檢測電路中,按鍵按下時輸入信號 key 變為低電平,按鍵抬起變為高電平。當輸入的信號為理想的高低電平時(不考慮毛刺和抖動),邊沿檢測就發揮了很重要的作用。
    的頭像 發表于 03-19 11:47 ?1325次閱讀
    SDRAM控制器設計之<b class='flag-5'>按鍵</b>的處理