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