按鍵消抖

原因:由於按鍵是由金屬片組成,當按下鬆開後,會發生抖動,效果等同於在很小的時間內按下好多次,由於人的反應時間較計算機的計算能力差距很大,因此,計算機經過處理後產生的效果是人眼看不到的,爲了能夠看到清晰的效果,因此,需要設置按鍵消抖。在這裏插入圖片描述解決方法:保證每個引腳的信號輸入的脈衝週期大於
輸入引腳的讀取週期。
當小於脈衝週期時,發送的信號會出現部分丟失。

當大於脈衝週期時,發送的信號始終都會被接收,代碼實現體現在延時讀取引腳的數據。
在這裏插入圖片描述
這裏借用51單片機的按鍵消抖程序來看具體的實現

    //軟件消抖的獨立式鍵盤輸入實驗
    #include<reg52.h>    //  包含51單片機寄存器定義的頭文件
    sbit S1=P1^4;        //將S1位定義爲P1.4引腳
    sbit LED0=P0^0;       //將LED0位定義爲P0.0引腳
    
    //延時約30ms函數
    void delay(void)
    {
       unsigned char i,j;
            for(i=0;i<100;i++)
              for(j=0;j<100;j++)
                ;
    }
   
    //主函數
    void main(void)  
    {
       LED0=0;       //P0.0引腳輸出低電平
    while(1)
       {
                if(S1==0)   //P1.0引腳輸出低電平,按鍵S1被按下
             {
               delay(); //延時一段時間再次檢測
                if(S1==0)   // 按鍵S1的確被按下
                  LED0=~LED0;  //P0.0引腳取反,即實現開關燈功能
                    while(!S1);   //等待下一次按鍵      
              }      
                      
                            
            }
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章