91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

機(jī)械按鍵硬件原理

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

掃碼添加小助手

加入工程師交流群

1. 背景

1.1 機(jī)械按鍵硬件原理

機(jī)械按鍵是指在硬件電路中,通過機(jī)械按鍵開關(guān)實(shí)現(xiàn)電平信號(hào)的通斷來達(dá)到按鍵觸發(fā)的硬件組件,見圖1.1:

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

圖1.1

嵌入式等電子設(shè)計(jì)中,機(jī)械按鍵的檢測(cè)兩種方法:

● 掃描檢測(cè):定時(shí)掃描IO口狀態(tài)

● 中斷檢測(cè):?jiǎn)⒂肐O中斷

??此后的內(nèi)容都是圍繞定時(shí)掃描IO口狀態(tài)的方式展開的。

1.2 機(jī)械按鍵抖動(dòng)

1.2.1 抖動(dòng)原因

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

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

圖1.2.1

1.2.2 按鍵消抖

理想的按鍵波形是沒有抖動(dòng)的,但實(shí)際的波形是有電平抖動(dòng)的,對(duì)實(shí)際波形進(jìn)行數(shù)字化抽象后會(huì)發(fā)現(xiàn)數(shù)字信號(hào)存在毛刺,見圖1.2.2:

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

圖1.2.2

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

A. 硬件消抖

● 在硬件電路上和按鍵并聯(lián)濾波電容

B. 軟件消抖

● 延時(shí)確認(rèn):當(dāng)檢測(cè)到按鍵狀態(tài)改變時(shí),先延時(shí)20ms,再次檢測(cè)按鍵;
● 持續(xù)采樣:持續(xù)采集按鍵狀態(tài),用數(shù)字狀態(tài)機(jī)邏輯來判斷按鍵動(dòng)作。

硬件消抖需要增加元器件,增加項(xiàng)目成本,軟件消抖采用延時(shí)確認(rèn)方式時(shí),軟件程序需要延時(shí)等待,延時(shí)過程不能進(jìn)行其他處理,對(duì)程序架構(gòu)不太友好,而持續(xù)采樣不會(huì)對(duì)程序流程造成阻塞,后續(xù)對(duì)持續(xù)采樣方式進(jìn)行深入闡述。

2. 數(shù)字邏輯狀態(tài)機(jī)的軟件實(shí)現(xiàn)

2.1 抽象建模

2.1.1 按鍵操作狀態(tài)抽象

一次按鍵動(dòng)作可以抽象為3個(gè)狀態(tài),按下、抬起、長(zhǎng)按:
● Keydown:一次按鍵操作的按下
● Keyup:一次按鍵操作的抬起
● Keypress:一次按鍵操作持續(xù)按住按鍵


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

圖2.1.1

2.1.2 系統(tǒng)抽象

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

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

圖2.1.2

2.2 數(shù)字邏輯算法實(shí)現(xiàn)

2.2.1 數(shù)字邏輯抽象

A. 變量定義

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

B. 狀態(tài)邏輯抽象

● 設(shè)按鍵輸入Scankey為X,輸出結(jié)果Keydown為Y;
● 設(shè)沒有1輸入以前的狀態(tài)為a;
● 設(shè)輸入一個(gè)1后為狀態(tài)為b;
● 設(shè)前后有兩個(gè)1輸入后狀態(tài)為c;
● 設(shè)連續(xù)有三個(gè)1狀態(tài)為d

C. 狀態(tài)轉(zhuǎn)換圖

經(jīng)過上面的數(shù)字邏輯抽象后,可以得到狀態(tài)轉(zhuǎn)換圖和狀態(tài)轉(zhuǎn)換表:

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

圖2.2.1

2.2.2 求解過程

A. 化簡(jiǎn)狀態(tài)轉(zhuǎn)換圖

通過上節(jié)的狀態(tài)轉(zhuǎn)換圖和狀態(tài)轉(zhuǎn)換表(圖2.2.1)可看出,狀態(tài)c和狀態(tài)d擁有相同的狀態(tài)轉(zhuǎn)換路徑,所以可以將狀態(tài)c和狀態(tài)d合并為同一個(gè)狀態(tài)c,化簡(jiǎn)后得到相應(yīng)的狀態(tài)轉(zhuǎn)換圖和狀態(tài)轉(zhuǎn)換表,見圖2.2.2.A:

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

圖2.2.2.A

B. 卡諾圖

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

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*的卡諾圖,可得狀態(tài)方程:

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

● 又因?yàn)镈觸發(fā)器特性方程為Q*=D,所以有:

Q0* = D0Q1* = D1

● 結(jié)合狀態(tài)方程,得驅(qū)動(dòng)方程:

D1 = XQ0 +XQ1D0 = XQ1ˊQ0ˊ

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

Y = XQ0

E. 轉(zhuǎn)為C程序算法

定義每次掃描得到的按鍵電平信號(hào)狀態(tài)的變量為Scankey,得按鍵按下Keydown相應(yīng)C代碼:

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

系統(tǒng)設(shè)計(jì)時(shí)申請(qǐng)一個(gè)時(shí)鐘定時(shí)器資源,20sm觸發(fā)一次,每次觸發(fā)定時(shí)中斷時(shí)掃描得到按鍵電平狀態(tài)Scankey,并進(jìn)行上述算法運(yùn)算,得到Keydown狀態(tài),同理可推出Keyup和Keypress的算法,感興趣者可自行推算。

3. 總結(jié)

