新聞中心

        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 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 汶川县| 自治县| 灵台县| 漳州市| 沙河市| 望奎县| 雷波县| 昌宁县| 中卫市| 南开区| 林西县| 苏尼特左旗| 平定县| 乐都县| 达尔| 贡嘎县| 雅江县| 开封县| 青阳县| 屏边| 南雄市| 清流县| 昌江| 阜南县| 宽甸| 吴川市| 克拉玛依市| 嘉黎县| 富锦市| 思茅市| 娄烦县| 顺昌县| 新化县| 黄平县| 朔州市| 余姚市| 东阳市| 霍山县| 石嘴山市| 高尔夫| 阜宁县|