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

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

單片機獨立按鍵檢測程序

作者:劉轔   來源:本站原創   點擊數:  更新時間:2010年07月18日   【字體:
/********************************************************

功能:獨立按鍵測試

時間:2010—7—17

**********************************************************/
#include<reg52.h>
sbit key1=P3^0;
sbit key2=P3^1;
sbit key3=P3^2;
sbit key4=P3^3;


void delay(unsigned int cnt)
{
        while(--cnt);
}


main()
{ 

        P2=0x09;
        while(1)
        { 
                if(!key1)
                        P0=0x06;
                if(!key2)
                        P0=0x5B;
                if(!key3)
                        P0=0x4F;
                if(!key4)
                        P0=0x66;

        }
}

/*

        定義寄存器P3的4個端子為可尋址位,分別接四個獨立按鍵,按鍵另一端全部接地,
當按鍵按下的時候,端口檢測到變為低電平,開始為P0賦值。在按鍵沒有被按下的時候,4個
寄存器的32個端口都是高電平,被選中的位8段全亮。


        修改了P2=0x09,因為P2出來串接74HC138,本來P2最多等于0x07=0000 0111,經譯
碼出來的是HHHH HHHL,接共陰數碼管的第8位數碼管被選中。在P2=0x09=0000 1001,取后
低三位是ABC=001,注意這里A時最高位,也就是點亮第二位數碼管,這里可以取 P2=x%8。

 

---------------------------------------------------------------------------------------------------------------

A    B    C    |    Y0   Y1    Y2    Y3    Y4    Y5    Y6    Y7

----------------------------------------------------------------------------------------------------------------

0    0    0    |    L     H     H     H     H     H     H     H

0    0    1    |    H     L     H     H     H     H     H     H

0    1    0    |    H     H     L     H     H     H     H     H

0    1    1    |    H     H     H     L     H     H     H     H

1    0    0    |    H     H     H     H     L     H     H     H

1    0    1    |    H     H     H     H     H     L     H     H

1    1    0    |    H     H     H     H     H     H     L     H

1    1    1    |    H     H     H     H     H     H     H     L

----------------------------------------------------------------------------------------------------------------

 

   顯然如果使用共陽數碼管,則很難實現選位點亮,可能是選位熄滅。使用萬用表
測量按鍵另一端接地按鍵按下后確實檢測到被按下按鍵對應的端口為低電平。


   獨立按鍵另外一個問題就是抖動,可以用硬件電路或者軟件來消除。硬件電路可以
使用SR鎖存器(與非門)來構成(參見康華光數字電路)。但最好還是使用軟件,延時
程序可以很方便的解決。根據按鍵的不同機械抖動固有時間,一般情況下為4~15ms。
通過延時躲避抖動,按下和釋放都存在抖動,實際使用程序需要兩次去抖動。設定時間
為20ms就能滿足一般要求。

 

if(!KEY)

{
        DelayMs(10);    //按下去抖動
        while(!KEY);
        if(KEY)
        {
                DelayMs(10);    //釋放驅抖動
                if(KEY)
                {
                        //啟動按鍵按下后需要執行的程序
                }
        }
}

        本程序存在瑕疵,延時10ms,如果抖動已經結束,此時KEY=1,不必執行while(!KEY),緊
接著執行釋放去抖動;但是如果抖動的時間比較長(超過20ms)的話就不好說了。不過本程序的可
取之處時,如果一直按著按鍵很長時間,相當于按了一次,因為while(!KEY)將按下去的時間消除。

        按鍵控制是單片機和外界通信,接受外界控制的重要機制,在獨立按鍵特別是本程序中,
用不上去抖動,因為抖動對程序不造成任何影響。

*/
關閉窗口

相關文章

主站蜘蛛池模板: 成人在线一区二区三区 | 精品久 | 欧美日韩国产一区二区三区 | 91在线看网站 | 国产区在线 | 亚洲欧美在线观看 | 中文字幕日韩三级 | 国产成人精品久久二区二区91 | 精品国产视频 | 最新国产精品视频 | 免费av在线| 日韩一区二区三区在线播放 | 2021狠狠干 | 国产成人精品免费 | 日本h片在线观看 | 精品久久中文 | 国产免费一区二区三区最新6 | 国产精品一区在线 | 国产在线视频一区 | 欧美国产日韩在线 | 欧美一区二区三区在线视频 | 欧美日韩高清在线一区 | 亚洲福利一区二区 | 成人二区| 仙人掌旅馆在线观看 | 欧美精品一区三区 | av在线伊人| 91色综合| 91久久电影 | 91一区二区三区 | 男女免费网站 | 99热最新| 91玖玖 | 一区二区视频在线观看 | 99av成人精品国语自产拍 | 高清黄色 | 欧美日韩a | 成人一区二区三区在线 | 午夜在线观看免费 | 亚洲精品乱码久久久久v最新版 | 亚洲国产精品日韩av不卡在线 |