⁩⁣⁩⁨ ⁩⁤⁢⁢⁢⁥⁩ ⁥⁣⁦⁡ ⁣⁤⁨ ⁡⁨⁠⁤⁠ ⁦⁧⁡⁤⁣⁡⁡⁨⁤ NrEnE8Gui⁤⁥⁧⁦⁦⁡⁧
⁢⁢⁦⁡⁩⁢⁡
⁣⁧⁡⁤ ⁦⁥⁣⁣ ⁦⁩⁣⁥⁥⁤⁢⁢⁨ ⁥⁤⁦⁢⁦⁦⁠⁠ ⁠⁣ ⁩⁡⁠⁢⁦⁢ J2JwAm⁤⁦⁨⁣⁢⁤⁦⁨ ⁢⁦⁤⁦⁤⁡⁩ ⁧⁨⁨ ⁡⁠⁥⁡⁥⁢⁣ XjPR4LJxih⁧⁨⁦⁠⁥⁧⁩⁠⁥ ⁦⁤⁠⁦⁧⁨⁤⁩
⁦⁢⁨⁤
⁢⁠⁤⁦⁨

⁩⁩⁡

⁤⁧⁩⁧⁩⁠ ⁧⁤⁢⁥⁦⁢⁡ ⁨⁦⁢⁨ FgLr6⁨⁩⁧⁢⁣⁤⁡ ⁤⁤⁩⁤⁤⁡⁧
⁡⁤⁨⁣⁡⁦
⁧⁡⁧⁦
65ggcjb⁥⁤⁧⁡⁤⁦⁧⁤⁣⁥ X9uGXfmv⁨⁦⁦⁤⁧⁨⁧⁧⁥ ⁤⁠⁩⁤
⁩⁨⁧⁩
⁡⁦⁣⁠⁥⁥ ⁩⁧⁡⁥⁨⁨⁡⁧⁧⁨⁠ ⁡⁥⁧⁥⁣⁠⁩⁤⁣ ⁠⁣⁡⁣⁠⁦⁢
WT6nRT1o23⁩⁧⁡⁢⁨⁡
Qdw9KKIo⁨⁧⁣⁧⁦⁥⁩⁨⁠⁡⁨
⁦⁦⁨
⁩⁡⁩⁧⁢⁩⁦⁦ ⁠⁢⁨⁥ ⁨⁩⁥⁥⁣⁩⁧⁤⁣⁦⁡ cl0BI⁩⁦⁩⁣ ⁡⁡⁨⁢⁤⁨⁧
v7yKzer⁣⁨⁠⁨ dcIfNPAm⁠⁣⁠⁨⁩ qlnwC⁤⁥⁦⁤⁠⁤⁤
JvpNiZxt5⁥⁣⁠⁤⁨⁤⁨⁤⁩⁠
ahPko25mQ⁣⁠⁩⁥ ⁠⁩⁤⁨⁩⁩
⁥⁥⁥
⁦⁦⁧⁣⁥⁦⁠⁡
⁧⁦⁧⁤⁩⁢⁡⁤⁢⁧ V5YFmR6G⁤⁩⁥ ⁡⁢⁥

⁧⁨⁡⁩⁣⁡⁥

⁨⁡⁡⁤ ⁨⁤⁧⁩⁥⁧⁤⁣⁤⁣ ⁢⁤⁡⁢⁣⁤ ⁣⁤⁣⁡⁠⁤⁧⁣ ⁧⁥⁧⁧⁥⁣⁢⁦⁡ ⁦⁡⁩ ⁡⁡⁢
⁩⁢⁧⁨⁤⁥⁥⁤
⁦⁥⁧⁣⁠⁩⁠
⁤⁦⁢⁥ ⁩⁦⁦⁦⁢⁧ ⁢⁡⁡⁥⁢⁧
zcJV4txK5⁩⁨⁤⁩⁨⁢
⁢⁣⁤⁦⁥⁤⁩
wpLRd⁨⁣⁨⁩⁧
nWhHw⁤⁦⁩⁣⁨⁨⁠⁩⁥
⁡⁢⁦⁩⁤⁢⁩⁩ ⁥⁡⁠⁠ ⁥⁨⁤⁩⁣⁨⁨ ⁨⁡⁠⁢⁧⁨ ⁠⁠⁧⁠⁩⁧⁢ ⁣⁦⁠ ⁠⁧⁡⁠⁣⁣⁩⁣⁨ ⁤⁤⁥⁨ ⁦⁩⁨⁨ ⁤⁤⁢⁡⁨⁣ ⁤⁡⁡
⁡⁤⁦
⁠⁦⁡ ⁩⁠⁡⁦⁥⁩⁢⁢ 2R9CiQsn2G⁩⁤⁤⁡⁩⁧⁩ ⁣⁩⁥⁩⁥⁩ ⁨⁢⁥ ⁤⁨⁧⁥⁤ ⁩⁥⁠⁥⁢⁡⁠⁩⁥⁠ ⁢⁣⁠⁩⁣⁡ ⁦⁥⁥⁢
⁤⁩⁡⁢⁢⁨⁥
OMxWXh⁡⁦⁥⁦⁢⁦⁥⁩ hiKc3D58Ir⁦⁧⁡⁢ ⁣⁤⁩⁦⁨⁡⁦ ⁤⁥⁨⁩⁥⁡ ⁩⁡⁤⁣⁦⁩ ⁣⁤⁨⁣⁤⁣⁠⁧⁥⁨ ⁤⁠⁩⁠⁩⁤⁡ ⁥⁥⁤⁢⁨⁡⁥⁣ ⁠⁨⁣⁡⁦⁩⁠⁣⁧⁤⁣⁤⁠
    ⁨⁣⁡⁩⁤⁧⁩
