電子發(fā)燒友App

硬聲App

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

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示
創(chuàng)作
電子發(fā)燒友網>電子資料下載>嵌入式開發(fā)>小白學單片機(20) IO口原理講解資料下載

小白學單片機(20) IO口原理講解資料下載

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

資料介紹

IO口操作是單片機實踐中最基本最重要的一個知識,本篇花了比較長的篇幅介紹IO口的原理。也是查閱了不少資料,確保內容正確無誤,花了很長時間寫的。IO口原理原本需要涉及很多深入的知識,而這里盡最大可能做了簡化方便理解。這樣對于以后解決各種IO口相關的問題會有很大的幫助。 IO口等效模型是本人獨創(chuàng)的方法,通過此模型,能有效的降低對IO口內部結構理解的難度。并且經查閱資料確認,這種模型和實際工作原理基本一致。 前面說了很多東西,不少人或許已經迫不及待的想要實際操作單片機了。IO口作為單片機與外界通信最主要的手段,是單片機學習最基本也最重要的一個知識。前面我們編程實現(xiàn)了IO口點亮LED的實驗,本篇繼續(xù)對IO口相關知識進行介紹。 為了更好的學習IO口操作,有必要了解一下IO口的內部結構和相關概念。這些知識對于后續(xù)的學習很有幫助,重點是理解,完全不需要刻意去記。不記得就回來再看看就行了,用得多了自然就記住了。 官方資料(最權威準確) 我們說過,要了解一個芯片,最準確有效的方法,是查看官方給出的芯片手冊等資料。但是初學單片機,直接看芯片手冊資料恐怕很難弄明白,尤其是看到一堆英文、陌生的電路、名詞術語,如果是我,一定也會抓狂的。但是這里我還是給出一張從Atmel官方的《Atmel 8051 Microcontrollers Hardware Manual》中截取的圖片。 給出這張圖片并不是為了打擊大家學習熱情,而是希望大家能明白,我們所見過的各種單片機資料到底是怎么來的,到底是否準確,這一切都可以通過官方資料弄清楚,對于大家以后深入學習一些東西有一定的幫助。 第二功能簡介 上圖正是官方給出的權威的51單片機IO口結構圖??梢钥闯?,單片機的四組IO口內部結構各不相同,原因是有些IO口有第二功能,入門篇里面提到過。 還記得這張管腳圖嗎?括號中標注的就是IO口的第二功能名稱。除了P1以外,每個接口都有第二功能。介紹單片機系統(tǒng)模塊時,我提到51單片機有預留擴展存儲器的接口,正是圖中的P0和P1的第二功能(同時還要用到29、30等管腳)。因為用的不多,涉及知識也比較深入,就不做具體研究了。順便一提,其實這里我們看到的AD0~AD7,就是用于并行口的。而P3口的第二功能,就包括串口等,后面學到了還會具體介紹。 IO口等效電路 由于深入理解IO口的原理涉及到很多電路甚至微機原理相關知識,這里只做簡化介紹,能滿足絕大多數(shù)情況下的需要。作為普通IO口使用時,四個IO口的工作原理基本一致。 下面的圖是從前面圖中的P1電路中裁剪出來的,也是我們需要理解的關鍵。 右邊的P1.X表示P1的一個IO口,如P1.0;電阻右邊寫的英文是內部上拉電阻的意思,之所以叫上拉電阻,是因為電阻的一端接在VCC上。下面的三角形表示接地,相當于GND。除此之外,最關鍵的一個器件是下面這個。 這個器件的本質是晶體管,起到電子開關的作用(如果想深入了解,可以學習模擬電路相關的知識,或者等到原理篇中介紹)。上面的電路可以大致等效成下圖。注意,這樣的結構只是一個IO口,整個單片機中有32個這種結構。 圖中的R為阻值10k的上拉電阻,S是由前面的晶體管等效的電子開關。藍色框中的部分在單片機內部。 S的開關狀態(tài)由CPU控制。當用程序設置P1.0管腳為低電平時,電子開關S閉合。實際上電子開關S閉合時,兩端還有很小的電阻。根據(jù)分壓原理,P1.0上會有一個很低的電壓,近似0V,已經可以視為低電平了。當設置管腳為高電平時S斷開,P1.0通過10k上拉電阻接到VCC上。如果用電壓表測量,因為電壓表內阻很大,所以可以得出其電壓值為高電平。 IO口的輸出:點亮LED 前面介紹了點亮第一個LED的程序和電路。程序如下: #include sbit LED = P1^0; void main() { LED = 0; while(1); } 電路關鍵部分如下,VCC通過1k電阻連接到LED正極,LED負極接到P1.0口: 在單片機執(zhí)行LED=0的時候,電子開關S就由CPU控制而閉合,P1.0上輸出低電平。電流通過1k電阻和LED流入P1.0,再經過S流入GND,LED兩端有合適的電壓于是點亮。結合單片機內部IO口等效電路,整個電路如下圖 灌電流與拉電流 在上面的例子中,P1.0輸出低電平點亮LED。能不能反過來,P1.0輸出高電平點亮LED呢?我們可以考慮電路連接成下面這樣,并在程序中編寫LED=1。 當執(zhí)行LED=1時,S斷開。電流通過10k上拉電阻R從P1.0流出,并進入LED。由于上拉電阻的阻值太大,電流太小,導致LED不亮,或者亮度很微弱。所以通常不采用這種方法。 這兩種方法,前者電流從外部流入單片機內部,我們稱之為灌電流接法;后者電流方向相反,稱為拉電流接法。對比可以看出,對于51單片機,灌電流接法電流較大,拉電流接法由于受到上拉電阻限制,電流較小。 在實際當中灌電流的最大電流也是有限的,因為電子開關S中能通過的電流有限。根據(jù)STC官方的芯片手冊,對于STC單片機,建議單個IO口灌電流建議不超過20mA,所有IO口灌電流之和不超過55mA,否則容易燒壞IO口。而拉電流大小只有230uA左右。 上拉電阻/下拉電阻/高阻態(tài) 拉電流是從上拉電阻流出來的,能否提高拉電流大小呢?答案是可以。我們只需要在單片機外部再添加一個上拉電阻,就可以增大拉電流,并且能成功點亮LED,如下圖所示。 圖中的電路,相當于R和R0并聯(lián)了,整個上拉電阻的阻值減小了。但是這樣做有個缺陷。在這個電路中,當單片機輸出低電平時,S閉合,此時電流從VCC通過上拉電阻和S流入GND。此時雖然LED熄滅了,但是卻有較大電流通過上拉電阻而浪費掉。所以上拉電阻過大,會導致驅動力不足,而上拉電阻過小,又會在輸出低電平時浪費電能。 上拉電阻的作用是什么呢?對電路了解多一點的人很快能發(fā)現(xiàn),如果沒有上拉電阻,IO口就無法輸出高電平,也就是下圖這樣的。開關閉合時能輸出低電平,但是開關斷開時,P1.0就懸空了,什么也沒連接。這時IO口的電壓就是不確定的了,這種狀態(tài)無法判斷它是低電平還是高電平,叫做高阻態(tài)。很巧的是,單片機的P0口確實就沒有上拉電阻,而其他三組IO口都有上拉電阻。所以當P0輸出高電平,并且沒有外接上拉電阻時,就是高阻態(tài),不能正常輸出高電平。后面我會通過具體例子來讓大家感受一下高阻態(tài)。 備注1:后續(xù)文章會詳細分析高阻態(tài)。 備注2:雖然P1.0似乎是同時連接到CPU的IO輸入端了,即圖中寫著“輸入”的綠色箭頭,但是這部分電路只有在讀取管腳輸入的時候才會導通,并且是單向的,可以想象成內阻較大的電壓表輸入端。 備注3:如圖中所示,51單片機IO口工作在普通IO口狀態(tài)下,電子開關是用晶體管實現(xiàn)的(包括三極管和MOS管兩種)。圖中實現(xiàn)的這種電平輸出結構,如果是MOS管實現(xiàn),則被稱為漏極開路輸出(OD=Open Drain,或簡稱為“開漏”),漏極是MOS管的一個管腳,對應于圖中S和R的接點處。而如果是三極管實現(xiàn),則稱為集電極開路輸出(OC=Open Collector),兩者原理基本一致。后續(xù)文章會介紹三極管。 上拉電阻的存在,將原本的高阻態(tài)轉變成了高電平,也因此得名。和上拉電阻相對應的,還有下拉電阻,區(qū)別在于下拉電阻另一端不是連接VCC而是接到GND。 IO口的輸入 IO口之所以叫IO口(IO=Input/Output),意味著它既可以輸出又可以輸入。前面講的都是IO口的輸出,下面講IO口的輸入。IO口的輸出我們通過LED來介紹,而IO口的輸入我們則通過開關來說明。在很多單片機中,IO的輸入和輸出需要通過電路切換,而對于51單片機來說,輸入和輸出使用的是同一套電路,也就是上面我們分析的電路。 圖中的S0是一個單刀雙擲開關,往上切換可以將P1.0接到VCC,往下切換可以接到GND。讀取時CPU會通過特定電路獲取圖中橙色導線上的電平。我們想要實現(xiàn)的效果是,讓CPU讀取P1.0端口的電平,從而獲得開關S0的狀態(tài)。
下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

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

本月

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

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉中文版)
  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十天學會AVR單片機與C語言視頻教程 下載
  14. 158M  |  183278次下載  |  免費
  15. 8proe5.0野火版下載(中文版免費下載)
  16. 未知  |  138040次下載  |  免費