|
一、明確為什么要學(xué)單片機(jī) 如果你對(duì)單片機(jī)一無(wú)所知,是因?yàn)楣ぷ髟蚨黄热W(xué)習(xí)單片機(jī),那我建議你去買(mǎi)個(gè)開(kāi)發(fā)板,照著附送的光盤(pán)里的程序運(yùn)行單片機(jī),這樣可以比較快的上手。 如果你是因?yàn)榕d趣去學(xué)習(xí)單片機(jī),那么恭喜你,你已經(jīng)站在的單片機(jī)的大門(mén)口,接下來(lái)只要稍稍努力一下就好了。 學(xué)習(xí)單片機(jī),學(xué)習(xí)arm,學(xué)習(xí)嵌入式系統(tǒng),學(xué)習(xí)這些東西并不是為了追趕潮流,學(xué)習(xí)他們只是增加自己的見(jiàn)識(shí),提高自己的技術(shù)罷了,盲目的追求和無(wú)目的的學(xué)習(xí),最后只會(huì)讓自己一無(wú)所獲。 如果你是高中初中生,想學(xué)習(xí)單片機(jī),我建議你不要這么早開(kāi)始學(xué)習(xí)。先學(xué)好數(shù)學(xué),物理,化學(xué)這三門(mén)課;如果可以的話(huà),把英語(yǔ)、計(jì)算機(jī)基礎(chǔ)打好,然后再進(jìn)一步學(xué)好語(yǔ)文和政治。 數(shù)學(xué)是學(xué)習(xí)理工科的技術(shù),單片機(jī)世界中的很多知識(shí)和物理化學(xué)結(jié)合的很緊密,所以這三門(mén)課是必學(xué)的; 學(xué)好英語(yǔ)是了能看懂一些外文資料,單片機(jī)也離不開(kāi)計(jì)算機(jī),這些都可以輔助自己學(xué)習(xí)單片機(jī);至于為什么要學(xué)習(xí)語(yǔ)文和政治,學(xué)好這兩門(mén)課是為了讓你能清楚的表達(dá)出自己的問(wèn)題和想法,很多人在發(fā)帖提問(wèn)的時(shí)候不能清楚的表達(dá)自己的意思,導(dǎo)致別人給出錯(cuò)誤的解決方法。 如果你是大一大二的學(xué)習(xí),那正是一個(gè)學(xué)習(xí)單片機(jī)的好時(shí)光。在大學(xué)的課余時(shí)間相對(duì)較多,環(huán)境也好,很適合去學(xué)習(xí)某一樣?xùn)|西。所以如果這個(gè)時(shí)候開(kāi)始學(xué)習(xí)單片機(jī),等大學(xué)4年出來(lái)后,你的功底將比同齡人強(qiáng)很多。 有些人習(xí)慣上來(lái)就去買(mǎi)開(kāi)發(fā)板,我認(rèn)為這樣做并不好。因?yàn)槭褂瞄_(kāi)發(fā)板,練習(xí)的只有程序這一個(gè)部分,而對(duì)硬件的研究卻相對(duì)較少.所以我建議,從一些基礎(chǔ)的板焊起,這樣不但可以練習(xí)軟硬件,還可以學(xué)會(huì)一種調(diào)試開(kāi)發(fā)板的方法,更可以練習(xí)焊接技術(shù),一舉而多得,何樂(lè)而不為呢? 二、態(tài)度問(wèn)題 我一直主張學(xué)習(xí)一定要有個(gè)好的態(tài)度。學(xué)習(xí)單片機(jī),最忌諱心浮氣燥,遇到問(wèn)題時(shí)在網(wǎng)上到處發(fā)帖求人,不去自己解決問(wèn)題。 在
剛開(kāi)始學(xué)的時(shí)候,不要怕自己會(huì)犯錯(cuò)誤,程序調(diào)不通,或者燒幾個(gè)單片機(jī),是非常正常的事情。基礎(chǔ)需要自己一點(diǎn)一點(diǎn)的積累,當(dāng)積累的一定的數(shù)量后,自然就會(huì)有
質(zhì)的飛躍。但如果你遇到問(wèn)題后就到處求人,自己不動(dòng)腦筋的去解決問(wèn)題,你就決不可能有質(zhì)的飛躍。而且,誰(shuí)都有這么一個(gè)初學(xué)階段,沒(méi)什么大不了的 基礎(chǔ)知識(shí),在我們學(xué)習(xí)單片機(jī)的過(guò)程中十分重要。打好基礎(chǔ),就可以從一個(gè)點(diǎn)出發(fā),逐漸觸及其他知識(shí)。這也就是為什么網(wǎng)上有人認(rèn)為先學(xué)好51單片機(jī)再去學(xué)arm會(huì)更好。 三、開(kāi)始學(xué)習(xí)前你需要了解的幾個(gè)概念 單片機(jī):?jiǎn)纹瑱C(jī)是個(gè)廣義的叫法,mcs51系列,96系列,arm系列,msp430系列等等,都可以叫單片機(jī)。單片機(jī)其實(shí)就是指那些把輸入輸出部分,控制器,運(yùn)算器等各個(gè)部件集成到一個(gè)芯片的ic。國(guó)外也叫SingalChip。至于把單片機(jī)叫做mcu,我覺(jué)得因?yàn)?/span>51系列單片機(jī)多用于工業(yè)控制領(lǐng)域,所以叫micro control unit。 燒錄: 早期的單片機(jī),要執(zhí)行某個(gè)程序的話(huà),需要從單片機(jī)以外的地方(一般是外部存儲(chǔ)器)獲取指令; 現(xiàn)代的單片機(jī)內(nèi)部集成了存儲(chǔ)器,執(zhí)行時(shí)可以直接從內(nèi)部存儲(chǔ)器獲取指令。而這些指令是如何寫(xiě)進(jìn)內(nèi)部或外部存儲(chǔ)器中的呢?當(dāng)然是通過(guò)一種比較特殊的手段寫(xiě)入,這個(gè)寫(xiě)入過(guò)程就稱(chēng)為燒錄 仿真: 單片機(jī)獲取了指令后,就會(huì)執(zhí)行下去,執(zhí)行過(guò)程中,你無(wú)法看到單片機(jī)內(nèi)部的狀態(tài)。現(xiàn)在我有這樣一個(gè)設(shè)備,這個(gè)設(shè)備可以模擬單片機(jī)的全部功能,我通過(guò)這個(gè)設(shè)備執(zhí)行某個(gè)程序,這樣我就可以查看單片機(jī)內(nèi)部的狀態(tài)了,這個(gè)操作程為仿真。 燒錄器&仿真器: 燒錄器是用來(lái)給存儲(chǔ)器寫(xiě)入程序用的,仿真器是用來(lái)模擬單片機(jī)運(yùn)行情況的 下載線(xiàn): 當(dāng)單片機(jī)內(nèi)部具有了存儲(chǔ)器后,通過(guò)燒錄器可以給它的內(nèi)部存儲(chǔ)器寫(xiě)入程序;這種寫(xiě)入方式是并行寫(xiě)入的,也就是一次寫(xiě)入一個(gè)字節(jié)。這樣會(huì)帶來(lái)一些不方便,所以就有廠(chǎng)家使用了串行寫(xiě)入方式,也就是每次寫(xiě)入一個(gè)位。上位機(jī)(PC)只需要和單片機(jī)連接5跟線(xiàn)就可以對(duì)單片機(jī)的內(nèi)部存儲(chǔ)器寫(xiě)入程序了。這樣的5根線(xiàn)就組成了下載線(xiàn)。(為什么不是6根,可以看下文的解釋?zhuān)?/span> 明白了以上幾個(gè)概念后,再去學(xué)習(xí)單片機(jī)會(huì)更快。 如果你對(duì)上面的幾個(gè)概念感覺(jué)仍然很模糊,就請(qǐng)不要再去思考它們了,隨著你學(xué)習(xí)的深入,上面的幾個(gè)概念自然會(huì)明白的。 四、學(xué)習(xí)前的準(zhǔn)備工作 首先,你要準(zhǔn)備幾個(gè)必要的東西。 書(shū): 一本好的書(shū)將指導(dǎo)自己如何開(kāi)始學(xué)習(xí)。我推薦兩本:胡漢才的《單片機(jī)原理及其接口技術(shù)》 清華大學(xué)出版社;還有一本是何立民的《MCS51單片機(jī)接口技術(shù)》(好象是叫這個(gè)名字,很老的一本書(shū)了)。 胡汗才的那本用來(lái)學(xué)習(xí),何教授那本是用來(lái)參考的 工具: 電烙鐵和萬(wàn)用表是必備的,除此之外是螺絲刀等其他小工具,都會(huì)用的到的,可能你還需要準(zhǔn)備一些萬(wàn)用電路板,來(lái)焊接電路.如果想自己做電路板的話(huà),可以買(mǎi)一些敷銅板.這些在電子市場(chǎng)都可以買(mǎi)到的.如果沒(méi)有條件到電子市場(chǎng),可以考慮郵購(gòu),或者,寫(xiě)信給我,我也可以幫忙購(gòu)買(mǎi)的,當(dāng)然了,我?guī)兔?gòu)買(mǎi)的話(huà),價(jià)格和郵費(fèi)需要你自己掏了~~ 軟件: keil(這個(gè)是編譯程序不可少的) , Easy51Pro宇宙版(用來(lái)下載程序的).這兩個(gè)軟件在網(wǎng)上都可以下到. 準(zhǔn)備好上面幾個(gè)東西后,再需要準(zhǔn)備的就是一個(gè)下載線(xiàn)和一個(gè)開(kāi)發(fā)板。下載線(xiàn)的電路圖在這里可以找到() 注意一下,圖中接了6根線(xiàn),如果去掉那個(gè)244不用,只用5根線(xiàn)就可以了。那各244是用來(lái)保護(hù)并口的,所以最好加上,否則燒并口了不要怪我。 五、 動(dòng)工了。。。 雖然是開(kāi)始動(dòng)工了,你的那個(gè)下載線(xiàn)準(zhǔn)備好了嗎? 沒(méi)有的話(huà)趕快先焊一根吧,這個(gè)可是相當(dāng)重要的哦 有了下載線(xiàn)后,你需要下面幾個(gè)元件 1、一片AT89S51單片機(jī),大概8塊錢(qián)左右 2、一個(gè)12MHz或11.0592MHz的晶振。 3、2個(gè)22pF的電容 4、一個(gè)10uf的電容和一個(gè)10k的電阻 5、一小塊電路板,一個(gè)插針 總的成本大概是在15塊,怎么樣,區(qū)區(qū)15塊就可以讓你進(jìn)如單片機(jī)的世界,是不是很劃算。 呵呵,不過(guò)別想的那么好,開(kāi)始是很便宜,但想深入學(xué)習(xí)就要做長(zhǎng)期打算了,成本有時(shí)是很高的哦~ 準(zhǔn)備好上面的東西后,按照這里http://www.denmoz.com/bbs/dpj-33274-1.html 的電路圖焊好電路板
那個(gè)J1就是用和下載線(xiàn)相連的,注意不要接錯(cuò) 啟動(dòng)Keil,建立工程,注意輸出格式是hex文件,輸入下面的程序 mov p1,0x55; jb $ end 不知道什么意思不要緊,先這么做著吧。編譯后,你就可以得到hex文件(如何使用keil,請(qǐng)先從網(wǎng)上看相關(guān)的文章吧) 焊好之后,啟動(dòng)Easy51Pro,(如何使用就不用我這里羅嗦了),設(shè)置編程器類(lèi)型為Atmel ByteBlaster下載線(xiàn)。打開(kāi)剛才你編譯得到的hex文件,然后點(diǎn)“自動(dòng)完成” 就可以了 以上的操作,就稱(chēng)之為下載。如果順利的話(huà),Easy51Pro會(huì)提示成功,然后用萬(wàn)用表依次測(cè)量P1口,你會(huì)得到 高-低-高-低-高-低-高-低這樣的電平。 如果Easy51Pro提示有問(wèn)題,或你得不到這樣的輸出結(jié)果,那就需要進(jìn)行檢查了。 六、焊的板不能工作。。。。 一般來(lái)說(shuō),按照上面的電路圖,只要焊的沒(méi)有問(wèn)題,一般都能正常工作。但也不能排除少數(shù)情況。我把可能出現(xiàn)的情況列出來(lái),解決辦法不用說(shuō)大家也該知道了。1-4表示了一個(gè)檢測(cè)順序,一般來(lái)說(shuō),上一個(gè)檢測(cè)點(diǎn)對(duì)下一個(gè)檢查點(diǎn)是有影響的。 1、電源。這個(gè)電路的工作電壓范圍是3.3-7v之間,低了單片機(jī)就不工作了,高了就要燒單片機(jī)了。一般都是5v供電的 2、EA線(xiàn)是否接高? 由于我們使用的單片機(jī)內(nèi)部的存儲(chǔ)器,所以這根線(xiàn)一定要接高 3、斷開(kāi)電源,萬(wàn)用表的黑標(biāo)筆接地,紅標(biāo)筆接在9引腳上,然后上電,看是否能測(cè)量到一個(gè)大于0.5v的瞬間電壓。 這個(gè)瞬間電壓是給單片機(jī)復(fù)位用的,沒(méi)有這個(gè)復(fù)位信號(hào),單片機(jī)是不會(huì)開(kāi)始工作的 4、給電路供電后,萬(wàn)用表的黑標(biāo)筆接地,紅標(biāo)筆依次測(cè)量18、19兩個(gè)引腳,有沒(méi)有測(cè)量到2v左右的電壓? 如果沒(méi)有,表示晶振部分沒(méi)有起振,有的話(huà)才算單片機(jī)的時(shí)鐘部分開(kāi)始工作了。 檢查完上面這幾個(gè)地方,對(duì)于我們焊的這個(gè)板,所有可能出現(xiàn)的問(wèn)題就都被排除了。如果這樣還不能正常的燒錄程序或執(zhí)行程序,那很有可能你的那個(gè)單片機(jī)掛掉了,換一個(gè)來(lái)試試。 這里有個(gè)小技巧:如果單片機(jī)沒(méi)有正常工作的話(huà),使用Easy51pro的時(shí)候,它會(huì)提示燒錄不成功,這個(gè)時(shí)候你就需要開(kāi)始檢查焊的那個(gè)電路板了,還有你焊的那個(gè)下載線(xiàn),都需要仔細(xì)檢查。而我們的那個(gè)小程序,這個(gè)時(shí)候還不需要檢查的。 現(xiàn)在,我來(lái)解釋一下那個(gè)小程序的意思 mov p1,0x55; 就是往P1口送0x55數(shù)據(jù),所以測(cè)量出來(lái)的結(jié)果就是高-低-高-低-高-低-高-低,這種交替電平 jb $ ; 這句是讓單片機(jī)反復(fù)執(zhí)行這條指令,這樣單片機(jī)就不會(huì)去執(zhí)行其他程序了,也就是常說(shuō)的“停機(jī)” end ; 表示程序結(jié)束 上面進(jìn)行的操作就是一個(gè)單片機(jī)初學(xué)者最開(kāi)始做的東西.因?yàn)榈饶銠z查到有那樣的交替電平后,表示你自己的單片機(jī)學(xué)習(xí)平臺(tái)已經(jīng)搭建好了,剩下的操作是要擴(kuò)充這個(gè)平臺(tái),利用這個(gè)平臺(tái)做實(shí)驗(yàn),以及修改這個(gè)平臺(tái)等. 當(dāng)然,上面的操作完成了最基礎(chǔ)的入門(mén).如果你想使自己能更加的入門(mén),則至少要完成下面的四個(gè)實(shí)驗(yàn): 1. 流水燈實(shí)驗(yàn). 其實(shí)就是在上面的操作上做一些改進(jìn).做這個(gè)實(shí)驗(yàn)是為了熟悉一下單片機(jī)的io口操作.另外,可以給自己一個(gè)感性上的認(rèn)識(shí),到底單片機(jī)執(zhí)行程序的速度有多快. 2.行列鍵盤(pán). 這是使用單片機(jī)做為輸入用的一個(gè)典型程序.雖然有很多通用的鍵盤(pán)掃描程序,但如果自己能設(shè)計(jì)出一個(gè)完美的程序來(lái),則說(shuō)明自己具有了一定的編程功底. 3.秒表. 這個(gè)是利用單片機(jī)定時(shí)器的一個(gè)實(shí)驗(yàn).做這個(gè)實(shí)驗(yàn)是為了熟悉單片機(jī)的內(nèi)部功能單元以及單片機(jī)的寄存器. 4.串口通訊. 這個(gè)是一個(gè)擴(kuò)展的實(shí)驗(yàn),用這個(gè)實(shí)驗(yàn)可以完成單片機(jī)和電腦通訊的操作,很值得練一練.同時(shí),也能反映出你搭建的平臺(tái)是否夠穩(wěn)定. 做完上面的實(shí)驗(yàn)后,自己就會(huì)具有一定的開(kāi)發(fā)能力了.接下來(lái)根據(jù)的實(shí)際做些小東西,多練練就好了 七、如何學(xué)好單片機(jī) 也許,學(xué)單片機(jī)學(xué)久后,就會(huì)發(fā)現(xiàn),自己有很長(zhǎng)一段時(shí)間沒(méi)有任何長(zhǎng)進(jìn)了,甚至發(fā)現(xiàn)自己好象已經(jīng)無(wú)法提高了,好象碰到什么問(wèn)題拿單片機(jī)都能解決,但實(shí)際做的時(shí)候卻有做不出來(lái)。如果碰到這樣的情況,你就要稍微注意了。你需要提高自己了。 單片機(jī)是一門(mén)很廣的學(xué)問(wèn),用佛教的一句話(huà)就是“ 至簡(jiǎn)至深 ”。 單片機(jī)很簡(jiǎn)單,總共才40個(gè)引腳,程序也好寫(xiě)。但單片機(jī)也很復(fù)雜,通過(guò)單片機(jī)可以做無(wú)限的擴(kuò)展。現(xiàn)代的任何一種微處理器,都會(huì)有51單片機(jī)的思路。 想學(xué)好單片機(jī),我覺(jué)得至少要做到以下幾點(diǎn) 1、養(yǎng)成一個(gè)好的心態(tài)。解決了難題不要驕傲,遇到困難不能放棄;不去求人要程序,也不要自己炫耀自己的技術(shù),等等 2、多看書(shū),多動(dòng)手。 書(shū)要廣泛的看,不要只看和單片機(jī)相關(guān)的書(shū),而是和電子相關(guān)的書(shū)都要看,比如c++ ,vc,vb,TCPIP, Internet, 數(shù)據(jù)結(jié)構(gòu),模擬電路,數(shù)字電路,english 等等。。因?yàn)檫@些東西都是和你所學(xué)的東西相關(guān)的,看的書(shū)越多,你解決問(wèn)題的思路就會(huì)越廣。練習(xí)的話(huà)可以利用你手邊的資源來(lái)操作。如果自己多注意一下的話(huà),會(huì)發(fā)現(xiàn)自己身邊有很東西可以拿來(lái)學(xué)習(xí)單片機(jī)的 3、多和其他人交流。多聽(tīng)取其他人的意見(jiàn)。即使對(duì)方說(shuō)的不對(duì),你也拿來(lái)和自己的思路對(duì)比一下,看看哪樣做會(huì)更好。 4、多上網(wǎng),從網(wǎng)上獲取知識(shí)。多去論壇,多去解決別人的問(wèn)題。 |