色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

系統的信號輸入中,鍵盤因其結構簡單而被廣泛使用

單片機 ? 來源:未知 ? 作者:李倩 ? 2018-04-28 11:48 ? 次閱讀

系統的信號輸入中,鍵盤因其結構簡單而被廣泛使用。因此,對鍵盤的輸入(邏輯0或1)進行準確采樣,避免錯誤輸入是非常有必要的。理想的鍵盤輸入特性如圖1所示:按鍵沒有按下時,輸入為邏輯1,一旦按下則輸入立刻變為邏輯0,松開時輸入則立刻變為邏輯1。

圖 1理想鍵盤輸入特性

然而實際的鍵盤受制造工藝等影響,其輸入特性不可能如圖1完美。當按鍵按下時,在觸點即將接觸到完全接觸這段時間里,鍵盤的通斷狀態很可能已經改變了多次。即在這段時間里,鍵盤輸入了多次邏輯0和1,也就是輸入處于失控狀態。如果這些輸入被系統響應,則系統暫時也將處于失控狀態,這是我們要盡量避免的。在觸點即將分離到完全分離這段時間也是一樣的。實際鍵盤的輸入特性如圖2所示:

圖 2實際鍵盤輸入特性

我們可以看到:鍵盤在輸入邏輯轉換時,實際上是產生了瞬時的高頻干擾脈沖。按鍵消抖的目的在于消除此干擾,以達到接近圖1所示的理想輸入特性。有兩個階段可以設法消除此干擾:1.在鍵盤信號輸入系統之前(系統外);2.鍵盤信號輸入系統以后(系統內)。

在信號輸入系統之前將抖動干擾消除,可以節省系統資源,提高系統對其他信號的響應能力,也就是硬件消抖。一種比較巧妙的硬件消抖電路結構如圖3所示:

圖 3用基本SR鎖存器構成的消抖電路

該電路利用基本SR鎖存器的記憶作用消除開關觸點振動所產生的影響。開關S每切換一次,輸出端只有一次翻轉,不存在抖動波形(讀者可以根據SR鎖存器功能自行分析,此處略)。但是使用SR鎖存器消抖只適用于單刀雙擲開關,實際應用當中常用的鍵盤多是兩個接線端的按鍵。對此類按鍵的常用硬件消抖電路如圖4所示:

圖 4常用鍵盤硬件消抖電路

此電路利用電容平波,再經過施密特反相器整形之后就得到了沒有毛刺的脈沖波。

軟件消抖要占用系統資源,在系統資源充足的情況下使用軟件消抖更加簡單。軟件消抖的實質在于降低鍵盤輸入端口的采樣頻率,將高頻抖動略去。實際應用中通常采用延時跳過高頻抖動區間,然后再檢測輸入做出相應處理。一般程序代碼如下:

if(value == 0)//一旦檢測到鍵值
{
Delay();//延時20ms,有效濾除按鍵的抖動
if(value == 0)//再次確定鍵值是否有效
{
……//執行相應處理
}
}

這段軟消抖程序從機理上看不會有什么問題,通常在軟件程序不太"繁忙"的情況下也能夠很好的消抖并做相應處理。但是如果在延時期間產生了中斷,則此中斷可能無法得到響應。

對于硬件資源豐富的FPGA系統,可以使用硬件來減輕軟件工作量,通常稱之為"硬件加速"。在按鍵信號輸入到軟件系統前用邏輯對其進行一下簡單的處理即可實現所謂的"硬件消抖",verilog代碼如下:

