本文原創,僅代表我搞單片機的一些想法,有不妥之處,不承擔任何責任。
第一個問題,講一下初學者到底學習那個系列單片機。
51、AVR、430、ARM(包括嵌入操作系統)、FPGA當前單片機系統如此豐富,對于新手到底該如何選擇呢?我認為最大的誤區,在于新手普遍的追時髦心理,急功近利心理,妄想短時間之內學會ARM,學會嵌入操作系統。網上資料、廠家宣傳、培訓機構廣告也對初學者產生誤導,使之誤認為ARM很容易學。但是沒有51單片機知識作為基礎,其他一切都是空中樓閣。必不能達到預期效果。51單片機作為入門級產品,現在更多的體現在教學意義上了。雖然大部分的產品,已經淘汰51,使用高級芯片或者增強型51芯片,但是奉勸初學者,還是要從底層、基礎、即51開始單片機的學習。學好、學會、精通51單片機再學習其他單片機也能很快入門。
第二個問題,學習單片機,需要有哪些基礎,入門都學哪些東西。
很多初學者經常問,我能學單片機嗎?難嗎?我現在什么也不會啊?這里想說幾句,要想學習單片機開發,需要有以下幾方面基礎,但要求并不是很高,可以在以后的學習過程中慢慢學。
1、電路基礎:一些數字電路、模擬電路基礎。畢竟以后要自己設計電路,這些知識是很有用的。
2、C語言基礎:我個人比較喜歡C語言開發,相比匯編最大的優點就是移植性要好。學習51單片機,C語言編程當然需要有些基礎。
3、一些單片機的基礎知識:雖然是初學者,但是一些基礎理論知識還是應該知道的。
4、一些焊接等動手能力,這個要求就不是那么嚴格了。呵呵。不過能搭一手漂亮的電路還是挺好的。
怎么樣算入門?
1、學會使用編譯器軟件:就是在編譯器下建立一個項目,編寫一點點代碼,生成一個程序文件。當你熟悉這個流程以后,就變得非常容易了。不過第一次還是很難實現的,最好有一個比較詳細點的教程。
2、學會使用下載
工具和軟件:把程序燒錄到單片機里,運行起來,需要動手去操作。
3、學會使用調試工具:如有條件,可以學習
硬件仿真調試。
4、以上可以在學習板上實現,不過以后你要學會自己設計 并制作電路。所以還要學會PRTEL軟件使用。
第三個問題,學過一段51單片機了,入門也會了。以后怎么辦啊?
很多初學者,學了一款51學習板,基礎東西也都會了,下一步怎么發展卻不知道了。下面的一些理論是我的一點不成熟想法,有這樣困惑的朋友可以參考參考。
1、單片機的平面發展理論:不斷學習同一個層次、不同結構、不同品牌的單片機。
學會了一個系列、一個公司單片機,比如51(
AT89S51),了解的它的全部內部資源。下一步學習,仍然可以圍繞51進行。可以擴展到其它公司的51單片機,比如stc、pic因為他們有很多增強型51單片機。功能比普通AT89S51強很多。如果可以,接觸更多的同系列的51單片機。最終能夠在做產品時,選擇最正確的單片機,對每一種51單片機的優劣有清晰的判斷。
2、單片機的縱向發展理論:不斷學習高級別的單片機。
在學會一個系列的單片機,繼續學習高級的單片機,比如從51到AVR、到ARM。可以學習到更多的單片機,接觸到更多的知識。
3、單片機的外圍發展理論:不斷學習單片機的外圍功能模塊。
學會一個系列的單片機以后,轉而研究外圍電路。不論是輸入、輸出、通訊、邏輯和
計算。單片機外圍電路千變萬化,其功能模塊也千奇百怪。這樣的模塊學的越多,對你做產品的好處越大。畢竟所有功能模塊都是用在單片機上的,不論是51還是ARM都需要有外圍電路才能實現功能。
4、總結:無論以上那種發展模式,其最終目的都是單片機開發,都是研發出產品。所以最終的產品才是目標。
第四個問題,學習要精 還是要多的問題。
這個問題也比較麻煩,很多認為搞單片機要學那么多東西,還要軟硬件結合。我不可能每一種都做的很好。到底是要什么都會,還是要精通一種呢?
個人認為,如果是學生,還沒有工作,那么還是什么都會一點才好。畢竟誰也不知以后的工作內容是什么,可以參加工作以后再選擇優勢發展方向。
另外通常精通一種工作的都是大公司,分工比較明確,每個人負責自己的一部分,而在小公司,可能連技術文件都需要你來編寫,當然是會的越多越好了。
第五個問題,隨便聊一聊開發的流程,主要研發設計人員在這些流程中的工作。
1、產品需求階段:可能是根據市場需要或者公司安排,確定要開發一種產品。開發人員需要和產品需求方溝通,明確客戶的需求,對即將開發的產品有一個總體上的印象。
2、產品立項:這時產品已經確定要開發,需要立項,開發人員可能需要填寫立項相關文件。有可能設計項目獎金哦。。。
3、產品總體設計:一般由高級系統架構師(我也不知道這個是什么樣的牛人呢,還沒參加過有這種牛人的項目)搞定整個產品的系統設計。形成系統結構圖,有可能分解成軟硬件部分。(此處的軟件指上位機應用軟件,不是單片機內部程序)。
4、技術難點攻關:這里看需要開發人員出力了,就是把整個系統比較難或者不能確定的部分,先進行研究實驗,以確認不會因為這些部分導致項目無法實現。
5、電路設計制作:涉及到單片機開發人員了,涉及產品電路,并形成PCB電路板。
6、單片機程序編寫:終于要編程序了。到單片機工程師大顯身手的時候了。
7、硬件調試:電路板焊接完成,程序編寫完成。進行硬件調試,以發現程序的缺陷。 還有可能因增加或刪除功能進行修改。
8、與上位機聯機調試:基本是整個系統都完成了,所有功能都要調試,以保證產品穩 定。如果沒有上位機軟件,這一步就省略了。
9、測試:產品都搞完了,當然需要測試了。測試過程和方法很復雜的,這里就不說了。 如果測試出現問題,是需要返回到開發人員那里進行修改的。
10、制作樣機,完成項目開發部分:到這里基本上已經告一段落了,不過開發人員可能 還需要提供說明書等很多文件。
11、小批量生產,投放市場:用市場檢驗產品。如有不合格或者需要升級,開發人員就 要進行修改了。
12、產品實現量產:量產銷售到市場,如有問題,一般歸售后服務人員處理,處理不了 也會讓開發人員幫忙,畢竟開發人員對產品最為熟悉嘛。
13、總結,開發人員的工作可是貫穿整個產品開發過程的。。。初學者可以對照一下,看看你都需要學會哪些東西。
本文有感而發,倉促寫成,不妥之處還請大家海涵,拍磚請輕點。
網友評論:第五個問題和我好像沒啥關系
網友評論:對初學者很有幫助。頂一下、
網友評論:我來說一下。很多電子相關專業的去搞ARM編程,是被拉去做底層驅動。而OS移植,上層應用,依然是計算機相關專業的在搞。畢竟背景就不一樣。至于算法,通信,計算機的,都有可能去搞,電子的,也有可能。
網友評論:很多人的ARM開發板買了就屯在那里了,一是因為一時工作上用不到,二是因為確實沒那么塊能搞定,尤其是工作后,很多人就沒時間折騰了。時間久了,就屯起來了。我也屯了一塊。不過現在ARM7在我的工作中是用不上了,實在用,用我熟悉的DSPIC30,PIC32,都能搞定。
網友評論:不過如果要學習小型的RTOS,基于AMR7的平臺學習是不錯,資料豐富,比如uc/OS-II。而學習大型的OS,WINCE,LINUX,目前也只有ARM9的平臺比較合適,MIPS或者一些其它平臺,中國大陸能找到的資料實在太少了。
網友評論:坦率得說,我覺得如果一個人連3000行的C語言項目都沒寫過,是不應該那么塊離開8位機去搞什么ARM7,ARM9的,C語言的基礎都不扎實,搞了ARM又能怎么樣,簡歷上寫上一行兩行而已。之前看到一堆的應屆畢業生寫了解ARM,或者熟悉ARM,精通ARM,那又能如何,還是不可能放心讓他們去獨立做一個3000行以上8位機的C語言的編程項目(只管編程)。
之前碰到一個更搞笑的事情,一個號稱搞過ARM有N年工作經驗的人,段碼LCD的驅動搞不定。
雖然李開復的10萬行C語言代碼一說在電子行業不大現實,但是至少還是能說明一點,熟練還是必要的。
而電子行業,單片機只是一小部分,真正要做一個東西,僅僅是技術上,要考慮的東西就太多了。
網友評論:你們都好厲害,我個人認為51沒有一年的時間是入不了門的。
網友評論:忘了說前提條件了:第一次接觸單片機。
網友評論:看來只有不但學習了~~~~~~~
網友評論:同意圈圈說法,單片機不是什么難東西,關鍵是行業內的一些思想怎么用.sch與.c給弄出來,并且穩定,其實原理大家都明白
網友評論:這個要頂~~~~~~
網友評論:不錯,學些了51,現在學習AVR
網友評論:新手飄過
網友評論:很好的一篇文章!謝謝指引
網友評論:良師益友多了,路好走。路過,留個腳印
網友評論:lz的文章太有見地了,我見過很多沒學51就直接弄arm的,那個景象我就不說了,真是氣死人。
網友評論:不錯,要頂下,用了好多心思寫的吧,對學習找不到方面的朋友很有用
網友評論:1#
除了必須從51開始的觀點不同意以外,其他的都無比同意,
另外純粹的ARM7也不是特別難,LINUX等OS比較麻煩
網友評論:頂一下,寫的很好,
網友評論:太好了受用了
網友評論:1#
指點迷津
網友評論:呵呵 學習啦
網友評論:收益非淺,跟高人學習!
網友評論:累了,標記后睡覺
網友評論:看了LZ的指引,我似乎恍然大悟 茅塞頓開 謝謝了
網友評論:這的醬油好多啊!
網友評論:呵呵。學習了,謝謝
網友評論:謝謝,令我們這些初學者受益匪淺啊
網友評論:明天卡收藏
網友評論:有道理,支持。
網友評論:很好的文章
網友評論:很好的文章,我作為一個剛剛接觸到單片機的人,看了你寫的這些真的不錯。剛開始我也是按照網上大部分人說的那樣學習匯編,可是看了半年的匯編也沒有什么收獲,就開始轉向C語言,很快就體會了C語言的便捷,不過學習匯編也有了一部分的作用,對單片機的內部結構有了了解
網友評論:玩過了,玩多了,單片機是一天天的積累起來的
網友評論:不錯,但是我有一個想法,要是能找個師傅帶著是不是更好,當然也不是說全部由師傅來教,所謂師傅領進門修行在個人了,呵呵 、、、
網友評論:寫得很實在
網友評論:牛 不錯
網友評論:謝謝LZ的文章了,我有一個大概的努力方向了。文章收藏了。
但是對于第二個問題的最后一句有異議:畫圖用PROTEL有點意見,現在畫圖基本上都用PADS2007了哦。
網友評論:學習
網友評論:剛想學單片機,先學完51吧
網友評論:謝謝分享!!!
網友評論:對初學者說再多
沒有真正做項目也是白搭!!!
永遠別想一塊開發板能把你完成什么級別
怎么玩,都是自己在玩,就是你玩死也玩不到高手這級別,甚至只能是你知道了這單片機,這ARM,這FPGA……等等是個什么東西而已!!!有什么用??
高手永遠是在項目在產品中磨練出來!!
我覺得一個人的技術成就和他的工作是密切相關,你們公司的產品用到的技術決定你在某一技術領域的高度!!!
網友評論:請問,搞PIC也應該先學51否?
網友評論:好貼,頂一個,現在我只是有了一定的單片機基礎,但是還是不能夠利用89s51單片機做出來一點東西,哪怕只是簡單的東西。哎!現在我聽發愁的。
網友評論:的確……
網友評論:非常感謝樓主文章,要加油了
網友評論:謝謝指導,好好看了
網友評論:頂一下
網友評論:謝謝LZ分享~!
網友評論:我現在工作一年多了 一直做單片機 主要負責的軟件部分,在學校沒實際動手做過東西, 現在是第二份工作, 第一份做了8個月, 因為某些原因 ,第一份工作中基本沒做過項目, 在那8個月中 ,只是編寫了一些簡單的程序;
8個月后換了現在的工作 ,做單片機 ,當時面試時 這個單位的技術負責人說了一堆項目 說這些項目都要開始了,急需人手, 我覺得活挺多的 應該挺鍛煉人的 然后就過來了 結果入職后才發現 那些項目都在恰談中,現在又過了8個月了 只做了一個小項目,又沒有項目可干了,每天除了雜七雜八的事, 就是自己學習
我現在做的項目程序還不到1000行 硬件還沒有設計過,對硬件一竅不通, 我不想頻繁換工作, 但是不能總這么浪費時間 尤其是作為一個女生 能毫無顧慮的做技術、 學習的時間本來就不多, 所以現在非常苦惱 不知該怎么辦了 請各位大俠幫我指點迷津 謝謝
網友評論:不錯,精益求精
網友評論:謝謝,指點前進的方向啊!
網友評論:剛入門的,謝謝樓主
網友評論:ARM有那個難嗎?我不懂,想問問