<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 跟我學(xué)51單片機(一):?jiǎn)纹瑱C最小系統組成與I/O輸出控制

跟我學(xué)51單片機(一):?jiǎn)纹瑱C最小系統組成與I/O輸出控制

作者: 時(shí)間:2013-02-07 來(lái)源:網(wǎng)絡(luò ) 收藏

2. 復位電路

  在單片機系統中,復位電路是非常關(guān)鍵的,當程序跑飛(運行不正常)或死機(停止運行)時(shí),就需要進(jìn)行復位。

  MCS-5l 系列單片機的復位引腳RST( 第9 管腳) 出現2個(gè)機器周期以上的高電平時(shí),單片機就執行復位操作。如果RST 持續為高電平,單片機就處于循環(huán)復位狀態(tài)。

  復位操作通常有兩種基本形式:上電自動(dòng)復位和開(kāi)關(guān)復位。圖2 中所示的復位電路就包括了這兩種復位方式。上電瞬間,電容兩端電壓不能突變,此時(shí)電容的負極和RESET 相連,電壓全部加在了電阻上,RESET 的輸入為高,芯片被復位。隨之+5V電源給電容充電,電阻上的電壓逐漸減小,最后約等于0,芯片正常工作。并聯(lián)在電容的兩端為復位按鍵,當復位按鍵沒(méi)有被按下的時(shí)候電路實(shí)現上電復位,在芯片正常工作后,通過(guò)按下按鍵使RST管腳出現高電平達到手動(dòng)復位的效果。一般來(lái)說(shuō),只要RST 管腳上保持10ms 以上的高電平,就能使單片機有效的復位。圖中所示的復位電阻和電容為經(jīng)典值,實(shí)際制作是可以用同一數量級的電阻和電容代替,讀者也可自行計算RC 充電時(shí)間或在工作環(huán)境實(shí)際測量,以確保單片機的復位電路可靠。

  3. EA/VPP(31 腳) 的功能和接法

  51 單片機的EA/VPP(31 腳) 是內部和外部程序存儲器的選擇管腳。當EA 保持高電平時(shí),單片機訪(fǎng)問(wèn)內部程序存儲器;當EA 保持低電平時(shí),則不管是否有內部程序存儲器,只訪(fǎng)問(wèn)外部存儲器。

  對于現今的絕大部分單片機來(lái)說(shuō),其內部的程序存儲器(一般為flash)容量都很大,因此基本上不需要外接程序存儲器,而是直接使用內部的存儲器。

  在本實(shí)驗套件中,EA 管腳接到了VCC 上,只使用內部的程序存儲器。這一點(diǎn)一定要注意,很多初學(xué)者常常將EA 管腳懸空,從而導致程序執行不正常。

  4. P0 口外接上拉電阻

  51 單片機的P0 端口為開(kāi)漏輸出,內部無(wú)上拉電阻(見(jiàn)圖3)。所以在當做普通I/O 輸出數據時(shí),由于V2 截止,輸出級是漏極開(kāi)路電路,要使“1”信號(即高電平)正常輸出,必須外接上拉電阻。

跟我學(xué)51單片機(一):?jiǎn)纹瑱C最小系統組成與I/O輸出控制

圖3 P0端口的1位結構

  另外,避免輸入時(shí)讀取數據出錯,也需外接上拉電阻。在這里簡(jiǎn)要的說(shuō)下其原因:在輸入狀態(tài)下,從鎖存器和從引腳上讀來(lái)的信號一般是一致的,但也有例外。例如,當從內部總線(xiàn)輸出低電平后,鎖存器Q = 0, Q = 1,場(chǎng)效應管V1 開(kāi)通,端口線(xiàn)呈低電平狀態(tài)。此時(shí)無(wú)論端口線(xiàn)上外接的信號是低電平還是高電平,從引腳讀入單片機的信號都是低電平,因而不能正確地讀入端口引腳上的信號。又如,當從內部總線(xiàn)輸出高電平后,鎖存器Q = 1, Q = 0,場(chǎng)效應管V1 截止。如外接引腳信號為低電平, 從引腳上讀入的信號就與從鎖存器讀入的信號不同。所以當P0 口作為通用I/O 接口輸入使用時(shí),在輸入數據前,應先向P0 口寫(xiě)“1”,此時(shí)鎖存器的Q 端為“0”,使輸出級的兩個(gè)場(chǎng)效應管V1、V2 均截止,引腳處于懸浮狀態(tài),才可作高阻輸入。

  總結來(lái)說(shuō):為了能使P0 口在輸出時(shí)能驅動(dòng)NMOS 電路和避免輸入時(shí)讀取數據出錯,需外接上拉電阻。在本實(shí)驗套件中采用的是外加一個(gè)10K 排阻。此外,51 單片機在對端口P0—P3 的輸入操作上,為避免讀錯,應先向電路中的鎖存器寫(xiě)入“1”,使場(chǎng)效應管截止,以避免鎖存器為“0”狀態(tài)時(shí)對引腳讀入的干擾。

  5. LED 驅動(dòng)電路

  細心的讀者可能已經(jīng)發(fā)現,在中,發(fā)光二極管(LED)的接法是采取了電源接到二極管正極再經(jīng)過(guò)1K 電阻接到單片機I/O 口上的(見(jiàn)圖4 中的接法1)。為什么這么接呢?首先我們要知道LED 的發(fā)光工作條件,不同的LED 其額定電壓和額定電流不同,一般而言,紅或綠顏色的LED 的工作電壓為1.7V~2.4V,藍或白顏色的LED 工作電壓為2.7~4.2V, 直徑為3mm LED 的工作電流2mA~10mA。在這里采用紅色的3mm 的LED。其次,51 單片機(如本實(shí)驗板中所使用的STC89C52單片機)的I/O 口作為輸出口時(shí),拉電流(向外輸出電流)的能力是μA 級別,是不足以點(diǎn)亮一個(gè)發(fā)光二極管的。而灌電流(往內輸入電流)的方式可高達20mA,故采用灌電流的方式驅動(dòng)發(fā)光二極管。當然,現今的一些增強型單片機,是采用拉電流輸出(接法2)的,只要單片機的輸出電流能力足夠強即可。另外,圖4 中的電阻為1K 阻值,是為了限制電流,讓發(fā)光二極管的工作電流限定在2mA~10mA。

