新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > C51單片機鍵盤檢測原理以及實現

        C51單片機鍵盤檢測原理以及實現

        作者: 時間:2012-08-04 來源:網絡 收藏

        首先,在做軟件之前確定硬件。明確鍵盤類型:
        彈性按鍵:按下時閉合,松手后自動斷開。如電腦鍵盤

        自鎖式按鍵:按下時閉合,且自動鎖住。一邊用于開關

        在I/O口檢測觸電電壓時應該考慮按鍵抖動問題,一般按鍵抖動為5~10ms左右,具體與其機械特性有關,所以要加檢測抖動環節,可以用軟件或者去抖動芯片硬件處理,當然通常用延時方法處理。
        注意正確連接引腳。

        下面是一個簡單的4按鍵獨立鍵盤程序,在51hei開發板的數碼管上操作。
        完整的源代碼下載 http://www.51hei.com/f/jpdd.rar
        數值為0~59變化,開始顯示00
        按key1數值加1,按key2數值減1,按key3數值歸0,按key4數值每秒加1。

        #include reg52.h>
        #define uchar unsigned char
        #define unit unsigned int
        sbit key1=P3^2;
        sbit key1=P3^4;
        sbit key1=P3^6;
        sbit key1=P3^7;
        sbit dula=P2^6;
        sbit wela=P2^7;
        uchar code table[]={
        0x3f,0x06.0x5b,0x4f,
        0x66,0x6d,0x7d,0x07
        0x7f,0x6f,0x77,0x7c
        0x39,0x5e,0x79,0x71};
        void delayms(unit);
        uchar numt0,unm;
        void display(uchar numdis) //定義一個顯示的函數,分個位十位,用來顯示
        {
        uchar shi,ge; //然后用輪流顯示發,利用人眼圖像殘留分別顯示
        shi=numdis/10; //上面的numdis表示num這個顯示的數
        ge=numdis%10; //numdis由下面主函數num賦值

        dula=1;
        P0=table[shi];
        dula=0;

        P0=0xff;
        wela=1;
        P0=0xfe;
        wela=0;
        delayms(5);

        dula=1;
        P0=table[ge];
        dula=0;

        P0=0xff;
        wela=1;
        P0=0xfe;
        wela=0;
        delayms(5);
        }
        void delayms(unit xms) //自定義延遲環節
        {
        unit i,j;
        for(i=xms,i>0,i--);
        for(j=110,j>0,j--);
        }
        void init() //初始化函數,保證程序正常運行
        {
        TMOD=0x01;
        TH0=(65536-45872)/256;
        TL0=(65536-458720%256;
        EA=1;
        ET=0;
        }


        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 青浦区| 五大连池市| 吉木萨尔县| 岫岩| 大化| 南投县| 蓬溪县| 二连浩特市| 竹山县| 贞丰县| 裕民县| 黄大仙区| 娱乐| 宁夏| 贵溪市| 大悟县| 柘城县| 津市市| 滁州市| 齐齐哈尔市| 沛县| 奎屯市| 宣汉县| 浦江县| 邹平县| 平陆县| 布拖县| 五常市| 牟定县| 诸暨市| 曲水县| 汪清县| 古丈县| 林芝县| 樟树市| 南溪县| 繁峙县| 灯塔市| 蛟河市| 庐江县| 南昌市|