上拉電阻的作用: (1) 用于為OC和OD門電路,提供驅動能力。 以OC(集電極開路)電路為例: 例如,達林頓管(其實就是復合三級管)集成塊ULN2003. 內部一路的電路如圖,就是一個集電極開路電路。 如果不加上拉電阻是無法高電平驅動其他器件的。因為當三極管截至市沒有電流流通的路徑,更談不上驅動了。這個跟單片機P0口加上拉電阻的原理一樣。 (2)提高高電平電位: 單片機P1口外接4×4矩陣鍵盤。另外復用P1.0~P1.3外接ULN2003控制驅動步進電機。 實驗中遇到的問題:當接入ULN2003時鍵盤無法工作,去掉ULN2003后鍵盤工作正常。ULN2003工作正常。(注,兩個部分不同時工作) 問題分析:由于鍵盤的結構,無非就是兩個金屬片的接通或斷開。但是接入ULN2003 后無法正常工作,說明是接入ULN2003影響到了P1口電平的變化。用萬用表測的電壓,當單片機輸出高電平時,P1.0~P1.3電壓1V左右,P1.4~P1.7電壓4.3V左右,于是測AT89s52高低電平的判決電位,在1.3V左右。這樣P1.0~P1.3始終是低電平,鍵盤根本無法實現掃描功能。 解決方法,只要抬高P1口高電平時的電位,就可以正常工作, 1. 在P1口到ULN2003上串接電阻,起到分壓的作用,就可以抬高電平。 2. 給P1口接上拉電阻,跟P1口內部電阻并聯,減小上拉電阻阻值,減小分得的電壓,從而抬高P0口高電平電位。 采用第二種方案可以抬高電平到2.5V左右。鍵盤工作正常。 另外:我在做液晶顯示實驗的時候,數據線用的P0口,無法正常工作,不顯示字符。但是亂動一下數據線就可以完成顯示,但是顯示現象并不正常,字符不是一次寫入,而是亂動幾次才能寫完全部內容,正常應該一次全部顯示 。原因是由于,我的P0口中有六個端口都外接并聯三個發光二極管。,因為從資料上查到,P0口每一個端口最大可以吸收10MA電流,總電流不能超過26MA電流。這樣算我的總電流已經到了40MA,呵呵。見笑了。所以懷疑是驅動的問題。于是去掉了幾個二極管。顯示一切正常。似乎問題已經解決,但總覺得還是有點問題,于是又經過幾次試驗,發現只有當P0.7端口的并聯二極管去掉一個,再在其他端口接上一個發光二極管。此時也可以正常顯示。但是這樣P0口吸收電流在38MA,也超過了26MA不少。所以不是吸收電流太大的問題。仔細分析當端口并聯外接三個二極管的時候等效于加了一個700歐左右的電阻,于是把二極管去掉換成一個1k電阻,液晶也無法顯示。 經過仔細分析,我認為,由于P0.7是液晶忙信號的返回線路當這個端口返回高電平時說明,液晶正在處理數據,無法接收新的數據,返回0時說明空閑,可以接收新數據。 這樣當上拉電阻太小了,液晶返回低電平時就有可能高過1.3V(AT89s52高低電平的判決電位),單片機接收到后,不會當作低電平,當然也就無法顯示了。(程序設計的時檢測到忙信號,繼續檢測) 總結:上拉電阻選擇也有要求,呵呵。既不是越高越好也不是越低越好。根據需要選擇。 這可能也叫,阻抗匹配吧。 |