學習單片機的動機不外乎有四種:一是爲興趣愛好而學,二是爲專業而學;三是爲飯碗而學;四是在工做中被逼而學。不論是哪一種動機,因主修專業的不一樣以及電子基礎的深淺不一樣,對於不一樣的人可能採用不一樣的學習方法,根據筆者的親身學習經驗和教授徒弟學習的感覺,提出筆者的學習方法和步驟。算法
第一步:基礎理論知識學習編程
基礎理論知識包括模擬電路、數字電路和C語言知識。模擬電路和數字電路屬於抽象學科,要把它學好還得費點精神。在你學習單片機以前,以爲模擬電路和數字電路基礎很差的話,不要急着學習單片機,應該先回顧所學過的模擬電路和數字電路知識,爲學習單片機增強基礎。網絡
不然,你的單片機學習之路不只會很艱難和漫長,還可能半途而廢。筆者始終認爲,紮實的電子技術基礎是學好單片機的關鍵,直接影響單片機學習入門的快慢。工具
有些同窗以爲單片機很難,越學越複雜,最後學不下去了。有的同窗看書時彷佛明白了,但是動起手來卻一塌糊塗,究其緣由就是電子技術基礎沒有打好,首先被表面知識給困惑了。佈局
單片機屬於數字電路,其概念、術語、硬件結構和原理都源自數字電路,若是數字電路基礎紮實,對複雜的單片機硬件結構和原理就能容易理解,就能輕鬆地邁開學習的第一步,自信心也會樹立起來。學習
相反,基礎很差,這個看不懂那個也弄不明白,越學問題越多,越學越沒有信心。若是你以爲單片機很難,那就應該先放下單片機教材,去重溫數字電路,搞清楚觸發器、寄存器、門電路、COMS電路、時序邏輯和時序圖、進制轉換等理論知識。理解了這些知識以後再去看看單片機的結構和原理,我想你會大徹大悟,信心倍增。開發工具
模擬電路是電子技術最基礎的學科,她讓你知道什麼是電阻、電容、電感、二極管、三極管、場效應管、放大器等等以及它們的工做原理和在電路中的做用,這是學習電子技術必須掌握的基礎知識。翻譯
通常是先學習模擬電路再去學習數字電路。紮實的模擬電路基礎不只讓你容易看懂別人設計的電路,並且讓你的設計的電路更可靠,提升產品質量。設計
C語言知識並不難,沒有任何編程基礎的人均可以學,在我看來,初中生、高中生、中專生、大學生都能學會。固然,數學基礎好、邏輯思惟好的人學起來相對輕鬆一些。調試
C語言須要掌握的知識就那麼3個條件判斷語句、3個循環語句、3個跳轉語句和1個開關語句。別小看這10個語句,用他們組合造成的邏輯要多複雜有多複雜。學習時要一條語句一條語句的學,學一條活用一條,所有學過用過這些關鍵語句後,相信你的C基礎創建了。
當基礎打好之後,你會感受到單片機再也不難學了,並且越學越起勁。當單片機乖乖的依照你的邏輯思惟和算法去執行指令,實現預期控制效果的時候,成就感會讓你信心十足、夜以續日、廢寢忘食的投入到單片機的世界裏。能夠這麼說,紮實的電子技術基礎和C語言基礎能加強學習單片機信心,較快掌握單片機技術。
第二步:單片機實踐
這是真正學習單片機的過程,既讓人興奮又讓人疲憊,既讓人無奈又讓人不服,既讓人孤獨又讓人充實,既讓人氣憤又讓人欣慰,既有失落感又有成就感。
其中的酸甜苦辣只有學過的人深有體會。思想上要有刻苦學習的決心,硬件上要有一套完整的學習開發工具,軟件上要注重理論和實踐相結合。
1.有刻苦學習的決心
首先,明確學習目的。先認真回答兩個問題:我學單片機來作什麼?須要多長時間把它學會?這是你學單片機的動力。沒有動力,我想你堅持不了多久。
其次,端正學習心態。單片機學習過程是枯燥乏味、孤獨寂寞的過程。要知道,學習知識沒有捷徑,只有按部就班,腳踏實地,一步一個腳印,才能學到真功夫。
再次,要多動腦勤動手。單片機的學習具備很強的實踐性,是一門很注重實際動手操做的技術學科。不動手實踐你是學不會單片機的。最後,虛心交流。在單片機學習過程當中每一個人都會遇到無數不能解決的問題,須要你向有經驗的過來人虛心求教,不然,一味的本身埋頭摸索會走許多彎路,浪費不少時間。
2.有一套完整的學習開發工具
學習單片機是須要成本的。必須有一臺電腦、一塊單片機開發板(若是開發板不能直接下載程序代碼的話還得須要一個編程器)、一套視頻教程、一本單片機教材和一本C語言教材。
電腦是用來編寫和編譯程序,並將程序代碼下載到單片機上;開發板用來運行單片機程序,驗證明際效果;視頻教程就是手把手教你單片機開發環境的使用、單片機編程和調試。
對於單片機初學者來講,視頻教程必須看,要否則,哪怕把教材看了幾遍,仍是不知道如何下手,尤爲是院校裏的單片機教材,學了以後,面對真正的單片機時可能仍是一籌莫展;單片機教材和C語言教材是理論學習資料,備忘備查。不要爲了節約成本不用開發板而光用Protur軟件仿真調試,這和紙上談兵沒什麼區別。
3. 要注重理論和實踐相結合
單片機C語言編程理論知識並不深奧,光看書不動手也能明白。但在實際編程的時候就沒那麼簡單了。一個程序的造成不只須要有C語言知識,更多須要融入你我的的編程思路和算法。
編程思路和算法決定一個程序的優劣,是單片機編程的大問題,只有在實際動手編寫的時候纔會有深切的感悟。一個程序可否按照你的意願正常運行就要看你的思路和算法是否正確、合理。
若是程序不正常則要反覆調試(檢查、修改思路和算法),直到成功。這個過程耗時、費腦、疲精神,意志不堅強者每每被絆倒在這裏半途而廢。
學習編寫程序應該按照如下過程學習,效果會更好。看到例程題目先試着構思本身的編程思路,而後再看教材或視頻教程裏的代碼,研究人家的編程思路,注意與本身思路的差別;接下來就照搬人家的思路親自動手編寫這個程序,領會其中每一條語句的做用;對有疑問的地方試着按照本身的思路修改程序,比較程序運行效果,領會其中的奧妙。
每個例程都堅持按照這個過程學習,你很快會找到編程的感受,取其精華去其糟粕,長此以往會造成你獨特的編程思想。固然,剛開始,看別人的程序源代碼就像看天書同樣,只要硬着頭皮看,看到不懂的關鍵字和語句就翻書查閱、對照。只要能堅持下來,學習收穫會事半功倍。
在實踐過程當中不只要學會別人的例程,還要在別人的程序上改進和拓展,讓程序產生更強大的功能。同時,還要懂得經過查閱芯片數據手冊(DATASHEET)裏有關芯片命令和數據的讀寫時序來覈對別人例程的可靠性,若是你以爲例程不可靠就把它修改過來,成爲是你本身的程序。
不只如此,本身應該常常找些項目來作,以鞏固所學的知識和積累更多的經驗。
第三步:單片機硬件設計
當編寫本身的程序信手拈來、閱讀別人的程序可以發現問題的時候,說明你的單片機編程水平至關不錯了。接下來就應該研究的硬件了。硬件設計包括電路原理設計和PCB板設計。學習作硬件要比學習作軟件麻煩,成本更高,週期更長。
可是,學習單片機的最終目的是作產品開發----軟件和硬件相結合造成完整的控制系統。因此,作硬件也是學習單片機技術的一個必學內容。
電路原理設計涉及到各類芯片的應用,而這些芯片外圍電路的設計、典型應用電路和與單片機的鏈接等在芯片數據手冊(DATASHEET)都能找到答案,前提是要看得懂全英文的數據手冊。
不然,照搬別人的設計永遠落在別人的後面,你作的產品就沒有創意。電子技術領域的第一手資料(DATASHEET)都是英文,從第一手資料裏你所得到的知識多是在教科書、網絡文檔和課外讀物等所沒有的知識。
雖然有些資料也都是在DATASHEET的基礎上撰寫的,但內容不全面,甚至存在翻譯上的遺漏和錯誤。固然,閱讀DATASHEET須要具有必定的英文閱讀能力,這也是阻礙單片機學習者晉級的絆腳石。良好的英文閱讀能力能讓你在單片機技術知識的海洋裏自由遨遊。
作PCB板就比較簡單了。只要懂得使用Protel軟件或 AltimDesigner軟件就沒問題了。但要想作的板子佈局美觀、佈線合理還得費一番功夫了。
嫺熟的單片機C語言編程、會使用Protel軟件或 AltimDesigner軟件設計PCB板和具有必定的英文閱讀能力,你就是一個遇強則強的單片機高手了。