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