<acronym id="xonnx"></acronym>
      <td id="xonnx"></td>
    1. <pre id="xonnx"></pre>

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

        PIC單片機1X4獨立鍵盤C語言程序

        作者:huqin   來源:本站原創   點擊數:  更新時間:2014年03月31日   【字體:
        /********************************************
        *** 功能:1X4按鍵
        *** 實驗內容:按下S1 S2 S3 S4 數碼管分別顯示出0 1 2 3
        *** 開發板連接方法:把J3的的跳線帽跳到1-2(左邊)
        *********************************************/
        #include<pic.h>              //包含單片機內部資源預定義
        __CONFIG(0xFF32);
        //芯片配置字,看門狗關,上電延時開,掉電檢測關,低壓編程關,加密,4M晶體HS振蕩
        const unsigned char TABLE[] = {0x3f,0x6,0x5b,0x4f,0x66};
        int result;
        void delay();              //delay函數申明
        void init();               //I/O口初始化函數申明
        void scan();               //按鍵掃描程序申明
        void display(int x);       //顯示函數申明
        
        /****************************************************************************
        * 名    稱:main()
        * 功    能:
        * 入口參數:
        * 出口參數:
        ****************************************************************************/
        void main()
        {   
            result = 0x8;               //開始時顯示F
                init();                                           //調用初始化函數
                while (1)                         //死循環
                {
                        scan();                      //調用按鍵掃描程序
                        display(result);             //調用結果顯示程序
                }
        }
        
        /****************************************************************************
        * 名    稱:init()
        * 功    能:初始化
        * 入口參數:
        * 出口參數:
        ****************************************************************************/
        void init()
        {
                TRISB = 0X0F;          //設置B口低4位為輸入
                TRISD = 0;          //portd 輸出
                TRISC = 0xf0;
                TRISA = 0;          //porta 輸出
                PORTA = 0x00;        //先關閉所有顯示
                PORTD = 0x0f;
                PORTC = 0xff;
               
        }
        
        /****************************************************************************
        * 名    稱:scan()
        * 功    能:按鍵掃描
        * 入口參數:
        * 出口參數:
        ****************************************************************************/
        void scan()
        {
                if (RB0 == 0)               //判斷B0是否按下
                        result = 0x1;
                if (RB1 == 0)               //判斷B1是否按下
                        result = 0x2;
                if (RB2 == 0)               //判斷B2是否按下
                        result = 0x3;
                if (RB3 == 0)               //判斷B3是否按下
                        result = 0x4;
        }
        
        /****************************************************************************
        * 名    稱:display()
        * 功    能:結果顯示
        * 入口參數:int x 要現實的數據
        * 出口參數:
        ****************************************************************************/
        void display(int x)
        {
                switch (x)                //根據X值的不同,跳轉到相應的部分處理
                {
                case 0x1:
                        PORTD = TABLE[0];PORTA = 0X3F;delay();break;          //B0
                case 0x2:
                        PORTD = TABLE[1];PORTA = 0X3F;delay();break;          //B1
                case 0x3:
                        PORTD = TABLE[2];PORTA = 0X3F;delay();break;          //B2
                case 0x4:
                        PORTD = TABLE[3];PORTA = 0X3F;delay();break;          //B3
                case 0x8:
                        PORTD = 0X71;PORTA = 0Xff;delay();break;                  //無按鍵下
                }
        }
        
        /****************************************************************************
        * 名    稱:delay()
        * 功    能:延時
        * 入口參數:
        * 出口參數:
        ****************************************************************************/
        void delay()              
        {
                int i;                  //定義整形變量
                for (i = 600;i--;);     //延時
        }
        關閉窗口

        相關文章

        欧美性色欧美精品视频,99热这里只有精品mp4,日韩高清亚洲日韩精品一区二区,2020国自产拍精品高潮