久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3320|回復: 1
收起左側

學習單片機怎么入門

[復制鏈接]
ID:115111 發表于 2016-4-28 03:21 | 顯示全部樓層 |閱讀模式
      這篇文章針對的是那些剛剛知道單片機這個東西,而且對他很感興趣,想學習但是又無從下手的小白。這里面可能大多數大學生,也可能有少數是電子愛好者,不管是什么身份,只要對單片機感興趣,就一定能學會它,而掌握了正確的學習方法則會快速的學會它。其實不管是單片機還是其他的任何東西,只要你擁有極大的興趣,投入全部精力,就會很快學到它。筆者之前是做管理的,由于對軟件開發感興趣,所以就辭職專門學習IOS開發,由于有C的基礎(大學畢業到現在一直在玩單片機),所以僅僅只用一個月,就寫出了一個約一萬行代碼的記賬軟件,現在剛上架在審核中。
        話說回來,既然這篇文章面對的是新手,那肯定會有好多大神提出不同的觀點,當然,對于新人來說,最好是權衡自己的條件,去選擇最佳的學習路線。只要能快速學到知識,不同的方法都可以試試嘛。

        接下來我就講講我和單片機的故事。

        現在想起來我接觸單片機也是被動接受的,并不是主動的想去學習它。大一的時候有C語言這門課程,到學期末兩周,C語言課程有一個集訓,就是在實驗室使用一套巡線智能車完成教程中的內容,現在想來很簡單,那個套件根本算不上智能車。但是當時我對單片機并沒有什么概念,開始集訓后老師就講了這個套件可以怎么用,能實現什么功能,并帶領我們在電腦上完成了keil的安裝和燒寫器驅動的安裝。當時大一,沒怎么玩過電腦,而且根本不知道單片機這個東西(因為當時那個套件中單片機是在一塊開發板上的,在我眼里就是一塊電路板而已)。老師講完就走了,我們就在實驗室自己看著書搗鼓書上那些代碼,有問題的時候就跑去找老師解決。通過這樣的一周學習,我們能讓智能車跑起來了。接下來要實現的功能是用完成智能車巡線,地上有一條2CM寬的黑線,機器人要跟著這個線走,實現的原理就是使用傳感器檢測地面上的黑線,如果是黑線,傳感器返回0,如果不是黑線,傳感器返回1,然后根據返回值的情況去設置車左右兩個輪子的驅動,進而讓車巡線。我記得我當時對這套東西特別感興趣,正好大一期中買了筆記本電腦,就跟老師溝通好晚上把白天在實驗室用的這一套智能車套件帶回宿舍,用自己的電腦繼續玩,后來我和自己的搭檔不但完成了集訓要求的內容,而且做出了很多新的花樣,給老師留下了不錯的印象。也正是因為這個,對我以后產生了深遠的影響。

        大二開學剛來到學校,就接到老師的通知,從全年級選了五個人出來繼續做之前的智能車套件,目的是在兩個月后參加深圳的智能車比賽(筆者大學是在北京上的),這對我來說是個不小的誘惑,在做自己喜歡的事情的同時還可以去這么遠的地方走一遭,此樂何極。所以我就接下了這個任務,并且每天廢寢忘食的開始研究,在這段時間里,我總算對單片機有了較深的了解。在準備比賽的過程中我經常遇到難以解決的問題,這個時候我就會去圖書館查閱相關資料(大學的圖書館是個好地方,學弟學妹們有時間一定要多去走走),也正是這段時間,我知道了匯編,知道了電路板是怎么設計的,知道了傳感器的基本原理,知道了元器件的線性工作特性與死區。。。每當遇到問題的時候,我就停不下來了,不斷調整自己的算法,通過不同的參數對比找出問題的原因,或者是去查閱相關知識,因此也逃了不少其他的課程。又幾次甚至嫌回宿舍睡覺浪費時間,直接帶了被子到實驗室打地鋪,最后感覺睡地上不舒服,索性起來熬夜做。最終我們團隊在深圳的比賽中獲得了二等獎。我原以為我們的成績應該是不錯的,但是當真的去了賽場,我才發現我們和別人的差距有多大:我們是大學組,有好多高中組的做出來的效果已經讓我們瞠目結舌了。更何況其他大學組。有一些我們以前遇到的難以解決的問題,比如如何提高巡線精度等問題,我們的解決方案都是通過調整軟件中算法的參數去解決的,但是發現更高效而且穩定的辦法是通過硬件去解決,在不違反比賽規定的前提下增加傳感器數量,這樣就提高了測量精度,進而降低了算法的難度,也就提高了系統的穩定性。

        所以參見完比賽我就開始了解電路設計的一些東西,并在網上免費報名參加Altium Designer公司舉辦的社會培訓,通過自己的學習,最終掌握了電路板的設計,當時記憶最深刻的是為了學會每個電路元器件的用途、性能、封裝,我去圖書館找到了一本元器件大全,就像字典一樣的書,當時把那本書翻了好多編,也逛了不少論壇,嘗試畫了不少電路PCB板,但那個時候只是紙上談兵,并沒有實際的制板經驗,而且畫的都是雙面板。
        大三我們開始學習單片機,學的是51,(大學一般單片機課程都是51),用的編程語言是匯編。也學習了計算機基本原理,還有數字電路、模擬電路等課程,下學期開始學習自動控制原理。在這一年中我跟老師做了不少項目,其中有MSP430單片機、也有51,也嘗試過ARM7和STM32,在北京市電子設計大賽中獲得過一等獎。這個時候因為一些外界因素,我對單片機的愛好沒有那么強烈了,后來又一段時間沒有做什么項目,直到大四,開始覺醒,并跟著老師做了幾個項目,這其中有物理實驗的試驗箱的制作(我負責硬件設計和下位機與上位機的通訊,下位機程序設計)并參加北京市物理實驗競賽獲二等獎。也跟著老師做了企業的太陽能板的項目,畢業設計做了S3C2410上的LINUX移植和驅動編寫的課題(當時這樣的課題對本科生來說難度是有點大的)。

        很不幸的是筆者大四簽訂工作的公司是重工企業,也做海洋平臺 的制造,我當時應聘去是做電儀設計的,在這里設計的東西都是有行業規定的,沒有什么可以創新的東西,每天工作死氣沉沉,在這樣的環境下呆了大概兩年,終于不能忍受乏味的工作生活,于是辭職(當時我辭職的時候并未確定下家公司,因為我想的是重新學習電子相關的東西,而因為自己兩年沒有接觸這方面的東西,已經遠遠跟不上了,所以需要專心學習一段時間).

        在這里我開始回答這篇文章題目中提出的問題,這也是我在一些論壇和QQ群中每天都會看到有人在問的問題,接下來我將把我的一些觀點和經驗介紹給各位同仁,由于我也是菜鳥,所以個別觀點難免偏頗,希望大神不要笑話,能給我和其他新手一點指導意見,大家共同提高。

        1、我是新手,我想學單片機,應該學51還是直接上手ARM?

        答:學習任何東西,學的都是思維。而單片機本身只是一個工具,這個工具是用來實現我們的思維的。比如我通過學習,知道了可以使用單片機控制LED燈閃爍(原諒我使用這個太常見的例子)那么你想讓單片機怎么閃爍,或許你的想法和別人都不一樣,有可能你做出來的閃爍效果是最好看的,這就是你的思維通過學習,加上自己的天賦比別人厲害的地方。那么你所想的這個閃爍效果如何實現?至少得借助一個工具吧,這個工具就是單片機,那么這個單片機如何實現你的想法,也就是控制流程?那你就需要了解這個單片機。當你了解了之后,你發現其實原理很簡單,而且不只是你所了解的這款單片機原理簡單,而是所有的都這般簡單。所以你高興的上手寫程序了,你要用程序把你的控制流程寫出來,這時候你突然發現沒那么簡單了,當你把你的控制流程轉換為單片機的控制流程時,你發現你遇到困難了,就好比你想喝水你會去用手拿杯子送到嘴邊,因為你的手會聽從大腦的智慧。可是你不知道單片機的手在哪里,你不知道單片機的大腦運行有多快等等。所以這個時候你要停下來研究你要用的這個單片機了。你會去了解它的手和腳(IO、Uart、I2C等)還要去了解它的大腦(頻率、架構、寄存器)等,然后你就像翻譯語言那樣很順利的就把你的控制流程教給單片機了,它按照你的想法完成了讓LED閃爍的任務。突然有一天你的想法變得更復雜了,之前的單片機滿足不了你了,然后你就要使用更強大的單片機了,你去了解另一個單片機,你驚喜的發現它竟然是那么像之前你用的那個,唯一的區別就是資源更多了,性能更強了,速度更快了。于是你在很短的時間就完成了學習并把你的想法移植在它上面。說這么多,無非就是想說,單片機,原理大同小異,選擇一個學就是了,不用把太多的時間花費在糾結學那個上面,有你糾結的時間,或許你已經學會怎么點亮LED了。所以我的建議是,花盡量少的錢,在網上買個51開發板,然后按照板上帶的一些資料開始學就行了,等到你把店家給你的資料中的代碼完整的寫一遍,你就基本上掌握了51,然后你會發現,拿到ARM的板,你稍微熟悉一兩天就可以上手了。當然,你想使用STM8、STM32、AVR都行,最重要的是,選擇一個,就把它徹底掌握。
        2、我初學單片機是使用C語言呢還是匯編語言?

        對于語言的選擇,個人認為學習C比較簡單,畢竟C語言是其他大多數語言的基礎,而且和匯編想比較容易理解多了,在初學單片機的過程中,我們要掌握單片機的工作原理和操作,而C語言相當于我們操作單片機的工具,這時候我們應該把重點精力放在單片機上,那有人就問了,如果我不把C語言學精,怎么去使用它操作單片機?對此我建議,想學單片機的人,先集中精力花費一個月的時間去學習C語言。學會變量的定義、使用、函數的聲明、調用、宏定義、條件編譯、數組、分支、循環、等,基本就差不多可以操作單片機了,等到單片機學到一定程度,你會發現自己的C語言那一塊欠缺,然后再去針對性學習,這樣互相補充,很快你就是大牛了。在學習的過程中你會享受到那種讓機器按照你的思維動作的樂趣。而匯編語言由于直接操作寄存器的,比較枯燥而且麻煩,如果一開始學這個,很容易對單片機失去興趣。關于C語言的學習,我后續會發布一個學習路線供大家參考。

