一、前言 很多單片機(jī)初學(xué)者與我交流時總說的一句話是我現(xiàn)在是單片機(jī)初學(xué)者,我怎樣才能更快的學(xué)好單片機(jī),我該從哪方便入手。對于這個問題 ,現(xiàn)在就我自己如何學(xué)單片機(jī),如何入門,如何熟練談?wù)勏敕ā?br /> 先說單片機(jī),現(xiàn)在用的比較多的以51為內(nèi)核的8位單片機(jī)(考慮到成本及引腳資源在實際開發(fā)中用的51單片機(jī)型號不一),它的學(xué)習(xí)資料 非常多,且學(xué)習(xí)成本非 常低,可能有些初學(xué)者會說企業(yè)里用的不是51單片機(jī),更多的是松翰、義隆什么,但是我想說的是那些單片機(jī)的輔助 開發(fā)工具你有嗎。51單片機(jī)對于智能電子技 術(shù)的入門學(xué)習(xí)是非常有優(yōu)勢,成本低,開發(fā)簡單,一線下載程序,ARM太神秘,PLC太高貴,想來 想去還是51,曾經(jīng)有過AVR和PIC,但是現(xiàn)在51也不 賴。 那怎樣才能更快更好的學(xué)好單片機(jī)呢? 單片機(jī)作為集電子技術(shù)與計算機(jī)編程技術(shù)為一體是一項非常重視動手實踐的科目,如果你是單片機(jī)高手,那么說明你也是計算機(jī)編程和電 子技術(shù)高手。 二、學(xué)習(xí)單片機(jī)一定要看書 不能總是看書,但是學(xué)習(xí)它首先必須得看書,那這不很矛盾?因為從書中你需要了解單片機(jī)各個功能寄存器(比如引腳控制寄存器、定時 、中斷、串口相關(guān)寄存 器),控制單片機(jī)的核心是用程序去控制單片機(jī)的各個功能寄存器,給寄存器賦值二進(jìn)制數(shù)據(jù)0或者1,對于像中斷、 定時器、串口、AD轉(zhuǎn)換等內(nèi)部資源寄存器, 單片機(jī)也可以通過二進(jìn)制數(shù)據(jù)0和1進(jìn)行設(shè)置和使用。比如單片機(jī)引腳寄存器P1,語句P1=0xfe;( MOV P1,#0FEH)指控制單片機(jī)P1口的第 一個引腳輸出低電平,其他引腳輸出高電平,外設(shè)電路根據(jù)高低電平工作。比如中斷允許寄存器IE, 語句IE=0x81;(MOV IE,#81H) 則說明 控制中斷打開總開關(guān)和外部中斷0的子開關(guān)。當(dāng)然了,單片機(jī)的寄存器還可以接受位控制,這樣編程 更方便。 至于看書,只需大概了解單片機(jī)各管腳、各個功能寄存器是干什么的能實現(xiàn)什么功能就夠了?這個非常重要,這也許是看單片機(jī)參考書最 主要目的之一。 第一次,第二次你可能看不明白,但這不要緊,因為還缺少實際的感觀認(rèn)識。通過接下來的實驗就可以非常感觀的認(rèn)識,在這個過程一定 要花時間,學(xué)習(xí)程序不能硬背,但是學(xué)習(xí)寄存器一定要下功夫,理解他的功能所在,適當(dāng)?shù)臅r候當(dāng)單詞背下來。 推薦一本書,就這一本就足夠了,書名是《列說8051》,有匯編語言和C語言兩種版本,現(xiàn)在已經(jīng)是第三版本了。非常強(qiáng)悍的一本書,沒 有廣告,沒有局限,不 像培訓(xùn)手冊,更不像教科書,完全是一本非常好的參考書。我用一個五一假期的時間看完了這本書,真的當(dāng)時看完后 ,覺得自己已經(jīng)是單片機(jī)高手了,很多曾經(jīng)抽象 的知識不在抽象。書中圖文并茂,內(nèi)容安排緊張有序,并非市面上很多說教的技術(shù)文檔式的 書,什么學(xué)完概念,學(xué)指令,學(xué)完指令學(xué)接口,學(xué)完接口才知道,原來學(xué) 習(xí)單片機(jī)像在學(xué)天書,因為前面的章節(jié)已經(jīng)使你頭昏腦脹了,自己 看還好,一講更有問題。 那如何看書呢?第一步先根據(jù)書本的安排循序漸進(jìn)的看完前兩章,在你腦子開始發(fā)熱,覺得自己已經(jīng)是工程師的時候,接下來一定是實踐 ,一定是實踐啊,這是非常 非常關(guān)鍵的,當(dāng)然了實踐并非一定是左手電烙鐵右手萬能板的那種,也可以是仿真軟件Proteus,或者是自己自己 電路原理路的簡單單片機(jī)實驗板(千萬不要 用那種有貼片器件很多,看半天看不清電路連接的那種)。三國期間,諸葛亮揮淚斬馬謖的重典 告訴我們紙上談兵害人害己,學(xué)習(xí)單片機(jī)也一樣,很多相關(guān)專業(yè)的研 究生甚至博士生直到畢業(yè)都不清楚單片機(jī)的IO口的分布,不知分布談何 開發(fā)。 只要過了第一關(guān),后面的路就好走,萬事起步難啊。 第二:你身邊如果有單片機(jī)入門者,動手能力比較強(qiáng),請他幫忙,搭個簡單的單片機(jī)最小電路,哪怕是控制一個LED閃爍的電路。只要在 你眼皮底下經(jīng)過電路設(shè) 計、程序編寫、程序下載都通過了,那你就要感謝他一輩子,因為你已經(jīng)在入門了。對于他們來說,做個單片機(jī)的最 小系統(tǒng)板是輕而易舉,而對于初學(xué)者可就難多, 中間的一層窗戶紙破了什么都簡單了。因為在這個過程中,你學(xué)會了如何下載程序到單片機(jī) 內(nèi)部,如何識別單片機(jī),如何設(shè)計單片機(jī)最小電路。為什么有很多電子和 計算機(jī)專業(yè)的學(xué)生不好找工作,因為他們中很多同學(xué)在將自己簡歷 設(shè)計的眉飛色舞的時候,他還沒有見過單片機(jī)單片機(jī)。 因為只有對硬件了解,才能熟練運(yùn)用。只有知道程序是如何被下載的,才會清楚為什么要寫單片機(jī)控制程序,這個動力來自于哪里,來至 于心里有底。 單片機(jī)編程就是與單片機(jī)對話,如果不知道對方誰,有沒有再聽,你還會有說話的沖動嗎。當(dāng)然了如果沒有這樣的人,還是那句話,在網(wǎng) 上多找?guī)讉最小電路電路原 理圖,在面包板上焊接就可以了。當(dāng)然了這個也不會的,那建議你一定要買一塊功能簡單的實驗板,以后單片機(jī) 的學(xué)習(xí)實驗及項目測試驗都用的上。 四、如何邁入單片機(jī)開發(fā)世界 有了單片機(jī)實驗板你就要多練習(xí),最好是自己有臺電腦,少下載幾部電影,少網(wǎng)絡(luò)游戲,把實驗板和電腦連好,安裝上必備的軟件 (Keil Proteus STCisp),下載參考程序,并修改參考程序,從最簡單的交通燈實驗開始,等你發(fā)現(xiàn)你能控制交通燈,并了解交通的軟硬設(shè) 計 的時其實你已經(jīng)入門了,你會發(fā)現(xiàn)單片機(jī)是多么迷人的東西啊,這不是在學(xué)習(xí)知識,而是在提升自身的價值。 用途那么廣的交通設(shè)計都不在話下,你還會為自己身無絕技而煩擾嗎?還會覺得自己什么都不會嗎?計算機(jī)編程、電子技術(shù)的專業(yè)知識都 用上了啊。 當(dāng)你編寫的程序按你的意愿實現(xiàn)時,比做什么事都開心,那種學(xué)習(xí)的收獲感和成就感還有充實感是非常難得的。然后讓數(shù)碼管亮起來顯示 你所需要的數(shù)字,都到這一步,你已經(jīng)不能自拔了,你已經(jīng)開始考慮你這輩子要走哪一行了。 入門入門,什么才叫入門,要對得起自己啊。 我的要求很簡單,單片機(jī)是否入門只有三點(diǎn): 1、獨(dú)立掌握Keil+Proteus兩大軟件的使用方法并設(shè)計出仿真版的交通燈。 2、獨(dú)立在面包板上搭接單片機(jī)最小電路,并通過下載器將控制一個LED閃爍的HEX文件下載進(jìn)去看到效果。 3、清楚自己單片機(jī)學(xué)的動力所在,并為自己的學(xué)習(xí)做一個規(guī)劃。 但是在寫程序的時候你肯定會遇到很多問題,而這時你再去翻書找,這其中你會找你之前學(xué)過的編程的書,還有數(shù)電模電的書,你會發(fā)現(xiàn) 原來之前學(xué)的知識還是有用 的。遇到不懂再去找以前學(xué)過的書本查閱,這才是 “溫故而知新,可以為師矣”的大道理啊。知識必須用于現(xiàn)實 生活中,解決實際問題,用單片機(jī)設(shè)計個簡易的家 電定時器、紅外遙控器什么,這樣才能發(fā)揮它的作用,好好想想,上了這么多年大學(xué),探 索了那么久,猶豫徘徊,天天上課,在課堂上學(xué)到了什么?、 是不是為了期末60分的考試而忙碌,僥幸靠了90分,很高興啊,在別人面前吹自己專業(yè)知識如何如何學(xué)習(xí)的好,殊不知,大學(xué)考試不像高 中考試啊,拿到獎學(xué)金 又怎么樣。下學(xué)期開學(xué)回來一想,所學(xué)的知識已經(jīng)忘得一干二凈。學(xué)到什么了?為什么要推薦學(xué)習(xí)單片機(jī),因為單片 機(jī)是工科生學(xué)的,集合計算機(jī)編程電子技術(shù)及多 門控制語言為一體的學(xué)科,與其說是在學(xué)習(xí)單片機(jī),不如說是在學(xué)習(xí)一個大學(xué)科。 五、學(xué)習(xí)單片機(jī)是匯編編程還是C語言編程 關(guān)于用匯編和C語言編程的問題。 這個問題困惱很多人,但是我覺得學(xué)習(xí)匯編語言和C語言就像一個人進(jìn)入社會要學(xué)習(xí)方言和普通話一樣。都要掌握,孰重孰輕自己把握。 可能主要是學(xué)校教學(xué)和部分 教材引導(dǎo),大一開了C語言編程,沒等學(xué)生知道到底C語言有什么實際用途,馬上其他的語言一下子過來了。即使 開設(shè)了專門單片機(jī)課程,但是課程的內(nèi)容與技術(shù)文 檔很相識,程序雖然很多,但完整的不多,所以學(xué)完了也不知道,到底為什么要學(xué)習(xí)編程 。 很多同學(xué)大一就開設(shè)了C語言的課,我也上過,但是那時就是天天幾乘幾,幾加幾啊,求個階乘啊,用C語言去解決小學(xué)數(shù)學(xué)問題,每周兩 次上機(jī),對著書本不停的敲打,完全在練習(xí)打字速度。下課了也不知道自己到底掌握了什么,掌握了這個有什么用途。學(xué)完了有什么用? 如果在面試的時候,老板問,你學(xué)過編程嗎,你腦子里馬上是什么“C語言,VC什么VB。很多,什么C語言是基礎(chǔ)是面向工程的,什么VC是 高級面向?qū)ο?的”,但是老板又問,你能將你所學(xué)習(xí)的C語言應(yīng)用到實際開發(fā)中,比如設(shè)計一個定時報警器的C語言。這下傻了,老師沒教過 啊。 單片機(jī)編程用C語言或匯編語言都可以,但是我建議用C語言比較好,模塊化管理編程方便,移植性強(qiáng),適合編寫大程序。如果原來有C語 言的基礎(chǔ)那學(xué)起來會更 好,如果沒有,也可以邊學(xué)單片機(jī)邊學(xué)C語言。雖然很多人是從匯編語言開始接觸單片機(jī)的,但是寫小程序匯編語言還 是簡單的,如果要實現(xiàn)一些算法,那匯編語言 就不簡單了。雖說C語言編譯以后代碼量明顯比匯編長,而且執(zhí)行效率也沒有匯編語言高,但是 在以前單片機(jī)開發(fā)中芯片工藝的限制,及單片機(jī)主頻的限制,很多單 片機(jī)內(nèi)部存儲器小的可伶,主頻也小得可伶。但是現(xiàn)在不一樣了,芯片 內(nèi)部的存儲器根不不在乎這點(diǎn)差別。主頻也越來越高。 那匯編語言是不是不學(xué)了呢?不是的,一定要學(xué)習(xí),有兩方面首先入門單片機(jī)的時候要用匯編語言,它的語法簡單。第二如果你要做單片 機(jī)的程序的高級設(shè)計師,那 匯編語言是非掌握不可的,很多像高級單片機(jī)ARM都是匯編語言作為引導(dǎo)代碼的,還有就是很多新出品的單片機(jī)起 先也是先有匯編語言編譯器之后才有C語言編譯 器。所以,我覺得對于單片機(jī)學(xué)習(xí)匯編語言入門,C語言精通,匯編語言再精通。 有句話很有道理“單片機(jī)C語言高手絕對是匯編語言高手,但是匯編語言高手不一定是C語言高手” 最后,對于單片機(jī)的學(xué)習(xí),入門為先,入門了以后就要去關(guān)注市場,關(guān)注企業(yè),企業(yè)需要什么樣的人才,我想有了基礎(chǔ)以后在面試之前了 解下企業(yè)所需要的單片機(jī)類型,很快就上手了,畢竟學(xué)習(xí)是相同的。 |
輕松就業(yè),高薪實習(xí),讓眾多有志往單片機(jī)、ARM/嵌入式系統(tǒng)、FPGA方向發(fā)展的哥們迅速提升職業(yè)技能, 經(jīng)過系統(tǒng)提升后,保證就業(yè)5-10K.更多疑問咨詢:Q2532176025 13397813997黃! |