上述數(shù)字狀態(tài)機(jī)軟件可以把一次按鍵操作的Keydown、Keyup、Keypress一起檢出,代碼精簡(jiǎn),效率高。當(dāng)然這種方式對(duì)系統(tǒng)實(shí)時(shí)性有要求,狀態(tài)會(huì)隨輸入改變而改變,同時(shí)耗費(fèi)系統(tǒng)定時(shí)器資源,需要定時(shí)查詢。

審核編輯 :李倩

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 機(jī)械
    +關(guān)注

    關(guān)注

    8

    文章

    1752

    瀏覽量

    43637
  • Linux
    +關(guān)注

    關(guān)注

    88

    文章

    11763

    瀏覽量

    219079
  • 開源項(xiàng)目
    +關(guān)注

    關(guān)注

    0

    文章

    38

    瀏覽量

    7611

原文標(biāo)題:3. 總結(jié)

文章出處:【微信號(hào):LinuxDev,微信公眾號(hào):Linux閱碼場(chǎng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    MAX16150:納米功耗按鍵開關(guān)控制器的卓越之選

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

    【瑞薩RA × Zephyr評(píng)測(cè)】LED、按鍵和UART

    實(shí)現(xiàn)在Zephyr操作系統(tǒng)下按鍵控制 LED 的開關(guān)狀態(tài),并通過 UART 輸出按鍵事件日志,驗(yàn)證 GPIO 和串口通信功能。
    的頭像 發(fā)表于 01-10 10:21 ?2446次閱讀
    【瑞薩RA × Zephyr評(píng)測(cè)】LED、<b class='flag-5'>按鍵</b>和UART

    如何進(jìn)行按鍵檢測(cè)

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

    晶臺(tái)KLH11LX系列丨施密特觸發(fā)器光耦在按鍵消抖中的應(yīng)用

    在電子系統(tǒng)中,機(jī)械按鍵機(jī)械結(jié)構(gòu)特性,在按下或釋放時(shí)會(huì)產(chǎn)生5-10ms的抖動(dòng)信號(hào),可能導(dǎo)致電路誤判。施密特觸發(fā)器光耦憑借其獨(dú)特的遲滯特性,成為硬件消抖的核心器件,而晶臺(tái)推出的KLH11
    的頭像 發(fā)表于 12-06 09:04 ?477次閱讀
    晶臺(tái)KLH11LX系列丨施密特觸發(fā)器光耦在<b class='flag-5'>按鍵</b>消抖中的應(yīng)用

    按鍵消抖的方法

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

    硬件消抖方案元件參數(shù)的計(jì)算方法

    硬件消抖是通過電路設(shè)計(jì)消除機(jī)械開關(guān)(如按鍵、繼電器等)在閉合或斷開時(shí)產(chǎn)生的抖動(dòng)信號(hào)。以下是常見硬件消抖方案及其元件參數(shù)計(jì)算方法: 1. RC濾波消抖(低通濾波) 原理:利用電容的充放
    發(fā)表于 11-19 06:31

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

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

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

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

    Key_Scan按鍵掃描函數(shù)詳解

    按鍵程序設(shè)計(jì)思路可以非常簡(jiǎn)單:想要知道某個(gè)按鍵是否被按下,只需檢測(cè)連接到改按鍵的IO引腳是高電平還是低電平,若是低電平,說明按鍵正處于被按下的狀態(tài)。
    的頭像 發(fā)表于 08-04 14:01 ?1957次閱讀

    BitsButton嵌入式按鍵處理框架

    功能 ??位運(yùn)算優(yōu)化引擎? 高效處理按鍵狀態(tài)轉(zhuǎn)換邏輯 硬件抽象層? 統(tǒng)一接口適配各類硬件平臺(tái) ??調(diào)試接口?? 可插拔日志輸出 四、核心數(shù)據(jù)結(jié)構(gòu) // 單按鍵對(duì)象 typedef s
    發(fā)表于 08-02 11:24

    請(qǐng)問k230 canmv平臺(tái)按鍵怎么使用硬件中斷?

    k230 canmv平臺(tái)按鍵怎么使用硬件中斷?
    發(fā)表于 06-13 07:10

    AS32X601驅(qū)動(dòng)系列教程 GPIO_按鍵檢測(cè)詳解

    led熄滅。 硬件設(shè)計(jì) 評(píng)估板板載三個(gè)機(jī)械按鍵,分別接入MCU的PE10、PB4、PB3,當(dāng)按鍵按下時(shí),控制引腳通過按鍵接地,表現(xiàn)為低電平,
    的頭像 發(fā)表于 05-23 16:44 ?842次閱讀
    AS32X601驅(qū)動(dòng)系列教程 GPIO_<b class='flag-5'>按鍵</b>檢測(cè)詳解

    第六章 GPIO輸入——按鍵檢測(cè)

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

    觸摸按鍵噪聲對(duì)策 瑞薩CTSU MCU在應(yīng)對(duì)噪聲困擾時(shí)軟硬件設(shè)計(jì)注意點(diǎn)

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

    SDRAM控制器設(shè)計(jì)之按鍵的處理

    邊沿檢測(cè)經(jīng)常用于按鍵輸入檢測(cè)電路中,按鍵按下時(shí)輸入信號(hào) key 變?yōu)榈碗娖剑?b class='flag-5'>按鍵抬起變?yōu)楦唠娖?。?dāng)輸入的信號(hào)為理想的高低電平時(shí)(不考慮毛刺和抖動(dòng)),邊沿檢測(cè)就發(fā)揮了很重要的作用。
    的頭像 發(fā)表于 03-19 11:47 ?1329次閱讀
    SDRAM控制器設(shè)計(jì)之<b class='flag-5'>按鍵</b>的處理