上面寫到我的個人經歷,回答了新手學習單片機選擇什么單片機入門好,還有選擇什么編程語言適合新手這兩個問題,接下來我們討論選擇什么平臺,以及學習的路線。


        3、新手學習單片機選擇用什么開發平臺?

        在這個問題的回答里,我把軟硬件平臺統一囊括在一起。

        1)、軟件平臺,在第一個問題中我建議大多數新手使用51起步,具體就是AT89S51\AT89S52這兩個芯片,如果你確實選擇用它了,那編程軟件就是keil forC51,這時候很多新手都會存在一個問題,究竟是買一塊開發板實際操作呢,還是使用Proteus這樣的仿真軟件進行仿真呢?我這里的回答是,剛開始學習單片機,千萬不要使用Proteus仿真,現在一個開發板也不貴。花不到100大洋就可以買一個開發板,買的時候不要買功能太強大的,因為一開始你入門,需要的板上資源其實不多,有led,有按鍵,差不多就可以了。而學習IO口、定時器、計數器、中斷、看門狗、串口通訊,這些都可以用led去模擬實驗效果。后期學習其他的東西,如果板子上沒有,沒關系,一般的板子IO口都可以擴展出來,所以我們直接使用面包板或者焊接來搭建其他電路。通過使用真實的板子進行學習,你不但可以對單片機、各種資源、各種元器件有一個直觀的認識、而且你可能會遇到一些只有在現實的元器件上才會發生的各種問題,如led燒毀不能點亮,電容被擊穿、這些問題你遇到了,然后通過各種方式去排除這些問題,然后把問題解決方案記錄下來,就是你成長的過程。而這些問題,在使用軟件仿真中是遇不到的,而且軟件仿真中有些可行的方案,在實際中并不可行。所以新手一定要使用真實的開發板去學習單片機,等到自己掌握了單片機的基本知識,那時候再去用軟件仿真運行你的軟件,也是可行的,而且這個時候由于你掌握的一些實際的經驗,所以在仿真中遇到的問題你也能很快解決,而不是像無頭蒼蠅一樣沒有解決辦法。
        如果你選擇了STM32,那么開發環境可以選擇AIR或者keil forARM,再次重申一遍,軟件沒有什么絕對的好不好,你可以兩個都試用一下,覺得那個適合你你就去使用那個。我個人比較傾向于keil ,keil5之后加入了很多功能,包括4之后增加的代碼自動補全(建議新手不要使用這個功能)、庫文件的集成、仿真(這個里面的仿真功能還是很強大的)。具體的使用和可能會遇到的問題,我會開出一個專題來講。硬件的話,就是jlink,這個比51的ISP燒寫器強很多。
        如果你選擇了使用STM8,需要安裝兩個軟件1、STVD IDE開發環境,2、COSMIC for STM8 C編譯器。對于這個的詳細解讀,后面會有專題。


        4、如果我按照你說的,去先學習C語言,那么最高效的學習方法是什么?

        我認為學習C語言的最高效的學習方法是:在圖書館借一本入門級的書,然后在電腦上裝一個開發環境(具體什么開發環境無所謂,VC6.0,VS2010什么的都可以,根據你電腦的配置選擇),然后開始邊看書邊敲代碼。下面是我做的一個C語言學習路線,如果你學C語言就是為了做單片機,那你可以有側重點的學習:

        以上是一個提綱,你可以按照上面的知識點一個個去學習,學習完成之后通過打個勾,繼續下一個,學完全部大概兩周就可以搞定。這時候你就可以閱讀單片機項目代碼。后續我會放出一些簡單的項目。當然,上面的知識點或許過于冗余,你可以通過公眾號發消息給我,告訴我你自己設定的學習路線,我幫你規劃C的具體路線,告訴你哪些知識點可以淺嘗輒止,哪些知識點必須要徹底掌握。這樣就會在最短時間內學到最多。

