在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > C51單片機的3*3矩陣鍵盤程序

            C51單片機的3*3矩陣鍵盤程序

            作者: 時間:2016-11-30 來源:網(wǎng)絡 收藏
            #include

            #include
            /**延時1**/ //用于消抖
            void delay1(void)
            {uchar i;
            for(i=0;i<200;i++);
            }

            本文引用地址:http://www.biyoush.com/article/201611/323911.htm

            /****延時2**********/
            void delay2(void)
            {
            uchar i,j,s;
            for(i=250;i>0;i--)
            for(j=250;j>0;j--)
            for(s=5;s>0;s--);
            }
            /****串口初使化****/
            void chuankou_init(void)
            {
            TMOD=0X20;//定時器1,方式2,8位adclass=0&app_id=0&c=news&cf=1001&ch=0&di=128&fv=17&is_app=0&jk=a379ebf740993484&k=%BC%C6%CA%FD%C6%F7&k0=%BC%C6%CA%FD%C6%F7&kdi0=0&luki=1&n=10&p=baidu&q=98059059_cpr&rb=0&rs=1&seller_id=1&sid=84349940f7eb79a3&ssp2=1&stid=0&t=tpclicked3_hc&tu=u1831118&u=http%3A%2F%2Fwww%2E51hei%2Ecom%2Fmcu%2F2174%2Ehtml&urlid=0" id="3_nwl" mpid="3" target="_blank">計數(shù)器
            SCON=0x40;//方式1,而不允許接收
            PCON=0X00;//波特率不翻倍
            TH1=0xf4; //11.0592晶振,somd=0,波特率9600,初值=0xfa.應用sst89E564,已經(jīng)倍頻
            TL1=0xf4;
            TR1=1; //啟動定時器1
            }
            /**鍵盤掃描函數(shù)**/
            uchar keyscan(void)
            {
            uchar code_h; //行掃描值
            uchar code_l; //列掃描值
            P1=0xf8; //P1.0-P1.2發(fā)全0,P1.3-P1.5發(fā)1,準備讀列狀態(tài)
            if((P1&0Xf8)!=0Xf8) //如果P1.3-P1.5不全為1,可能有鍵按下
            {
            delay1(); //消抖
            if((P1&0xf8)!=0xf8) //重讀列位,若還是不全為1,定有鍵按下
            {
            code_h=0xfe;//P1.0為0。開始行掃描
            while((code_h&0x08)!=0x00) //判斷是否為最后一行,若不是,繼續(xù)掃描
            {
            P1=code_h; //P1口輸出行掃描值
            if((P1&0Xf8)!=0Xf8) //如果P1.3-P1.5不全為1,該行有鍵按下
            {
            code_l=((P1&0xf8)|0x07); //保留P3-p5位,低3位為1,作為列值
            return((~code_h)+(~code_l)); //鍵編碼=行掃描值+列掃描值,返回主程序
            }
            else //該行無鍵按下,行掃描值左移,掃描下一行
            code_h=((code_h<<1)|0x01);
            }
            }
            }
            return(0); //無鍵按下,反回0

            }
            /**主函數(shù)**/
            void main(void)
            {
            uchar key;
            chuankou_init(); //串口初使化
            while(1)
            {
            key=keyscan(); //調(diào)用鍵盤掃描函數(shù),返回的鍵值送變量key
            switch(key)
            {
            case 0x0a:SBUF=0X00;delay2();break;
            case 0x11:SBUF=0x05;delay2();break;
            case 0x12:SBUF=0x04;delay2();break;
            case 0x14:SBUF=0x03;delay2();break;
            case 0x22:SBUF=0x01;delay2();break;
            case 0x24:SBUF=0x02;delay2();break;
            case 0x21:SBUF=0x06;delay2();break;
            case 0x0c:break;
            case 0x05:break;

            default:break;
            }
            }
            }



            關鍵詞: C51單片機矩陣鍵

            評論


            技術專區(qū)

            關閉