電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>嵌入式開發(fā)>單片機小白學(xué)步(23) IO口原理知識補充:雙向IO口、互補推挽、高阻態(tài)資料下載

單片機小白學(xué)步(23) IO口原理知識補充:雙向IO口、互補推挽、高阻態(tài)資料下載

2021-04-19 | pdf | 150.93KB | 次下載 | 3積分

資料介紹

由于之前考慮不周,本篇在IO口原理知識的基礎(chǔ)上,進一步補充一些知識。 雙向IO口的輸出:互補推挽 在51單片機的P0口工作在普通IO口模式下,為準(zhǔn)雙向IO口。而工作在第二功能狀態(tài)下時,則為標(biāo)準(zhǔn)的雙向IO口。由于雙向IO口的輸出,要求能輸出高低電平,通常會采用互補推挽電路。 在第二功能狀態(tài)下,51單片機P0口采用的是互補推挽的輸出方式。何為互補推挽呢?下面是它的等效電路圖。 當(dāng)P0第二功能作為輸出時,K1和K2兩個開關(guān)輪流打開。K2閉合K1打開,就會輸出高電平,并且其驅(qū)動能力很大,因為電子開關(guān)的阻值?。ú幌裆侠?a target='_blank' class='arckwlink_none'>電阻的值那么大)。反之K2打開,K1閉合,就會輸出低電平。 兩個開關(guān)交替導(dǎo)通,互為補充,“挽”是“拉”的意思,兩個電子開關(guān)分別負(fù)責(zé)在IO口輸出處“推”和“拉”電流,所以稱為互補推挽。 這種IO口結(jié)構(gòu)的優(yōu)點很明顯,驅(qū)動能力強,穩(wěn)定可靠。缺點在于實現(xiàn)起來比較困難。在切換輸出電平的過程中,例如從低電平切換到高電平,當(dāng)K1斷開時,要求盡可能快的輸出高電平,也就是K2應(yīng)該立即閉合;同時,如果K1還沒斷開,K2就提前閉合了,相同于兩個開關(guān)同時導(dǎo)通,會直接短路,后果又會很嚴(yán)重。所以需要用電路控制好兩個開關(guān)的協(xié)調(diào)工作。 雙向IO口的輸入:高阻態(tài)、輸入電阻 雙向IO口的輸出,只要求能輸出高低電平,因此并不是必須采用互補推挽電路。而采用互補推挽電路的好處在于,這種電路同時又可以實現(xiàn)高阻態(tài)的輸入,從而實現(xiàn)標(biāo)準(zhǔn)雙向IO口。 當(dāng)圖中的K1和K2同時斷開時,IO口就可以工作在高阻態(tài)的輸入狀態(tài)下。高阻態(tài)到底是什么樣的一個概念呢? 當(dāng)IO口處于高阻態(tài)時,也將其稱為浮空輸入狀態(tài),其電平是懸浮不定的,既不是高電平也不是低電平。我們可以想象單片機在檢測IO口的電平高低時,相當(dāng)于在CPU里面有一個類似電壓表的東西,并且這個電壓表內(nèi)阻很大,例如圖中給出的100MΩ。在這里,我們可以把這個電壓表的內(nèi)阻稱為P0.0口此時的輸入電阻(也可以近似認(rèn)為是輸出阻抗,電阻是對直流電而言,而阻抗是對交流電來說的。這是模擬電路的知識,這里不做細(xì)說)。 現(xiàn)在試想,如果我不小心用手碰到了P0.0端口,而由于人體本身就是阻值很大的導(dǎo)體,周圍有很多電磁波干擾,手上可能存在一些很微弱的電流,這個時候,電壓表的讀數(shù)就會發(fā)生變化,單片機讀取的電平高低就會變。高阻態(tài)表現(xiàn)出來的結(jié)果就是外界很小的干擾,都可能導(dǎo)致讀取的電平變化,甚至即使沒有碰這個IO口,它每次讀取的結(jié)果也可能不一樣,因為外界的電磁波等可能會干擾到IO口。稍后我們會利用51單片機做個實驗,來體驗P0口的高阻態(tài)。 高阻態(tài)的意義、輸出電阻 為什么雙向IO口輸入的時候要求是高阻態(tài)呢? 我們假設(shè)有一種裝置,等效電路如下圖。開關(guān)上下切換,它就會輸出高低電平,通過電壓表可以檢測出來。但是其驅(qū)動能力很弱,連LED也驅(qū)動不了。裝置里的100kΩ,可以叫做裝置的輸出電阻(同樣也可以近似認(rèn)為是輸出阻抗)。 讓這個裝置輸出低電平,然后連接51單片機的P1.0口。這時,VCC經(jīng)過10kΩ上拉電阻到達IO口,再到裝置內(nèi)部的100kΩ電阻,通過開關(guān)K接到GND。根據(jù)分壓原理,P1.0上的電壓值大概是4.55V,于是單片機讀取的是高電平。而事實是,裝置想輸出低電平告知51單片機。這里單片機管腳作為輸入功能,卻干擾了外界裝置的輸出值,相當(dāng)于單片機的這個IO口也在輸出。 當(dāng)單片機的P0口工作在第二功能的輸入狀態(tài),或者工作在普通IO口的輸入狀態(tài),且沒有外界上下拉電阻,內(nèi)部的兩個電子開關(guān)都是斷開的,對外部呈現(xiàn)高阻態(tài)。從圖中可以看出,裝置輸出的電平能被準(zhǔn)確的讀取到單片機中。之所以能準(zhǔn)確讀取,就是因為裝置輸出電阻比單片機IO口的輸入電阻要小。 有人可能會說,如果把裝置中的電阻換成1000MΩ,這個時候這個單片機又不能準(zhǔn)確讀取電平了。但是一般情況下,我們不需要考慮這么極端。如果是理想的高阻態(tài),其輸入阻抗應(yīng)該是無窮大,而這有點像超導(dǎo)體一樣比較特殊。一般情況下認(rèn)為導(dǎo)線電阻幾乎為0,同樣也認(rèn)為高阻態(tài)輸入電阻是無窮大。 總的來說,就是高阻態(tài)情況下,IO口輸入電阻很大,而不容易干擾那些輸出電阻較大、驅(qū)動能力弱的裝置輸出到IO口上的電平。 用51單片機體驗高阻態(tài) 編寫程序如下: #include reg52.h sbit TOUCH = P0^0; sbit LED = P1^0; void main() { TOUCH = 1; while(1) { LED = TOUCH; } } 電路方面,LED接在P1.0端口,仍然是采用灌電流的方式,低電平有效。P0.0什么都不要接。特別注意,這個實驗必須在P0.0什么都沒接的情況下才能進行。很多成品開發(fā)板上,P0.0都連接了外部上拉電阻,沒法做這個實驗,建議自己搭建面包板。 程序燒寫好之后,理論上來說,TOUCH管腳作為高阻態(tài)輸入,電平是不確定的,因此LED的亮滅也是不定的。我在實際實驗時,P0.0懸空的情況下,LED是一直點亮的,這可能是因為51單片機的高阻態(tài)和理想的高阻態(tài)還有一點差距,讀取P0.0的電平為低。 當(dāng)把手指或很大的電阻放在P0.0和VCC之間,就會發(fā)現(xiàn)LED熄滅了,或者變暗了(變暗了說明LED在閃爍,只是閃爍的很快所以看不出來,就像交流電驅(qū)動的白熾燈一樣)。手指的電阻很大,如果是P1.0口,或者在P0.0上外接了上拉或下拉電阻,這時通過手指很難改變其電平狀態(tài)。而由于是高阻態(tài),所以P0.0原先的低電平,通過手指從VCC傳過來的很微弱的電流就變成了高電平。 備注1:考慮到不同人的皮膚電阻不一樣,不能保證用手指接觸都能實現(xiàn)LED亮滅變化。如果沒有效果,可以嘗試用較大電阻(例如100kΩ)代替手指進行實驗。 備注2:如果你通電的時候發(fā)現(xiàn)LED原先是熄滅的,說明P0.0讀取到的是高電平,則應(yīng)該用兩個手指分別放在P0.0和GND上,使得電平變化,LED點亮。當(dāng)然LED不亮還有一種可能是,你的程序沒有被執(zhí)行,可能是單片機最小系統(tǒng)電路出現(xiàn)了問題,或者程序?qū)戝e了。 來源: (mbbeetchina)
下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1TC358743XBG評估板參考手冊
  2. 1.36 MB  |  330次下載  |  免費
  3. 2開關(guān)電源基礎(chǔ)知識
  4. 5.73 MB  |  6次下載  |  免費
  5. 3100W短波放大電路圖
  6. 0.05 MB  |  4次下載  |  3 積分
  7. 4嵌入式linux-聊天程序設(shè)計
  8. 0.60 MB  |  3次下載  |  免費
  9. 5基于FPGA的光纖通信系統(tǒng)的設(shè)計與實現(xiàn)
  10. 0.61 MB  |  2次下載  |  免費
  11. 6基于FPGA的C8051F單片機開發(fā)板設(shè)計
  12. 0.70 MB  |  2次下載  |  免費
  13. 751單片機窗簾控制器仿真程序
  14. 1.93 MB  |  2次下載  |  免費
  15. 8基于51單片機的RGB調(diào)色燈程序仿真
  16. 0.86 MB  |  2次下載  |  免費

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費
  3. 2555集成電路應(yīng)用800例(新編版)
  4. 0.00 MB  |  33564次下載  |  免費
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費
  7. 4開關(guān)電源設(shè)計實例指南
  8. 未知  |  21548次下載  |  免費
  9. 5電氣工程師手冊免費下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費
  11. 6數(shù)字電路基礎(chǔ)pdf(下載)
  12. 未知  |  13750次下載  |  免費
  13. 7電子制作實例集錦 下載
  14. 未知  |  8113次下載  |  免費
  15. 8《LED驅(qū)動電路設(shè)計》 溫德爾著
  16. 0.00 MB  |  6653次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
  4. 78.1 MB  |  537796次下載  |  免費
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420026次下載  |  免費
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費
  11. 6電路仿真軟件multisim 10.0免費下載
  12. 340992  |  191185次下載  |  免費
  13. 7十天學(xué)會AVR單片機與C語言視頻教程 下載
  14. 158M  |  183278次下載  |  免費
  15. 8proe5.0野火版下載(中文版免費下載)
  16. 未知  |  138040次下載  |  免費