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