當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]單片機(jī)是一門實(shí)踐性較強(qiáng)的技術(shù),很多初學(xué)者在學(xué)習(xí)單片機(jī)技術(shù)開發(fā)的時(shí)候往往一頭霧水,不知何從下手。為此,筆者結(jié)合自己使用單片機(jī)多年的經(jīng)驗(yàn),特意設(shè)計(jì)了單片機(jī)開發(fā)所需的Study-c 整機(jī)和硬件套件,并結(jié)合套件精心編

單片機(jī)是一門實(shí)踐性較強(qiáng)的技術(shù),很多初學(xué)者在學(xué)習(xí)單片機(jī)技術(shù)開發(fā)的時(shí)候往往一頭霧水,不知何從下手。為此,筆者結(jié)合自己使用單片機(jī)多年的經(jīng)驗(yàn),特意設(shè)計(jì)了單片機(jī)開發(fā)所需的Study-c 整機(jī)和硬件套件,并結(jié)合套件精心編寫了單片機(jī)從入門到精通系列教程。通過講述單片機(jī)原理、電路設(shè)計(jì)、應(yīng)用開發(fā)軟件工具、編寫實(shí)驗(yàn)實(shí)例讓讀者全面接觸單片機(jī)技術(shù)。教程編排上由淺入深,循序漸進(jìn),內(nèi)容力求完整、實(shí)用、趣味并存,使讀者在輕松愉快的學(xué)習(xí)過程中逐步提高單片機(jī)軟硬件綜合設(shè)計(jì)水平。

一、內(nèi)容提要

本講主要向大家介紹51 系列單片機(jī)的最小系統(tǒng)的實(shí)現(xiàn)并通過編寫程序來實(shí)現(xiàn)對(duì)單片機(jī)IO 口的輸出控制。以點(diǎn)亮外部連接的LED(發(fā)光二極管)為例,簡要的介紹單片機(jī)的原理、最小系統(tǒng)的組成,并通過簡單的C51 程序設(shè)計(jì)來講述編譯軟件Keil的使用并下載Hex 文件燒寫單片機(jī)。

二、原理簡介

在了解原理之前, 首先讓我們思考一個(gè)問題,什么是單片機(jī), 單片機(jī)有什么用? 這是一個(gè)有意思的問題,因?yàn)槿魏稳硕疾荒芙o出一個(gè)被大家都認(rèn)可的概念,那到底什么是單片機(jī)呢? 普遍來說, 單片機(jī)又稱單片微控制器, 是在一塊芯片中集成了CPU( 中央處理器)、RAM( 數(shù)據(jù)存儲(chǔ)器)、ROM( 程序存儲(chǔ)器)、定時(shí)器/ 計(jì)數(shù)器和多種功能的I/O( 輸入/ 輸出) 接口等一臺(tái)計(jì)算機(jī)所需要的基本功能部件,從而可以完成復(fù)雜的運(yùn)算、邏輯控制、通信等功能。在這里,我們沒必要去找到明確的概念來解析什么是單片機(jī),特別在使用C 語言編寫程序的時(shí),不用太多的去了解單片機(jī)的內(nèi)部結(jié)構(gòu)以及運(yùn)行原理等。從應(yīng)用的角度來說,通過從簡單的程序入手,慢慢的熟悉然后逐步深入精通單片機(jī)。

在簡單了解了什么是單片機(jī)之后,然后我們來構(gòu)建單片機(jī)的最小系統(tǒng),單片機(jī)的最小系統(tǒng)就是讓單片機(jī)能正常工作并發(fā)揮其功能時(shí)所必須的組成部分,也可理解為是用最少的元件組成的單片機(jī)可以工作的系統(tǒng)。對(duì)51 系列單片機(jī)來說, 最小系統(tǒng)一般應(yīng)該包括: 單片機(jī)、時(shí)鐘電路、復(fù)位電路、輸入/ 輸出設(shè)備等(見圖1)。


圖1 單片機(jī)最小系統(tǒng)框圖

三、電路詳解

依據(jù)上文的內(nèi)容,設(shè)計(jì)51 系列單片機(jī)最小系統(tǒng)見圖2。


圖2 51系列單片機(jī)最小系統(tǒng)

下面就圖2 所示的單片機(jī)最小系統(tǒng)各部分電路進(jìn)行詳細(xì)說明。

1. 時(shí)鐘電路

在設(shè)計(jì)時(shí)鐘電路之前,讓我們先了解下51 單片機(jī)上的時(shí)鐘管腳:

XTAL1(19 腳) :芯片內(nèi)部振蕩電路輸入端。

XTAL2(18 腳) :芯片內(nèi)部振蕩電路輸出端。

