久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

單片機按鍵程序設計及電路設計

作者:mcu110   來源:51hei   點擊數:  更新時間:2007年08月06日   【字體:

    在單片機應用系統中,按鍵主要有兩種形式:1、直接按鍵; 2、矩陣編碼鍵盤。直接按鍵的每個按鍵都單獨接到單片機的一個I/O口上,直接按鍵則通過判斷按鍵端口的電位即可識別按鍵操作;而矩陣鍵盤通過行列交叉按鍵編碼進行識別。下面我們以S51增強型單片機實驗板的直接按鍵來學習單片機輕觸按鍵在單片機系統中的應用。

S51增強型單片機實驗板的4個輕觸按鍵原理圖。。。

S51增強型單片機輕觸按鍵原理圖
圖 1

    一、按鍵時序分析

    通常所用的按鍵為輕觸機械開關,正常情況下按鍵的接點是斷開的,當我們按壓按鈕時,由于機械觸點的彈性作用,一個按鍵開關在閉合時不會馬上穩定地接通,在斷開時也不會一下子斷開。因而機械觸點在閉合及斷開的瞬間均伴隨有一連串的抖動,按鍵的時序如下圖2所示,抖動時間的長短由按鍵的機械特性及操作人員按鍵動作決定,一般為5ms~20ms;按鍵穩定閉合時間的長短是由操作人員的按鍵按壓時間長短決定的,一般為零點幾秒至數秒不等。

輕觸按鍵操作時序示意圖
圖 2

    從上面圖2中我們可以看到,一次完整的擊鍵過程,包含以下5個階段:
    1. 等待階段: 此時按鍵尚未按下,處于空閑階段。
    2. 前沿(閉合)抖動階段:此時按鍵剛剛按下,但按鍵信號還處于抖動狀態,這個時間一般為5~20ms。為了確保按鍵操作不會誤動作,此時必須有個前沿消抖動延時。
    3. 鍵穩定階段:此時抖動已經結束,一個有效的按鍵動作已經產生。系統應該在此時執行按鍵功能;或將按鍵所對應的鍵值記錄下來,待按鍵釋放時再執行。
    4. 后沿(釋放)抖動階段:一般來說,考究一點的程序應該在這里再做一次消抖延時,以防誤動作。但是,如果前面“前沿抖動階段”的消抖延時時間取值合適的話,可以忽略此階段。
    5. 按鍵釋放階段:此時后沿抖動已經結束,按鍵已經處于完全釋放狀態,如果按鍵是采用釋放后再執行功能,則可以在這個階段進行按鍵操作的相關處理。


    二、按鍵實驗例程

    下面我們通過幾個實驗例程來學習按鍵掃描編程及按鍵軟件消抖動的編程,通過這些對比實驗,給大家一個更加感性的認識。

    1、按鍵K1控制LED指示燈實驗:本程序通過實驗板上的按鍵K1控制P1.0上的LED亮滅。程序功能如下:當K1按下開關時指示燈亮,再次按下時指示燈滅。

   輕觸按鍵K1控制指示燈的實驗例程(沒有軟件消抖動處理)
 
實驗結果分析:


      ORG     0000H
      AJMP    START       ;跳轉到初始化程序

      ORG     0033H
START:MOV     SP,#60H     ;SP初始化
      MOV     P3,#0FFH    ;端口初始化

