51單片機(jī)環(huán)境的搭建-1.1 由點(diǎn)亮一個(gè)LED引入
1.1 由點(diǎn)亮一個(gè)LED引入
本文引用地址:http://m.butianyuan.cn/article/201611/319539.htm用單片機(jī)來點(diǎn)亮LED,這幾乎是每個(gè)同學(xué)學(xué)習(xí)單片機(jī)的第一個(gè)實(shí)驗(yàn)。那么誰來點(diǎn),怎么亮?注意這里面涉及到兩個(gè)研究對象,單片機(jī)和LED。要想知道單片機(jī)如何來點(diǎn),先要知道LED為什么亮。這種由分析被控制對象來研究控制對象的思路在本教程后面會反復(fù)用到,這里先提出來亮個(gè)相。我們先來看LED為什么會亮,也就是說先來了解LED的工作原理。當(dāng)有電流通過時(shí)(達(dá)到一定值比如5mA), LED便會發(fā)光。至于進(jìn)一步的工作原理我們不去追究,有興趣的可以自己查查,不屬于我們討論的內(nèi)容。根據(jù)這個(gè)原理,我們只需要給LED一端(右邊)接在5V電源下,LED左邊接地,如圖1所示,產(chǎn)生電勢差,正向?qū)?,那么LED有電流通過,就發(fā)光了。
圖1 點(diǎn)亮LED,由于電流過高,LED很快熄滅
但是LED會很快熄滅,為什么?LED正向?qū)〞r(shí),電阻幾乎為0,根據(jù)歐姆定律,電流無窮大,LED很快被燒掉。因此我們需要給這個(gè)電路加個(gè)限流電阻,這個(gè)限流電阻應(yīng)該取多大,這里我們把LED的電阻當(dāng)作0,電壓為5V,電流設(shè)定為5mA(具體的數(shù)值需要看你購買的LED廠家提供的參數(shù)),根據(jù)歐姆定律就能算出限流電阻為1K。這樣LED就能持續(xù)發(fā)光了,如圖2所示。
?
圖2 串聯(lián)一個(gè)電阻,LED正常發(fā)光
那么LED怎么熄滅呢?沒有電流通過就可以了。如何實(shí)現(xiàn)沒有電流?LED兩邊等電勢就行了。因此只需要在LED左邊提供一個(gè)高電平5V,LED就熄滅了,如圖3所示
?
圖3 兩邊等電勢,LED熄滅
以上我們完成了對LED的分析。前面說了,我們要通過分析被控制對象(LED)來操作控制對象(MCU).下面再來分析,如何操作控制對象。首先要知道MCU是什么?根據(jù)定義,MCU是具有一定可編程能力的數(shù)字電路集合體。那么什么叫做可編程呢?通俗的講,就是根據(jù)人給單片機(jī)的不同指令去執(zhí)行不同的任務(wù)。那這樣就好辦了,如下圖所示,LED左邊接在了MCU的P1.0引腳。根據(jù)前面的分析,只要跟MCU講:”把你的P1.0引腳輸出低電平“,(假設(shè)這里我們的單片機(jī)輸出高電平是5V,低電平是0V。因?yàn)橛械膯纹瑱C(jī)高電平為3.3V)。這時(shí)候LED就點(diǎn)亮了,如果輸出高電平,LED就熄滅了,這樣就實(shí)現(xiàn)了單片機(jī)對LED的控制,如圖4所示。
?
圖4 單片機(jī)實(shí)現(xiàn)對LED的控制
你使用人類語言與單片機(jī)交流,單片機(jī)是聽不懂的。因此你對單片機(jī)發(fā)送的指令無法傳送給單片機(jī)。單片機(jī)只認(rèn)識0和1.那么我們馬上想到用0和1來和單片機(jī)對話,這當(dāng)然可以。其實(shí)早期的程序就是直接寫0和1的??梢赃@樣做對程序員來說太痛苦了,單片機(jī)是認(rèn)識了,程序員卻暈倒了。不信的話,你自己在一張A4的紙上填滿0和1,姑且不論什么含義,看著就暈倒了。這樣就產(chǎn)生了一個(gè)問題,用人類語言,單片機(jī)聽不懂,用單片機(jī)的語言,人類使用不方便。因此就各退一步,來個(gè)折中吧。用什么呢,C語言(早期是匯編,我們后面再談)。把人類語言轉(zhuǎn)成C語言,然后再按照一定的規(guī)則把C語言轉(zhuǎn)成機(jī)器語言。前者叫開發(fā)環(huán)境,后者就是我們通常所說的編譯。你完全可以理解為翻譯。編譯出來的結(jié)果就是單片機(jī)認(rèn)識的機(jī)器指令。那么這個(gè)指令如何傳送給單片機(jī)呢,這個(gè)過程就叫程序燒寫,或者程序下載,燒寫過程中用到的工具就是燒寫器。把機(jī)器指令輸送到單片機(jī),但上電后,單片機(jī)就開始執(zhí)行這個(gè)指令,從而到達(dá)我們控制器件的目的。
這個(gè)例子非常簡單,但是給出了單片機(jī)開發(fā)的基本流程。首先我們要知道工作器件的原理。工作器件是我們最終的目的,比如控制led,用來照明;溫度傳感器測量溫度;液晶顯示內(nèi)容等等。單片機(jī)只是達(dá)到最終目的的手段或者途徑。因此用單片機(jī)來控制工作器件,一開始就要理解工作器件是如何工作的。然后在這個(gè)基礎(chǔ)上,根據(jù)工作器件的需要對單片機(jī)傳遞不同的指令(人類語言)。單片機(jī)是看不懂人類指令的,因此需要翻譯成單片機(jī)看得懂的語言。然后把翻譯的結(jié)構(gòu)傳送給單片機(jī)。
前面羅嗦了這么多,主要是為初學(xué)者講解了單片機(jī)開發(fā)的初步思想以及單片機(jī)開發(fā)環(huán)境的搭建。主要總結(jié)如下兩點(diǎn):1. 從被控制對象入手來研究如何操作控制對象。所謂被控制對象其實(shí)就是我們想要使用的外圍工作器件,他可以是LED,也可以是溫度傳感器,步進(jìn)電機(jī)等等,是我們的最終目的,比如讓LED閃爍,測量溫度,控制轉(zhuǎn)速等等。如何了解他們的工作原理,最好的方式就是閱讀廠家提供的說明資料。對于控制對象(單片機(jī)),這個(gè)也很多,51,MSP430,AVR,PIC等等,如何與他們對話,同樣的道理,查看芯片手冊(也是官方資料)。這里反復(fù)強(qiáng)調(diào)是因?yàn)榭吹胶芏喑鯇W(xué)者一碰到問題就去網(wǎng)上論壇發(fā)帖求助,殊不知最好的解決問題的方式是去查看官方資料。2. 了解這兩個(gè)對象之間的關(guān)系后,我們就開始搭建單片機(jī)開發(fā)環(huán)境,編寫指令,編譯指令,最后燒寫指令。
評論