回復

使用道具 舉報

ID:82285 發表于 2016-4-28 11:03 | 顯示全部樓層
樓主最后一張圖說的很好
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲欧美中文日韩在线v日本 | 国产精品99免费视频 | 日日骚网| 在线免费看毛片 | 黄视频网址 | 91麻豆蜜桃一区二区三区 | 久久久久亚洲精品国产 | 欧美日韩综合一区 | 亚洲一区二区三区久久久 | 久久午夜视频 | 视频在线观看亚洲 | 草草视频在线免费观看 | 欧美亚洲一级 | 黄色毛片免费看 | 国产女人与拘做视频免费 | 欧美亚洲国语精品一区二区 | 天天躁日日躁xxxxaaaa | 国产影音先锋 | 色综合久久天天综合网 | 国产精品久久久久999 | 91精品国产乱码久久久久久 | 亚洲最新网址 | 久久久av | 久久久久久久久久爱 | 中文字幕人成乱码在线观看 | 久久亚洲一区二区三区四区 | 国产在线网站 | 鲁一鲁资源影视 | 国产精品久久久久久久久久免费看 | 精品久久不卡 | 瑟瑟视频在线看 | 伊人色综合久久天天五月婷 | 日韩影院在线观看 | 久热精品在线观看视频 | 国产精品视频入口 | 国产精品一区二区三区在线 | 亚洲伊人久久综合 | 国产一区二区三区在线 | 久久久久久中文字幕 | 精品一区二区三区在线观看 | 久久r久久 |