最近在學c語言單片機,感覺好難阿,我該怎麼辦?
如果覺得51都難 這條路確實不適合你
換個專業
弱渣一枚,談談感受,大家姑且聽之。 一開始學51單片機的時候,看的是郭天祥的那本書,名字叫《新概念51單片機教程》,傳說每一個走上這條不歸路的人都是從這本書起步的,應當承認,這是一本入門的很好的啟蒙教材,為什麼這麼說呢?因為這本書沒有用連篇累牘的單片機原理直接扼殺你的興趣。
但是話分兩頭,即使是這樣一本書,我敢保證,百分之八十的初學者絕對不會看的超過串口通訊那一章,假設題主完全沒有電子設計的相關知識,單片機原理、微機原理的知識接近於0,那即使看這本書也是很痛苦的一個過程。
有人說學51最好的就是買個開發板,配合著書本或者教學視頻,會很有效果。但是,依據我個人經驗來看,用開發板來學習的效果僅僅限於你把書上的常式實際運行一遍,增加一下那微弱的成就感,或者在某些外行面前吹噓的資本,除此之外,沒有任何鳥用。因為從程序下載,到電路原理的設計,到程序的編譯執行等等環節,你手裡的那塊板子都已經幫你做好了,你所要做的只不過是寫個c語言程序!最終結果是,當你真正接受一個實際的任務時,你可能從哪裡下載程序都不知道! 其實單片機c語言要比單純的c語言簡單,他只是一個工具而已,如果你高興,你可以拿彙編試一下。因此,我認為題主並不是覺得c語言本身有難度(如果是的話,請自動轉身去看《c和指針》或者譚浩強的教材,不要再刷知乎了),而是單片機操作不甚了解,因為大部分零基礎的人都會有這種感覺:時序幹什麼用的,段選位選啥意思,通訊協議是什麼,為啥還要驅動來驅動電機等等看似毫無意義,但是確實是初學者不明就裡的問題。作為初學者,可以不用理會單片機內部原理,先會使用才是王道,會使用之後,當你回過頭來再看看單片機原理,那將是一日千里。鄙人之前有過一定的單片機學習經歷,在課堂上學習微機原理的時候,感覺就像是在複習,認知上沒有障礙。雖然課上講解的是彙編語言的微機原理8086,我學的單片機是基於c語言的,但實際上這些東西都是想通的。 最後,開發板這個東西還是建議不要使用了,有條件的話可以自己琢磨著做一個,這樣電路原理一下子就通曉了,單片機編程面向底層,也就是電路電氣連接,電路搞不清楚,編程就是瞎扯。如果沒有條件,推薦用proteus軟體模擬搭建外圍電路,也可以達到練習的效果。但是練習終究是練習,學單片機就是要用,要應用到具體有實際意義的電子設計當中去,比如可以設計一些簡單的小玩意兒(溫度檢測系統、模擬交通燈、電機調速系統、循跡小車等,我是自動化專業,說的可能都比較偏向於控制類),這樣會比單純練習強百倍。 51通曉的差不多了,建議再學習一款中端的單片機晶元,比如msp430或者是AVR,然後再學習一款較為高端的ARM系列的初級產品比如STM32,這樣下來,整體的認知概念基本上就差不多了。題主不知道有沒有想過,學51這類單片機,在整個計算機體系結構里,其實學的是什麼???
答曰:微機介面驅動。
說白了,就是驅動。
什麼鬼?什麼驅動什麼?
拿cpu驅動硬體。
如果對cpu不熟,驅動也是扯淡。
所以,希望先熟讀該款Mcu的數據手冊,看兩三次,大概對這個cpu的上電後做什麼的流程(上電複位,像Keil這種流行的嵌入式IDE里的Startup.s是幹嘛用的),還有性能和介面能力(IIc,spi,串口這些)有個底。
其次,作為被驅動的對象,對應的硬體模塊,晶元手冊手冊也必須熟悉。一般做項目時不熟手冊會死的。。
很慘!很慘!很慘!當然,這些也不是一朝一夕之功,這個過程可能要走幾個月或者半年一年。可以隨便某寶找塊開發板玩玩。
如果各種常用驅動都不在話下了,可以考慮上微型操作系統內核,想Ucos,還有國內出名的RTThread,那時候你的眼界會上一層境界。
嵌入式並不難學,其實難就難在沒信心和不夠堅持,而且是軟體(c語言)+硬體平台,兩者都得兼得。
我覺得,這些玩意最重要的意義,還是積累對計算機體系結構的理解,1以及大量解決問題的動手能力和思路吧。不管以後搞什麼技術,玩單片機考慮的都是最貼近底層的問題,你可以小看底層,但往往決定一個項目的自由度去到哪裡,決定因素底層往上層逐漸減弱的,是小無相功的存在。
例如Cpu不夠快,或者同時做多個事情處理不來,腫么破,於是可以考慮拿DMA來做。
串口收發那麼簡單,你會怎麼寫?
串口用while輪詢好挫。。。中斷逐個位元組發送也不好,頻繁收發數據的時候,程序也會被頻繁打斷。哦,通訊中的玩法是環形緩衝區~從Arduino 開始吧,開開心心的 有信心了 再去玩51咯 ,ti 的 launchpad系列 配合著energia 開發 也挺好入門的。網上例子多,外設電路也不要自己做。
嗯…作為相關專業懶癌患者,從來不上課自學成才,然後調教了幾個徒弟…這種問題真的太適合我了
辣么,關鍵是
1,放開那些視頻教程,是不是啰嗦到完全聽不進去在blabla神馬2,放開那些理論書籍,是不是枯燥無聊到感覺睡著了3,既然是單片機C初學者,我就默認是51單片機啦其實C是一種語言((?????)當然不是廢話)
所以簡單粗暴,實例書籍,找最簡單那種程序,最推薦那種計時器,然後一句一句看,int 定義變數那些跳過。從主程序看起翻譯每一句話,神馬,沒學過完全看不懂,直接度娘,翻譯成你懂的意思,當然找個男神女神直接翻譯加重點講解,你會覺得so easy
第一個程序是比較痛苦的,辣么,翻譯完幾乎就明白了一部分語句的用法,你說可以寫一個小程序都不是不可能。
那麼第二個程序是不是更快一點了,不要自虐,找短的實例。
然後有沒有感覺到一點點快感…完全明白C這坨符號在告訴你什麼了?其實最重要的是興趣興趣興趣,希望逼著自己看完3個簡單小程序,大概一上午的時間你已經有興趣…奔跑吧兄弟!!!51是最簡單了,主要看興趣,興趣就是動力
給你建議就是,書不要看太多,了解就好,然後自己找常式,慢慢琢磨,自然會有一個豁然開朗的時候,那時信心大增也會越來越有動力,如果你一開始就研究那本厚厚的書的話,太枯燥而且會缺乏實踐的動力,因為書上的知識比較系統全面但反而會造成一種緊逼自己看完那本書的壓迫感,但是前面說了這種學習是非常枯燥的。
所以建議你邊看書,邊自己動手做,慢慢地入門了發現自己知識太少然後再去看書。
另外,動手實踐這首先是需要有足夠讓你把學的東西做出來的條件和各種工具,這可能會形成一定的阻礙(因為人懶),所以推薦你用ISIS模擬軟體來實踐,這樣不僅方便,而且節約成本,且無條件限制。
加油吧,其實這單片機是非常有意思的。覺得c語言難的話試試用彙編咯,對於了解寄存器很有幫助的,好處就是回過頭再來看c語言覺得怎麼這麼簡單
自學是比較困難 不要急 慢慢來 看明白了 就會豁然開朗如果實在感覺難的話 題主不妨換套教程,比如《單片機C語言》 這套教程很適合初學者如果還是不行的話 建議題主直接報培訓班吧
試試搞軟體 寫寫python看能不能接受
目前我在技校學習單片機,有圖為證!
下面這一張圖是郭天祥編寫的:首先,得問你有什麼基礎~
感覺C語言單片機,最大樂趣就是自己有想法,隨心所欲實現它,自由不受限制!不要被困難嚇到,如果喜歡,請厚積薄發,夯實基礎,!
樓上該說的都說了。郭天祥那本確實不錯。買個開發板配合著學。只要肯鑽一定會有收穫的。
先學點數電基礎知識、
點燈就算了,51不學硬體電路白瞎………c的話,就那幾個語句,幾乎用不到演算法…所以,多了解硬體……
51都難?還是32?轉吧,趕緊
渭水的嗎?
找個視頻教程,一步一步跟著做,很快就會。那有些人說,這樣學不深刻,不系統,我想說,深刻和系統都是在你入門之後的事,連門都進不了,說別的都是廢話
如果用的是51, 換個試試看 推薦AVR(XMEGA) 最好不要用windows的IDE
推薦閱讀:
※怎麼在 Windows 7 下用 C++,不兼容啊?
※零基礎自學計算機編程?
※求一個簡單c語言應用程序開發的教程?
※四年級的小朋友,很喜歡玩手機遊戲,想學編程,如何教?