我大學(xué)測(cè)控技術(shù)與儀器專業(yè),記得當(dāng)初是大三學(xué)長(zhǎng)帶著我做比賽。剛開始,最好找一個(gè)學(xué)長(zhǎng)幫忙指導(dǎo)一下,從中你能學(xué)到很多包括硬件以及軟件的知識(shí),能少走特別多的彎路。全國(guó)大學(xué)生電子設(shè)計(jì)大賽,飛思卡爾比賽可以了解一下。先從51單片機(jī)入手,買一個(gè)開發(fā)版,大概就100-200左右,跟著事例做,現(xiàn)在就動(dòng)手做,不要覺得現(xiàn)在什么都不會(huì),沒學(xué)過數(shù)電模電,等你什么都學(xué)會(huì)了,黃瓜菜都涼了。我當(dāng)時(shí)就會(huì)一門c語言,學(xué)的還很菜,勉強(qiáng)60分過的,沒學(xué)數(shù)電,模電之類的書(大三才開課)。然后從圖書館借了一本單片機(jī)的書看,單純的看書沒什么意義,不動(dòng)手永遠(yuǎn)停留再原點(diǎn)。好在那是有學(xué)長(zhǎng)帶著我們(飛思卡爾東三省一等獎(jiǎng)),感謝學(xué)長(zhǎng),我們就打打下手,做做硬件,我那時(shí)是負(fù)責(zé)軟件的,說實(shí)話毛都不會(huì),就是動(dòng)手太少了,不過從那次比賽后,我就突然豁然開朗的感覺。期間參加差不多十多次科技競(jìng)賽,得過幾次省三等獎(jiǎng)。你們剛大一,多找學(xué)長(zhǎng)指導(dǎo)指導(dǎo),先確定一個(gè)方案,即使很粗糙,不要緊,先搞出來再說,然后慢慢改進(jìn)。不要好高騖遠(yuǎn),直接一步到位,如果粗糙的都搞不出來,你覺得能一下子就做到完美嗎?一定動(dòng)手做,在做的過程中才能知道自己的不足,才能學(xué)到很多東西。多上一些論壇逛逛,先從基礎(chǔ)的做起,開始學(xué)習(xí)51,有些基礎(chǔ)了,可以學(xué)16位的stm系列或者k系列,甚至更高的32位單片機(jī)。祝你們好運(yùn)!
我覺得我還是可以給你點(diǎn)意見的,我現(xiàn)在大四嵌入式實(shí)習(xí),發(fā)現(xiàn)自己會(huì)的太少。
如果你想做嵌入式或者單片機(jī)這塊的話
首先最基礎(chǔ)c語言,不要覺得自己c語言還不錯(cuò)了,工作中的很多代碼可能都看不懂,各種函數(shù)指針,指針函數(shù),結(jié)構(gòu)指針,結(jié)構(gòu)體中的結(jié)構(gòu)體指針。如果你c語言很好,那么最起碼他們?nèi)糠庋b好的函數(shù)你可以很快上手。
還有就是單片機(jī)基礎(chǔ),真想做單片機(jī)編程還是不要用51,之前一個(gè)工作多年的前輩推薦的便宜功能強(qiáng)的單片機(jī)就是stm8,這個(gè)階段將寄存器和庫函數(shù)編程都學(xué)會(huì),然后ADC,中斷,pwm以及一些常用協(xié)議,iic spi uart,這些掌握。
再后面可以用stm32,學(xué)習(xí)一些帶操作系統(tǒng)的編程,這一塊我就不了解了,因?yàn)槲乙膊粫?huì),但是做嵌入式一定要會(huì)。
然后基于你的興趣可以學(xué)一些wifi 藍(lán)牙 zigbee 還有一些通信的協(xié)議.
最后最好還能做一些項(xiàng)目。
有了這些技能,你在實(shí)習(xí)找工作的時(shí)候,或是應(yīng)屆生找單片機(jī) 嵌入式工作的時(shí)候就會(huì)容易很多。
每次看到大學(xué)生在大學(xué)期間做點(diǎn)有技術(shù)含量的東西,都會(huì)非常羨慕,計(jì)科畢業(yè)從事嵌入式開發(fā)已經(jīng)十幾年了,在大學(xué)期間學(xué)的第一門編程語言就是C語言,早期的大學(xué)開設(shè)課程基本上C語言為主項(xiàng),現(xiàn)在隨著高級(jí)語言種類的增多,java,python相關(guān)的課程在學(xué)習(xí)期間也漸漸開設(shè)起來了。
學(xué)習(xí)單片機(jī)基礎(chǔ)編程語言就是C語言了,要玩轉(zhuǎn)單片機(jī)C語言是必備基礎(chǔ),單片機(jī)里面對(duì)于指針的使用頻度非常高,與單片機(jī)相對(duì)應(yīng)的就是嵌入式,算是單片機(jī)的升級(jí)版本,最大的區(qū)別在于是不是有操作系統(tǒng),經(jīng)常寫單片機(jī)的人對(duì)于中斷或者循環(huán)使用的比較多,一旦涉及到操作系統(tǒng)就會(huì)變得有點(diǎn)迷茫,代碼寫起來就顯得沒有那么隨意了,今天不過多的講述嵌入式的概念,單就單片機(jī)如何學(xué)習(xí)發(fā)表一下個(gè)人的觀點(diǎn)。
如何才能學(xué)習(xí)單片機(jī)?
1.單片機(jī)必備編程語言C語言
C語言到目前為止還依然是非??康淖〉讓泳幊陶Z言,盡管現(xiàn)在很多人覺得這門編程語言好像距離我們很遠(yuǎn)了,但是看到底層實(shí)現(xiàn)的編程語言幾乎除了C語言就是C++,所以想玩單片機(jī)繞不開這門編程語言,如何學(xué)習(xí)C語言,C語言從語法細(xì)節(jié)上比較少,正是因?yàn)樯偎圆棚@得靈活,記得當(dāng)初剛學(xué)習(xí)C語言弄了幾個(gè)月覺得自己能看懂C語言寫的所有代碼了,于是從學(xué)校的圖書館里面借了一本1000頁的linux內(nèi)核書籍看起來了,結(jié)果看了不到100頁進(jìn)行不下去了,太靈活了沒點(diǎn)實(shí)際項(xiàng)目開發(fā)經(jīng)驗(yàn)很難持續(xù)下去。
最后老老實(shí)實(shí)回歸到C語言的基礎(chǔ)學(xué)習(xí)上了,C語言主要的知識(shí)點(diǎn)屈指可數(shù),有指針,數(shù)組,結(jié)構(gòu)體,函數(shù),遞歸,回調(diào)等基本概念,但真要組合起來使用就會(huì)變得非常復(fù)雜,所以C語言學(xué)好主要依靠實(shí)踐,學(xué)習(xí)任何編程語言都遵循這種規(guī)律,理論的學(xué)習(xí)總會(huì)相對(duì)輕松些,真要到項(xiàng)目實(shí)踐階段各種不懂的東西就出來了。
2.讀懂手冊(cè)
玩單片機(jī)其實(shí)很大程度上就是讀懂寄存器操作手冊(cè),以及對(duì)應(yīng)的操作關(guān)系,一般單片機(jī)很少單純的硬件或者軟件,都是集成發(fā)展,什么事情一塊做了。很多做單片機(jī)的都是畫著PCB板子,然后再把代碼給搞定了,同時(shí)對(duì)于芯片手冊(cè)進(jìn)行一遍遍的研究,最后形成一個(gè)產(chǎn)品出來,能夠全部把這個(gè)流程走下來的最后都會(huì)向著嵌入式的方向發(fā)展,然后再把框架性的東西提升一下,在嵌入式領(lǐng)域一樣做的非常出色。
學(xué)習(xí)任何技術(shù)都需要耐得住性子,很多開始階段就想著一口拿下,這都是不現(xiàn)實(shí)的事情,慢慢積累慢慢折騰,很多人覺得很多手冊(cè)都是英文版本看不懂,其實(shí)真要拿出決心去看去學(xué)習(xí),未必真弄不懂,英文基礎(chǔ)很重要,更重要的是學(xué)習(xí)態(tài)度,是不是真的拿出決心來學(xué)習(xí)。
希望能幫到你。
我給你推薦一本書?!秵纹瑱C(jī)c語言應(yīng)用100例第三版》,電子工業(yè)出版社出版。這本書講解了100個(gè)例子,通俗易懂,從不認(rèn)識(shí)單片機(jī)開始,到最后把單片機(jī)掌握熟練。里邊的每一個(gè)程序都是經(jīng)過仿真和實(shí)驗(yàn)過的,你可以放心使用。大一學(xué)生參加學(xué)校機(jī)器人設(shè)計(jì)比賽,你這個(gè)想法很好,隊(duì)伍也組好了,關(guān)鍵要分工。有人編程,有人搞機(jī)械設(shè)計(jì),比如說車底版的設(shè)計(jì),需要進(jìn)行激光切割,或者線切割,看你采用什么材料。電路的設(shè)計(jì),電路設(shè)計(jì)需要同學(xué)們?nèi)W(xué)習(xí)電路設(shè)計(jì)軟件。那你首先要選一款用什么樣的單片機(jī)?單片機(jī)隨后把外圍電路設(shè)計(jì)好。還要考慮我們用的什么驅(qū)動(dòng)電機(jī)?電機(jī)有沒有編碼器?機(jī)器人小車上采用什么傳感器?有沒有視覺傳感器?或者光電傳感器,防碰撞傳感器,等等。另外要看一下比賽的要求,要圍繞著比賽的要求不能超出范圍。根據(jù)比賽的要求,我們來設(shè)計(jì)我們自己的小車,或者說設(shè)計(jì)自己的機(jī)器人,完成一定的功能。
大一的學(xué)生就開始參加機(jī)器人比賽,這就是以賽促學(xué)。通過比賽來促使你來學(xué)習(xí)單片機(jī)。那單片機(jī)的課程是在大三的第二學(xué)期,反正我們學(xué)校是在大三的的第二學(xué)期,你們?cè)谑裁磿r(shí)候開設(shè)這門課程?所以說通過比賽,就迫使你來學(xué)習(xí)單片機(jī)單片機(jī)的課,需要你們需要你們不斷地去做實(shí)驗(yàn)。把這本教材上的100個(gè)例子都要實(shí)驗(yàn)去做一下切身體會(huì)。另外要安裝一個(gè)仿真軟件進(jìn)行仿真,先仿真,然后把程序再下到單片機(jī)實(shí)驗(yàn)開發(fā)板里邊兒。開發(fā)版可以在網(wǎng)上選購,大概幾十元錢就可以了。另外我們找一些論壇,和視頻。當(dāng)然了,你買了這本教材之后,我們配的有課件,有光盤。光盤里也有一些程序,100個(gè)程序。這些程序都是經(jīng)過實(shí)驗(yàn)和仿真過的放心來使用。
最后總結(jié)一下,學(xué)習(xí)單片機(jī)需要什么教材?那就是《單片機(jī)c語言用100例第三版》電子工業(yè)出版社出版。當(dāng)然了,也有其他的好的教材。你都可以去學(xué)。學(xué)習(xí)單片機(jī)你最好先開始學(xué)c51。C51幺也是最簡(jiǎn)單的一款,很容易上手。最后一句話,多練、多編程序、多下載、多仿真、多動(dòng)手。祝你最后比賽取得一個(gè)好的成績(jī)。
大一我覺得有這個(gè)想法就非常不錯(cuò)了,因?yàn)槲矣X得你時(shí)間充沛,所以我建議你就從51單片機(jī)的C語言開發(fā)入門,如果手上沒有開發(fā)版的可以去淘寶買一個(gè)開發(fā)版,一般賣家都會(huì)送視頻教程,你就從跑馬燈開始一個(gè)個(gè)例程的往下做,還有就是要搞懂原理,搞懂單片機(jī)架構(gòu),存儲(chǔ)器空間,每個(gè)模塊的原理。針對(duì)機(jī)器人開發(fā),尤其是要弄明白PWM, 脈沖補(bǔ)獲,串口通訊的原理。你搞懂51單片機(jī)后,以后想學(xué)stm32, DSP就很輕松了
郭天翔51單片機(jī)學(xué)習(xí)視頻,這個(gè)是入門,然后學(xué)習(xí)STM32系列教程
優(yōu)酷上有個(gè)stm8的教程,很不錯(cuò)的,好像是北航的老師做的,建議你從頭到尾看一遍。單片機(jī)一定從寄存器學(xué)起,不會(huì)寄存器永遠(yuǎn)屬于入門級(jí)別。只有了解了寄存器時(shí)序這些知識(shí)才能更深一步學(xué)習(xí)RTOS系統(tǒng),要不然就只會(huì)調(diào)幾個(gè)API,遇到復(fù)雜的問題的時(shí)候,比如用io模擬通訊端口,就白瞎了。
別學(xué)51,直接上stm32,用cubemx+truestudio,用上位機(jī)的思維去寫單片機(jī)程序。這樣不一定最好,可是一定是最快可以上手的。
anduino 和 micropython的單片機(jī)開發(fā)版推薦學(xué)習(xí)。學(xué)機(jī)器人控制沒有必要從0開始,太注重細(xì)枝末節(jié)會(huì)讓你寸步難行,很快就失去興趣了!
郭天祥的那本書