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