單片機(jī)入門的幾點(diǎn)建議
單片機(jī)的重要性在后PC時代逐漸加重了,現(xiàn)在更多的電子設(shè)計者和愛好者討論最多的話題莫過于嵌入式系統(tǒng)的設(shè)計,C51、VHDL、RTOS、CPLD、FPGA、DSP、ARM已是當(dāng)今掛在電子工程師嘴邊最多的幾個詞,由于工藝的進(jìn)步,家庭智能化已不是空中樓閣,其中功能越來越強(qiáng)大、體積越來越小、成本越來越低的MCU出現(xiàn)正是這場革命的推動者。那么,做為一個電子設(shè)計者、愛好者以及即將成為電子工程師的在校學(xué)生,為了迎接這常革命,或者說為了找到一份自己心儀的工作,我們應(yīng)該具備哪些知識呢?面對這么多必須的技術(shù),作為一個初學(xué)者我們又該從何學(xué)起?學(xué)好這些東西的代價如何?等等…….,這些都是前段時間朋友們問我最多的問題了,由于時間關(guān)系,我就不一一回信做答了,這里就寫寫我走過的路和一些個人心得,希望對同仁們有所啟發(fā)。
我是97年開始接觸電腦的,那時我對電腦的概念幾乎為0,開始是從QB(VB的前身)學(xué)起,比較幸運(yùn)吧,我認(rèn)為這是最適合初學(xué)者的語言了,雖然剛開始我什么都不懂,就是直到現(xiàn)在我也沒認(rèn)真的寫過一段VB的程序,可是它給了我很多概念性的東西,也是我C的入門老師了。我比較笨,所以始終認(rèn)為學(xué)東西一步一步來,從淺到深,沒學(xué)好不要緊,但是概念的東西要把握住,最好入門時有人教或有現(xiàn)成的東西摹仿,這樣最省時間,也比較有成就感而少了一些挫敗。
我的專業(yè)是測控技術(shù),萬金油,什么都學(xué),什么都半桶水的那種。不過出來做了幾年開發(fā)的工作后,我發(fā)現(xiàn)我的專業(yè)還是比較好的,比較勢利的說就是更切中于市場,總結(jié)現(xiàn)階段電子設(shè)計工程師必需的技術(shù)和技能,我認(rèn)為有以下幾點(diǎn):1是大學(xué)里學(xué)習(xí)的最基礎(chǔ)的東西,包括電路、數(shù)電、模電,當(dāng)然還有高等數(shù)學(xué)和英語了,重要性我就不強(qiáng)調(diào)了,不過還得說說E語,害死人的東西了,沒辦法,誰讓現(xiàn)在的技術(shù)資料全都是E文的,翻譯的知識不是過時就是不知其所云,對一項新技術(shù)掌握的程度和速度——這是一項非常重要的能力,否則你只能吃別人的剩飯。2是單片機(jī)和C語言,這是電子工程師的工具,不學(xué)不行,不過剛學(xué)習(xí)時不要貪多,也不要好高務(wù)遠(yuǎn),老老實(shí)實(shí)的一步一步來,多動手,要重視概念,東西都是相通的,會了C51轉(zhuǎn)到AVR C也就不用一個星期了,具體項目設(shè)計時根據(jù)各種單片機(jī)的特點(diǎn)進(jìn)行選擇就行了。我是從8031開始學(xué)的,純理論,就是上機(jī)實(shí)驗(yàn)也是聽出來的,那時候C51可沒出來呢,中國大學(xué)的弊端啊,經(jīng)費(fèi)少,設(shè)備陳舊,老師光說不練,打擊積極性啊。真正的動手是從到公司工作開始的,自己學(xué)PROTEL(這也是必需的,就不用我廢話了)再用公司的錢畫板(***人的錢,不用白不用),然后照書上抄例子,具體的學(xué)習(xí)過程請看下文專門介紹。3點(diǎn)必需知識是CPLD/FPGA設(shè)計,我個人用途最多的是在結(jié)構(gòu)化設(shè)計方面,CPLD非常靈活,有著很多獨(dú)特的用途(篇幅有限,我就不多介紹,請看網(wǎng)站的相關(guān)文章),隨著工藝的進(jìn)步,價格在一步一步的走低,相信不久它會象單片機(jī)一樣遍地開花的。4點(diǎn)必備的知識是嵌入式操作系統(tǒng),如KEIL的TINY OS,Ucus,Ulinux,因?yàn)槟悴豢赡苷靽投水a(chǎn)品轉(zhuǎn)吧,相信有一天你會用到16位32位的單片機(jī),這時候你就不能老用C51的編程思想了,試想C++用在單片機(jī)里的快感吧:)5是DSP了,我精力有限,選修,呵呵,就不多說了。
總之,小平同志說了,不管黑貓白貓,抓住老鼠的就是好貓。在產(chǎn)品設(shè)計時也是一樣,只要你知識全面,在設(shè)計時綜合考慮,靈活應(yīng)用,只要是最符合的就是最好的,不過這需要更多的知識作為后盾的:)前面廢話太多,還是轉(zhuǎn)回單片機(jī)入門的話題吧。
我是從8031開始的,學(xué)習(xí)時有一點(diǎn)微機(jī)原理的知識,8086那種,學(xué)校里就只能教這些落伍的但最基礎(chǔ)的東西了,數(shù)電和模電那時也是有點(diǎn)概念的,所以我個人認(rèn)為我單片機(jī)入門是比較快的。剛開始我們學(xué)的是51的基本原理、架構(gòu),后來就是指令集,我的老師是匯編專家,所以扣的東西很細(xì),哪個指令執(zhí)行幾個周期啊、直接尋址間接尋址的區(qū)別啊,ACALL、LCALL有什么不一樣啊等等,這些問題都要求我們深刻到心,所以說初學(xué)者有高手(起碼要老手)指點(diǎn),如果一點(diǎn)概念都沒有就想靠自學(xué)成才是非常難的,不過出來后發(fā)現(xiàn)這些東西用的較少,可是對加深理解倒是非常有幫助的。學(xué)校里學(xué)的東西主要是有一個概念,練習(xí)編程也主要是看別人的程序,就算是上機(jī)也是把別人的程序抄進(jìn)去后編譯完成就行了(有時候程序可不都對,能編譯出來也不容易啊:)?。?,因?yàn)槟菚r實(shí)驗(yàn)設(shè)備較貴,中國領(lǐng)導(dǎo)人急功近利,對一般教育投入的基金不多,所以就算我是科班出身,但是編程器也是工作后才開始用到的,那時只知道有編程器這樣的一個把HEX文件寫進(jìn)單片機(jī)里的東東,仿真器倒是有幾個,不過是老師的實(shí)驗(yàn)品,限制很多,什么P0、P2口不能做IO口,EA腳仿真時要接地啊,很煩人,所以到現(xiàn)在為止我對仿真器都有排斥,其實(shí)沒仿真器也有好處的,我的幾個比較大的項目就是在沒仿真器的情況下完成的。學(xué)習(xí)知識動手是少不了的,特別是應(yīng)用性的知識,不多動手絕對是行不通的。
我學(xué)習(xí)單片機(jī)真正的動手是從工作后開始,自己學(xué)PROTEL,然后用公司的錢畫了板(花了400元,深圳價),接著找現(xiàn)成的程序編譯后燒進(jìn)單片機(jī)里驗(yàn)證,不過這時候已沒人教你了,工作后就是這樣,雖然公司招人時說有培訓(xùn),但那只限于特定的知識。我第一次實(shí)驗(yàn)就連晶振都不起震,對著書畫的板的,一切沒錯啊,弄了兩天,問了很多人,跳了幾條線,最后把書上畫的33PF的電容換成22PF的就OK了,就這么簡單的問題卻搞的我灰頭灰腦的,后來照書上的程序又運(yùn)行了幾個,很少有現(xiàn)成就能用的,花的時間不少,倒是有一個和我一起進(jìn)公司的同事,他沒有基礎(chǔ),所以買了一個學(xué)習(xí)開發(fā)板,最后學(xué)起來入門的好象比我快,可能是我比較笨吧:) 可是在買開發(fā)學(xué)習(xí)板時也是出了問題的。下面就是我針對自己和別人在學(xué)習(xí)中出現(xiàn)的問題向初學(xué)者提幾個建議:
1、 學(xué)好單片機(jī)要花多少錢?
這個是大家關(guān)心的問題,現(xiàn)在沒錢就做不了事的,大學(xué)的學(xué)費(fèi)都會使某些家庭家破人亡呢(說笑了)。總體來說學(xué)習(xí)單片機(jī)從89C51開始比較好,最基礎(chǔ),學(xué)的人多,問的地方也多,盜版的東西也多。學(xué)習(xí)51需要一個程序編譯器,KEIL的C51大名鼎鼎,7.04版盜版的都出來了,對學(xué)習(xí)來說盜就盜一回吧,這一項花銷是0。編程器呢?我想你是比較幸運(yùn)的,現(xiàn)在有ISP下載的單片機(jī),可以在線下載程序,這是現(xiàn)在技術(shù)的趨勢,學(xué)習(xí)和小批量的產(chǎn)品用這個都可以了,89S51、52、53都支持ISP下載功能,AVR的單片機(jī)大部分也都支持,我最反對個人買編程器的,特別是買一些雜牌的,能省則省,這一項只買一個下載線就行了(自己做也行,不過不會給你省錢的,事也不少),20錢。在有就是一塊DEMO板了,自己做也可以,不過就是自己做最簡單的也要100多,我是反對初學(xué)者自己做板的,精力廢不起,你是要學(xué)單片機(jī)的不是學(xué)PROTEL的,再說初學(xué)者很少有一次就搞定板的。現(xiàn)在DEMO板很多,這部分是主要花錢的地方,100到700都有,關(guān)鍵是結(jié)合自己的情況了。有錢的還可以找輔導(dǎo),1000元左右吧。所以我說學(xué)習(xí)單片機(jī)只要花100到2000元就行了,關(guān)鍵是看自己怎么想了。
2、 DEMO板選擇要注意的問題
現(xiàn)在板子很多,檔次和價格也很多。選DEMO版主要注意2點(diǎn),<1>是功能,板子最好采用模塊化設(shè)計,每個模塊都要和單片機(jī)獨(dú)立分開,留出引線,這樣一來實(shí)驗(yàn)時可以動手插線,加深電路的認(rèn)識,也給以后開發(fā)時留有余地,另外單片機(jī)的管腳也都要連出來,作用也和上面的一樣,這樣的學(xué)習(xí)板以后可以做開發(fā)板用,還有一定要有ISP接口啊。仿真功能可以不要,那也要花錢的,在有了ISP接口下載后其做用真的很小了,有時侯仿真功能出了問題更難找(不用仿真器的調(diào)試方法請看本站的相關(guān)文章)。不要只關(guān)心價格,既然要買最關(guān)心的應(yīng)該是自己最需要什么。如果沒錢或愛好者可以選功能少的,專業(yè)人士我想最好一次性買功能全的,以后做項目時可以當(dāng)開發(fā)板用,不用花第一次開板的錢,我想帶有CPLD和多CPU的最適合了,可編程的器件多以后的用處就多,不要學(xué)完后板就沒用了。對了,板的尺寸一定要關(guān)心,不要只看介紹上的照片啊,我就上了一次當(dāng)。<2>點(diǎn)關(guān)心的是幫助文檔,這可是關(guān)鍵的地方,花了錢買了東西,聽他吹的功能很多很多,回來發(fā)現(xiàn)幫助文檔簡簡單單,可照著操作的東西沒有,你還得從新摸索一遍,這樣你的錢不就白花了,更有甚者給你的例子程序都是錯的,那你就哭吧,對于初學(xué)者,那你就跳樓吧。這可是重點(diǎn)的,因?yàn)楝F(xiàn)在做DEMO板的人多,利潤低,很多人都是抄的,可能他本人都沒上機(jī)試過,你別只聽他說有論壇支持,那是虛的東西,只有論壇支持那你直接上論壇去算了,干嘛要花這錢?技術(shù)支持也重要,但不能寄托在這上,試想那么多人有那么多問題,他該理會哪個好呢?所以關(guān)鍵還是要看文檔,不要看有多少資料,要看是不是開發(fā)者本人寫的,用心不用心,可照著上面的步驟操作嗎?
評論