PIC單片機(jī)人機(jī)接口模塊4×4行列式鍵盤(pán)的程序設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
程序的主流程如圖1所示?! D1 程序的主流程 程序主要分為兩個(gè)部分:一個(gè)部分不停地監(jiān)測(cè)是否有按鍵按下,另一個(gè)部分查看哪一個(gè)鍵按下?! ≡诔跏紶顟B(tài)下,4個(gè)列輸出端口輸出低電平,即rd0~rd3輸出低電平,然后持續(xù)監(jiān)測(cè)4個(gè)行輸入端口rd4~rd7的狀態(tài)是不是高電平?! ∪绻麤](méi)有按鍵按下,則rd4~rd7的狀態(tài)是高電平;如果有按鍵按下,則被按下的鍵對(duì)應(yīng)的行輸入端口的電平就會(huì)被拉低,rd4~rd7會(huì)有低電平出現(xiàn),對(duì)4個(gè)行輸入端口rd4~rd7的電平的監(jiān)測(cè)即為對(duì)按鍵的監(jiān)測(cè)?! ≡?個(gè)行輸入端口rd4~rd7上出現(xiàn)低電平時(shí),就轉(zhuǎn)到查詢程序see。鍵盤(pán)掃描子程序流程如圖2所示,按鍵查詢子程序流程如圖3所示?! D2 鍵盤(pán)掃描子程序流程 圖3 按鍵查詢子程序流程 查詢程序see分以下5個(gè)步驟?! ?在4個(gè)列輸出端口rd0~rd3上輸出,判斷哪一個(gè)端口輸入低電平。 · 在4個(gè)列輸出端口rd0~rd3上輸出0111,查看4個(gè)行輸入端口rd4~rd7是否有低電平出現(xiàn);如果有低電平出現(xiàn),則可以確定哪個(gè)鍵按下,跳出查詢程序:否則進(jìn)入下一項(xiàng)?! ?在4個(gè)列輸出端口rd0~rd3上輸出1011,查看4個(gè)行輸入端口rd4~rd7是否有低電平出現(xiàn);如果有低電平出現(xiàn),可以確定哪個(gè)鍵按下,并跳出查詢程序;否則進(jìn)入下一項(xiàng)?! ?在4個(gè)列輸出端口rd0~rd3上輸出1101,查看4個(gè)行輸入端口rd4~rd7是否有低電平出現(xiàn);如果有低電平出現(xiàn),可以確定哪個(gè)鍵按下,跳出查詢程序;否則進(jìn)入下一頊?! ?在4個(gè)列輸出端口rd0~rd3上輸出1110,查看4個(gè)行輸入端口rd4~rd7是否有低電平出現(xiàn);如果有低電平出現(xiàn),可以確定哪個(gè)鍵按下,跳出查詢程序;否則進(jìn)入下一項(xiàng)?! 〕绦蚯鍐稳缦?。 ?。?)主程序。 完成初始化,對(duì)4×4的鍵盤(pán)輸入進(jìn)行掃描,然后將其輸入通過(guò)端口d的低4位輸出,顯示時(shí)先閃兩下再輸出?! 。?)鍵盤(pán)掃描子程序?! est為出口參數(shù),若有鍵按下則子程序返回時(shí)test=0ffh,若沒(méi)有鍵按下,則子程序返回時(shí)test=0。 ?。?)按鍵查詢子程序?! ‘?dāng)有按鍵按下時(shí),運(yùn)行該程序。value中存放被按下的按鍵的鍵值,s0~515的鍵值為0~15?! 。?)延時(shí)自程序。 count1存放外部循環(huán)次數(shù),count2存放內(nèi)部循環(huán)次數(shù)?! g迎轉(zhuǎn)載,信息來(lái)源維庫(kù)電子市場(chǎng)網(wǎng)()