用51單片機(jī)的Pl口實(shí)現(xiàn)獨(dú)立的鍵盤控制
獨(dú)立式按鍵就是各按鍵相互獨(dú)立,每個(gè)按鍵單獨(dú)占用一根I/O口線,每根I/O口線的按鍵工作狀態(tài)不會(huì)影響其他I/O口線上的工作狀態(tài)。因此,通過(guò)檢測(cè)輸入線的電平狀態(tài)可以很容易判斷哪個(gè)按鍵被按下了。
獨(dú)立式按鍵的優(yōu)點(diǎn)是電路配置靈活,軟件結(jié)構(gòu)簡(jiǎn)單,并且能同時(shí)檢測(cè)到多個(gè)鍵被按下的情況。但缺點(diǎn)是每個(gè)按鍵需占用一根I/O口線,在按鍵數(shù)量較多時(shí),I/O口浪費(fèi)大,電路結(jié)構(gòu)復(fù)雜。因此,此鍵盤常用于按鍵較少的系統(tǒng)或操作速度較高的場(chǎng)合。
計(jì)本電路由上拉電阻和按鍵組成,對(duì)于每路鍵盤來(lái)講,當(dāng)鍵沒(méi)有按下時(shí),單片機(jī)相應(yīng)引腳上的電平為低電平,當(dāng)鍵按下時(shí),單片機(jī)相應(yīng)引腳上的電平為高電平,詳細(xì)電路如下圖所示。
程序設(shè)計(jì)
程序中采用輪詢的方式,不斷地掃描Pl口各個(gè)引腳的電平,根據(jù)引腳電平的高低判斷是否有鍵按下。該程序中采用延時(shí)法消除鍵盤抖動(dòng)問(wèn)題。以下是完整的程序:
當(dāng)系統(tǒng)需要的按鍵數(shù)量不多時(shí),獨(dú)立式按鍵不失為一種簡(jiǎn)單可行的解決方案。但需要較多按鍵時(shí),該方案占用IO資源太多。在本實(shí)例中,采用順序檢測(cè)的方法實(shí)現(xiàn)各個(gè)按鍵的檢測(cè),并調(diào)用相應(yīng)的按鍵處理程序,如果按鍵處理程序運(yùn)行時(shí)間較長(zhǎng),有可能無(wú)法及時(shí)響應(yīng)用戶的按鍵動(dòng)作,導(dǎo)致出現(xiàn)“按鍵失靈“現(xiàn)象。在使用中,要注意每個(gè)按鍵處理程序的運(yùn)行時(shí)間,盡量避免出現(xiàn)“按鍵失靈“現(xiàn)象。