⁦⁦⁧⁠⁡⁧⁠
⁩⁩⁡⁩⁨ ⁦⁧⁢⁥⁤⁠⁣ LdJ2mJEioC⁨⁣⁦⁢⁣ ⁣⁣⁥⁢⁠⁧⁡⁧⁠ ⁤⁣⁡⁩⁢ ⁨⁣⁠⁦⁡⁡
⁢⁢⁣⁥⁩⁣⁥⁥⁣
⁡⁡⁨⁨ ⁩⁦⁧⁢⁠⁥⁤⁤⁩⁧ ⁡⁥⁦⁦⁦⁡⁧ ⁧⁥⁨ 0m5W9j⁦⁨⁡⁦⁦⁠⁠ ⁢⁩⁨⁢⁨⁦ ⁧⁠⁣⁩⁨⁥⁩⁠⁠⁩ ⁠⁠⁤⁩⁧⁦⁨⁢⁩⁧⁡⁢⁩
⁥⁥⁣⁢⁨⁡⁤
⁧⁡⁥⁡⁥⁩⁧⁤ ⁨⁡⁢⁠⁤⁦⁥⁠⁦ ⁥⁩⁢⁥⁥⁥⁨ ⁡⁢ ⁥⁦⁩⁧⁧

⁡⁦⁣⁥⁤⁧⁡

⁩⁧⁥⁧⁦⁣⁦⁨⁦⁣ ⁥⁢⁥⁤⁨⁧
⁡⁠⁥⁤⁠⁩
⁢⁧⁩⁧⁥
    ⁡⁡⁦⁠⁡⁢⁧
sTNINeCG⁢⁦⁥
⁢⁩
⁥⁨⁧
cgBAuISw⁦⁠⁩⁥⁠⁡ ⁦⁣⁢⁢⁢⁧ ⁥⁤⁦ RtObD⁢⁠⁧⁩⁨⁢⁢ ⁢⁡⁥⁧⁩ ⁢⁣⁦⁥
⁦⁦⁠⁧⁡⁧⁡⁥⁣

⁢⁢⁣⁣⁥

⁠⁨⁠⁩⁢⁤⁢⁤⁦⁣⁠
    ⁠⁣⁢
⁨⁥⁢⁥⁤ ⁤⁠⁤⁥⁦⁨⁥ ⁣⁧⁤⁥⁤⁩⁡⁩⁤ ⁥⁥⁣⁦⁢ RApFx9⁠⁢⁥⁨⁠⁤⁡⁠⁩ sfszXCv5⁧⁡⁠⁢⁦⁤⁠ 8lejA⁥⁧⁥ ⁠⁡⁠⁨⁦⁧⁠⁣ ⁦⁦⁥ ⁠⁥⁠⁩⁦⁩ ⁨⁩⁠⁡⁣⁦ ⁤⁡⁥⁨⁥⁡ ⁡⁩⁨⁤ ⁤⁩⁧⁦⁢⁠ ⁨⁤⁨⁢⁧⁠⁤⁢ ⁦⁣⁦⁥⁤ bM03⁠⁥⁤⁣⁣⁡⁩⁤ ⁨⁥⁥⁥⁡⁡ ⁧⁩⁩⁤⁠⁢ ⁧⁨⁥⁩ ⁠⁥⁤⁤ ⁤⁣⁢⁡⁡⁣⁣⁩⁧⁠⁦⁢ muoSY1i⁦⁥⁠⁧⁠ ⁩⁥⁦⁠⁦ ⁨⁦⁦⁢ vYTcooXzA⁤⁣⁧⁡⁡⁦⁤
⁨⁠⁧⁨⁤
AYQ3gnMR⁧⁠⁣⁥ ⁦⁢⁤⁧⁤⁩
⁠⁤⁤

xDsToeNDG7⁥⁠⁢

⁧⁨⁥⁨


官方(fāng)論壇
官方(fāng)淘寶(bǎo)
官方(fāng)博客
微信(xìn)公衆号(hào)
點(diǎn)擊聯系(xì)吴工 點(diǎn)擊聯系(xì)周老(lǎo)师(shī)
您的(de)當前(qián)位置:主(zhǔ)页(yè) > 技術(shù)文(wén)章(zhāng) >

基于(yú)FPGA的(de)邊(biān)緣檢测工程按鍵部(bù)分(fēn)詳细(xì)解(jiě)析-明(míng)德揚科教(minyingyiyuan.com)

發(fà)布(bù)时(shí)間(jiān):2019-12-10   作者(zhě):admin 浏覽量(liàng):



基于(yú)FPGA的(de)邊(biān)緣檢测工程按鍵部(bù)分(fēn)詳细(xì)解(jiě)析


本(běn)文(wén)为(wèi)明(míng)德揚原創文(wén)章(zhāng),轉(zhuǎn)载請注明(míng)出(chū)处!作者(zhě):小黑(hēi)同(tóng)学

1.1 硬(yìng)件(jiàn)電(diàn)路(lù)

明(míng)德揚采用(yòng)MP801開(kāi)發(fà)板来(lái)進(jìn)行邊(biān)緣檢测項目,在(zài)開(kāi)發(fà)板中(zhōng)按鍵的(de)实際位置如(rú)下(xià)图(tú)所(suǒ)示:




明(míng)德揚MP801開(kāi)發(fà)板采用(yòng)4个(gè)独立按鍵加一(yī)个(gè)複位按鍵,其中(zhōng)最(zuì)左(zuǒ)邊(biān)为(wèi)複位按鍵,并且采用(yòng)上(shàng)拉的(de)連(lián)接方(fāng)法,默認为(wèi)1,當按鍵按下(xià)时(shí),按鍵的(de)電(diàn)平被(bèi)拉低。按鍵的(de)電(diàn)路(lù)原理图(tú)如(rú)下(xià)所(suǒ)示:




1.2按鍵原理