跟我學(xué)51單片機(一):?jiǎn)纹瑱C最小系統組成與I/O輸出控制

圖4 LED的接法

  四、程序設計

  在單片機編程語(yǔ)言上,有C 語(yǔ)言和匯編兩種選擇。本系列教程采用C 語(yǔ)言編寫(xiě)程序,在此對C語(yǔ)言和匯編語(yǔ)言在進(jìn)行單片機開(kāi)發(fā)時(shí)進(jìn)行下簡(jiǎn)單比較,匯編語(yǔ)言面向硬件,要求對硬件的特性如寄存器之類(lèi)的比較熟悉,執行效率高,但可讀性和移植性差,不同的單片機之間的程序不能通用,例如學(xué)會(huì )了51 單片機的匯編指令,卻沒(méi)法用到AVR 單片機上。C語(yǔ)言面向過(guò)程,可讀性和移植性很好,效率要比匯編低一些。對于剛接觸單片機的人來(lái)說(shuō),學(xué)習這兩種語(yǔ)言是一樣的,但在以后的開(kāi)發(fā)效率上,C 語(yǔ)言的優(yōu)勢就體現出來(lái)了,其可以幾乎完全不改動(dòng)的情況下移植,大大提高了開(kāi)發(fā)速度。

  控制發(fā)光二極管D1 閃爍的C 語(yǔ)言源程序:

  1. 程序詳細說(shuō)明

 ?。?)頭文件包含。程序接下來(lái)調用的P0_0 就是該頭文件中定義好的一個(gè)寄存器地址。在對單片機內部的寄存器操作之前,應申明其來(lái)處,有興趣的讀者可以看看AT89X52.h 文件中的內容。

 ?。?)宏定義led, 便于直觀(guān)理解也便于程序修改,將P0_0 口命名為led, 這樣在程序中就可以用led代替P0_0 口進(jìn)行操作。

 ?。?)延時(shí)函數聲明。函數在調用之前必須進(jìn)行聲明,由于函數定義放在主函數之后,所以在主函數之前對延時(shí)函數進(jìn)行了聲明。

 ?。?)主函數入口。主函數不傳遞參數也不返回值。

 ?。?)死循環(huán)。

 ?。?)輸出高電平,led 不亮。

 ?。?)延時(shí)一段時(shí)間,以便人眼能夠直觀(guān)看到。

 ?。?)輸出低電平,led 點(diǎn)亮。

 ?。?)延時(shí)一段時(shí)間。

 ?。?0)延時(shí)函數定義。

 ?。?1)for 語(yǔ)句循環(huán)延時(shí)。

  2. 程序流程圖與實(shí)驗現象

  程序流程如圖5 所示。經(jīng)編譯軟件(keil)編譯,生成單片機燒寫(xiě)文件,然后就可下載到單片機內部運行了,硬件電路板如圖6 所示,本實(shí)驗板上用的是STC89C52RC,可以用通過(guò)板載USB 轉串口燒寫(xiě)程序。故將USB 線(xiàn)(本實(shí)驗套件中有)連接電腦和實(shí)驗板。供電電源可以從USB 取,也可以從外部電源取電。冷啟動(dòng),即先點(diǎn)擊下載,然后再上電。下載程序到單片機內運行后,可以看到實(shí)驗板上P0_0 口外接的LED 燈(D1) 一亮一滅的閃爍。

51單片機相關(guān)文章:51單片機教程


單片機相關(guān)文章:單片機教程


單片機相關(guān)文章:單片機視頻教程


單片機相關(guān)文章:單片機工作原理


晶振相關(guān)文章:晶振原理


評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>