XTAL1 和XTAL2 是獨(dú)立的輸入和輸出反相放大器,它們可以被配置為使用石英晶振的片內(nèi)振蕩器,或者是器件直接由外部時(shí)鐘驅(qū)動(dòng)。圖2 中采用的是內(nèi)時(shí)鐘模式,即采用利用芯片內(nèi)部的振蕩電路,在XTAL1、XTAL2 的引腳上外接定時(shí)元件(一個(gè)石英晶體和兩個(gè)電容),內(nèi)部振蕩器便能產(chǎn)生自激振蕩。一般來說晶振可以在1.2 ~ 12MHz 之間任選,甚至可以達(dá)到24MHz 或者更高,但是頻率越高功耗也就越大。在本實(shí)驗(yàn)套件中采用的11.0592M 的石英晶振。和晶振并聯(lián)的兩個(gè)電容的大小對(duì)振蕩頻率有微小影響,可以起到頻率微調(diào)作用。當(dāng)采用石英晶振時(shí),電容可以在20 ~ 40pF 之間選擇(本實(shí)驗(yàn)套件使用30pF);當(dāng)采用陶瓷諧振器件時(shí),電容要適當(dāng)?shù)卦龃笠恍?,?0 ~ 50pF 之間。通常選取33pF 的陶瓷電容就可以了。

另外值得一提的是如果讀者自己在設(shè)計(jì)單片機(jī)系統(tǒng)的印刷電路板(PCB) 時(shí),晶體和電容應(yīng)盡可能與單片機(jī)芯片靠近,以減少引線的寄生電容,保證振蕩器可靠工作。檢測晶振是否起振的方法可以用示波器可以觀察到XTAL2 輸出的十分漂亮的正弦波,也可以使用萬用表測量( 把擋位打到直流擋,這個(gè)時(shí)候測得的是有效值)XTAL2 和地之間的電壓時(shí),可以看到2V 左右一點(diǎn)的電壓。

2. 復(fù)位電路

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

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

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

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

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

對(duì)于現(xiàn)今的絕大部分單片機(jī)來說,其內(nèi)部的程序存儲(chǔ)器(一般為flash)容量都很大,因此基本上不需要外接程序存儲(chǔ)器,而是直接使用內(nèi)部的存儲(chǔ)器。

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

4. P0 口外接上拉電阻

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


圖3 P0端口的1位結(jié)構(gòu)

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

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

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

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


圖4 LED的接法

四、程序設(shè)計(jì)

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

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

1. 程序詳細(xì)說明

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

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

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

(4)主函數(shù)入口。主函數(shù)不傳遞參數(shù)也不返回值。

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

(6)輸出高電平,led 不亮。

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

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

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

(10)延時(shí)函數(shù)定義。

(11)for 語句循環(huán)延時(shí)。

2. 程序流程圖與實(shí)驗(yàn)現(xiàn)象

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


圖5 程序流程圖


圖6 硬件電路板圖

五、總結(jié)

本講主要介紹了51 單片機(jī)最小系統(tǒng)的設(shè)計(jì)以及編寫第一個(gè)簡單的程序。從過該實(shí)驗(yàn),可以掌握單片機(jī)的開發(fā)流程,從而快速入門。在該講中應(yīng)該注意幾個(gè)問題:

1. 本講座中采用C 語言編寫程序,因?yàn)镃 語言的可讀性和可移植性強(qiáng)。若讀者沒有學(xué)過C 語言,則應(yīng)去了解和掌握相應(yīng)的C 語言知識(shí)。C 語言易學(xué)易用,相信很快就能熟練。

2. 程序編譯軟件采用的是Keil。限于篇幅的原因,在這里就不對(duì)其進(jìn)行講述,如果讀者有對(duì)其不明白的地方,可以到本刊論壇的單片機(jī)版面,作者制作了一個(gè)詳細(xì)的Keil 入門教程。我們通過Keil編譯程序,最終生成燒寫單片機(jī)的Hex 代碼文件。

Keil 軟件界面如圖7 所示, 中間空白區(qū)域?yàn)榇a區(qū),左側(cè)為項(xiàng)目列表,最下面為消息窗口。


圖7 Keil軟件開發(fā)界面

3. 本實(shí)驗(yàn)板上所用的STC 單片機(jī)通過串口下載程序。其上位機(jī)軟件界面如圖8 所示(推薦使用V3.1 版本,最新版本可以到STC 主頁上下載:http://www.mcu-memory.com/), 燒寫操作很簡單,點(diǎn)擊“Open File”按鈕瀏覽找到所生成要燒寫的Hex 文件后,單片機(jī)斷電,點(diǎn)擊“下載”按鈕,單片機(jī)上電,程序就可下載到單片機(jī)中了。


圖8 STC燒寫軟件界面

4. 產(chǎn)品組件

讀者如果按照該講內(nèi)容進(jìn)行理解并實(shí)踐的話,可以說單片機(jī)就算入門了。下一講將進(jìn)一步深入,將要介紹單片機(jī)內(nèi)部定時(shí)器和中斷系統(tǒng),敬請(qǐng)期待。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動(dòng)力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