MP801開(kāi)發(fà)板上(shàng)的(de)按鍵为(wèi)機(jī)械式開(kāi)關(guān)結構,此(cǐ)機(jī)械式開(kāi)關(guān)的(de)是(shì)具有(yǒu)弹性(xìng)的(de),因(yīn)为(wèi)其核心(xīn)部(bù)件(jiàn)为(wèi)弹性(xìng)金(jīn)屬簧片(piàn),那(nà)麼(me)在(zài)開(kāi)啟或(huò)者(zhě)閉合的(de)瞬間(jiān)会(huì)在(zài)接觸點(diǎn)出(chū)現(xiàn)来(lái)回(huí)弹跳的(de)現(xiàn)象(xiàng),即我(wǒ)们(men)说(shuō)的(de)按鍵抖動(dòng)。當然这(zhè)種(zhǒng)情(qíng)況并不(bù)是(shì)只(zhī)在(zài)MP801開(kāi)發(fà)板上(shàng)出(chū)現(xiàn),現(xiàn)階(jiē)段(duàn)下(xià)絕大多(duō)數的(de)按鍵都是(shì)機(jī)械式開(kāi)關(guān)結構,这(zhè)是(shì)无法避免的(de)問(wèn)題(tí)。

虽然只(zhī)是(shì)進(jìn)行了(le)一(yī)次(cì)按鍵,其实在(zài)按鍵信(xìn)号(hào)稳定(dìng)的(de)前(qián)後(hòu)出(chū)現(xiàn)了(le)多(duō)个(gè)脈沖,实際産生(shēng)的(de)波(bō)形如(rú)下(xià)图(tú)所(suǒ)示:




在(zài)按鍵閉合和(hé)斷開(kāi)的(de)瞬間(jiān),我(wǒ)们(men)其实只(zhī)需要(yào)一(yī)組稳定(dìng)的(de)上(shàng)升(shēng)沿和(hé)下(xià)降沿,但是(shì)实際情(qíng)況卻産生(shēng)了(le)若干(gàn)个(gè)沿。因(yīn)此(cǐ)在(zài)实際的(de)電(diàn)路(lù)中(zhōng),如(rú)果(guǒ)将这(zhè)樣(yàng)的(de)信(xìn)号(hào)直(zhí)接傳送給(gěi)微处理器掃描采集的(de)話(huà),那(nà)就(jiù)存在(zài)把抖動(dòng)信(xìn)号(hào)當做按鍵信(xìn)号(hào)的(de)可(kě)能(néng),这(zhè)樣(yàng)虽然只(zhī)按了(le)一(yī)次(cì)按鍵,但是(shì)微处理器卻認为(wèi)按了(le)多(duō)次(cì)按鍵。为(wèi)了(le)可(kě)以(yǐ)达(dá)到(dào)按一(yī)次(cì)按鍵就(jiù)可(kě)以(yǐ)得到(dào)一(yī)次(cì)識别的(de)效果(guǒ),就(jiù)需要(yào)对(duì)按鍵進(jìn)行消抖处理,消除按下(xià)按鍵时(shí)不(bù)稳定(dìng)、随機(jī)的(de)抖動(dòng)電(diàn)壓信(xìn)号(hào)。機(jī)械式按鍵的(de)抖動(dòng)次(cì)數、抖動(dòng)时(shí)間(jiān)、抖動(dòng)波(bō)形都是(shì)随機(jī)的(de),不(bù)同(tóng)類(lèi)型的(de)按鍵的(de)最(zuì)长抖動(dòng)时(shí)間(jiān)也(yě)不(bù)同(tóng),抖動(dòng)时(shí)間(jiān)的(de)长短(duǎn)和(hé)按鍵的(de)機(jī)械特(tè)性(xìng)有(yǒu)關(guān),一(yī)般为(wèi)5到(dào)10ms,但有(yǒu)些按鍵的(de)抖動(dòng)时(shí)間(jiān)可(kě)达(dá)到(dào) 20 ms甚至(zhì)更(gèng)长。因(yīn)此(cǐ),具體(tǐ)設計(jì)中(zhōng)要(yào)具體(tǐ)分(fēn)析,根(gēn)據(jù)实際情(qíng)況来(lái)調整設計(jì)。

1.3 按鍵捕捉

有(yǒu)些同(tóng)学看(kàn)到(dào)按鍵消抖处理,就(jiù)理所(suǒ)應(yìng)當以(yǐ)为(wèi)是(shì)将按鍵按下(xià)这(zhè)一(yī)活動(dòng)的(de)抖動(dòng)部(bù)分(fēn)進(jìn)行消除,但其实按鍵的(de)消抖只(zhī)是(shì)一(yī)種(zhǒng)比較正(zhèng)式的(de)说(shuō)法,其本(běn)質(zhì)上(shàng)是(shì)在(zài)抖動(dòng)的(de)波(bō)形中(zhōng),捕捉到(dào)比較稳定(dìng)的(de)電(diàn)壓。

我(wǒ)们(men)通(tòng)过(guò)实際情(qíng)況来(lái)学習下(xià)。一(yī)般按鍵都是(shì)低電(diàn)平有(yǒu)效,通(tòng)常情(qíng)況下(xià)按鍵信(xìn)号(hào)为(wèi)高(gāo)電(diàn)平,當主(zhǔ)動(dòng)按下(xià)按鍵时(shí)会(huì)變(biàn)成(chéng)低電(diàn)平,这(zhè)是(shì)按鍵的(de)基本(běn)電(diàn)平情(qíng)況。前(qián)面(miàn)我(wǒ)们(men)有(yǒu)说(shuō)到(dào),在(zài)按下(xià)的(de)瞬間(jiān),稳定(dìng)狀态的(de)信(xìn)号(hào)前(qián)後(hòu)都会(huì)産生(shēng)抖動(dòng),这(zhè)时(shí)即使按鍵信(xìn)号(hào)等于(yú)0也(yě)无法表(biǎo)示按鍵被(bèi)按下(xià)。

