P0口作為I/O口輸出的時候時,輸出低電平為0 輸出高電平為高組態(并非5V,相當于懸空狀態,也就是說P0 口不能真正的輸出高電平)。給所接的負載提供電流,因此必須接上拉電阻(一電阻連接到VCC),由電源通過這個上拉電阻給負載提供電流。P0作輸入時不需要上拉電阻,但要先置1。因為P0口作一般I/O口時上拉場效應管一直截止,所以如果不置1,下拉場效應管會導通,永遠只能讀到0。因此在輸入前置1,使下拉場效應管截止,端口會處于高阻浮空狀態,才可以正確讀入數據。
由于P0口內部沒有上拉電阻,是開漏的,不管它的驅動能力多大,相當于它是沒有電源的,需要外部的電路提供,絕大多數情況下P0口是必需加上拉電阻的。
1.一般51單片機的P0口在作為地址/數據復用時不接上拉電阻。
2.作為一般的I/O口時用時,由于內部沒有上拉電阻,故要接上上拉電阻!!
3.當p0口用來驅動PNP管子的時候,就不需要上拉電阻,因為此時的低電平有效;
4.當P0口用來驅動NPN管子的時候,就需要上拉電阻的,因為此時只有當P0為1時候,才能夠使后級端導通。 簡單一點說就是它要驅動LCD顯示屏顯示就必須要有電源驅動,否則亮不了,而恰好P0口沒有電源,所以就要外接電源,接上電阻是起到限流的作用;如果接P1、P2、P3端口就不用外接電源和電阻了。
P0口是開漏的,不管它的驅動能力多大,相當于它是沒有電源的,需要外部的電路提供,絕大多數情況下P0口是必需加上拉電阻的;5、51單片機的P0口用作數據和地址總線時不必加上拉電阻。
有些IC的驅動能力并不強,如果P0口作為輸入而加了不必要的上拉,有可能驅動IC無法將其拉回到低電平,從而使輸入失敗!
如果是驅動led,那么用1K左右的就行了。如果希望亮度大一些,電阻可減小,最小不要小于200歐姆,否則電流太大;如果希望亮度小一些,電阻可增大,增加到多少呢,主要看亮度情況,以亮度合適為準,一般來說超過3K以上時,亮度就很弱了,但是對于超高亮度的LED,有時候電阻為10K時覺得亮度還能夠用。通常就用1k的。對于驅動光耦合器,如果是高電位有效,即耦合器輸入端接端口和地之間,那么和LED的情況是一樣的;如果是低電位有效,即耦合器輸入端接端口和VCC之間,那么除了要串接一個1——4.7k之間的電阻以外,同時上拉電阻的阻值就可以用的特別大,用100k——500K之間的都行,當然用10K的也可以,但是考慮到省電問題,沒有必要用那么小的。
對于驅動晶體管,又分為PNP和NPN管兩種情況:對于NPN,毫無疑問NPN管是高電平有效的,因此上拉電阻的阻值用2K——20K之間的,具體的大小還要看晶體管的集電極接的是什么負載,對于LED類負載,由于發管電流很小,因此上拉電阻的阻值可以用20k的,但是對于管子的集電極為繼電器負載時,由于集電極電流大,因此上拉電阻的阻值最好不要大于4.7K,有時候甚至用2K的。對于PNP管,毫無疑問PNP管是低電平有效的,因此上拉電阻的阻值用100K以上的就行了,且管子的基極必須串接一個1——10K的電阻,阻值的大小要看管子集電極的負載是什么,對于LED類負載,由于發光電流很小,因此基極串接的電阻的阻值可以用20k的,但是對于管子的集電極為繼電器負載時,由于集電極電流大,因此基極電阻的阻值最好不要大于4.7K。
對于驅動TTL集成電路,上拉電阻的阻值要用1——10K之間的,有時候電阻太大的話是拉不起來的,因此用的阻值較小。但是對于CMOS集成電路,上拉電阻的阻值就可以用的很大,一般不小于20K,我通常用100K的,實際上對于CMOS電路,上拉電阻的阻值用1M的也是可以的,但是要注意上拉電阻的阻值太大的時候,容易產生干擾,尤其是線路板的線條很長的時候,這種干擾更嚴重,這種情況下上拉電阻不宜過大,一般要小于100K,有時候甚至小于10K。
根據以上分析,上拉電阻的阻值的選取是有很多講究的,不能亂用。
-
電阻
+關注
關注
86文章
5509瀏覽量
171957 -
單片機
+關注
關注
6035文章
44553瀏覽量
634765
原文標題:51單片機P0口什么時候使用上拉電阻?
文章出處:【微信號:wujianying_danpianji,微信公眾號:單片機精講吳鑒鷹】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論