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