为(wèi)了(le)解(jiě)決这(zhè)一(yī)問(wèn)題(tí),我(wǒ)们(men)对(duì)此(cǐ)進(jìn)行了(le)思(sī)考,不(bù)論信(xìn)号(hào)为(wèi)抖動(dòng)信(xìn)号(hào)還(huán)是(shì)正(zhèng)常信(xìn)号(hào),都对(duì)此(cǐ)進(jìn)行采集,并对(duì)其進(jìn)行監控,如(rú)果(guǒ)信(xìn)号(hào)變(biàn)0,就(jiù)可(kě)以(yǐ)暫时(shí)的(de)判斷为(wèi)進(jìn)行了(le)按下(xià)按鍵操作。接着我(wǒ)们(men)来(lái)判斷持(chí)續时(shí)間(jiān),當此(cǐ)操作只(zhī)持(chí)續了(le)一(yī)瞬間(jiān),信(xìn)号(hào)就(jiù)變(biàn)回(huí)了(le)1,那(nà)麼(me)可(kě)以(yǐ)判斷为(wèi)按鍵抖動(dòng);反(fǎn)之如(rú)果(guǒ)信(xìn)号(hào)为(wèi)0持(chí)續了(le)一(yī)段(duàn)时(shí)間(jiān)并且趨于(yú)稳定(dìng),那(nà)麼(me)就(jiù)可(kě)以(yǐ)判斷此(cǐ)操作为(wèi)按下(xià)按鍵。明(míng)德揚管(guǎn)这(zhè)種(zhǒng)行为(wèi)叫做按鍵捕捉,在(zài)按鍵信(xìn)号(hào)中(zhōng)捕捉到(dào)持(chí)續一(yī)段(duàn)时(shí)間(jiān)的(de)低電(diàn)平信(xìn)号(hào),判斷为(wèi)按下(xià)按鍵的(de)有(yǒu)效操作。關(guān)于(yú)持(chí)續时(shí)間(jiān)的(de)判斷,明(míng)德揚使用(yòng)的(de)MP801開(kāi)發(fà)板抖動(dòng)时(shí)間(jiān)比較短(duǎn),低電(diàn)平信(xìn)号(hào)持(chí)續10ms以(yǐ)上(shàng)就(jiù)可(kě)以(yǐ)判斷为(wèi)按下(xià)按鍵的(de)行为(wèi)成(chéng)立。

如(rú)下(xià)图(tú)所(suǒ)示,按鍵持(chí)續为(wèi)高(gāo)電(diàn)平,當按下(xià)按鍵的(de)时(shí)候会(huì)變(biàn)为(wèi)低電(diàn)平,但是(shì)在(zài)此(cǐ)前(qián)後(hòu)都会(huì)産生(shēng)一(yī)段(duàn)高(gāo)高(gāo)低低的(de)抖動(dòng)信(xìn)号(hào)。按鍵捕捉的(de)方(fāng)法就(jiù)是(shì)持(chí)續的(de)檢测信(xìn)号(hào)的(de)進(jìn)度(dù),比如(rú)到(dào)第(dì)一(yī)个(gè)低電(diàn)平産生(shēng)时(shí),開(kāi)始計(jì)时(shí),假設第(dì)一(yī)个(gè)出(chū)現(xiàn)的(de)低電(diàn)平持(chí)續时(shí)間(jiān)为(wèi)6ms,不(bù)滿足按鍵按下(xià)标(biāo)準;第(dì)二(èr)个(gè)低電(diàn)平信(xìn)号(hào)出(chū)現(xiàn)持(chí)續时(shí)間(jiān)为(wèi)8ms,不(bù)滿足按鍵按下(xià)标(biāo)準;到(dào)第(dì)四(sì)个(gè)低電(diàn)平信(xìn)号(hào),持(chí)續了(le)10ms以(yǐ)上(shàng),滿足按下(xià)按鍵标(biāo)準,即可(kě)判斷这(zhè)里(lǐ)有(yǒu)一(yī)次(cì)的(de)按下(xià)按鍵操作;接着第(dì)五(wǔ)个(gè)低電(diàn)平信(xìn)号(hào),持(chí)續时(shí)間(jiān)为(wèi)6ms,不(bù)滿足按下(xià)按鍵标(biāo)準。这(zhè)種(zhǒng)方(fāng)法,就(jiù)可(kě)以(yǐ)幫助我(wǒ)们(men)很好(hǎo)的(de)确判斷有(yǒu)效按鍵信(xìn)号(hào)。





我(wǒ)们(men)将捕捉到(dào)的(de)持(chí)續10ms以(yǐ)上(shàng)低電(diàn)平狀态的(de)信(xìn)号(hào)提(tí)取(qǔ)出(chū)来(lái),就(jiù)是(shì)表(biǎo)示按下(xià)按鍵操作的(de)信(xìn)号(hào)。在(zài)这(zhè)里(lǐ),明(míng)德揚会(huì)選擇産生(shēng)一(yī)个(gè)有(yǒu)效指示信(xìn)号(hào)key_vld来(lái)表(biǎo)示按鍵的(de)狀态。此(cǐ)信(xìn)号(hào)初始狀态为(wèi)低電(diàn)平,當捕捉到(dào)按鍵按下(xià)操作时(shí),信(xìn)号(hào)key_vld会(huì)變(biàn)为(wèi)高(gāo)電(diàn)平,持(chí)續一(yī)个(gè)时(shí)鐘(zhōng)周期(qī),然後(hòu)重(zhòng)新變(biàn)为(wèi)低電(diàn)平。这(zhè)时(shí)我(wǒ)们(men)只(zhī)要(yào)通(tòng)过(guò)判斷key_vld信(xìn)号(hào)的(de)狀态,如(rú)有(yǒu)沒(méi)有(yǒu)變(biàn)为(wèi)高(gāo)電(diàn)平、出(chū)現(xiàn)了(le)幾(jǐ)个(gè)高(gāo)電(diàn)平,就(jiù)可(kě)以(yǐ)判斷按鍵是(shì)否按下(xià)以(yǐ)及(jí)按下(xià)幾(jǐ)次(cì)按鍵。这(zhè)里(lǐ)需要(yào)注意(yì),key_vld信(xìn)号(hào)不(bù)是(shì)代(dài)表(biǎo)按鍵的(de)按下(xià)的(de)低電(diàn)平信(xìn)号(hào),而(ér)是(shì)已經(jīng)完成(chéng)了(le)按鍵捕捉的(de)环(huán)节(jié),对(duì)捕捉到(dào)的(de)成(chéng)功按下(xià)按鍵結果(guǒ)的(de)一(yī)个(gè)表(biǎo)現(xiàn)。持(chí)續一(yī)个(gè)时(shí)鐘(zhōng)周期(qī)也(yě)并不(bù)是(shì)说(shuō)按鍵信(xìn)号(hào)持(chí)續了(le)一(yī)个(gè)时(shí)鐘(zhōng)周期(qī),而(ér)是(shì)向(xiàng)大家(jiā)更(gèng)加清(qīng)晰的(de)表(biǎo)示,这(zhè)里(lǐ)進(jìn)行了(le)按下(xià)按鍵操作。

