學(xué)習(xí)單片機(jī)的步驟
學(xué)習(xí)單片機(jī)的步驟
1、熟悉單片機(jī)的原理,結(jié)構(gòu);
2、學(xué)好數(shù)電,模電,為設(shè)計(jì)電路打好基礎(chǔ);
3、熟練使用C語(yǔ)言,多學(xué)習(xí)別人的程序;
4、對(duì)操作系統(tǒng)原理有一定的了解;
5、Protel至少要有點(diǎn)基礎(chǔ);
6、要實(shí)際動(dòng)手調(diào)試電路的能力。
當(dāng)前的單片機(jī)種類很多,但是 51 是最基礎(chǔ)的,因此單片機(jī)的學(xué)習(xí)最好也是從 51 開(kāi)始,不僅容易上手,而且相當(dāng)實(shí)用。然而 51 單片機(jī)畢竟過(guò)于基礎(chǔ),后來(lái)的很多單片機(jī)在功能上都有很大的擴(kuò)展,因此按照我們實(shí)驗(yàn)室多數(shù)人的路線接下來(lái)大多數(shù)人會(huì)學(xué)習(xí) AVR 單片機(jī), AVR 單片機(jī)在功能上較 51 有很大提升,集成了 A/D 、快速 PWM 等很多實(shí)用的功能,而且和很多大型的單片機(jī)在功能上有很多類似之處,因此如果以后還想掌握其他單片機(jī) AVR 無(wú)疑是一個(gè)很好的跳板。
學(xué)習(xí)的過(guò)程
學(xué)習(xí)單片機(jī)最終要的是當(dāng)然是練,我所說(shuō)的學(xué)習(xí)跟課堂上的單片機(jī)學(xué)習(xí)不同,我以前也看過(guò)一些單片機(jī)教材,有些教材講的是單片機(jī)的工作原理和內(nèi)部結(jié)構(gòu),這些東西對(duì)于我們暫時(shí)并不需要,等以后開(kāi)課的時(shí)候在學(xué)習(xí)好了?,F(xiàn)在要學(xué)習(xí)的是暫時(shí)拋開(kāi)內(nèi)部結(jié)構(gòu)原理不談,如何能用單片機(jī)寫(xiě)一些簡(jiǎn)單的小程序,是從實(shí)用性的角度出發(fā),網(wǎng)上有一種說(shuō)法稱之為先實(shí)踐后理論的學(xué)習(xí)方法。
因此我的觀點(diǎn)如下,單片機(jī)的硬件結(jié)構(gòu)首先要有一個(gè)基本的了解,最起碼要知道各引腳的功能、區(qū)別,能自己動(dòng)手搭一個(gè)單片機(jī)的最小系統(tǒng),然后就可以直接從程序入手,程序最好還是用 C 語(yǔ)言編程,從簡(jiǎn)單的跑馬燈做起,逐漸深入,陸續(xù)可以做一些數(shù)碼管、液晶、 DS1302 、 DS18B20 等電子元器件的應(yīng)用,在深入就可以結(jié)合一些具體實(shí)例擴(kuò)展一些中斷、串口通訊等功能。還有一點(diǎn)要聲明的是單片機(jī)里用到的 C 語(yǔ)言其實(shí)很有限,課堂上學(xué)習(xí) C++ 的很大一部分內(nèi)容在初期單片機(jī)編程中都用不到,因此沒(méi)必要因?yàn)橛X(jué)的自己的 C 語(yǔ)言基礎(chǔ)不是很好而對(duì)單片機(jī)望而止步!
學(xué)習(xí)的工具
軟件方面方面, 51 單片機(jī)用的是 KEIL 軟件,這個(gè)軟件在學(xué)校圖書(shū)館軟件下載和其他網(wǎng)站上都有,具體用法自己查找相關(guān)資料, AVR 的軟件就比較多了,我用的是 CVAVR ,另外還有 ICCAVR 等多款編譯軟件,這要看個(gè)人喜好了,建議有了一定的 51 基礎(chǔ)再學(xué)。另外就是燒寫(xiě)軟件,燒寫(xiě)軟件的作用就是將編譯器生成的 HEX 文件燒寫(xiě)至單片機(jī)里,這要配合下載線實(shí)用,如果有并口的話最好用并口下載線,軟件最好用廣州雙龍的 SLISP 軟件,如果是筆記本沒(méi)有并口的話則要自己買(mǎi)一個(gè)下載器了,名稱為 USBASP ,網(wǎng)上電子市場(chǎng)有賣(mài) 20 塊錢(qián)左右,軟件會(huì)隨光盤(pán)自帶。
硬件方面,首先是要有單片機(jī),對(duì)于單片機(jī)有一點(diǎn)要注意, 51 單片機(jī)最好買(mǎi) 89S51 、 89S52 這兩種型號(hào),上面我所說(shuō)的燒寫(xiě)程序是 ISP 方式,這兩種單片機(jī)支持 ISP 下載,所以如果買(mǎi)其他型號(hào)的燒寫(xiě)程序可能會(huì)不太方便, AVR 單片機(jī)常用的就是 ATmega16L 其它型號(hào)的區(qū)別也不是很大,甚至有些兼容。至于單片機(jī)開(kāi)發(fā)板,目前的價(jià)格都很貴,從一百到幾百不等,不過(guò)像上次學(xué)校里廣告的那個(gè)六十多塊錢(qián)的最好還是免了,沒(méi)什么作用。能買(mǎi)一塊當(dāng)然好,沒(méi)有的話也不要緊,自己動(dòng)手買(mǎi)個(gè)電路板搭一下也很方便,引出 ISP 接口,燒寫(xiě)程序十分容易,然后將 I/O 口引出擴(kuò)展也很方便。
學(xué)習(xí)單片機(jī)的其它幾個(gè)注意點(diǎn):
1 .理論與實(shí)踐并重
對(duì)一個(gè)初學(xué)單片機(jī)的人來(lái)說(shuō),如果按教科書(shū)式的學(xué)法,上來(lái)就是一大堆指令、名詞,學(xué)了半天還搞不清這些指令起什么作用,也許用不了幾天就會(huì)覺(jué)得枯燥乏味以致半途而廢。所以學(xué)習(xí)與實(shí)踐結(jié)合是一個(gè)好方法,邊學(xué)習(xí)、邊演練,循序漸進(jìn),這樣用不了幾次就能將所用到的指令理解、吃透、扎根于腦海,甚至 “ 根深蒂固 ” 。也就是說(shuō),當(dāng)你學(xué)習(xí)完幾條指令后 ( 一次數(shù)量不求多,只求懂 ) ,接下去就該做實(shí)驗(yàn)了,通過(guò)實(shí)驗(yàn),使你感受到剛才的指令產(chǎn)生的控制效果,眼睛看得見(jiàn) ( 燈光 ) 、耳朵聽(tīng)得到 ( 聲音 ) ,更能深刻理解指令是怎樣轉(zhuǎn)化成信號(hào)去實(shí)現(xiàn)控制的,通過(guò)實(shí)驗(yàn)看到自己所學(xué)的成果不僅有一種成就感也能提升你對(duì)單片機(jī)的興趣。說(shuō)句實(shí)在話,單片機(jī)與其說(shuō)是學(xué)出來(lái)的,還不如說(shuō)是做實(shí)驗(yàn)練出來(lái)的,何況做實(shí)驗(yàn)本身也是一種學(xué)習(xí)過(guò)程。因此邊學(xué)邊練的學(xué)習(xí)方法,效果特別好。
2 .合理安排時(shí)間持之以恒
學(xué)習(xí)單片機(jī)不能 “ 三天打魚(yú)、兩天曬網(wǎng) ” ,要有持之以恒的毅力與決 4 心。學(xué)習(xí)完幾條指令后,就應(yīng)及時(shí)做實(shí)驗(yàn),融匯貫通,而不要等幾天或幾個(gè)星期之后再做實(shí)驗(yàn),這樣效果不好甚至前學(xué)后忘。另外要有打 “ 持久戰(zhàn) ” 的心理準(zhǔn)備,不要興趣來(lái)時(shí)學(xué)上幾天,無(wú)興趣時(shí)涼上幾星期。學(xué)習(xí)單片機(jī)很重要的一點(diǎn)就是持之以恒。
3 .遇到問(wèn)題耐心檢查
單片機(jī)有軟硬件兩方面的內(nèi)容,有時(shí)一個(gè)程序怎么調(diào)都不出效果,然而從理論分析卻又是對(duì)的,這是就要仔細(xì)找原因了,學(xué)習(xí)單片機(jī)經(jīng)常碰到很多問(wèn)題,有時(shí)一兩天都不能解決,這是就要有耐心,從底層找起,相信每找出一個(gè)錯(cuò)誤都會(huì)有一個(gè)新的收獲。切不可輕言放棄!??!
4 .對(duì)只短暫學(xué)過(guò)一遍的知識(shí),充其量只比浮光掠影稍好。因此,較好的方法是過(guò)一段時(shí)間后 (1-2 個(gè)月 ) 再重新學(xué)一遍,學(xué)過(guò)的知識(shí)要經(jīng)常運(yùn)用,這樣反復(fù)循環(huán)幾次就能徹底弄懂消化,永不忘卻。
5 .要進(jìn)行適當(dāng)投資購(gòu)買(mǎi)實(shí)驗(yàn)器材及書(shū)籍資料
單片機(jī)技術(shù)含金量高,一旦學(xué)會(huì)后,給你帶來(lái)的效益當(dāng)然也高,無(wú)論是應(yīng)聘求職還是自起爐灶開(kāi)廠辦公司,其前景都光明無(wú)限。因此在學(xué)習(xí)時(shí)要舍得適當(dāng)投資購(gòu)買(mǎi)必要的學(xué)習(xí)、實(shí)驗(yàn)器材。另外還要經(jīng)常去科技圖書(shū)店看看,購(gòu)買(mǎi)一些適合自己學(xué)習(xí)、提高的書(shū)籍。一本好的書(shū)籍真的很重要,可以隨時(shí)翻閱,隨時(shí)補(bǔ)充不懂或遺忘的知識(shí)。
學(xué)習(xí)使用單片機(jī)就是理解單片機(jī)硬件結(jié)構(gòu),以及內(nèi)部資源的應(yīng)用,在匯編或C語(yǔ)言中學(xué)會(huì)各種功能的初始化設(shè)置,以及實(shí)現(xiàn)各種功能的程序編制。
第一步:數(shù)字I/O的使用
使用按鈕輸入信號(hào),發(fā)光二極管顯示輸出電平,就可以學(xué)習(xí)引腳的數(shù)字I/O功能,在按下某個(gè)按鈕后,某發(fā)光二極管發(fā)亮,這就是數(shù)字電路中組合邏輯的功能,雖然很簡(jiǎn)單,但是可以學(xué)習(xí)一般的單片機(jī)編程思想,例如,必須設(shè)置很多寄存器對(duì)引腳進(jìn)行初始化處理,才能使引腳具備有數(shù)字輸入和輸出輸出功能。每使用單片機(jī)的一個(gè)功能,就要對(duì)控制該功能的寄存器進(jìn)行設(shè)置,這就是單片機(jī)編程的特點(diǎn),千萬(wàn)不要怕麻煩,所有的單片機(jī)都是這樣。
第二步:定時(shí)器的使用 學(xué)會(huì)定時(shí)器的使用,就可以用單片機(jī)實(shí)現(xiàn)時(shí)序電路,時(shí)序電路的功能是強(qiáng)大的,在工業(yè)、家用電氣設(shè)備的控制中有很多應(yīng)用,例如,可以用單片機(jī)實(shí)現(xiàn)一個(gè)具有一個(gè)按鈕的樓道燈開(kāi)關(guān),該開(kāi)關(guān)在按鈕按下一次后,燈亮3分鐘后自動(dòng)滅,當(dāng)按鈕連續(xù)按下兩次后,燈常亮不滅,當(dāng)按鈕按下時(shí)間超過(guò)2s,則燈滅。數(shù)字集成電路可以實(shí)現(xiàn)時(shí)序電路,可編程邏輯器件(PLD)可以實(shí)現(xiàn)時(shí)序電路,可編程控制器(PLC)也可以實(shí)現(xiàn)時(shí)序電路,但是只有單片機(jī)實(shí)現(xiàn)起來(lái)最簡(jiǎn)單,成本最低。
定時(shí)器的使用是非常重要的,邏輯加時(shí)間控制是單片機(jī)使用的基礎(chǔ)。
第三步:中斷
單片機(jī)的特點(diǎn)是一段程序反復(fù)執(zhí)行,程序中的每個(gè)指令的執(zhí)行都需要一定的執(zhí)行時(shí)間,如果程序沒(méi)有執(zhí)行到某指令,則該指令的動(dòng)作就不會(huì)發(fā)生,這樣就會(huì)耽誤很多快速發(fā)生的事情,例如,按鈕按下時(shí)的下降沿。要使單片機(jī)在程序正常運(yùn)行過(guò)程中,對(duì)快速動(dòng)作做出反應(yīng),就必須使用單片機(jī)的中斷功能,該功能就是在快速動(dòng)作發(fā)生后,單片機(jī)中斷正常運(yùn)行的程序,處理快速發(fā)生的動(dòng)作,處理完成后,在返回執(zhí)行正常的程序。中斷功能使用中的困難是需要精確地知道什么時(shí)候不允許中斷發(fā)生(屏蔽中斷)、什么時(shí)候允許中斷發(fā)生(開(kāi)中斷),需要設(shè)置哪些寄存器才能使某種中斷起作用,中斷開(kāi)始時(shí),程序應(yīng)該干什么,中斷完成后,程序應(yīng)該干什么等等。
中斷學(xué)會(huì)后,就可以編制更復(fù)雜結(jié)構(gòu)的程序,這樣的程序可以干著一件事,監(jiān)視著一件事,一旦監(jiān)視的事情發(fā)生,就中斷正在干的事情,處理監(jiān)視的事情,當(dāng)然也可以監(jiān)視多個(gè)事情,形象的比喻,中斷功能使單片機(jī)具有吃著碗里的,看著鍋里的功能。
以上三步學(xué)會(huì),就相當(dāng)于降龍十八掌武功,會(huì)了三掌了,可以勉強(qiáng)護(hù)身。
第四步:與PC機(jī)進(jìn)行RS232通信
單片機(jī)都有USART接口,特別是MSP430系列中很多型號(hào),都具有兩個(gè)USART接口。USART接口不能直接與PC機(jī)的RS232接口連接,它們之間的邏輯電平不同,需要使用一個(gè)MAX3232芯片進(jìn)行電平轉(zhuǎn)換。
USART接口的使用是非常重要的,通過(guò)該接口,可以使單片機(jī)與PC機(jī)之間交換信息,雖然RS232通信并不先進(jìn),但是對(duì)于接口的學(xué)習(xí)是非常重要的。正確使用USART接口,需要學(xué)習(xí)通信協(xié)議,PC機(jī)的RS232接口編程等等知識(shí)。試想,單片機(jī)實(shí)驗(yàn)板上的數(shù)據(jù)顯示在PC機(jī)監(jiān)視器上,而PC機(jī)的鍵盤(pán)信號(hào)可以在單片機(jī)實(shí)驗(yàn)板上得到顯示,將是多么有意思的事情?。?
第五步:學(xué)會(huì)A/D轉(zhuǎn)換
MAP430單片機(jī)帶有多通道12位A/D轉(zhuǎn)換器,通過(guò)這些A/D轉(zhuǎn)換器可以使單片機(jī)操作模擬量,顯示和檢測(cè)電壓、電流等信號(hào)。學(xué)習(xí)時(shí)注意模擬地與數(shù)字地、參考電壓、采樣時(shí)間,轉(zhuǎn)換速率,轉(zhuǎn)換誤差等概念。
使用A/D轉(zhuǎn)換功能的簡(jiǎn)單的例子是設(shè)計(jì)一個(gè)電壓表。
第六步:學(xué)會(huì)PCI、I2C接口和液晶顯示器接口
這些接口的使用可以使單片機(jī)更容易連接外部設(shè)備,在擴(kuò)展單片機(jī)功能方面非常重要。
第七步:學(xué)會(huì)比較、捕捉、PWM功能
這些功能可以使單片機(jī)能夠控制電機(jī),檢測(cè)轉(zhuǎn)速信號(hào),實(shí)現(xiàn)電機(jī)調(diào)速器等控制起功能。
如果以上七步都學(xué)會(huì),就可以設(shè)計(jì)一般的應(yīng)用系統(tǒng),相當(dāng)于學(xué)會(huì)十招降龍十八掌,可以出手攻擊了。
第八步:學(xué)習(xí)USB接口、TCP/IP接口、各種工業(yè)總線的硬件與軟件設(shè)計(jì)學(xué)習(xí)USB接口、TCP/IP接口、各種工業(yè)總線的硬件與軟件設(shè)計(jì)是非常重要的,因?yàn)檫@是當(dāng)前產(chǎn)品開(kāi)發(fā)的發(fā)展方向。