新聞中心

        EEPW首頁 > EDA/PCB > 設計應用 > EDA技術在微機接口技術實驗教學中的應用

        EDA技術在微機接口技術實驗教學中的應用

        作者: 時間:2012-03-16 來源:網絡 收藏

        2.4 按鍵長按、去抖及相關問題的解決

        本設計中,如果長時間(超過2個掃描周期)按同一按鍵視為單次按鍵,處理方法如下:每次掃描到的鍵碼與暫存在data_key的鍵碼相比,如果相等則說明按鍵未釋放,不作處理;如果不等說明有新的按鍵按下,則觸發中斷。這樣設計解決了長按鍵的問題,但產生了新的問題:如果下次(間隔了若干個掃描周期)還是同一鍵按下,那么會掃描到同一鍵碼,按照上述處理機制,這個鍵碼是不送數據線的,這是不正確的。

        我們注意到,同一按鍵按下間隔的時鐘周期理論上為4個周期(按本設計4行掃描線計算),在本設計中,采用16.384 MHz時鐘,采用計數的方法進行分頻,得到125 Hz的參考時鐘,故需要32 ms。在實際應用中,任何操作人員也達不到這個速度。所以,這里可以采用一個小技巧:

        設計一個計數器,每掃描到一次為0鍵碼(無鍵按下),計數器加1。如果有鍵按下,即掃描到的鍵碼不為0,則計數器清零;如果計數到某一數值(即時間大于一個掃描周期),則保持當前計數不變。這樣通過綜合分析,得出觸發中斷、要求得到響應的條件為:

        (1) 掃描到的鍵碼不為0;

        (2) 本次掃描到的鍵碼和寄存器data key中的暫存碼不同;

        (3) 計數器當前計數值大于3;

        這樣就解決了不同按鍵的響應問題,或者:

        (1) 掃描到的鍵碼不為0;

        (2) 計數器當前計數值大于等于5。

        這樣就解決了在以上功能實現前提下同一按鍵連續按下的響應問題。

        大量實踐經驗證明,按鍵抖動時間一般為10 ms(保守估計),本設計中掃描時鐘為8 ms,在滿足快速響應按鍵的同時,在較大程度上也實現了鍵盤去抖的功能。

        2.5 VHDL程序設計

        限于篇幅,這里只給出一組掃描線情況(ROW=“1110”)下按鍵識別的設計實現方法:



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 昌平区| 赫章县| 辽宁省| 沧州市| 商水县| 大英县| 大荔县| 东方市| 金阳县| 称多县| 合川市| 通城县| 巴彦县| 昭苏县| 特克斯县| 玉田县| 乌苏市| 永泰县| 英吉沙县| 九江县| 青川县| 额济纳旗| 垫江县| 武安市| 余江县| 九江县| 蒲江县| 德阳市| 垫江县| 澄江县| 安岳县| 广南县| 阳山县| 牟定县| 清远市| 遂昌县| 宿迁市| 工布江达县| 怀仁县| 咸阳市| 通许县|