MAIN: JB      P3.2,MAIN   ;檢測按鍵K1有沒有按下
      CPL     P1.0        ;執行按鍵命令,改變P1.0指示燈狀態
      JNB     P3.2,$      ;等待按鍵K1釋放
      AJMP    MAIN        ;返回重新檢測按鍵

      END

 


    由于本實驗程序中沒有進行軟件消抖動延時處理,我們把程序燒寫到單片機上運行時,多次按壓K1控制LED的亮滅,發控制不太穩定,大約按十次,LED發光二極管的輸出狀態有2到3次是錯誤的。

    這就是因為沒有軟件去抖動的原因,在按鍵的前沿抖動或后沿抖動期間,抖動脈沖均有可能被程序檢測而錯誤執行,此時相當于按鍵被按壓和松開了N次,LED的輸出狀態也已經改變了N次,故松開按鍵后LED的狀態是一個隨機結果。

 


   2、改進的按鍵K1控制LED指示燈實驗:本程序通過實驗板上的按鍵K1控制P1.0上的LED亮滅。程序功能如下:當K1按下開關時指示燈亮,再次按下時指示燈滅。

    改進的輕觸按鍵K1控制指示燈的實驗例程(經過軟件消抖動處理)
 
實驗結果分析:


      ORG     0000H
      AJMP    START       ;跳轉到初始化程序

      ORG     0033H
START:MOV     SP,#60H     ;SP初始化
      MOV     P3,#0FFH    ;端口初始化

MAIN: JB      P3.2,MAIN   ;檢測按鍵K1有沒有按下
      ACALL   YS20ms      ;消前沿抖動延時,實現軟件去抖動
      JB      P3.2,MAIN   ;再次檢測按鍵,如果為高電平,則是抖動
      CPL     P1.0        ;執行按鍵命令,改變P1.0指示燈狀態
      JNB     P3.2,$      ;等待按鍵K1釋放
      AJMP    MAIN        ;返回重新檢測按鍵

YS20ms:
      MOV     R7,#40      ;延時20ms子程序
YS1:  MOV     R6,#229
      DJNZ    R6,$
      DJNZ    R7,YS1
      RET

      END

 


    由于本實驗程序中對按鍵的前沿抖動進行20ms的軟件消抖動延時處理,我們把程序燒寫到單片機上運行,多次按壓K1控制LED的亮滅,發控制就很穩定了,不會出現控制錯誤的現象。

    通過本實驗,可以看出軟件去抖動延時還是很重要的,消抖動延時時間一般在5~20ms之間,實際應用時候根據實驗取得最佳延時。

    本程序沒有對按鍵松開時的后沿抖動進行消抖動,如果在要求很嚴格的系統中,建議增加后沿消抖動延時處理,這樣可以確保按鈕不會產生誤動作。

 

 

    3、帶按鍵音效的按鍵掃描實驗例程:下面的按鍵掃描實驗例程除了有軟件消抖動功能外,還具有按鍵音效,當按壓按鍵K1~K4時候,按鍵號碼會顯示在實驗板的數碼管上,同時可以聽到按鍵音。

關閉窗口

相關文章

主站蜘蛛池模板: 在线欧美亚洲 | 国产亚洲精品久久久久久牛牛 | 九九热精品视频 | 国产在线一区二区三区 | 日韩在线视频免费观看 | 亚洲国产成人久久综合一区,久久久国产99 | 国产精品美女久久久免费 | 亚洲精品视频在线 | 久久99深爱久久99精品 | 日韩精品av一区二区三区 | 日韩中文欧美 | 香蕉久久久 | 香蕉婷婷 | 91婷婷韩国欧美一区二区 | 久久一本 | 日韩在线观看一区 | h视频在线免费观看 | 91精品久久久久久久久99蜜臂 | 欧美一区二区免费视频 | 男人的天堂中文字幕 | 三级成人在线观看 | 精品国产一区二区三区成人影院 | 777zyz色资源站在线观看 | 亚洲欧美国产精品久久 | 亚洲成人福利在线观看 | 国产精品18毛片一区二区 | 手机看黄av免费网址 | 国产精品高清在线 | 黄色片亚洲 | 在线看91 | 国产精品免费在线 | 国产精品国产成人国产三级 | 亚洲精品大全 | 色婷婷综合网 | 午夜精品 | 欧美日韩国产精品一区 | 久综合 | 二区高清| 久久久久国产视频 | 精品国产欧美在线 | 一区二区三区福利视频 |