欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索

行列掃描法,反轉法,狀態機法三種矩陣鍵盤掃描方法詳解 帶程序

查看數: 31532 | 評論數: 16 | 收藏 16
關燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請稍候......
發布時間: 2017-3-13 01:50

正文摘要:

實現矩陣鍵盤掃描的三種方法(代碼見附件): 1.行列掃描法 2.反轉法 3.狀態機法(結合定時器中斷) 第一種和第二種方法的本質都是進行循環查詢,大量占用MCU的時間,效率比較低。初學者一般會學這兩種 第三種 ...

回復

ID:658887 發表于 2019-12-8 15:50
感謝分享
ID:644656 發表于 2019-11-18 21:52
哇,感謝樓主的分享,給我們這些小白提供了學習的資料
ID:207882 發表于 2019-7-14 17:20
寫得挺好的,點贊,,我下載了你的狀態機程序,,為了省點黑幣,其他兩個我就沒下載了,,我看了后自己有些看法,,如果我同一行一個按鍵壓死,,然后我在同一行按下另一個按鍵呢????還有主函數10Ms檢測一次,,為什么數碼管顯示也放在這個里面???上電數碼管亮我覺得不是上面6#說的,                           readkey=Keyscan();
Display(readkey);
上電按鍵沒按的換Keyscan()返回的應該是0吧,,display(0)對應你的數組不就是全亮???,我覺得應該是這樣,試試把數組的全滅數據也就是0x00,放在第一個,,剩下的就按你的按鍵去排顯示的數據就好了
ID:558624 發表于 2019-7-13 22:00
感謝樓主
ID:413383 發表于 2019-6-10 00:03
多謝樓主了
ID:380988 發表于 2018-12-2 14:45
感謝樓主分享,學習一下
ID:430148 發表于 2018-11-20 20:07
學習一下
ID:286251 發表于 2018-5-26 15:32
很有用。非常感謝分享
ID:203654 發表于 2018-5-24 10:46
感謝樓主分享,學習一下
ID:168002 發表于 2018-3-7 13:33
之前都是用反轉法,現在試試狀態機
ID:213328 發表于 2017-7-24 14:24
目前用的反轉,出了些問題,剛好學習學習
多謝樓主了
ID:184846 發表于 2017-4-19 09:11
下載看了狀態機,覺得上電數碼管亮,好像是初始化顯示函數Display_init();那里一開始就把位選全打開了,而每10Ms產生一次中斷,主函數中一開始readkey=0xff;然后if(flag){flag=0;readkey=Keyscan();Display(readkey);一開始10ms就顯示0XFF,覺得這個位選應該在按鍵松手才打開,修改如下
void Display_init()
{
        P1=0xFF;                 //將所有的位選關閉,所有數碼管不亮,
        wela=1;
        wela=0;
        P1=0x00;           //將段選關閉,也就是剛開始的時候數碼管都不亮
        dula=1;
        dula=0;
}
void Display(uchar num1)
{
        wela=1;
        P1=0x00;                 //將所有的位選打開,所有數碼管同時亮,
        wela=0;
        dula=1;
        P1=smg_duan[num1];
        dula=0;       
}

評分

參與人數 1黑幣 +100 收起 理由
admin + 100 回帖助人的獎勵!

查看全部評分

ID:184846 發表于 2017-4-19 08:31
哦,我看的是狀態機那個。
下載看了,覺得上電數碼管亮,好像是初始化顯示函數Display_init();那里一開始就把位選全打開了,而每10Ms產生一次中斷,主函數中一開始readkey=0xff;然后if(flag){flag=0;readkey=Keyscan();Display(readkey);一開始10ms就顯示0XFF,覺得這個位選應該在按鍵松手才打開,修改如下
void Display_init()
{
        P1=0xFF;                 //將所有的位選關閉,所有數碼管不亮,
        wela=1;
        wela=0;
        P1=0x00;           //將段選關閉,也就是剛開始的時候數碼管都不亮
        dula=1;
        dula=0;
}
void Display(uchar num1)
{
        wela=1;
        P1=0x00;                 //將所有的位選打開,所有數碼管同時亮,
        wela=0;
        dula=1;
        P1=smg_duan[num1];
        dula=0;       
}
ID:184846 發表于 2017-4-19 08:30
下載看了,覺得上電數碼管亮,好像是初始化顯示函數Display_init();那里一開始就把位選全打開了,而每10Ms產生一次中斷,主函數中一開始readkey=0xff;然后if(flag){flag=0;readkey=Keyscan();Display(readkey);一開始10ms就顯示0XFF,覺得這個位選應該在按鍵松手才打開,修改如下
void Display_init()
{
        P1=0xFF;                 //將所有的位選關閉,所有數碼管不亮,
        wela=1;
        wela=0;
        P1=0x00;           //將段選關閉,也就是剛開始的時候數碼管都不亮
        dula=1;
        dula=0;
}
void Display(uchar num1)
{
        wela=1;
        P1=0x00;                 //將所有的位選打開,所有數碼管同時亮,
        wela=0;
        dula=1;
        P1=smg_duan[num1];
        dula=0;       
}
ID:184846 發表于 2017-4-15 17:14
就是沒有金幣了
ID:135835 發表于 2017-3-13 16:45
在劉平老師的《深入淺出玩轉51單片機》里學習過狀態機法,看得不是太懂。謝樓主分享了。

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表