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