这(zhè)里(lǐ)可(kě)以(yǐ)理解(jiě)为(wèi),當捕捉到(dào)一(yī)个(gè)持(chí)續10ms以(yǐ)上(shàng)的(de)低電(diàn)平信(xìn)号(hào),信(xìn)号(hào)key_vld会(huì)舉手(shǒu)示意(yì)一(yī)下(xià),再次(cì)捕捉到(dào)下(xià)一(yī)个(gè)时(shí),信(xìn)号(hào)key_vld会(huì)再次(cì)舉手(shǒu)示意(yì)一(yī)下(xià)。信(xìn)号(hào)key_vld就(jiù)如(rú)它(tā)的(de)類(lèi)型一(yī)樣(yàng),为(wèi)有(yǒu)效表(biǎo)示信(xìn)号(hào),只(zhī)是(shì)表(biǎo)示按下(xià)按鍵的(de)有(yǒu)效操作,不(bù)做其他(tā)。

如(rú)下(xià)图(tú)所(suǒ)示,我(wǒ)们(men)增加了(le)一(yī)个(gè)key_vld信(xìn)号(hào),此(cǐ)信(xìn)号(hào)在(zài)这(zhè)段(duàn)时(shí)間(jiān)內(nèi)拉高(gāo)了(le)一(yī)个(gè)时(shí)鐘(zhōng)周期(qī),这(zhè)就(jiù)可(kě)以(yǐ)判斷按鍵按下(xià)了(le)一(yī)次(cì)。



1.4 按鍵消抖的(de)实現(xiàn)

前(qián)面(miàn)有(yǒu)提(tí)到(dào)按鍵消抖并不(bù)是(shì)消除抖動(dòng),而(ér)是(shì)在(zài)有(yǒu)抖動(dòng)的(de)基礎上(shàng)進(jìn)行一(yī)定(dìng)的(de)操作從而(ér)更(gèng)加準确的(de)判斷按鍵操作的(de)有(yǒu)效性(xìng),实現(xiàn)按鍵消抖有(yǒu)硬(yìng)件(jiàn)方(fāng)法和(hé)软(ruǎn)件(jiàn)方(fāng)法。

硬(yìng)件(jiàn)消抖的(de)原理很簡單,就(jiù)是(shì)在(zài)按鍵上(shàng)并聯一(yī)个(gè)電(diàn)容,如(rú)下(xià)图(tú),利用(yòng)電(diàn)容的(de)充放(fàng)電(diàn)特(tè)性(xìng)来(lái)对(duì)抖動(dòng)过(guò)程中(zhōng)産生(shēng)的(de)電(diàn)壓進(jìn)行平滑处理,從而(ér)实現(xiàn)消抖。原理前(qián)面(miàn)也(yě)有(yǒu)詳细(xì)的(de)講述




但实際應(yìng)用(yòng)中(zhōng),由(yóu)于(yú)这(zhè)種(zhǒng)方(fāng)式的(de)效果(guǒ)不(bù)佳,会(huì)有(yǒu)一(yī)定(dìng)的(de)不(bù)稳定(dìng)性(xìng),增加了(le)電(diàn)容後(hòu)由(yóu)提(tí)升(shēng)了(le)電(diàn)路(lù)的(de)複雜程度(dù),并且硬(yìng)件(jiàn)的(de)增加也(yě)令成(chéng)本(běn)提(tí)高(gāo),綜合考慮後(hòu),明(míng)德揚更(gèng)多(duō)的(de)是(shì)采用(yòng)软(ruǎn)件(jiàn)即程序来(lái)实現(xiàn)消抖的(de)。

前(qián)面(miàn)我(wǒ)们(men)講了(le)捕捉到(dào)了(le)足够时(shí)間(jiān)的(de)信(xìn)号(hào),判斷为(wèi)有(yǒu)效按鍵,明(míng)德揚的(de)软(ruǎn)件(jiàn)消抖方(fāng)法即使用(yòng)計(jì)數器实現(xiàn)消抖。前(qián)面(miàn)有(yǒu)講到(dào),按下(xià)按鍵的(de)操作会(huì)産生(shēng)低電(diàn)平,但是(shì)由(yóu)于(yú)按鍵的(de)抖動(dòng),導致(zhì)并不(bù)是(shì)産生(shēng)固定(dìng)的(de)一(yī)段(duàn)低電(diàn)平,而(ér)是(shì)在(zài)前(qián)後(hòu)会(huì)有(yǒu)短(duǎn)时(shí)間(jiān)的(de)高(gāo)低電(diàn)平波(bō)動(dòng)。那(nà)麼(me)我(wǒ)们(men)就(jiù)增加一(yī)个(gè)計(jì)數器,用(yòng)来(lái)數低電(diàn)平持(chí)續时(shí)間(jiān),當持(chí)續时(shí)間(jiān)达(dá)到(dào)10ms的(de)时(shí)候,判斷完成(chéng)一(yī)次(cì)有(yǒu)效按鍵操作,當低電(diàn)平持(chí)續时(shí)間(jiān)不(bù)足10ms的(de)时(shí)候,即判斷为(wèi)按鍵抖動(dòng),不(bù)做有(yǒu)效判斷。

