如何學習單片機?
單片機學習起來其實不難,反而是一件比較有趣的事情,之所以新手感覺比較難是因為不知道該怎麼入手,從哪裡開始學起。
學習單片機需要動手,不是照著課本去死記硬背。
所以學習單片機的第一個概念:確定好所學習的單片機具體型號。
比如說,你要學習51單片機,你所確定的型號是STC89C52,這款單片機雖然比較老了,但是依然具有學習價值,DIP40封裝的STC89C52單片機如下圖所示:
或者你選擇STM32單片機學習,比如STM32F103C8T6,LQFP48封裝的單片機如下圖所示:
確定了單片機的具體型號之後,出來第二個概念:確定使用的編程環境。
在單片機學習初期,我們可能會弱化做PCB板子的概念,但是編程的概念一定要強化。所以在初期你手裡如果有一塊單片機的開發板是很有必要的。
編程環境是由所選擇的單片機來確定的,比如說前邊兩款單片機都可以使用keil來編程,所以你要安裝keil的編程環境,keil4的啟動界面如下圖所示:
編寫好的程序,如何下載到單片機去執行?所以第三個概念:下載器。
下載器的選擇也是有單片機的型號來確定的,以上兩款單片機都可以通過USB/TTL或者是JLINK來下載,但是這裡優先推薦JLINK,因為JLINK可以實現單步調試,大大提高學習效率,方便定位、解決問題。JLINK的圖片如下所示:
經過以上三個概念後,你就可以認真學習單片機了,該學習哪些內容?
1. GPIO:就是學習單片機引腳的控制方法,將引腳配置輸入或者輸出,比如說:點亮發光二極體、控制蜂鳴器發聲、控制繼電器吸合、控制按鍵輸入、點亮數碼管等;
2.定時器:學習單片機的片上資源timer,學習如何配置timer,如何設置初值,比如說:發光二極體定時閃爍、數碼管顯示的數值定時自加等;
3.UART:學習單片機的UART功能,學習RS232通訊,比如說:單片機發送字元用串口調試助手在電腦上顯示;
4.IIC:學習IIC通訊,比如說用AT24Cxx系列實現數值的掉電保存功能;
5.AD採樣:學習模數轉換知識,比如說:調節滑動變阻器,改變所採集的電壓,實時顯示此時的電壓;
初次之外可能還有:SPI,液晶屏、點陣、外部中斷、D/A等,等你學到這裡,你就可以根據自己的想法實現想要的功能了。
以上就是我的觀點,寫了有半個小時的時間,如果您有更好的方法那就留言討論吧。
學習單片機之前,需要有一些基礎知識的準備,例如元器件知識、模擬電路、數字電路、C語言等這些知識需要知道一點。這些知識有一個直觀的概念就行了,具體的更深入的知識,可以在單片機學習中逐步加深理解和學習。
然後,需要根據所選的單片機,了解該單片機的主要功能、熟悉其對應的開發環境;
最後,要有相應的單片機電路板和相應的模擬、編程工具,把單片機程序「燒錄」到電路板上的單片機內,根據設計功能,觀察電路板的運行是否符合設計初衷。
知道基礎元器件的功能和用法,例如要知道電阻的功能主要是限流、分壓,電阻在電路中有串聯、並聯、混聯的接法,知道電容的功能是「隔直通交」,在單片機電路中,有很多濾波電容。
2、模擬電路知識二極體、三極體的基本電路,了解單片機的電源電路、複位電路、晶振電路的工作原理。
3、數字電路這個最好多學一些,因為單片機本身就是一個數字器件,其運行原理主要是數字電路原理。了解各種門電路,最好能夠熟悉IC數字晶元的真值表,了解串列通信,IIC通信,SPI通信等。
4、C語言知識現在單片機開發絕大多數都使用C語言開發,需要簡單了解C語言的基本語法、算術和邏輯運算符,基本程序結構(順序、選擇、循環等),尤其要知道各種數據類型所表示的數值範圍,這個會在單片機編程裡面很有用。
現在很多人說學單片機可以直接從cortex m0或m3學起,我覺得,如果基礎較弱的話,還是從STC 51單片機開始,還可以選擇AVR單片機。
為什麼推薦這兩種單片機,因為一個單片機環境要想真正運行起來,最終還是需要有專用的編程工具(很多人稱為燒錄工具)將程序「燒錄」到單片機內部,這樣才能真正讓單片機按照程序設計流程運行。而這個專門工具是特製的,現在STC的51單片機只需要一根U轉串的線就可以將程序「燒錄」到單片機內,而AVR單片機的編程工具非常容易自製,並且成本不超過20塊錢,至於其它單片機,它們的燒錄工具一是不容易自製,二是價格較高,所以部特別推薦。
另外就是51單片機和AVR單片機的開發資料,學習教程在網上最多,這樣當學習中遇到問題的時候,可以在網上獲取很多經驗。
2、開發環境的選擇基本上每種單片機都有各自特色的開發環境,但是這些開發環境基本都是各自為戰,很少有一種開發環境能夠支持多種單片機的開發。
在這裡推薦2個開發環境,
一是51單片機的KEIL開發環境,二是IAR開發環境,IAR開發環境是目前功能最為強大,支持單片機種類最多的一種開發環境(IAR支持51單片機,AVR,PIC,MSP430,ARM等幾乎所有主流單片機,但是對每一種單片機都有一套開發包,不過基本開發配置和流程大體相近)。
51單片機的開發環境,不用說肯定是首選keil,這個是最早,也是功能最強的51單片機開發環境,另外,熟悉了KEIL後,對於後續開發MDK也會有一個很快的熟悉過程,因為MDK就是脫胎於KEIL的。
AVR單片機的開發環境很多,目前用的較為普及的是GCC、ICC AVR,以及AVR STDUIO,這三種的使用教程在網上較多,所以還是推薦這三種。
三、實戰選擇目前有三種方式學單片機,一種是通過真正的單片機學習板,現在這種學習板很多,並且板載的功能也非常多,這是一個途徑,還有就是通過單片機模擬軟體學習,目前有proteus(支持51,AVR,MSP430,CORTEX等),還有電路模擬軟體multisim也可以模擬51單片機的運行過程。第三就是自己從零開始搭建學習板,我當年學AVR的時候,就是自己買的洞洞板,一步一步焊接出來一個學習板的。
1、使用單片機學習板學習單片機這種方式可以不用過多關注硬體電路,直接熟悉單片機編程技能,當然,學習板上的電路一般都是經過驗證的,比較實用,所以可以直接學到相應電路的工作原理以及電路設計;
2、使用proteus學習單片機
目前這個軟體普及度已經很高了,並且網上相關的教程也很多,用這個軟體學習單片機的一個好處是不用買學習板以及配套的編程工具,還有就是可以自己同時學習電路設計和編程技能,但是缺點就是這個軟體的電路設計只是功能上的,具體到電路性能指標和各種參數,這個軟體不能準確的模擬出來。不過作為入門以及基礎原理的學習,這個軟體還是很好的。
3、自己搭建學習板我當時學習AVR單片機的時候,就是買的洞洞板和各種器件,從單片機最小系統開始搭建,最後焊成了一個包含串口,串轉並,並轉串,AD轉換,SPI、IIC匯流排,LCD液晶、數碼管顯示等各種電路。
這種方式有多種優點既可以學習編程,還學會了電路設計,又鍛煉了動手能力,甚至還學會了基礎的電路故障檢查和維修。
不過這種方法需要很大的耐心和毅力。
四、單片機學習入門1、學會開發環境的使用
2、熟悉單片機最小系統的工作原理
3、熟悉單片機編程的基本結構、流程、語法
單片機的學習無外乎兩方便.一,電路 。二,編程語言。
先說電路,說到電路不得不提三本書。模電,數電,電路。可以說這三本書是學習電路的必經之路,學好這些,即使你不學單片機也可以找到一份薪資滿意的工作。當然現在大公司工作都是分工明確的,做電路的就做電路。單片機編程的就做編程。不過能進大公司的還是少數。大部分小公司要求你全能,也就是說一個項目你要從晶元的選型,到外圍電路的搭建,最後I/O口的定義,程序的編譯調試,最後PCB板的製作,焊接,調試等等,你都要掌握。當然你的工資也是客觀的。我的意思是學習單片機最好是要學習電路。
接下來學編程語言,單片機的編程語言是結構化的C語言。C語言的學習也不是那麼容易的,至少指針就夠你迷糊一段時間的。學習C你可以先系統的學習一段時間,做一些練習,不用著急去將它應用到單片機上。
前面是基礎,到你拿到第一個開發版的時候,你的單片機生涯就此展開了。
接下來介紹兩款工具。
1.keil。單片機的編程軟體,它可以幫你搭建一個編譯環境,並且為你編譯程序提供一個界面。最主要的是可以生成.hex文件,供下載使用。
2.protues。這是一個模擬軟體,可以模擬你的電路,也可以模擬你的單片機程序,前期沒有開發板時,可以用著軟體來學習。
最後給自己買一個開發板,認真學習裡面的常式。一塊接著一塊的學。
個人觀點。
這個問題菜農還是很有發言權的,因為菜農可謂搞單片機的「革命先烈」。
要自學單片機最好先從51單片機開始入門。
由於嵌入式領域的編程和PC端編程不同,它必須要有開發板輔助,而且要有一定的硬體知識,例如門電路、定時器、看門狗、I2C、SPI、串口、並口、LED、LCD等等知識,否則很難入門和進步。
軟體調試先從keill開始,編程語言要略知彙編語句,建議用C語言編寫程序。還要學習CRC校驗和一些通訊協議。當然最好會畫板子布線等。
最好到嵌入式技術論壇去學習,看大家在某個問題的解決方法和經驗。
建議到中國電子網21IC,它是國內最大的工程師網站之一。
當然你也會在那裡找到菜農早期的文章和論據。有不會的可向菜農或站內高人請教。
以我個人的經歷來說明如何學習單片機。
本人電子信息工程專業,原本單片機是重點課程專業,然而大學期間頹廢,並沒有意識到單片機的重要性,導致單片機成了我大學所有課程中最差的一門課,幾乎快要不及格了,大四快畢業時找工作意識到單片機的重要性,於是乎從網上買了一塊學習板回來臨時抱佛腳自學,然而就是這學習的過程中發現其實單片機並沒有那麼難學,慢慢的我從點亮LED燈,點亮數碼管,點亮液晶屏等一步步自學也能夠開始單獨做一些項目了,因此,學習單片機,我總結了以下幾點:
1.學習模電,數電知識(這為單片機的硬體原理打下基礎)。
2.學習C語言(這是軟體的關鍵,我當時是在大二學的C語言,學的還不錯,考過了全國計算機二級C語言和江蘇省計算機二級C語言,這為我後面的學習單片機編程打下了基礎)。
3.購買單片機開發板自己動手(我當時花了幾百塊錢買了開發板,把開發板裡面的每個程序都研究了一遍,通過這樣學習,把單片機開發的流程都熟悉了下來,而且買的開發板里有教程,視頻,資料等,很方便初學者學習)。
通過以上這3點的學習過程之後,我相信你已經能夠獨立開發單片機的小項目了,如果再多一些開發經驗,你絕對是單片機老手了。
謝邀,從事單片機教學多年,雖說不夠精通,但帶領學生入門單片機足夠了。說實話,一個從沒有接觸過計算機語言的初學者,因為沒有程序的概念,學習單片機是有一定難度的。但如果方法得當,則能再最短時間內入門,也會為之後的深入學習打好一個良好的基礎。以下我將從幾方面來總結入門單片機需要做的幾步。
首先,選好設備。一台電腦是必備,計算機可用來寫程序,也可用來做模擬。最好能買一塊單片機的開發板,最簡單的那種,包含流水燈,數碼管,按鍵,顯示屏即可,淘寶網價錢不等,100不到就能買到好的。這樣能接觸到實物,直接用實物進行調試,更易於單片機的學習和開發。
其次,學會安裝並使用軟體,包括程序軟體和模擬軟體。程序軟體現在已經發展到Keil 4版本了,模擬軟體proteus的使用也非常方便,布置流水燈,電子錶,點陣,1602,12864等都可以練習。其實我覺得用模擬軟體入門單片機足夠了。
再次是學好彙編或者c語言,我們的學生一直在使用c語言編程,因為我覺得它更簡潔,靈活。
最後就是認真努力的堅持學習了,我認為以項目式學習為佳,項目由簡至煩,可以從一個發光二極體的點亮開始,接著是閃爍,流水燈的製作,獨立按鍵使用,矩陣按鍵使用,數碼管靜態顯示動態顯示,電子錶的設計,跑馬燈等等,其實到數碼管後你已經初步入門初具程序思想了。
說一千道一萬,堅持到底不放棄,找對方法,你很快就會發現單片機的研究其樂無窮。
上X寶購買郭天祥,或者其他口碑比較好的單片機開發板,然後按照裡面附帶的教程先走一遍,如果足夠認真,且你確實有興趣的話,也想深究的話,建議學習一下(單片機原理及借口技術)這本書,如果想將來找這方面的工作的話,建議在補修一下數電,模電,數字信號處理等相關課程,同時你應該具備較好的C語言基礎,或者彙編基礎,在開發單片機應用程序時,建議安裝最新的編譯環境(開發環境)時代是進步的,何況是引領時代進步的IT行業,學習最新的東西,才不會被這一行所拋棄!
以自己經驗來說,個人覺得比較好的方法是:1、可以先找視頻教程集中看一下,了解個大概,集中看會比零散學習效率高得多;2、之後最重要的一步就是買開發板,在開發板自帶的demo程序上進行開發,碰到問題時及時查閱資料,在實際編程中鞏固和學習新技巧和熟悉開發流程;3、開發板玩轉之後可以深入學習一下底層驅動的實現,底層驅動更有技術含量;4、學到這一步後可以開始接觸操作系統了,如輕量級的μcos等其他RTOS;5、光學單片機是沒前途的,需要深入學習Linux,如uboot、Makefile和shell編程等。
1.知識儲備:模電、數電,英文,計算機原理、計算機語言知識,元器件原理,常用介面時序及工作原理……學上得越多當然越有用;
2.興趣+學習能力:會學新知識,會看別人代碼,會問有經驗的人,善於思考沉下心來;
3.動手能力:學校里的知識遠遠不夠,有機會拿模擬器,寫代碼,焊板子,搭環境,Debug,用儀器,做項目,調產品!
邏輯思維強,有模電數電基礎,語言要求c,建議選stm32,庫函數多便於參考。書上基本從原理講起,邊看邊實踐,很快能上手。遇到問題多分析,每解決一個問題,你就向前走了一步,外圍基礎是輸入輸出io口,通信口,模數轉換,數據存儲,液晶顯示等等。
推薦閱讀:
※悟空邀請問答紅包,每天回答有上限嗎?
※五個方法提高其內存使用效能
※摩科工業倉儲貨運周轉塑料托盤叉車板為什麼能成為國內外用戶當中的剛需品?
※乾貨 | 阿里巴巴教你怎麼玩「新零售」
