|
本章內(nèi)容主要通過一些實(shí)踐例程,來提高編程的熟練度,并且進(jìn)行一些算法和技巧上的積累。介紹單片機(jī)IO口結(jié)構(gòu)、上下拉電阻、蜂鳴器和繼電器,數(shù)據(jù)類型轉(zhuǎn)換、中斷響應(yīng)調(diào)整、位操作技巧、以及PWM等。在學(xué)習(xí)本章內(nèi)容的時(shí)候,還是那句話,一定要能夠達(dá)到不看教材,能夠獨(dú)立把程序做出來的效果,那樣才能基本上掌握相關(guān)知識(shí)點(diǎn)和內(nèi)容。 9.1單片機(jī)I/O口的結(jié)構(gòu)上節(jié)課提到了單片機(jī)I/O口其中一種“準(zhǔn)雙向I/O”的內(nèi)部結(jié)構(gòu),實(shí)際上單片機(jī)I/O口還有另外三種狀態(tài),分別是開漏、推挽、高阻態(tài),通過圖9-1來分析下另外這三種狀態(tài)。
9-1.png (14.96 KB, 下載次數(shù): 0)
下載附件
2026-4-10 10:32 上傳
圖9-1 單片機(jī)I/O結(jié)構(gòu)示意圖 前邊介紹“準(zhǔn)雙向I/O”的時(shí)候是用三極管來說明的,出于嚴(yán)謹(jǐn)?shù)膽B(tài)度,這里按照實(shí)際用MOS管示意。實(shí)際上三極管是靠電流導(dǎo)通,而MOS管是靠電壓導(dǎo)通的,具體緣由和它們的內(nèi)部構(gòu)造有關(guān)系。在單片機(jī)I/O口狀態(tài)這一塊內(nèi)容上,可以把MOS管當(dāng)三極管來理解。在圖9-1中,T1相當(dāng)于一個(gè)PNP三極管,T2相當(dāng)于一個(gè)NPN三極管。 準(zhǔn)雙向I/O口原理已經(jīng)講過了,開漏輸出和準(zhǔn)雙向I/O的唯一區(qū)別,就是開漏輸出把內(nèi)部的上拉電阻去掉了。開漏輸出如果要輸出高電平時(shí),T2關(guān)斷,I/O電平要靠外部的上拉電阻才能拉成高電平,如果沒有外部上拉電阻I/O電平就是一個(gè)不確定態(tài)。標(biāo)準(zhǔn)51單片機(jī)的P0口默認(rèn)就是開漏輸出,如果要用的時(shí)候外部需要加上拉電阻。而強(qiáng)推挽輸出就是有比較強(qiáng)的驅(qū)動(dòng)能力,如圖9-1中第三張小圖,當(dāng)內(nèi)部輸出一個(gè)高電平時(shí),通過MOS管直接輸出電流,沒有電阻的限流,電流輸出能力也比較大;如果內(nèi)部輸出一個(gè)低電平,那反向電流也可以很大,強(qiáng)推挽的一個(gè)特點(diǎn)就是驅(qū)動(dòng)能力強(qiáng)。 單片機(jī)I/O還有一種狀態(tài)叫高阻態(tài)。通常用來做輸入引腳的時(shí)候,可以將I/O口設(shè)置成高阻態(tài),高阻態(tài)引腳本身如果懸空,用萬(wàn)用表測(cè)量的時(shí)候可能是高可能是低,它的狀態(tài)完全取決于外部輸入信號(hào)的電平,高阻態(tài)引腳對(duì)GND的等效電阻很大(理論上相當(dāng)于無(wú)窮大,但實(shí)際上總是有限值而非無(wú)窮大),所以稱之為高阻。 9.2上下拉電阻前邊很多次提到了上拉電阻,下拉電阻,具體到底什么樣的電阻算是上下拉電阻,上下拉電阻都有何作用呢?上拉電阻就是將不確定的信號(hào)通過一個(gè)電阻拉到高電平,同時(shí)此電阻也起到一個(gè)限流作用,下拉就是下拉到低電平。 比如I/O設(shè)置為開漏輸出高電平或者是高阻態(tài)時(shí),默認(rèn)的電平就是不確定的,外部經(jīng)一個(gè)電阻接到VCC,也就是上拉電阻,那么相應(yīng)的引腳就是高電平;經(jīng)一個(gè)電阻到GND,也就是下拉電阻,那么相應(yīng)的引腳就是一個(gè)低電平。 上拉電阻應(yīng)用很多,都可以起到什么作用呢?主要先了解最常用的以下4點(diǎn)。 1、OC門要輸出高電平,必須外部加上拉電阻才能正常使用,其實(shí)OC門就相當(dāng)于單片機(jī)I/O的開漏輸出,其原理可參照?qǐng)D9-1中的開漏電路。 2、加大普通I/O口的驅(qū)動(dòng)能力。標(biāo)準(zhǔn)51單片機(jī)的內(nèi)部I/O口的上拉電阻,一般都是在幾十K歐,比如STC89C52內(nèi)部是20K的上拉電阻,所以最大輸出電流是250uA,因此外部加個(gè)上拉電阻,可以形成和內(nèi)部上拉電阻的并聯(lián)結(jié)構(gòu),增大高電平時(shí)電流的輸出能力。 3、在電平轉(zhuǎn)換電路中,比如前邊講的5V轉(zhuǎn)12V的電路中,上拉電阻其實(shí)起到的是限流電阻的作用,可以回顧一下圖3-8。 4、單片機(jī)中未使用的引腳,比如總線引腳,引腳懸空時(shí),容易受到電磁干擾而處于紊亂狀態(tài),雖然不會(huì)對(duì)程序造成什么影響,但通常會(huì)增加單片機(jī)的功耗,加上一個(gè)對(duì)VCC的上拉電阻或者一個(gè)對(duì)GND的下拉電阻后,可以有效的抵抗電磁干擾。 那么在進(jìn)行電路設(shè)計(jì)的時(shí)候,又該如何選擇合適的上下拉電阻的阻值呢? 1、從降低功耗的方面考慮應(yīng)當(dāng)足夠大,因?yàn)殡娮柙酱螅娏髟叫 ?/font> 2、從確保足夠的引腳驅(qū)動(dòng)能力考慮應(yīng)當(dāng)足夠小,電阻小了,電流才能大。 3、在開漏輸出時(shí),過大的上拉電阻會(huì)導(dǎo)致信號(hào)上升沿變緩。實(shí)際電平的變化都是需要時(shí)間的,雖然很小,但永遠(yuǎn)都達(dá)不到零,而開漏輸出時(shí)上拉電阻的大小就直接影響了這個(gè)上升過程所需要的時(shí)間,如圖9-2所示。想一下,如果電阻很大,而信號(hào)頻率又很快的話,最終將導(dǎo)致信號(hào)還沒等上升到高電平就又變?yōu)榈土耍谑切盘?hào)就無(wú)法正確傳送了。
9-2.png (4.76 KB, 下載次數(shù): 0)
下載附件
2026-4-10 10:32 上傳
圖9-2 上拉電阻阻值對(duì)波形的影響 綜合考慮各種情況,常用的上下拉電阻值大多選取在1K到10K之間,具體到底多大通常要根據(jù)實(shí)際需求來選,通常情況下在標(biāo)準(zhǔn)范圍內(nèi)就可以,不一定是一個(gè)固定的值。
|