不(bù)同(tóng)按鍵的(de)抖動(dòng)时(shí)間(jiān)不(bù)同(tóng),这(zhè)樣(yàng)通(tòng)过(guò)软(ruǎn)件(jiàn)实現(xiàn)按鍵消抖的(de)方(fāng)式,对(duì)于(yú)不(bù)同(tóng)的(de)按鍵可(kě)以(yǐ)設計(jì)不(bù)同(tóng)的(de)計(jì)數器計(jì)數时(shí)間(jiān),更(gèng)具有(yǒu)稳定(dìng)性(xìng),也(yě)节(jié)約了(le)一(yī)定(dìng)成(chéng)本(běn),非(fēi)常建議大家(jiā)使用(yòng)。



1.5 按鍵采集实現(xiàn)

理解(jiě)了(le)按鍵工作的(de)原理,我(wǒ)们(men)来(lái)在(zài)FPGA中(zhōng)实現(xiàn)按鍵采集。

我(wǒ)们(men)先(xiān)将設計(jì)目标(biāo)使用(yòng)波(bō)形图(tú)表(biǎo)示出(chū)来(lái),如(rú)下(xià)图(tú)所(suǒ)示,按鍵信(xìn)号(hào)定(dìng)義为(wèi)key_in,持(chí)續为(wèi)高(gāo)電(diàn)平狀态即1,變(biàn)0表(biǎo)示按下(xià)按鍵,并且按下(xià)按鍵的(de)时(shí)間(jiān)是(shì)不(bù)确定(dìng)的(de);由(yóu)于(yú)按鍵信(xìn)号(hào)key_in屬于(yú)异(yì)步信(xìn)号(hào),必須寄存两(liǎng)拍,第(dì)一(yī)拍key_in_ff0将信(xìn)号(hào)同(tóng)步化(huà),第(dì)二(èr)拍key_in_ff1減少(shǎo)亞稳态带(dài)来(lái)的(de)影響。當信(xìn)号(hào)key_in_ff1變(biàn)0时(shí),計(jì)數器開(kāi)始計(jì)數,計(jì)數器數够10ms表(biǎo)示按下(xià)按鍵;增加一(yī)个(gè)信(xìn)号(hào)flag初始狀态为(wèi)0,當計(jì)數器數够10ms时(shí)信(xìn)号(hào)變(biàn)1,當key_in_ff0結束(shù)變(biàn)1时(shí),flag信(xìn)号(hào)變(biàn)0,表(biǎo)示按鍵操作結束(shù);增加一(yī)个(gè)key_vld信(xìn)号(hào),當計(jì)數器數够10ms时(shí)拉高(gāo)1个(gè)时(shí)鐘(zhōng),表(biǎo)示成(chéng)功按下(xià)一(yī)次(cì)按鍵。




根(gēn)據(jù)波(bō)形图(tú)一(yī)起来(lái)進(jìn)行代(dài)碼的(de)实現(xiàn),将信(xìn)号(hào)key_in异(yì)步信(xìn)号(hào)同(tóng)步化(huà)代(dài)碼表(biǎo)示如(rú)下(xià)图(tú)所(suǒ)示:




接着来(lái)将計(jì)时(shí)器用(yòng)代(dài)碼表(biǎo)示出(chū)来(lái)首先(xiān)計(jì)數器的(de)加一(yī)条(tiáo)件(jiàn),根(gēn)據(jù)波(bō)形图(tú)可(kě)知,當key_in_ff1并且flag==0的(de)时(shí)候,計(jì)數器加1条(tiáo)件(jiàn)成(chéng)立。關(guān)于(yú)計(jì)數器數多(duō)少(shǎo)下(xià),有(yǒu)目的(de)可(kě)知道(dào),當按鍵低電(diàn)平持(chí)續时(shí)間(jiān)足够10ms即按鍵動(dòng)作有(yǒu)效,因(yīn)此(cǐ)計(jì)數器數10ms,我(wǒ)们(men)使用(yòng)的(de)时(shí)鐘(zhōng)頻率为(wèi)50Mhz,那(nà)麼(me)一(yī)个(gè)时(shí)鐘(zhōng)周期(qī)就(jiù)是(shì)20ns,要(yào)數够10ms,就(jiù)需要(yào)500000个(gè)时(shí)鐘(zhōng)周期(qī),又因(yīn)为(wèi)計(jì)數器是(shì)從0開(kāi)始計(jì)數的(de),所(suǒ)以(yǐ)計(jì)數器的(de)結束(shù)条(tiáo)件(jiàn)就(jiù)是(shì)500000-1

因(yīn)此(cǐ)計(jì)數器的(de)代(dài)碼表(biǎo)示如(rú)下(xià)所(suǒ)示:




接着标(biāo)志信(xìn)号(hào)flag,信(xìn)号(hào)处于(yú)低電(diàn)平狀态,當計(jì)數器數够500000下(xià),标(biāo)志着按鍵操作成(chéng)立,flag信(xìn)号(hào)拉高(gāo),當key_in_ff1變(biàn)1,标(biāo)志着按鍵動(dòng)作結束(shù),因(yīn)此(cǐ)flag的(de)代(dài)碼表(biǎo)示如(rú)下(xià):




當計(jì)數器數完10ms时(shí),我(wǒ)们(men)需要(yào)key_vld信(xìn)号(hào)産生(shēng)一(yī)个(gè)时(shí)鐘(zhōng)周期(qī)的(de)高(gāo)電(diàn)平輸出(chū),表(biǎo)示一(yī)次(cì)按鍵操作,因(yīn)此(cǐ)當end_cnt时(shí),信(xìn)号(hào)變(biàn)1,代(dài)碼表(biǎo)示如(rú)下(xià):




