已經(jīng)準備學習單片機,該做哪些準備呢?資深工程師告訴你如何有準備的學習單片機
這里的準備,筆者將其分為兩大類:精神和物質上的準備。
1.精神準備
“千里之行,始于足下”,單片機一天、一周學不會。玩單片機一定不能“1.013×0.992<1.01(三天打魚、兩天曬網(wǎng))”,要有持之以恒的毅力與決心。學習完幾個例程后,就應及時做實驗,融會貫通,而不要等幾天或幾個星期之后再做實驗,這樣效果不好甚至前學后忘。另外要有打“持久戰(zhàn)”的心理準備,不要興趣來時學上幾天,無興趣時放上幾個月。玩單片機(In Doing Anything)很重要的一點就是持之以恒。
(1)不要一說寫代碼就去向別人要源代碼。一定要先好好思考,完了記下自己的問題點,再去請教別人,之后借鑒別人的思路再去編程。不要只走馬觀花看了看實驗現(xiàn)象,傲慢的向別人炫耀,已經(jīng)會單片機的編程了。
(2)學習一個新的軟件,一定要多看幫助手冊,書上講的肯定沒官方的全面。倘若連軟件都沒看一眼,就盲目的問東問西,讓人覺得你很幼稚。
(3)不要蜻蜓點水,得過且過,細微之處往往體現(xiàn)實力。
(4)把時髦的技術掛在嘴邊,還不如把過時的技術記在心里。
(5)看得懂的書,請仔細看;看不懂的書,請硬著頭皮看。不要指望看了一遍書就能記住和掌握什么。書讀百遍、其義自現(xiàn)。
(6)對于網(wǎng)絡,還是希望大家能多利用一下,很多問題不是非要到論壇來問的,首先要學會自己找答案,比如Google、百度都是很好的搜索引擎,你只要輸入關鍵字就能找到很多相關資料,別老是等待別人給你答案。這樣的人平時一定也很懶!
(7)到一個論壇,要學會看以前的帖子,不要什么都不看就發(fā)帖子問,也許你的問題早就有人問過了,你再問,別人已經(jīng)不想再重復了。作為初學者,誰也不希望自己的帖子沒有人回是吧?
2.物質準備
筆者將物質準備分為兩類:軟件和硬件準備。
1)軟件準備
這里的軟件不僅僅指C語言,還包括匯編、C++、G語言等,電子基礎(例如電阻、電容等)、模擬電路、數(shù)字電路、高頻電路等,概況的說,就是要有理論知識的儲備。
讀者看著以上的軟件準備要點,或許想“哭”,別“哭”,乖。等讀者將以上技術都學完了或者學會了,再去學單片機,那就OUT了。因為上面的任何一門(僅僅一門)學科,就足足夠你大學幾年喝一壺。那如何學,請讀者手頭備幾本書,以便“查”閱。
有人說“零基礎”學單片機,這句話本來就是騙人的,現(xiàn)在沒有什么人做什么事都是從零開始,除非你搭乘時光機回到原始社會。永遠記住一句話:站在別人的肩膀上,你會看的更遠、飛的更高!因為有了以上基礎,筆者相信你“玩”起來會更開心,如果這些不會,那可謂真是零基礎了。俗話說——The early bird catches the worm,你就得比別人起的更早,睡得更晚,付出得更多,就像殘弈悟恩一樣,早起晚睡,勤能補拙嘛。如何付出?不是去借本數(shù)電、模電、C語言書,從第一頁開始背,背一頁忘一頁,書背完的同時也忘完了。
筆者建議:需要什么,就去查什么,現(xiàn)玩現(xiàn)查。例如,要點亮一個LED,開始是包含頭文件:#include
講述軟件準備的最后,回答讀者一個網(wǎng)上提了很多遍的問題:該學匯編還是學C語言(C51)?
答:若只是為了用單片機做產品,C51足夠了。若要深入研究、搞發(fā)明,自己生產單片機,那必須得學匯編。該書是以為了做產品而寫,所以主要講述C51。
這估計是爭論最大的一個問題了,有些人堅持學單片機軟件一定要用匯編,也有人堅持選擇高級語言。C51剛推行時,單片機內部資源比較寶貴,而且C51本身的編譯器效率也不夠高,導致當時很多人選擇用匯編來寫代碼。
現(xiàn)在的情況是怎樣的呢?編譯器效率高了,單片機內部的資源也豐富了,用C來寫單片機軟件不會再遇到以前程序代碼太大,單片機運行不起來的問題了。外面的企業(yè),大部分都是用C,C好寫,可讀性強,可移植性強。那么匯編就不用學了嗎?光會C也還是不夠的,你還得了解匯編,實際上不是了解匯編指令,是了解單片機的體系結構。鑒于這樣,筆者認為玩單片機,還是用C,但是平時也得多看看匯編代碼,最低要求就是:能熟練運用C寫代碼,能讀懂匯編代碼。
這里匯報個情況,在大學里老師基本都是用匯編教學,聽說(筆者自迷戀上電子之后,就從不去上課了,^_^)筆者的老師也是用匯編教單片機編程。可大多數(shù)讀者工作以后,公司要求用C,當時大家都大罵一頓老師,現(xiàn)在明白老師的良苦用心了,用C教學,老師要輕松很多,而老師卻選擇匯編,為什么在大家眼中的“壞老師”要如此吃力不討好呢?
這是因為,用匯編教,能讓大家更清晰的掌握單片機的體系結構,運行機理,掌握單片機的核心本質,用匯編讀者才會掌握什么是立即尋址,直接尋址,什么是間接尋址,什么是偏移量等一系列問題。不知道這些,用C也能把程序玩轉,若不知道運行機理,讀者不覺得心慌嗎?以后學ARM時能看懂啟動代碼嗎?又能編寫完整的啟動代碼嗎?讀者說我可以CTRL+C、CTRL+V啊,那筆者就無語。
2)硬件準備
單片機是一門實踐性非常強的學科,不實踐一切都是“空中樓閣”。筆者將硬件又分三類:本、開發(fā)板、實戰(zhàn)工具,這里結合筆者的經(jīng)驗,以問答的形式來為讀者講述。
(1)書要不要?
答案是:要。別小家子氣,買本書幾十塊都舍不得,你還學什么呢?為了省錢看電子書,浪費的時間絕對超過書的價值。當然如果查資料,只能看PDF,另當別論。再說了,拿著一本書,坐在圖書館,或許還能靜下來。筆者曾經(jīng)在圖書館一待就是幾個小時哈。相反,在電腦上看電子書,總忍不住東點點、西看看,這樣浮躁的你會更加浮躁。
(2)開發(fā)板要不要?
答案是:花點錢買塊開發(fā)板是非常必要的。筆者相信看此書的人,還不至于會自己做開發(fā)板,因此強烈推薦買一塊開發(fā)板。
買的板子可以把注意力集中在軟件開發(fā)上,軟件開發(fā)過程中可以不必擔心硬件上的問題。咱本來就剛剛起步,寫個程序半天沒反應,也不知道是硬件還是軟件,到頭來,雄心壯志沒了。另外,買板子更省時間,再有就是買的資料相對來說比較齊全。說到這里,可能被一些只為賺錢,不顧及初學者想法的“商業(yè)”人士把風氣給搞砸了,有些甚至為了做廣告,說買開發(fā)板,送一注彩票,對于這樣的賣家,讀者可以直接忽視。
開發(fā)板就好比農民種地的種子,只要能合理利用,它便會生根發(fā)芽,最后定能收獲豐盛的果實。想要種好地,不要不舍得去買好種子。玩單片機,建議大家一定要多做實驗,一開始可以模仿筆者所寫的程序在開發(fā)板上做些簡單的實驗,模仿時千萬不要滿足只在開發(fā)板上運行一下,一定要自己動手把程序敲進電腦、一句一句分析透徹,不懂的地方拿出課本來查,琢磨琢磨筆者的編程思路,然后再編譯、下載、看現(xiàn)象。只有這樣邊玩邊查,才能使那些看起來很復雜、摸不著頭腦的單片機的知識變的很具體;只有不斷的做實驗,在實踐中學習,才能真正扎實掌握單片機的基本知識,有了這些單片機的基本知識和自己的親身體會及經(jīng)驗以后,就該朝著自己動手設計的方向邁進了。
再說了,買一塊開發(fā)板,就是買一個平臺,“有了平臺,你便可以輕松的爬上別人的肩膀”。有了單片機的實驗平臺,你才能去試驗更多的程序,才能積累更多的模塊化的源程序,積累更多的單片機開發(fā)的經(jīng)驗和思路,才能踏進單片機開發(fā)的大門。
(3)仿真學不學?
遠離虛幻,走向真諦。筆者的遠離虛幻意思是不要借助仿真去學單片機,只用軟件模擬仿真是永遠成不了高手的。所謂仿真就是用Protues軟件去模擬實驗現(xiàn)象。不知讀者看了目錄之后有沒有發(fā)現(xiàn),筆者沒有寫單片機仿真,不是讀者不會。曾經(jīng)在實驗室,當老師看著筆者仿真的——簡易波形發(fā)生器時,老師吃驚地說了一句:原來這東西這么好看。這東西說白了就只是好看,沒有多少實踐之意。筆者也見過有些同學做畢設時,仿真的很完美,怎么一搭電路,調試之后就發(fā)現(xiàn)了好多問題,還跟我說,Keil編譯的結果是0錯誤、0警告。軟件仿真也通過了,為何這里有問題呢?殘弈悟恩當初就很糾結,0錯誤、0警告就能說明所寫程序是正確的,根本不是。舉個例子,你要讓8個LED燈亮,應該是:P2=0x00;可你寫了:P2=0xff;這也是0錯誤、0警告啊,可能達到效果嗎?仿真中,什么都是理想的,電流、電壓、阻抗等若考慮不周到,或許能猜出個正確結果。可實際電路中,電流、電壓大了,電路板可能會冒煙,晶振頻率可能不穩(wěn)定,導致程序運行混亂。說到晶振,記得筆者在珠海某電子公司工作時,所用晶振為27MHz(是用在機頂盒上),剛開始測試發(fā)現(xiàn)頻率確實為27MHz,但后來機子工作以后,頻率就變了,之后也找了供應商,測試都好的,無奈之下,一位同事說,將晶振外殼接地吧,這一接,問題果斷解決了。筆者說這些,沒有一點貶低仿真軟件或仿真的重要性,只是建議讀者玩單片機,必須要多實踐,多焊接電路、多調試電路,不要停留在理論和仿真上。
關于這點,讀者跟隨本書就可以了。首先,筆者一一講述了每個入門實驗,等大家把這些實驗做熟練了、徹底掌握了,那毫無疑問單片機肯定是入門了。之后就需要提高,如何提高,就得學一些與單片機有瓜葛,但不是單片機內容,例如PCB設計、上位機編程、操作系統(tǒng)等。再把這些與單片機相結合,做一些東西,那才可以說你真正會單片機了。
(4)該玩哪種單片機?
先來個故事,筆者曾工作時,經(jīng)理讓一位同事去搞DB850(VFD屏)的測試,可那同事剛好辭職,這項任務就落在了我的頭上。先看了看數(shù)據(jù)手冊,之后開始設計電路,該電路的核心是升壓,就是將系統(tǒng)工作的電壓(5V)升到VFD所需的電壓(32V),筆者最后選擇的升壓方案是——BOOST電路。設計好之后就畫板、打樣。等板子發(fā)出之后就開始編寫程序,這時有位同事說:你用的是什么單片機?我說:51(是增強型的C8051F系列)單片機。他又說:51不是過時了嗎,在說了這東西(VFD屏)不是雷雄(另一位同事,技術很牛,人也很低調)搞過了嘛,人家還用的是AVR單片機。此時的筆者真是哭笑不得,說你懂技術嗎,說的全是行外話,不懂嗎,在電子行業(yè)都工作了2年了。他主要想表達的意思是AVR單片機比51單片機(現(xiàn)在STC公司出品的STC15系列的單片機也很高級啊)高級,所以用AVR單片機的人比用51的人技術高。筆者當初就想說一句,可又沒說出口,要是你想拿所用單片機的高級(其實C8051F系列的單片機在性能方面并不比AVR單片機差)來判斷一個人的技術,那么筆者干脆用ARM、FPGA(這些筆者都不在話下)得了,問題是殺雞何必用牛刀,打一只蚊子還需二炮出動嘛?就簡簡單單的一個VFD測試,只需5個I/O口,一般的單片機完全足夠。
其實單片機原理都是相通的,就像電腦一樣,不同的電腦只是配置不同,不同的單片機也只是配置不同(匯編指令不一樣是后話),只要認真掌握了任何一款單片機,再學習其它款,都可以在很短的時間內學會。51系列作為經(jīng)典的一款單片機,它的資料非常豐富,也比較容易掌握,因此,從51開始入門應該是非常明智的選擇。
在這里筆者要批判一些觀點,有人老是叫囂:51早就過時了,還學這玩意,要玩起碼得從玩ARM開始吧。他們連基本的道理都不懂,沒有學會初等數(shù)學,怎么能學會高等數(shù)學呢?(除非你是天才)不學51,就想著學ARM、FPGA,你那是一口氣要上珠峰,多半“死”在半路,估計你從此連51的小山都沒信心爬了。再說俺們只是以51入門,不是只學51,讀者將來都是要登“珠峰”的人,因此打好基礎很重要。
-
單片機
+關注
關注
6042文章
44617瀏覽量
637574 -
數(shù)字電路
+關注
關注
193文章
1629瀏覽量
80752
原文標題:資深工程師教你如何有準備的學習單片機
文章出處:【微信號:mcu168,微信公眾號:硬件攻城獅】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論