• <em id="6vhwh"><rt id="6vhwh"></rt></em>

    <style id="6vhwh"></style>

    <style id="6vhwh"></style>
    1. <style id="6vhwh"></style>
        <sub id="6vhwh"><p id="6vhwh"></p></sub>
        <p id="6vhwh"></p>
          1. 国产亚洲欧洲av综合一区二区三区 ,色爱综合另类图片av,亚洲av免费成人在线,久久热在线视频精品视频,成在人线av无码免费,国产精品一区二区久久毛片,亚洲精品成人片在线观看精品字幕 ,久久亚洲精品成人av秋霞

            矩陣鍵盤程序(stm32矩陣鍵盤程序)

            更新時間:2023-03-01 07:24:45 閱讀: 評論:0

            矩陣鍵盤掃描程序

            你要放到“死循環”中不斷掃描。他的原理圖一般是這樣的

            以第一個按鍵為例,當你按下時I/O口讀到的數據就不是0x0f了。好吧你最開始的賦值錯了。你要用0xee,0xde檢測的話你應該給0xfe。每四個按鍵是一組。我這有一個我做密碼鎖的程序你參考一下。

            void key()

            {

            P3=0xfe;

            if(P3!=0xfe)

            {

            time(50);

            if(P3!=0xfe)

            {

            switch(P3)

            {

            ca 0xee:num=1,cs++;

            break;

            ca 0xde:num=2,cs++;

            break;

            ca 0xbe:num=3,cs++;

            break;

            ca 0x7e:num=4,cs++;

            break;

            }

            }

            while(P3!=0xfe);

            }

            P3=0xfd;

            if(P3!=0xfd)

            {

            time(50);

            if(P3!=0xfd)

            {

            switch(P3)

            {

            ca 0xed:num=5,cs++;

            break;

            ca 0xdd:num=6,cs++;

            break;

            ca 0xbd:num=7,cs++;

            break;

            ca 0x7d:num=8,cs++;

            break;

            }

            }

            while(P3!=0xfd);

            }

            P3=0xfb;

            if(P3!=0xfb)

            {

            time(50);

            if(P3!=0xfb)

            {

            switch(P3)

            {

            ca 0xeb:num=9,cs++;

            break;

            ca 0xdb:num=0,cs++;

            break;

            ca 0xbb:cs++;

            break;

            ca 0x7b:num=10,cs=0,a=b=c=d=e=f=10,ply=1;

            break;

            }

            }

            while(P3!=0xfb);

            }

            }


            c51矩陣鍵盤程序怎么寫

            #include <reg52.h>

            #define key P2
            int val;

            char code sign[17]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x83,0xf8,0x80,0x98,0x88,0x83,0xc6,0xa1,0x86,0x8e};

            void delay_10ms();

            void key_scan(); //矩陣按鍵函數聲明

            void main()
            {
            while(1)

            {
            P0=sign[val];
            key_scan();
            }
            }

            void key_scan()
            {
            static char a,b; //a用于判斷是不是第一次按下,b用于稍微延時
            char state; //記錄鍵值
            key=0x0f;
            if(key!=0x0f) //如果有按鍵按下
            {
            state=key; //記錄第一次按鍵狀態
            if(a==0) //如果第一次按下
            {
            b++; //略微延時 不需要延時10ms以提高單片機效率
            if(b>3)
            {
            if(key==state) //判斷鍵值是否和第一次一致
            {
            a=1,b=0; //復位狀態值 a==1說明已經按下,等待后續松開
            key=0x0f; //測試列
            switch(key)
            {
            ca (0x07): val=0;break;
            ca (0x0b): val=1;break;
            ca (0x0d): val=2;break;
            ca (0x0e): val=3;break;
            }
            key=0xf0; // 測試行
            switch(key)
            {
            ca (0x70): val=val;break;
            ca (0xb0): val=val+4;break;
            ca (0xd0): val=val+8;break;
            ca (0xe0): val=val+12;break;
            }
            }
            }
            }
            }
            el
            {
            a=b=0; //松開后復位狀態機
            }
            }

            51單片機4*3矩陣鍵盤6位密碼鎖c語言程序

            #include<stdio.h>
            #include<reg51.h>
            #define uchar unsigned char

            uchar key;
            int i=0;
            char b[4]={'0','0','0','0'};//輸入的密碼放這里和初始的比較來判斷是否密碼正確
            void keyscan() //掃描按鍵是否按下
            {
            uchar temp;
            P3=0xfe; //掃描第一行
            temp=P3;
            temp=temp&0xf0;
            if(temp!=0xf0) //判斷按鍵是否按下
            {
            delayms(10);//去抖動
            temp=P3;
            temp=temp&0xf0;
            if(temp!=0xf0)//確認按鍵按下
            {
            temp=P3;
            switch(temp)
            {
            ca 0xee:key='0';break;
            ca 0xde:key='1';break;
            ca 0xbe:key='2';break;
            ca 0x7e:key='3';break;
            }
            while(temp!=0xf0) //判斷按鍵是否松開
            {
            temp=P3;
            temp=temp&0xf0;
            }
            b[i]=key;i++;if(i==3)i=0;
            }
            }
            P3=0xfd; //掃描第二行
            temp=P3;
            temp=temp&0xf0;
            if(temp!=0xf0)
            {
            delayms(10);
            temp=P3;
            temp=temp&0xf0;
            if(temp!=0xf0)
            {
            temp=P3;
            switch(temp)
            {
            ca 0xed:key='4';break;
            ca 0xdd:key='5';break;
            ca 0xbd:key='6';break;
            ca 0x7d:key='7';break;
            }
            while(temp!=0xf0)
            {
            temp=P3;
            temp=temp&0xf0;
            }
            b[i]=key;i++;if(i==3)i=0;
            }
            }
            P3=0xfb; //掃描第三行
            temp=P3;
            temp=temp&0xf0;
            if(temp!=0xf0)
            {
            delayms(10);
            temp=P3;
            temp=temp&0xf0;
            if(temp!=0xf0)
            {
            temp=P3;
            switch(temp)
            {
            ca 0xeb:key='8' ;break;
            ca 0xdb:key='9' ;break;
            ca 0xbb:key='A';break;
            ca 0x7b:key='B';break;
            }
            while(temp!=0xf0)
            {
            temp=P3;
            temp=temp&0xf0;
            }
            b[i]=key;i++;if(i==3)i=0;
            }
            }
            P3=0xf7; //掃描第四行
            temp=P3;
            temp=temp&0xf0;
            if(temp!=0xf0)
            {
            delayms(10);
            temp=P3;
            temp=temp&0xf0;
            if(temp!=0xf0)
            {
            temp=P3;
            switch(temp)
            {
            ca 0xe7:key='C';break;
            ca 0xd7:key='D';break;
            ca 0xb7:key='E';break;
            ca 0x77:key='F';break;
            }
            while(temp!=0xf0)
            {
            temp=P3;
            temp=temp&0xf0;
            }
            b[i]=key;i++;if(i==3)i=0;
            }
            }
            }

            main()
            {
            char a[4]={'3','5','A','C'}; //這個做初始密碼
            while(1)//無限循環,保證了b 0-3 四個數有值
            {
            keyscan();
            if(a[0]==b[0]&&a[1]==b[1]&&a[2]==b[2]&&a[3]==b[3])
            {
            //這里寫密碼正確程序要怎么處理
            }
            }
            }

            矩陣鍵盤程序解析,掃描和判斷程序如下。求注釋!!真心看不懂啊!4*4矩陣

            大體上看了一下你的程序, 就是一個很簡單的鍵盤掃描~~ 你應該看看矩陣鍵盤的原理,再看這個的時候就很簡單了~~我給你手寫也有點累~ 處于責任心,給你寫點吧!! 這個程序實現的是4*4的矩陣鍵盤,用高4位來進行掃描是否有鍵按下(高位的4個口輪流置零掃描), 如果有鍵按下(置零的哪個口連接的線就會和低四位其中的一根線接觸)低四位中就會有一個口為低電平.... 剩下的就是通過高低4位來判斷具體按鍵是哪個~~ 我不寫了~~ 自己了解一下原理吧,很簡單~~~ 加油!

            PANDUAN: MOV P3,#0FFH //程序開始 p3口全部拉高

              CLR P3.4 //P3.4置零 P3=0XEF

              MOV A,P3 //將P3端口的值賦給A---0XEF
              ANL A,#0FH //將上一步得到的值 和0X0F邏輯與---也就是取P3口低四位0X0F----結果存到A

              XRL A,#0FH //A里面的值 與0X0F異或 ---結果為0

              JZ SW1 //如果為零 則跳轉到SW1,否則往下執行---含義就是如果為零則代表無鍵按下 否則有

              LCALL DELAY10MS //延時10MS--有按鍵按下, 軟件消抖

              JZ SW1 //繼續判斷---確定有鍵按下 但是不確定是哪個鍵按下 --接下來判斷哪個鍵按下

              MOV A,P3 // 以解釋
              ANL A,#0FH //以解釋

              CJNE A,#0EH,K1 //A不等于0x0E 則跳轉到k1, 否則往下執行

              MOV COUNT,#0 //count置零

              LJMP DK //跳轉到DK

              K1: CJNE A,#0DH,K2

              MOV COUNT,#4

              LJMP DK

              K2: CJNE A,#0BH,K3

              MOV COUNT,#8

              LJMP DK

              K3: CJNE A,#07H,K4

              MOV COUNT,#12

              K4: NOP

              LJMP DK

              SW1: MOV P3,#0FFH //以上分析的結果--程序跳轉到這執行

              CLR P3.5 //與之前的分析很類似--以下不在分析

              MOV A,P3

              ANL A,#0FH

              XRL A,#0FH

              JZ SW2

              LCALL DELAY10MS

              JZ SW2

              MOV A,P3

              ANL A,#0FH

              CJNE A,#0EH,K5

              MOV COUNT,#1

              LJMP DK

              K5: CJNE A,#0DH,K6

              MOV COUNT,#5

              LJMP DK

              K6: CJNE A,#0BH,K7

              MOV COUNT,#9

              LJMP DK

              K7: CJNE A,#07H,K8

              MOV COUNT,#13

              K8: NOP

              LJMP DK

              SW2: MOV P3,#0FFH

              CLR P3.6

              MOV A,P3

              ANL A,#0FH

              XRL A,#0FH

              JZ SW3

              LCALL DELAY10MS

              JZ SW3

              MOV A,P3

              ANL A,#0FH

              CJNE A,#0EH,K9

              MOV COUNT,#2

              LJMP DK

              K9: CJNE A,#0DH,KA

              MOV COUNT,#6

              LJMP DK

              KA: CJNE A,#0BH,KB

              MOV COUNT,#10

              LJMP DK

              KB: CJNE A,#07H,KC

              MOV COUNT,#14

              KC: NOP

              LJMP DK

              SW3: MOV P3,#0FFH

              CLR P3.7

              MOV A,P3

              ANL A,#0FH

              XRL A,#0FH

              JZ SW4

              LCALL DELAY10MS

              JZ SW4

              MOV A,P3

              ANL A,#0FH

              CJNE A,#0EH,KD

              MOV COUNT,#3

              LJMP DK

              KD: CJNE A,#0DH,KE

              MOV COUNT,#7

              LJMP DK

              KE: CJNE A,#0BH,KF

              MOV COUNT,#11

              LJMP DK

              KF: CJNE A,#07H,KG

              MOV COUNT,#15

              KG: NOP

              LJMP DK

              SW4: LJMP PANDUAN

              DK: RET

            求助程序:51單片機矩陣鍵盤是否按下檢測程序

            /**************************************************************************************
            * 矩陣按鍵實驗 *
            實現現象:下載程序后數碼管顯示0,按下矩陣按鍵上的按鍵顯示對應的數字
            S1-S4:0-3
            S5-S8:4-7
            S9-S12:8-B
            S13-S16:C-F。
            注意事項:如果不想讓點陣模塊顯示,可以將74HC595模塊上的JP595短接片拔掉。
            ***************************************************************************************/
            #include "reg52.h" //此文件中定義了單片機的一些特殊功能寄存器
            typedef unsigned int u16; //對數據類型進行聲明定義
            typedef unsigned char u8;
            #define GPIO_DIG P0
            #define GPIO_KEY P1
            sbit LSA=P2^2;
            sbit LSB=P2^3;
            sbit LSC=P2^4;
            u8 KeyValue; //用來存放讀取到的鍵值
            u8 code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
            0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//顯示0~F的值
            /*******************************************************************************
            * 函 數 名 : delay
            * 函數功能 : 延時函數,i=1時,大約延時10us
            *******************************************************************************/
            void delay(u16 i)
            {
            while(i--);
            }
            /*******************************************************************************
            * 函 數 名 : KeyDown
            * 函數功能 : 檢測有按鍵按下并讀取鍵值
            * 輸 入 : 無
            * 輸 出 : 無
            *******************************************************************************/
            void KeyDown(void)
            {
            char a=0;
            GPIO_KEY=0x0f;
            if(GPIO_KEY!=0x0f)//讀取按鍵是否按下
            {
            delay(1000);//延時10ms進行消抖
            if(GPIO_KEY!=0x0f)//再次檢測鍵盤是否按下
            {
            //測試列
            GPIO_KEY=0X0F;
            switch(GPIO_KEY)
            {
            ca(0X07): KeyValue=0;break;
            ca(0X0b): KeyValue=1;break;
            ca(0X0d): KeyValue=2;break;
            ca(0X0e): KeyValue=3;break;
            }
            //測試行
            GPIO_KEY=0XF0;
            switch(GPIO_KEY)
            {
            ca(0X70): KeyValue=KeyValue;break;
            ca(0Xb0): KeyValue=KeyValue+4;break;
            ca(0Xd0): KeyValue=KeyValue+8;break;
            ca(0Xe0): KeyValue=KeyValue+12;break;
            }
            while((a<50)&&(GPIO_KEY!=0xf0)) //檢測按鍵松手檢測
            {
            delay(1000);
            a++;
            }
            }
            }
            }
            /*******************************************************************************
            * 函 數 名 : main
            * 函數功能 : 主函數
            * 輸 入 : 無
            * 輸 出 : 無
            *******************************************************************************/
            void main()
            {
            LSA=0; //給一個數碼管提供位選
            LSB=0;
            LSC=0;
            while(1)
            {
            KeyDown(); //按鍵判斷函數
            GPIO_DIG=smgduan[KeyValue]; //
            }
            }

            本文發布于:2023-02-28 19:39:00,感謝您對本站的認可!

            本文鏈接:http://www.newhan.cn/zhishi/a/167762668567457.html

            版權聲明:本站內容均來自互聯網,僅供演示用,請勿用于商業和其他非法用途。如果侵犯了您的權益請與我們聯系,我們將在24小時內刪除。

            本文word下載地址:矩陣鍵盤程序(stm32矩陣鍵盤程序).doc

            本文 PDF 下載地址:矩陣鍵盤程序(stm32矩陣鍵盤程序).pdf

            標簽:矩陣   鍵盤   程序
            相關文章
            留言與評論(共有 0 條評論)
               
            驗證碼:
            Copyright ?2019-2022 Comsenz Inc.Powered by ? 實用文體寫作網旗下知識大全大全欄目是一個全百科類寶庫! 優秀范文|法律文書|專利查詢|
            主站蜘蛛池模板: 国产精品国产精品国产精品| 亚洲成人动漫在线| 亚洲一二三四区中文字幕| 妺妺窝人体色www看美女| 国产无遮挡猛进猛出免费软件| 国产精品熟妇视频国产偷人| 午夜福利国产精品小视频| 国产蜜臀一区二区在线播放| 亚洲欧洲日韩精品在线| 免费无码VA一区二区三区| 亚洲一区二区日韩综合久久 | 国产精品视频一品二区三| 欧美国产日产一区二区| 精品一区二区三区在线成人| 亚洲精品久久婷婷丁香51| 无码人妻精品一区二区三区蜜桃| 国产黄色一区二区三区四区| 粗大猛烈进出高潮视频大全| 浮力影院欧美三级日本三级| 一区二区三区国产不卡| 五月天丁香婷婷亚洲欧洲国产| 国产国产精品人体在线视| 日本不卡不二三区在线看| 亚洲日本VA中文字幕在线| 好男人社区神马在线观看www| 国产95在线 | 欧美| 国产一区二区免费播放| 日本一区二区三区激情视频| 少妇人妻偷人精品免费| 国模肉肉视频一区二区三区| 久久国产成人av蜜臀| 欧美13一14娇小xxxx| 亚洲欧美一区二区三区日产| 日韩人妻无码精品系列| 在线看av一区二区三区| 亚洲精品综合久久国产二区| 国产在热线精品视频| 一区二区三区成人| 福利视频一区二区在线| 国产综合视频一区二区三区| 九色综合国产一区二区三区|