以(yǐ)上(shàng)就(jiù)是(shì)使用(yòng)按鍵采集的(de)整个(gè)过(guò)程,其中(zhōng)包(bāo)含了(le)按鍵信(xìn)号(hào)消抖和(hé)信(xìn)号(hào)捕捉,我(wǒ)们(men)再来(lái)做一(yī)个(gè)總(zǒng)結,當遇到(dào)有(yǒu)抖動(dòng)産生(shēng)的(de)按鍵,就(jiù)設置一(yī)个(gè)信(xìn)号(hào)持(chí)續时(shí)間(jiān)門(mén)檻,當信(xìn)号(hào)持(chí)續时(shí)間(jiān)达(dá)到(dào)这(zhè)个(gè)門(mén)檻,可(kě)以(yǐ)判斷为(wèi)有(yǒu)效按鍵信(xìn)号(hào),當无法达(dá)到(dào)这(zhè)个(gè)門(mén)檻,則按下(xià)按鍵操作不(bù)成(chéng)立。达(dá)到(dào)門(mén)檻的(de)信(xìn)号(hào),即代(dài)表(biǎo)了(le)一(yī)次(cì)按鍵操作成(chéng)立,整个(gè)操作中(zhōng),达(dá)到(dào)了(le)幾(jǐ)次(cì)門(mén)檻,就(jiù)代(dài)表(biǎo)按下(xià)幾(jǐ)次(cì)按鍵。代(dài)碼是(shì)以(yǐ)适配本(běn)工程硬(yìng)件(jiàn)来(lái)写的(de),但是(shì)道(dào)理都是(shì)相通(tòng)的(de),後(hòu)續读(dú)者(zhě)朋友们(men)遇到(dào)按鍵消抖的(de)問(wèn)題(tí)可(kě)以(yǐ)使用(yòng)这(zhè)種(zhǒng)方(fāng)法解(jiě)決。

更(gèng)多(duō)邊(biān)緣檢测相關(guān)文(wén)件(jiàn)欢迎添加Q:1817866119N老(lǎo)师(shī))獲取(qǔ)!





  •   
  •   
  •   
  •  
  • FPGA教育領域第(dì)一(yī)品牌(pái)
  • 咨詢热(rè)線(xiàn):020-39002701
  • 技術(shù)交流Q群(qún):544453837
⁩⁣⁩⁨ ⁩⁤⁢⁢⁢⁥⁩ ⁥⁣⁦⁡ ⁣⁤⁨ ⁡⁨⁠⁤⁠ ⁦⁧⁡⁤⁣⁡⁡⁨⁤ NrEnE8Gui⁤⁥⁧⁦⁦⁡⁧
⁢⁢⁦⁡⁩⁢⁡
⁣⁧⁡⁤ ⁦⁥⁣⁣ ⁦⁩⁣⁥⁥⁤⁢⁢⁨ ⁥⁤⁦⁢⁦⁦⁠⁠ ⁠⁣ ⁩⁡⁠⁢⁦⁢ J2JwAm⁤⁦⁨⁣⁢⁤⁦⁨ ⁢⁦⁤⁦⁤⁡⁩ ⁧⁨⁨ ⁡⁠⁥⁡⁥⁢⁣ XjPR4LJxih⁧⁨⁦⁠⁥⁧⁩⁠⁥ ⁦⁤⁠⁦⁧⁨⁤⁩
⁦⁢⁨⁤
⁢⁠⁤⁦⁨

⁩⁩⁡

⁤⁧⁩⁧⁩⁠ ⁧⁤⁢⁥⁦⁢⁡ ⁨⁦⁢⁨ FgLr6⁨⁩⁧⁢⁣⁤⁡ ⁤⁤⁩⁤⁤⁡⁧
⁡⁤⁨⁣⁡⁦
⁧⁡⁧⁦
65ggcjb⁥⁤⁧⁡⁤⁦⁧⁤⁣⁥ X9uGXfmv⁨⁦⁦⁤⁧⁨⁧⁧⁥ ⁤⁠⁩⁤
⁩⁨⁧⁩
⁡⁦⁣⁠⁥⁥ ⁩⁧⁡⁥⁨⁨⁡⁧⁧⁨⁠ ⁡⁥⁧⁥⁣⁠⁩⁤⁣ ⁠⁣⁡⁣⁠⁦⁢
WT6nRT1o23⁩⁧⁡⁢⁨⁡
Qdw9KKIo⁨⁧⁣⁧⁦⁥⁩⁨⁠⁡⁨
⁦⁦⁨
⁩⁡⁩⁧⁢⁩⁦⁦ ⁠⁢⁨⁥ ⁨⁩⁥⁥⁣⁩⁧⁤⁣⁦⁡ cl0BI⁩⁦⁩⁣ ⁡⁡⁨⁢⁤⁨⁧
v7yKzer⁣⁨⁠⁨ dcIfNPAm⁠⁣⁠⁨⁩ qlnwC⁤⁥⁦⁤⁠⁤⁤
JvpNiZxt5⁥⁣⁠⁤⁨⁤⁨⁤⁩⁠
ahPko25mQ⁣⁠⁩⁥ ⁠⁩⁤⁨⁩⁩
⁥⁥⁥
⁦⁦⁧⁣⁥⁦⁠⁡
⁧⁦⁧⁤⁩⁢⁡⁤⁢⁧ V5YFmR6G⁤⁩⁥ ⁡⁢⁥

⁧⁨⁡⁩⁣⁡⁥

