之前的分享了解了一些關(guān)于并行IO口結(jié)構(gòu),這一期繼續(xù)來補(bǔ)充一些單片機(jī)P1口的一些相關(guān)知識(shí)內(nèi)容,看文章之前麻煩大家?guī)兔κ詹攸c(diǎn)個(gè)贊,三連讓更多人看到,以上文章內(nèi)容僅代表個(gè)人觀點(diǎn),不喜勿噴,謝謝大家的支持與鼓勵(lì)!
內(nèi)部總線上上一步操作的時(shí)候把引腳的電平輸出了一個(gè)高電平,讀入引腳的狀態(tài)是讀的是對(duì)的,如果上一次用IO做了輸出的功能,并且在這個(gè)總線上寫了一個(gè)0,可以發(fā)現(xiàn)在這個(gè)總線上寫0的時(shí)候,導(dǎo)通過來連到了內(nèi)部,接的外部是高電平,開關(guān)斷開了連的高電平,內(nèi)部總線不小心寫了0上一次操作是做輸出,使這個(gè)地方的場(chǎng)效應(yīng)管導(dǎo)通了,外部即使是高電平讀進(jìn)來還是0,讀的是錯(cuò)誤的電平狀態(tài)。
單片機(jī)的引腳普通IO在做為輸入的時(shí)候,在內(nèi)部總線上要先寫1,目的就是為了使場(chǎng)效應(yīng)管,使它處于截止的狀態(tài),就是使它斷開外部引腳的電平狀態(tài)不受影響,通常理解準(zhǔn)雙向IO口的時(shí)候,也就是引腳在做為輸入的時(shí)候,在內(nèi)部總線上要先寫1,寫1的目的就是使它的內(nèi)部這個(gè)場(chǎng)效應(yīng)管,截止,從而使這個(gè)引腳的電平能夠真正的通過輸入通道來進(jìn)入內(nèi)部總線,否則的話就有可能出現(xiàn)錯(cuò)誤的情況。
剛開始的時(shí)候正好寫了一個(gè)低電平,一旦導(dǎo)通永遠(yuǎn)是接地,不論外部電平是什么樣的電平,讀進(jìn)來的永遠(yuǎn)都是低電平,就會(huì)讀入引腳的狀態(tài)出錯(cuò),在做為普通IO輸入功能的時(shí)候要先對(duì)它寫1,然后再執(zhí)行輸入讀引腳,否則的話有可能會(huì)出錯(cuò),這個(gè)就叫做準(zhǔn)雙向IO。
單片機(jī)在輸入功能的時(shí)候除了讀引腳之外,還有一個(gè)功能叫做讀鎖存器,先使讀鎖存器信號(hào)有效,內(nèi)部總線是1的時(shí)候,經(jīng)過鎖存器進(jìn)到內(nèi)部總線,內(nèi)部總線就組成了1,內(nèi)部總線上上一次輸出的時(shí)候是輸出的0,內(nèi)部鎖存器的值再讀進(jìn)去讀的就是0,比如把IO的電平取反再賦給IO,讀P0的變頻狀態(tài),把這個(gè)電平狀態(tài)讀出來之后,取反再賦給它,批零的值就不是取這個(gè)引腳上的,而是取內(nèi)部寄存器的值,比如上一次輸出的是0,通過讀鎖存器就能把這個(gè)0讀進(jìn)來,讀進(jìn)來之后取反再賦給它,這時(shí)它就變成輸出1,會(huì)使IO口產(chǎn)生一個(gè)電平反轉(zhuǎn),小燈閃爍的時(shí)候就可以用這種辦法來產(chǎn)生一個(gè)電平的方波,使IO電平反轉(zhuǎn),讀上一次輸出的電平狀態(tài),然后把它取了一個(gè)反再賦給當(dāng)前這個(gè)IO,這種叫做讀鎖存器,它不是讀的外部引腳。
一個(gè)鎖存器,兩個(gè)三態(tài)門,一個(gè)場(chǎng)效應(yīng)管加一個(gè)上拉電阻,構(gòu)成了一個(gè)內(nèi)部的電路,內(nèi)部總線上寫0和寫1,就能夠使外部引腳上呈現(xiàn)高電平輸出功能,同時(shí)還可以輸入功能,就是可以讀外部的電平狀態(tài),讀外部電平狀態(tài)的時(shí)候是讀引腳,讀引腳的時(shí)候需要注意,需要在內(nèi)部總線上先寫1,寫1的目的是為了使內(nèi)部下拉的場(chǎng)效應(yīng)管處于截止?fàn)顟B(tài),使我能夠真正地讀到這個(gè)引腳真正的電平,否則的話有可能會(huì)出錯(cuò),出錯(cuò)的原因就在于如果上一次這個(gè)地方輸出的是電平場(chǎng)館是導(dǎo)通的,無論外部是高電平還是低電平,讀入的都永遠(yuǎn)是低電平就會(huì)出錯(cuò),所以準(zhǔn)雙向IO口在輸入功能的時(shí)候除了輸入,外部的引腳電平還可以讀內(nèi)部的鎖存器,各有各的用途,當(dāng)需要執(zhí)行對(duì)內(nèi)部的總線的電平狀態(tài)做一個(gè)處理之后,再賦給內(nèi)部總線時(shí),就需要用的是讀鎖存器功能,P1口的驅(qū)動(dòng)能力也需要大概了解。
普通的51單片機(jī)除非做過增強(qiáng),一般來說可以驅(qū)動(dòng)四個(gè)負(fù)載,不同的單片機(jī)也會(huì)不一樣,STC89的單片機(jī)實(shí)際上雖然是51的,實(shí)際上它的內(nèi)部的IO已經(jīng)做了增強(qiáng),要想了解它的具體的電路結(jié)構(gòu),大家可以去看STC89C51單片機(jī)的芯片手冊(cè),手冊(cè)里面會(huì)對(duì)它的IO的內(nèi)部的邏輯電路會(huì)列出來,可以參考著這一篇文章去具體的分析不同IO的它的內(nèi)部結(jié)構(gòu),在用單片機(jī)的IO口的時(shí)候,可以根據(jù)需要去設(shè)置它,通用的51單片機(jī)的IO口就只有兩個(gè)功能,一個(gè)是輸出,那一個(gè)是輸入,普通的P1口就只有兩個(gè)功能,只需要理解在做輸出的時(shí)候,為什么內(nèi)部寫0和寫1,在外部能夠呈現(xiàn)高電平,在讀外部引腳電平的時(shí)候,為什么要在內(nèi)部總線先寫1就是為什么會(huì)有這個(gè)準(zhǔn)雙向IO口說法,單片機(jī)的輸出能力比較弱,內(nèi)部會(huì)有一個(gè)10K或者是20K的上拉電阻,比如做為輸出功能的時(shí)候,輸出高電平的時(shí)候,通過輸出一個(gè)高電平能夠驅(qū)動(dòng),能夠提供的電流10K,比如5V時(shí)態(tài),可以算一下這個(gè)電流5V除以1K,5個(gè)毫伏再除以10=500mA,上拉電阻有的可能是做到20K,電流更小發(fā)光二極管在2到20個(gè)毫安,它點(diǎn)不亮,一般是用灌電流的方式,這種方式叫做拉電流,接一個(gè)發(fā)光二極管,外部接一個(gè)5V,然后接一個(gè)電阻接到引腳上,這個(gè)時(shí)候要使這個(gè)燈點(diǎn)亮,輸出低電平5V過來,這個(gè)地方正好是接到這個(gè)引腳低電平,限流電阻能夠使這個(gè)通過它的電流在這個(gè)220毫安之間,這個(gè)電流也不能太大,通過芯片引腳的電流的承受能力是有一定要求的,比如一個(gè)引腳留了很大的電流,第二個(gè)引腳又留了很大的電流都流進(jìn)去,芯片它有一定的承受電流的能力就會(huì)慢慢發(fā)熱,可能會(huì)燒掉,在做電路的時(shí)候,個(gè)氣墊會(huì)經(jīng)常比較燙,會(huì)發(fā)熱,那就說明流過它的電流大了,它就會(huì)發(fā)熱,因?yàn)殡娮璞容^大,電流就比較小,輸出電流的能力比較弱,這個(gè)就是P1口內(nèi)部的原理。
想學(xué)單片機(jī)的朋友,可以私信我,我可以發(fā)一些基礎(chǔ)資料給大家作為參考學(xué)習(xí)的內(nèi)容,有問題的朋友也可以在評(píng)論區(qū)評(píng)論,或者私信我,盡量幫大家解決朋友們提出的問題,也可以通過主頁簡(jiǎn)介找到我,謝謝大家。
審核編輯:符乾江
評(píng)論