前一段時間,看到實驗室有個學弟設計了一個電路,其中還有一個鍵盤電路,取其原理是這樣子的:
據(jù)這位師弟的意思是:在沒有按下按鍵的時候,端口上是低電平,按下按鍵的時候端口上接上了高電平.
事實上,電路是不工作的.
問題比較多:
首先,將電源直接接到端口上是絕對不可以的.當按下按鍵的時候,會有很大的電流進入單片機.在工程上,這種往往應該加限流電阻的.一般選擇1K的就可以.如果選擇太大的電阻也不好,因為電阻上面壓降太大,造成輸入比應有的高電平低,造成錯誤.
其次,就算加了限流,這個電路也是不能工作的.檢查AT89C51的DataSheet就會發(fā)現(xiàn).技術手冊中說:P0口是沒有上拉電阻的端口;P1,P2,P3口帶有上拉電阻.問題就出在這里,什么是上拉電阻,來看看圖:
上面這個圖,是紅外線接收的電路圖,看上面的這個電阻,就是上拉電阻.我們可以試圖理解一下51單片機P2口的這個上拉電阻為這種形式:
其中的R就是上拉電阻.如果像我的那個師弟那樣設計電路,電路就成了以下這種形式了:
看,從這個電路上,我們可以清晰的看出,不管你按鍵是否按下,IO端口上都是高電平.問題就在這里,我讓我的這個師弟測測IO端口的電平在按下按鍵前后的變化,結(jié)果果然不出所料:不管他是否按下按鍵,都是高電平!!
從這里我們可以看出:DataSheet還是有用的,在設計的時候,有很多細節(jié),需要注意,否則,可能功虧一簣.