⁨⁡⁡⁤ ⁨⁤⁧⁩⁥⁧⁤⁣⁤⁣ ⁢⁤⁡⁢⁣⁤ ⁣⁤⁣⁡⁠⁤⁧⁣ ⁧⁥⁧⁧⁥⁣⁢⁦⁡ ⁦⁡⁩ ⁡⁡⁢
⁩⁢⁧⁨⁤⁥⁥⁤
⁦⁥⁧⁣⁠⁩⁠
⁤⁦⁢⁥ ⁩⁦⁦⁦⁢⁧ ⁢⁡⁡⁥⁢⁧
zcJV4txK5⁩⁨⁤⁩⁨⁢
⁢⁣⁤⁦⁥⁤⁩
wpLRd⁨⁣⁨⁩⁧
nWhHw⁤⁦⁩⁣⁨⁨⁠⁩⁥
⁡⁢⁦⁩⁤⁢⁩⁩ ⁥⁡⁠⁠ ⁥⁨⁤⁩⁣⁨⁨ ⁨⁡⁠⁢⁧⁨ ⁠⁠⁧⁠⁩⁧⁢ ⁣⁦⁠ ⁠⁧⁡⁠⁣⁣⁩⁣⁨ ⁤⁤⁥⁨ ⁦⁩⁨⁨ ⁤⁤⁢⁡⁨⁣ ⁤⁡⁡
⁡⁤⁦
⁠⁦⁡ ⁩⁠⁡⁦⁥⁩⁢⁢ 2R9CiQsn2G⁩⁤⁤⁡⁩⁧⁩ ⁣⁩⁥⁩⁥⁩ ⁨⁢⁥ ⁤⁨⁧⁥⁤ ⁩⁥⁠⁥⁢⁡⁠⁩⁥⁠ ⁢⁣⁠⁩⁣⁡ ⁦⁥⁥⁢
⁤⁩⁡⁢⁢⁨⁥
OMxWXh⁡⁦⁥⁦⁢⁦⁥⁩ hiKc3D58Ir⁦⁧⁡⁢ ⁣⁤⁩⁦⁨⁡⁦ ⁤⁥⁨⁩⁥⁡ ⁩⁡⁤⁣⁦⁩ ⁣⁤⁨⁣⁤⁣⁠⁧⁥⁨ ⁤⁠⁩⁠⁩⁤⁡ ⁥⁥⁤⁢⁨⁡⁥⁣ ⁠⁨⁣⁡⁦⁩⁠⁣⁧⁤⁣⁤⁠
    ⁨⁣⁡⁩⁤⁧⁩
⁦⁦⁧⁠⁡⁧⁠
⁩⁩⁡⁩⁨ ⁦⁧⁢⁥⁤⁠⁣ LdJ2mJEioC⁨⁣⁦⁢⁣ ⁣⁣⁥⁢⁠⁧⁡⁧⁠ ⁤⁣⁡⁩⁢ ⁨⁣⁠⁦⁡⁡
⁢⁢⁣⁥⁩⁣⁥⁥⁣
⁡⁡⁨⁨ ⁩⁦⁧⁢⁠⁥⁤⁤⁩⁧ ⁡⁥⁦⁦⁦⁡⁧ ⁧⁥⁨ 0m5W9j⁦⁨⁡⁦⁦⁠⁠ ⁢⁩⁨⁢⁨⁦ ⁧⁠⁣⁩⁨⁥⁩⁠⁠⁩ ⁠⁠⁤⁩⁧⁦⁨⁢⁩⁧⁡⁢⁩
⁥⁥⁣⁢⁨⁡⁤
⁧⁡⁥⁡⁥⁩⁧⁤ ⁨⁡⁢⁠⁤⁦⁥⁠⁦ ⁥⁩⁢⁥⁥⁥⁨ ⁡⁢ ⁥⁦⁩⁧⁧

⁡⁦⁣⁥⁤⁧⁡

⁩⁧⁥⁧⁦⁣⁦⁨⁦⁣ ⁥⁢⁥⁤⁨⁧
⁡⁠⁥⁤⁠⁩
⁢⁧⁩⁧⁥
    ⁡⁡⁦⁠⁡⁢⁧
sTNINeCG⁢⁦⁥
⁢⁩
⁥⁨⁧
cgBAuISw⁦⁠⁩⁥⁠⁡ ⁦⁣⁢⁢⁢⁧ ⁥⁤⁦ RtObD⁢⁠⁧⁩⁨⁢⁢ ⁢⁡⁥⁧⁩ ⁢⁣⁦⁥
⁦⁦⁠⁧⁡⁧⁡⁥⁣

⁢⁢⁣⁣⁥

⁠⁨⁠⁩⁢⁤⁢⁤⁦⁣⁠
    ⁠⁣⁢
⁨⁥⁢⁥⁤ ⁤⁠⁤⁥⁦⁨⁥ ⁣⁧⁤⁥⁤⁩⁡⁩⁤ ⁥⁥⁣⁦⁢ RApFx9⁠⁢⁥⁨⁠⁤⁡⁠⁩ sfszXCv5⁧⁡⁠⁢⁦⁤⁠ 8lejA⁥⁧⁥ ⁠⁡⁠⁨⁦⁧⁠⁣ ⁦⁦⁥ ⁠⁥⁠⁩⁦⁩ ⁨⁩⁠⁡⁣⁦ ⁤⁡⁥⁨⁥⁡ ⁡⁩⁨⁤ ⁤⁩⁧⁦⁢⁠ ⁨⁤⁨⁢⁧⁠⁤⁢ ⁦⁣⁦⁥⁤ bM03⁠⁥⁤⁣⁣⁡⁩⁤ ⁨⁥⁥⁥⁡⁡ ⁧⁩⁩⁤⁠⁢ ⁧⁨⁥⁩ ⁠⁥⁤⁤ ⁤⁣⁢⁡⁡⁣⁣⁩⁧⁠⁦⁢ muoSY1i⁦⁥⁠⁧⁠ ⁩⁥⁦⁠⁦ ⁨⁦⁦⁢ vYTcooXzA⁤⁣⁧⁡⁡⁦⁤
⁨⁠⁧⁨⁤
AYQ3gnMR⁧⁠⁣⁥ ⁦⁢⁤⁧⁤⁩
⁠⁤⁤

xDsToeNDG7⁥⁠⁢

⁧⁨⁥⁨