51单片机(STC89C52RC) IO扩展实验
最近碰到了需要擴展IO口的情況了,正在想辦法從lcd1602身上擠出幾個IO口,另一種可行的方法是添加專用IC,google之發現可以有更好的方法,網上流傳經典IO接按鍵法,可以用5個IO口實現5X5矩陣鍵盤.參考這里:
我參照著實驗了一番,并用protues仿真看看;用上面的例子,如圖:
原理還是采用的是查詢的方法進行掃描的,請看其描述:
用3個IO口作行掃描,2個IO作列檢測(為方便描述,我們約定:設置某一IO口輸出為“0”――稱其 為“掃某IO口”)。用行線輸出掃鍵碼,列線檢測是否有按鍵的查詢方法進行掃鍵。掃鍵流程:在行線依次輸出011,101,110掃鍵值,行線每輸出一個 掃鍵值,列線檢測一次。當列線檢測到有按鍵時,結合輸出的掃鍵值可以判斷相應的按鍵。
仿真的時候用atmel89c51單片機,選取P1口的0-4,就是不通過,當列作為輸入狀態(為1時),某IO置0時,接通交叉的按鈕,列卻沒有變化,依舊為高電平.什么原因呢?百思不得其解,用一個小實驗,將按鈕接行的一端直接接到地,則列狀態改變,那么也就是這個上拉電阻的問題咯, 突然想到,P1口內是已經內置了上拉電阻的,能夠實際輸出高電平,那么再接一個上拉電阻就是白搭了,于是去掉上拉電阻部分,功能正常.為再次驗證,將端口接到P0口的0-4,電路依舊按照上圖所示,功能正常,驗證正確.
經典接按鈕一文中并沒有提及是在什么單片機中實現的,只是提供了一個原理,實際當中需要注意IO口的上拉電阻問題,不過這個原理確實是蠻經典的,設計不錯.
轉載于:https://www.cnblogs.com/xiaoxia/archive/2011/05/24/2055332.html
總結
以上是生活随笔為你收集整理的51单片机(STC89C52RC) IO扩展实验的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java - 为什么要使用接口编程【转】
- 下一篇: Javascript右键菜单类