亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码

標題: 有沒有好一點的矩陣鍵盤識別方法? [打印本頁]

作者: yihaibo123    時間: 2019-3-16 21:33
標題: 有沒有好一點的矩陣鍵盤識別方法?
有沒有好一點的矩陣鍵盤識別方法
編碼在60行以內(nèi)的(要用數(shù)碼管來顯示識別)
回答的電子燒友,小弟感激不盡

作者: diy1997    時間: 2019-3-16 23:08
先掃描行,保存掃描結果;

再掃描列,結果與保存的行數(shù)據(jù)合并。
作者: hhh402    時間: 2019-3-17 00:40
假設4x4矩陣按鍵,行為h1,h2,h3,h4;列為L1,L2,L3,L4;按鍵值=a;
代碼:
viod anjian()   //按鍵子函數(shù),每次只能按下1個按鍵。將這個函數(shù)放到10毫秒中斷中執(zhí)行。
{
n=0;//按鍵初值,0為沒有按鍵按下
//掃描第一行
h1=1;h2=0;h3=0;h4=0;
L1=1;L2=1;L3=1;L4=1;
if(L1==0) a=11;//按鍵值=11是指第1行第1列
if(L2==0) a=12;//按鍵值=12是指第1行第2列
if(L3==0) a=13;//按鍵值=13是指第1行第3列
if(L4==0) a=14;//按鍵值=14是指第1行第4列
//掃描第2行
h1=0;h2=1;
if(L1==0) a=21;//按鍵值=21是指第2行第1列
if(L2==0) a=22;//按鍵值=22是指第2行第2列
if(L3==0) a=23;//按鍵值=23是指第2行第3列
if(L4==0) a=14;//按鍵值=24是指第2行第4列
//掃描第3行
h2=0;h3=1;
if(L1==0) a=31;
if(L2==0) a=32;
if(L3==0) a=33;
if(L4==0) a=34;
//掃描第4行
h3=0;h4=1;
if(L1==0) a=41;
if(L2==0) a=42;
if(L3==0) a=43;
if(L4==0) a=44;
}
作者: wulin    時間: 2019-3-17 06:55
這是最簡練的4*4矩陣鍵盤+兩位數(shù)碼管顯示程序+仿真
最簡矩陣鍵盤+仿真.zip (108.91 KB, 下載次數(shù): 53)


作者: static    時間: 2019-3-17 08:02
用數(shù)組與結構體合作可以完成這個事
作者: HC6800-ES-V2.0    時間: 2019-3-17 09:40
這個不錯:
void KeyDown(void)
{
        char a=0;
        GPIO_KEY=0x0f;
        if(GPIO_KEY!=0x0f)//讀取按鍵是否按下
        {
                Delay10ms();//延時10ms進行消抖
                if(GPIO_KEY!=0x0f)//再次檢測鍵盤是否按下
                {
                       
                        //測試列
                        GPIO_KEY=0X0F;
                        switch(GPIO_KEY)
                        {
                                case(0X07):        KeyValue=0;break;
                                case(0X0b):        KeyValue=1;break;
                                case(0X0d): KeyValue=2;break;
                                case(0X0e):        KeyValue=3;break;
                        }
                        //測試行
                        GPIO_KEY=0XF0;
                        switch(GPIO_KEY)
                        {
                                case(0X70):        KeyValue=KeyValue;break;
                                case(0Xb0):        KeyValue=KeyValue+4;break;
                                case(0Xd0): KeyValue=KeyValue+8;break;
                                case(0Xe0):        KeyValue=KeyValue+12;break;
                        }
                        while((a<50)&&(GPIO_KEY!=0xf0))         //檢測按鍵松手檢測
                        {
                                Delay10ms();
                                a++;
                        }
                }
        }
}
作者: shuisheng60    時間: 2019-3-17 10:18
wulin 發(fā)表于 2019-3-17 06:55
這是最簡練的4*4矩陣鍵盤+兩位數(shù)碼管顯示程序+仿真

很好!這個很不錯!謝謝分享!
作者: hhh402    時間: 2019-3-17 10:38
6#的程序是可以實現(xiàn)的,都是實際應用中是不可以這樣做的,單片機程序一定要學會使用分時執(zhí)行,中斷執(zhí)行,單片機留給按鍵掃描、數(shù)碼管顯示的時間是很少的,大部分時間是留給主程序的。所以要慎用延時程序和死循環(huán)等待程序;如果要用到下面這兩個程序的話只能是入門水平,離實用還有一定的距離。
Delay10ms();//延時10ms進行消抖;
while((a<50)&&(GPIO_KEY!=0xf0))         //檢測按鍵松手檢測
實際應用程序一定要學會時間的分配,各個程序要花費多少時間來執(zhí)行時首先要考慮的問題,需要時間多的程序放在主程序中,需要定時掃描的程序放在中斷中執(zhí)行,中斷中的程序是由嚴格時間要求的,一般都是微秒級的,如果大于1毫秒很容易出現(xiàn)問題。
作者: yyyyjj    時間: 2019-3-17 20:34
可以查看單片機的書籍,里面有詳細介紹




歡迎光臨 (http://www.denmoz.com/bbs/) Powered by Discuz! X3.1