//對輸入信號inpio硬件濾波,每20ms采樣一次當前值
reg[18:0] cnt; //20ms計數器
always @(posedge clk_25m or negedge rst_n)
if(!rst_n) cnt <= 19'd0;
else if(cnt < 19'd500000) cnt <= cnt+1'b1;
else cnt <= 19'd0;
reg[1:0] inpior;//當前inpio信號鎖存,每20ms鎖存一拍
always @(posedge clk_25m or negedge rst_n)
if(!rst_n) inpior <= 2'b11;
else if(cnt == 19'h7ffff) inpior <= {inpior[0],inpior};
wire inpio_swin =inpior[0] | inpior[1];//前后20ms兩次鎖存值都為0時才為0

該程序中設置了一個20ms計數器,通過間隔20ms對輸入信號inpio采樣兩次,兩次相同則認為鍵盤輸入穩定,得到用硬件邏輯處理后的inpio_swin信號則是消抖處理過的信號。軟件程序就不再需要delay()來濾波了,也不會出現使用純軟件處理出現的"中斷失去響應"的情況了,這就是"硬件加速"的效果。

上述verilog代碼采用間隔采樣來達到消抖的目的,對于不同物理特性的鍵盤,最佳的間隔時間采樣時間也不同,因此還存在一些不穩定因素。下面介紹一種更好的軟消抖程序,同樣采用"硬件加速",不同之處在于使用了有限狀態機來實現,其VHDL代碼如下:

LIBRARY ieee;
USE ieee.std_logic_1164.all;
USE ieee.std_logic_unsigned.all;
ENTITY xiaod IS
//端口描述:clk輸入檢測時鐘;reset復位信號;din原始按鍵信號輸入;dout去抖動輸出信號
PORT
(
clk : IN STD_LOGIC ;
reset : IN STD_LOGIC ;
din : IN STD_LOGIC ;
dout : OUT STD_LOGIC
);
END ENTITY;
ARCHITECTURE RTL OF xiaod IS
TYPE state IS( s0,s1,s2,s3);
SIGNAL pre_s, next_s: state;
BEGIN
P0:PROCESS( reset, clk )
BEGIN
if reset = '0' then
pre_s <= s0;
elsif rising_edge( clk ) then
pre_s <= next_s;
else
null;
end if;
END PROCESS P0;
P1:PROCESS( pre_s, next_s, din )
BEGIN
case pre_s is
when s0 =>
dout <= '1';
if din = '1' then
next_s <= s0;
else
next_s <= s1;
end if;
when s1 =>
dout <= '1';
if din = '1' then
next_s <= s0;
else
next_s <= s2;
end if;
when s2 =>
dout <= '1';
if din = '1' then
next_s <= s0;
else
next_s <= s3;
end if;
when s3 =>
dout <= '0';
if din = '1' then
next_s <= s0;
else
next_s <= s1;
end if;
end case;
END PROCESS P1;
END RTL;

該VHDL代碼描述了一個狀態機,其狀態轉換圖如圖所示:

圖 5狀態轉換圖

該狀態機有4個狀態:S0、S1、S2、S3,其中前3個狀態輸出高電平,最后一個狀態輸出低電平。初始狀態為S0,設按鍵未按下時為高電平,按下則為低電平。在按鍵按下到完全生效期間有一系列的抖動,對于持續時間為1-2個時鐘周期的低電平抖動將被消除,對于持續時間為3個或以上時鐘周期的低電平則認為按鍵有效,輸出一個時鐘周期的低電平脈沖(讀者可以根據狀態轉換圖畫出相應的時序圖進行分析)。如果持續輸入為低電平,則每隔兩個時鐘周期輸出一個低電平,此時認為按鍵處于"長按"輸入狀態,可以編程設置相應功能。在按鍵松開階段其抖動也可以一樣被消除。

適用于FPGA的按鍵消抖方法還有一些,如計數器型、D觸發器型等,在此就不作介紹了。

通過上面一些按鍵消抖方法的介紹分析,我們可以看到,傳統單片機等系統大多是串行處理,即順序執行,只能并行處理一些中斷程序。對于這樣的系統,只能采用單純軟件或硬件消抖,但都不那么完美。而對于FPGA等并行處理的系統,其優勢就很明顯,只要片內邏輯資源夠用,通過硬件加速軟件消抖的處理,完全可以做到按鍵消抖并行化,不影響系統的實時性。

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

    關注

    172

    文章

    5901

    瀏覽量

    172134
  • 鍵盤
    +關注

    關注

    4

    文章

    859

    瀏覽量

    39647
  • 鎖存器
    +關注

    關注

    8

    文章

    906

    瀏覽量

    41496

原文標題:按鍵原理和軟硬件按鍵消抖動

文章出處:【微信號:aidanpianji,微信公眾號:單片機】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    矩陣鍵盤原理與結構

    矩陣式結構鍵盤識別要復雜一些,列線通過電阻接正電源,并將行線所接的單片機的I/O口作為輸出端,列線所接的I/O口則作為輸入。這樣,當按鍵沒有按下時,所有的
    發表于 10-25 13:42 ?1.4w次閱讀

    電腦鍵盤結構介紹

    超薄的膝上型電腦上使用。只是與薄膜接觸式鍵盤相比,這種結構的壽命更短,所以現在除了在某些特殊用途以外,已經在逐漸消失。電腦鍵盤  這種通過查表獲得按鍵編碼的方式稱之為“非編碼式
    發表于 12-30 11:56

    電腦鍵盤內部結構及電腦鍵盤常見分類

    等等。當一個鍵按下時,微處理器便根據其位置,將字符信號轉換成二進制碼,傳給主機和顯示器。如果操作人員的輸入速度很快或CPU正在進行其它的工作,就先將鍵入的內容送往內存的電腦
    發表于 12-30 14:18

    事件結構如何掃描鍵盤輸入呢?

    事件結構如何掃描鍵盤輸入呢?求教
    發表于 01-13 10:35

    計算機測試系統結構與原理

    ;③ 智能化系統與非智能化系統。一、信號輸入通道的基本結構
    發表于 01-04 17:04

    嵌入式系統鍵盤接口設計

    中斷處理子模塊完成的。當系統有按鍵按下時,驅動程序先關掉中斷,然后掃描鍵盤,確定哪個鍵按下,鍵盤按下和抬起都有中斷發生,這樣可以為用戶提
    發表于 05-22 05:01

    單片機學習一鍵盤接口方式詳解

    簡單,容易實現,因此廣泛應用于單片機系統。獨立式鍵盤是由若干個機械觸點開關構成的,將其與單
    發表于 08-25 10:00

    小型鍵盤結構與接口

    鍵盤是一個由開關組成的矩陣,是重要的輸入設備,在小型微機系統,如單板微計算機、帶有微處理器的專用設備
    發表于 12-09 11:45 ?19次下載

    矩陣鍵盤產生PC機鍵盤信號的應用設計

    PC104 總線嵌入式系統在工程設計上得到了廣泛應用,而其主要的人機交互設備——PC機標準鍵盤則因不適應工業環境受到了限制。我們希望自己設計的薄膜式矩陣
    發表于 04-16 13:48 ?43次下載

    智能鍵盤字符輸入及LCD顯示系統設計

    提出了一種基于單片機的智能鍵盤字符輸入及LCD顯示系統設計方案。詳細闡述了系統硬件設計各模塊接口電路和工作原理,介紹了點陣字符型液晶顯示模塊(LCD)和
    發表于 12-23 15:36 ?64次下載

    單片機顯控系統的漢字輸入

    單片機顯控系統的漢字輸入 對于PC機來說,輸入漢字是非常簡單的,但在一些單片機人機接口系統
    發表于 12-08 15:25 ?3008次閱讀
    單片機顯控<b class='flag-5'>系統</b><b class='flag-5'>中</b>的漢字<b class='flag-5'>輸入</b>

    25課:單片機鍵盤接口程序設計

    ,使用靈活等特點,因此廣泛應用于單片機系統。 按鈕開關的抖動問題 組成鍵盤的按鈕有觸點式和非觸點式兩種,單片機應用的一般是由機械觸點組成
    發表于 11-22 12:03 ?913次閱讀
    25課:單片機<b class='flag-5'>鍵盤</b>接口程序設計

    51單片機匯編語言教程之單片機鍵盤接口程序設計的詳細資料說明

    據。一般單片機系統采和非編碼鍵盤,非編碼鍵盤是由軟件來識別鍵盤上的閉合鍵,它具有結構
    發表于 06-05 16:30 ?19次下載
    51單片機匯編語言教程之單片機<b class='flag-5'>鍵盤</b>接口程序設計的詳細資料說明

    單片機鍵盤輸入的程序

    應該說鍵盤輸入是單片機外部指令輸入的重要途徑,因此如何設計鍵盤以及鍵盤的工作原理、讀鍵盤的方法、鍵盤
    的頭像 發表于 06-21 11:38 ?4995次閱讀

    鍵盤瑕疵檢測系統簡單介紹

    在3c產品檢測過程鍵盤瑕疵檢測是最常見的一種檢測產品,通過鍵盤瑕疵檢測系統來檢測鍵盤上的瑕疵可以大大提高生產效率和產品質量。那么接下來我
    發表于 08-10 16:52 ?869次閱讀
    主站蜘蛛池模板: 一个人HD高清在线观看免费视频 | 嘟嘟嘟影院免费观看视频| 小777论坛| 暖暖 视频 免费 高清 在线观看 | 99日影院在线播放| 在线国产视频观看| 亚洲色欲色欲无码AV| 亚瑟天堂久久一区二区影院| 人妻兽虐曲| 欧美人与动牲交ZOOZ特| 快插我我好湿啊公交车上做| 国产呦精品一区二区三区下载 | 十分钟在线观看免费视频高清WWW| 欧美freesex黑人又粗又| 久久热免费观看视频| 久草高清在线| 很很射影院| 久草视频在线观看免费4| 黄色大片久久| 含羞草免费完整视频在线观看 | 精品日产1区2卡三卡麻豆| 久久99re6热在线播放| 久久久96人妻无码精品蜜桃| 久久青草费线频观看国产| 麻豆XXXX乱女少妇精品| 久久兔费黄A级毛片高清| 美女被强奷到抽搐的动态图| 美国xaxwaswaskino| 蜜桃成熟时2在线观看完整版hd| 免费毛片a在线观看67194| 欧美性猛交AAA片免费观看| 色情在线avav| 原神美女被超污app| 被两根巨大同时进去高H| 国产精品视频一区二区猎奇 | 97草碰在线视频免费| 爱情岛论坛免费在线观看| 国产精品久久久久激情影院| 红色机尾快播| 青青久在线视频免费观看| 亚洲2017天堂色无码|