色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 單片機學(xué)習(xí)之五:基本I/O口試驗-點亮二極管

          單片機學(xué)習(xí)之五:基本I/O口試驗-點亮二極管

          作者: 時間:2016-09-16 來源:網(wǎng)絡(luò) 收藏

            實驗一、基本口試驗:點亮

          本文引用地址:http://cafeforensic.com/article/201609/297024.htm

            1、 試驗現(xiàn)象:

            8個間隔發(fā)光。

            2、 試驗?zāi)康模?/p>

            了解最簡單的單片機程序的編寫方法;

            了解單片機口驅(qū)動的方法

            3、 試驗任務(wù)分析:

            要想讓二極管按照我們的要求發(fā)光,首先要搞清楚電路的連接形式,我們先只看和這部分內(nèi)容有關(guān)的電路。當(dāng)JMP0跳線接在12位置時(選通二極管顯示),電路如下圖所示:

            

           

            下面,我分別把單片機各管腳功能作一簡單解釋:

            XTAL1和XTAL2端:

            由于單片機是一種時序電路,工作的時候必須外加時鐘周期,沒有時鐘周期,就不能執(zhí)行程序代碼,單片機就不能工作。

            XTAL1和XTAL2即為外接時鐘引腳。時鐘的產(chǎn)生有兩種方式,內(nèi)部方式產(chǎn)生和外部方式產(chǎn)生。該電路是內(nèi)部方式產(chǎn)生時鐘的典型電路,內(nèi)部時鐘的晶振頻率一般是4M~12M之間,學(xué)習(xí)板上用的是12M的晶振,外接兩個諧振電容。該電容的典型值是30pf。

            RST端:

            RST是復(fù)位端,簡單的說,單片機的復(fù)位和計算機的重啟動是一樣的概念。如何進行復(fù)位呢?只要在RST端加上高電平就可以了。

            圖示電路也是一個典型的復(fù)位電路,加電瞬間,電容兩端相當(dāng)于短路,RST端產(chǎn)生一個高電平,使得單片機復(fù)位。然后隨著電容充電,RST電壓慢慢下降,當(dāng)降低到低電平時,單片機開始正常工作。同樣,在按下按鍵時,RST也產(chǎn)生一個高電平,單片機也被復(fù)位。下載程序的時候,應(yīng)該拔下RST跳線,即可斷開復(fù)位電路,避免串入干擾信號。

            EA/VPP:

            EA端是內(nèi)部程序存儲器和外部程序存儲器的選擇端,當(dāng)EA=1時,訪問片內(nèi)程序存儲器,當(dāng)EA=0時,訪問片外程序存儲器。對于我們的學(xué)習(xí)板來說,由于AT89S52自帶8k的程序存儲器,沒有擴展外部程序存儲器,所以應(yīng)該接高電平。

            VPP是引腳的第二功能,暫且不介紹了。

            ALE

            地址鎖存允許信號。在擴展了外部程序存儲器的情況下,當(dāng)單片機訪問外部程序存儲器時,ALE輸出低8位地址的鎖存信號。在本學(xué)習(xí)板上沒有用到這個端子.

            PROG為引腳的第二功能,暫且不介紹了,有興趣的同學(xué)可以查詢相關(guān)教材。

            PSEN

            外部程序存儲器讀選通信號,由于在學(xué)習(xí)板上沒有擴展外部程序存儲器,所以這個腳也不用。

            P1口:

            P1口可作為通用的口使用。在本電路中,P1.5口外接蜂鳴器(其余幾個和本試驗無關(guān),暫不介紹)。上圖可知,當(dāng)P1.5輸出高電平時,對應(yīng)的三極管導(dǎo)通,蜂鳴器發(fā)聲。(同學(xué)可能會問,這個功能好像和我們的試驗任務(wù)沒有什么關(guān)系啊,我一會在給大家解釋)。

            P3口:

            P3口是雙功能口,第一種功能和我們P1口類似,也可以作通用的I/O口使用。第二種功能和單片機的串行通信,中斷等功能有關(guān),我們暫且不介紹。以后用到相應(yīng)功能在給大家介紹。

            P2口:

            P2也可以作為輸入口或者輸出口來用,在試驗板上,P2口的作用在于選通數(shù)碼管顯示。在本例中我們不用。

            P0口:

            P0口在我們這個試驗中扮演著重要的角色,從圖上可知,發(fā)光二極管是由P0口驅(qū)動的。且慢,大家可能會發(fā)現(xiàn),P0口是通過74AS244驅(qū)動發(fā)光二極管的,這是為什么呢?在這里,74AS244是個緩沖器,它的作用在于隔離單片機和外圍電路,這樣可以保護單片機,并且能夠增強單片機的輸出驅(qū)動能力。在該電路中,如果我們?nèi)サ?4AS244,而直接把二極管接在P0輸出口上,也是可以的,這是因為電源通過上拉電阻能夠提供較大的驅(qū)動電流。

            同時大家要注意,當(dāng)P0口作為輸出口使用的時候,它的輸出級是漏級開路的形式,所以它應(yīng)該外接上拉電阻,這時才能有高電平輸出。(我們的板子上面用了一個排阻。漏級開路的輸出級類似于ttl電路中集電極開路的輸出級,大家可以參考隨便一本數(shù)電教材,關(guān)于oc門的原理介紹,上面說得非常清楚。)

            下面我們來看看怎樣才能使得P0口驅(qū)動的8個二極管按照要求發(fā)光。我們發(fā)現(xiàn),只要P0口相應(yīng)的一個引腳輸出低電平的時候,則對應(yīng)的二極管發(fā)光。例如:欲LED1發(fā)光,只需要P0.0引腳輸出相應(yīng)的低電平就可以啦!

            因此,如果我們需要8個二極管間隔發(fā)光,在板子上,從左至右依次為亮滅,則P0口的輸出值應(yīng)該是:01010101,即為55H。

            好啦,分析清楚之后,我們可以開始寫程序啦!

            4、試驗程序如下:

            org 0000h ;(1)

            clr p1.5 ;(2)

            loop: mov p0,#55h ;(3)

            ajmp loop ;(4)

            end ;(5)

            注釋

            (1)、org是個偽指令,也就是說它在匯編時不產(chǎn)生目標(biāo)代碼。(大家可以在medwin環(huán)境里打開反匯編窗口看看就明白啦。)它一般出現(xiàn)在每段源程序或者數(shù)據(jù)塊的開始,指明此語句后面的程序或者數(shù)據(jù)塊的起始地址。我們編寫好的程序是存放在單片機的程序存儲器中的,它的可尋址空間是64k,即0000h~0ffffh。這個語句表示我們的程序從程序存儲器地址為0000h單元開始存放。

            (2)、從電路圖上面可以看到P1.5連接蜂鳴器,所以這個語句的意思是,把P1.5置零,不讓蜂鳴器響。由于單片機復(fù)位以后,P1口的內(nèi)容為FFH,這樣蜂鳴器就會一直響。所以要把該端子置零。當(dāng)然,如果你不怕吵,這句話也可以不寫。

            (3)、給P0口賦值55H,使得8個二極管間隔發(fā)光。

            (4)、跳轉(zhuǎn)回標(biāo)記為loop的指令。(注ljmp指令也具有同樣的功能,兩者區(qū)別是:ajmp只能在2k字節(jié)內(nèi)轉(zhuǎn)移,而ljmp可以在64k字節(jié)內(nèi)轉(zhuǎn)移。本程序用ajmp就足夠了。)

            (5)、這同樣也是一條偽指令,告訴我們程序到這里就結(jié)束啦。

            好啦,然后把這個程序進行編譯,下載,你就會看到學(xué)習(xí)板上的發(fā)光二極管乖乖的按照你的指令工作了。

            5、 課后練習(xí)

            (1)、學(xué)習(xí)該程序中出現(xiàn)的知識點涉及到的理論知識,包括I/O口,程序存儲器,數(shù)據(jù)存儲器,和使用到的指令。

            (2)、編寫程序,使得發(fā)光二極管從左到右四個亮,四個不亮



          關(guān)鍵詞: I/O 二極管

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