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

專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機教程網(wǎng) >> MCU設(shè)計實例 >> 瀏覽文章

單片機獨立按鍵檢測程序

作者:劉轔   來源:本站原創(chuàng)   點擊數(shù):  更新時間: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個端子為可尋址位,分別接四個獨立按鍵,按鍵另一端全部接地,
當(dāng)按鍵按下的時候,端口檢測到變?yōu)榈碗娖,開始為P0賦值。在按鍵沒有被按下的時候,4個
寄存器的32個端口都是高電平,被選中的位8段全亮。


        修改了P2=0x09,因為P2出來串接74HC138,本來P2最多等于0x07=0000 0111,經(jīng)譯
碼出來的是HHHH HHHL,接共陰數(shù)碼管的第8位數(shù)碼管被選中。在P2=0x09=0000 1001,取后
低三位是ABC=001,注意這里A時最高位,也就是點亮第二位數(shù)碼管,這里可以取 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

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

 

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


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

 

if(!KEY)

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

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

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

*/
關(guān)閉窗口

相關(guān)文章

主站蜘蛛池模板: 亚洲精品久久久久久首妖 | 正在播放国产精品 | 二区国产| 免费观看黄网站 | 日韩在线资源 | 亚洲网站在线 | 日韩精品一区二区三区在线观看 | 日韩在线不卡 | 天天干天天操 | 精精国产xxxx视频在线 | 亚洲人成人网 | 国外成人在线视频网站 | 99re热精品视频 | 久久最新| 久久久久久久久中文字幕 | 日韩精品极品视频在线观看免费 | 91精品国产高清久久久久久久久 | 国产免国产免费 | 午夜激情一区 | 欧美精品一区二区三区在线播放 | 一级国产精品一级国产精品片 | 成人黄在线观看 | 成人永久免费 | 亚洲三级在线观看 | 在线午夜 | 夜夜爽99久久国产综合精品女不卡 | aaaa一级毛片 | 在线伊人| 日韩一区二区在线视频 | 国产精品99久久久久久动医院 | 国产精品一区二 | 国产69久久精品成人看动漫 | 高清一区二区三区 | 亚洲精品视频在线播放 | 久久免费精品 | 成人久久久 | 亚洲最新网址 | 欧美亚洲日本 | 久久久国产精品一区 | 精品国产99 | 国产 欧美 日韩 一区 |