第16節(jié):矩陣鍵盤(pán)的組合按鍵觸發(fā)
從業(yè)將近十年!手把手教你單片機(jī)程序框架 第16講:
開(kāi)場(chǎng)白:
上一節(jié)講了矩陣鍵盤(pán)單個(gè)觸發(fā)的壓縮代碼編程。這節(jié)講矩陣鍵盤(pán)的組合按鍵觸發(fā)。要教會(huì)大家三個(gè)知識(shí)點(diǎn):
第一點(diǎn):如何把矩陣鍵盤(pán)翻譯成獨(dú)立按盤(pán)的處理方式。然后按獨(dú)立按鍵的方式來(lái)實(shí)現(xiàn)組合按鍵的功能。
第二點(diǎn):要提醒大家在設(shè)計(jì)矩陣鍵盤(pán)時(shí),很容易犯的一個(gè)錯(cuò)誤。任意兩個(gè)組合按鍵不能處于同一行,否則觸發(fā)性能大打折扣。在做產(chǎn)品的時(shí)候,硬件電路設(shè)計(jì)中,除了四路行輸入的要加上拉電阻,四路列輸出也應(yīng)該串入一個(gè)470歐左右的限流電阻,否則當(dāng)同一行的兩個(gè)按鍵同時(shí)按下時(shí),很容易燒壞單片機(jī)IO口。為什么?大家仔細(xì)想想原因。因?yàn)槿绻麤](méi)有限流電阻,同一行的兩個(gè)按鍵同時(shí)按下時(shí),在某一瞬間,輸出的兩路高低電平將會(huì)直接短接在一起,引起短路。在朱兆祺的學(xué)習(xí)板中,S1至S4是同一行,S5至S8是同一行,S9至S12是同一行,S13至S16是同一行。
第三點(diǎn):在鴻哥矩陣鍵盤(pán)的組合按鍵處理程序中,組合按鍵的去抖動(dòng)延時(shí)const_key_time_comb千萬(wàn)不能等于單擊按鍵的去抖動(dòng)延時(shí)const_key_time,否則組合按鍵會(huì)覆蓋單擊按鍵的觸發(fā)。
具體內(nèi)容,請(qǐng)看源代碼講解。
(1)硬件平臺(tái):基于朱兆祺51單片機(jī)學(xué)習(xí)板。
(2)實(shí)現(xiàn)功能:16個(gè)按鍵中,每按一個(gè)按鍵都能觸發(fā)一次蜂鳴器發(fā)出“滴”的一聲。在同時(shí)按下S1和S16按鍵時(shí),將會(huì)點(diǎn)亮一個(gè)LED燈。在同時(shí)按下S4和S13按鍵時(shí),將會(huì)熄滅一個(gè)LED燈。
(3)源代碼講解如下:
總結(jié)陳詞:
這節(jié)講了如何把矩陣鍵盤(pán)翻譯成獨(dú)立按鍵的處理方式,然后像獨(dú)立按鍵一樣實(shí)現(xiàn)組合按鍵的功能,關(guān)于矩陣按鍵的雙擊,長(zhǎng)按和短按,按鍵連續(xù)觸發(fā)等功能我不再詳細(xì)介紹,有興趣的朋友可以參考我前面章節(jié)講的獨(dú)立按鍵。在實(shí)際的項(xiàng)目中,按鍵可以控制很多外設(shè)。為了以后進(jìn)一步講按鍵控制外設(shè)等功能,接下來(lái)我會(huì)講哪些新內(nèi)容呢?欲知詳情,請(qǐng)聽(tīng)下回分解-----兩片聯(lián)級(jí)74HC595驅(qū)動(dòng)16個(gè)LED燈的基本驅(qū)動(dòng)程序。