學(xué)單片機(jī)有什么用?單片機(jī)怎么學(xué)最有效率?怎樣學(xué)好單片機(jī)
“單片機(jī)”有啥用?如果你是個學(xué)電子的學(xué)自動化的理工生的大三以上狗說不上四五條,那你叫學(xué)校死遠(yuǎn)吧。但也要考慮自身責(zé)任。
如果你學(xué)的不是跟這相關(guān)的專業(yè),覺得很新奇嗎,離我們生活很遠(yuǎn)嗎?那這抱歉了,你真想多了,說新奇啊--單片機(jī)誕生于1971年,比咱們年齡都大吧。說離我們遠(yuǎn)啊--你每天都會遇到好多次,賣早餐到刷卡機(jī)刷飯卡,電梯送你上樓去上課,圖書館的門禁攔住你又放你進(jìn)去,上廁所方便后自動沖水,這些其實(shí)都是單片機(jī)君們在默默的工作。
單片機(jī)從1971年發(fā)展至今,各方面都得到了發(fā)展,種類上更豐富,集成度更高,價格更便宜,功能上更強(qiáng)大。
一般的書籍和網(wǎng)上的資料都會說單片機(jī)在儀器儀表、工業(yè)控制、家用電器、醫(yī)用設(shè)備、航空航天等方面有廣泛的應(yīng)用。
工業(yè)控制主要是因?yàn)閱纹瑱C(jī)工作的穩(wěn)定程度是最高最穩(wěn)定的,如工業(yè)機(jī)器人的控制啊、流水線啊都需要穩(wěn)定的重復(fù)工作,所以就專門嵌入一個微控制器到這個系統(tǒng)里去執(zhí)行已經(jīng)編輯好的程序。嵌入式系統(tǒng)的穩(wěn)定度是最高的,極少出現(xiàn)死機(jī)、程序跑飛的現(xiàn)象,所以啊,電梯、游樂場里過山車啊飛輪啊都由單片機(jī)控制。
家用電器很多啊,比如自動洗衣機(jī),你輸入個數(shù)它就知道要洗多久,洗完之后它又自動用清水洗,又甩干。都是單片機(jī)在按照已經(jīng)編好的程序在干活。而且智能家居現(xiàn)在是一個很熱門的話題,讓你整個家都是智能的,包括地板和窗戶。
這里的例子真的很多,大家到百度上一百度都能百度出一大堆,我就不再累述。因?yàn)閱纹瑱C(jī)體積小、控制功能強(qiáng)、功耗低、環(huán)境適應(yīng)能力強(qiáng)、擴(kuò)展靈活和使用方便,導(dǎo)航、控制、測控、通信等各個領(lǐng)域都要依仗于它。
其實(shí)沒必要說要學(xué),沒人要你學(xué),學(xué)這件事要是自己想學(xué)然后才能學(xué)好才能堅持下來,這里只是跟你說這東西挺好的,學(xué)不學(xué)你自己決定。而不能說學(xué)了之后對你好,我覺得這叫勾引,很卑鄙。
不知道大家什么感受,其實(shí)我覺得大學(xué)里最后留在心里的都是自己喜歡的自己自學(xué)的東西。老師教的有時應(yīng)付考試的真的沒留下啥痕跡。
其實(shí)這也不奇怪,就比如說接觸了單片機(jī),一學(xué)一看還挺有意思,自己就喜歡了,又自己查書查資料,又自己開始動手干活,自己賣元件,自己請教別人,自己制造出了作品,自己發(fā)現(xiàn)問題和解決,其實(shí)這個學(xué)習(xí)的過程是多維度的,不但收獲了知識還增強(qiáng)了綜合解決問題的能力,比課堂上老師直接灌輸?shù)囊痪S學(xué)習(xí)方式要強(qiáng)太多了。況且在課堂上,大多數(shù)時候還是我們在非自愿、受威逼利誘的情況下迎合應(yīng)試教育。
學(xué)校有時會說一句話“我們的學(xué)生基礎(chǔ)知識扎實(shí),工作之后上手快”。明顯胡說八道,上手快靠什么,靠能力?荚、知識和能力是三碼事,不能因?yàn)槎寂θ〉昧撕玫目荚嚦煽兙驼f掌握了知識,更不能說這知識又都轉(zhuǎn)化成了能力,而在現(xiàn)實(shí)生活中,直接使用的是能力。那你告訴告訴我要看多少本書才能學(xué)會包餃子?
我覺得大學(xué)校園里的主題詞不是青春、也不是奮斗,而是迷茫,大家不知道為了什么要伺候好每個科目的成績,不知道為了什么要考研、出國,不知道自己想干什么能干什么,大概都是為了別人說的一句好,甚至是以后會好。
一個東西如果自己覺得不感興趣覺沒意義,最好真的不學(xué)。如果真的感興趣,如果可以,通過這樣的一次學(xué)習(xí)經(jīng)歷把學(xué)習(xí)的主動性積極性從大學(xué)那僵尸一大波一大波的教室里解放出來。不奢求老師家長社會的扯淡美好未來的色誘,不屈服應(yīng)試教育的掛科懲罰的迫害,只是簡簡單單的學(xué)點(diǎn)東西,不管有沒有用,只是自己愿意沒有為什么。
單片機(jī)學(xué)習(xí)是很難的,不能速成,你必須承認(rèn)這一點(diǎn),有些號稱能幫你從入門到精通,那些大多都是牛皮膏藥,基本上講的都是些入門的東西,市面上的講單片機(jī)的書本內(nèi)容基本上八九成是一樣的。學(xué)習(xí)單片機(jī)的視頻,八九成一樣,不同的人講的,主講人的水平高低不同。
而正真高深的單片機(jī)程序處理,你在網(wǎng)上基本上找不到,偶爾能有那么一兩個高手把自己的一點(diǎn)點(diǎn)心得分享出來,也許你半天都不能領(lǐng)悟其真諦。
正真的高手是這么煉成的?唯有自己日積月累,不斷堅持、思考讀成熟的程序,加上自己對程序的悟性,等到2到3年方可有所造詣。
1、首先我們來談?wù)凜 基礎(chǔ),單片機(jī)程序開發(fā),基本上用的是C 語言,你的 語言學(xué)的怎么樣了,對于關(guān)鍵詞的使用是否已經(jīng)融會貫通了,對于語法規(guī)則是否已經(jīng)掌握。這是一門實(shí)踐行的知識,沒有實(shí)踐你的C 語言等于0,他的功能可不是書上那些例子,輸個數(shù)做個加減乘除把結(jié)果輸出。利用他的關(guān)鍵字及語法規(guī)則,勾畫出無限的生產(chǎn)力。對于C 語言的基礎(chǔ)知識你要達(dá)到那種水平了,當(dāng)你的想法出現(xiàn)的時候,功能要求已有,你能立刻用C 語言描繪出來。C 語言只是工具,實(shí)現(xiàn)我們的想法的工具,對于工具的使用要信手拈來,例如:把一個字節(jié)數(shù)據(jù)高底位一一兌換、把脈沖數(shù)轉(zhuǎn)換為時間及檢測出按鍵的連續(xù)兩次按下等等,看到問題的時候具體的實(shí)現(xiàn)代碼在老海呈現(xiàn)了沒。
2、工具用熟了以后,我們該學(xué)習(xí)什么了了?對語法熟練以后就應(yīng)該重點(diǎn)學(xué)習(xí)程序設(shè)計的方法,請大家分清兩個概念,C 語言只是工具,會C 語言并代表你會設(shè)計程序,程序設(shè)計能力可分為,首先是能將復(fù)雜的功能要求拆分為若干個細(xì)小功能,用C 語言描述實(shí)現(xiàn),再將這些小功能用你的C 語言工具串起來組成我們所需要的復(fù)雜功能。整個過程下來C 語言都只是實(shí)現(xiàn)你想法的工具?吹竭@里你是否還敢用“玩”、“精通”來形容單片機(jī)嗎,當(dāng)真正進(jìn)入單片機(jī)殿堂的時候你會感覺這是一個浩瀚無邊的宇宙,你會越發(fā)感覺自己的渺小,只有更好,沒有最好。
總結(jié)幾點(diǎn)個人的學(xué)習(xí)的經(jīng)驗(yàn):
C語言與程序設(shè)計的學(xué)習(xí)是相輔相成的,他們共同進(jìn)步,就如同你的兩只腳,誰都不能超過誰很遠(yuǎn)。學(xué)習(xí)單片機(jī)之前請先學(xué)習(xí)C 語言,請不要相信什么零基礎(chǔ)也能學(xué)好,至少20天,要把基礎(chǔ)知識掌握,在進(jìn)入單片機(jī)學(xué)習(xí),視頻網(wǎng)上一大把,學(xué)會操作基礎(chǔ)模塊,在這個階段你可以在網(wǎng)上尋找知識學(xué)習(xí),將你開發(fā)板的模塊程序都練一遍。
當(dāng)你開發(fā)板學(xué)完了, 這個時候該這么辦了,這就是我今天重點(diǎn)要的。
如果你就是淺嘗輒止,那么你可以說自己入門了,如果你想有所造詣那么你還遠(yuǎn)著了,對于走過了這個階段以后,我對我的學(xué)生的要求就是“背程序”,就如同別人學(xué)習(xí)英語背文章增強(qiáng)語感。我說所的“背程序”,并非死記硬背,屬于一種重復(fù)強(qiáng)化訓(xùn)練,圍繞幾個主題,①、按鍵讀;②、數(shù)碼管顯示(重復(fù)計算顯示代碼) ;③、LCD1602液晶顯示;④、AT24C02讀寫;⑤、DS1302讀寫;⑥、D S18B20讀寫。每個項(xiàng)目從建工程到下載成功在20分鐘以內(nèi),最好練到在10分鐘左右。對于代碼需要精簡而又有內(nèi)涵,當(dāng)你做好以后能增強(qiáng)你的語感及常規(guī)程序設(shè)計能力。最后以同樣的方式訓(xùn)練一個綜合項(xiàng)目——多功能數(shù)字鐘,這個項(xiàng)目可能需要一個上午才能做好。這個過程的目的很簡單,增強(qiáng)C 語言工具的使用能力,在單片機(jī)編程這塊,對于基礎(chǔ)模塊的程序設(shè)計能力,完成從感覺自己什么都懂,可要寫點(diǎn)什么東西時又不知如何下手到實(shí)現(xiàn)一些簡單功能程序能迅速寫出來的轉(zhuǎn)變。這個方式枯燥乏味但是效果還可以,可以借鑒借鑒。
完成了上述工作,緊接著多練習(xí)綜合項(xiàng)目,這個時候這能靠自己,學(xué)程序沒有別的,只能多練,多想。用你的開發(fā)板編寫:計算器、電子日歷、電子密碼等各類能把你開發(fā)板上的資源綜合起來用的程序。假想就是在做項(xiàng)目,要對自己提出苛刻的功能要求,切記不多說差不多了,要做到完美。
再往下走,完美要回過頭學(xué)習(xí)單片機(jī)原理,去學(xué)習(xí)匯編,學(xué)習(xí)單片機(jī)的運(yùn)行原理對你編程有極大的幫助,再把你的C 語言書拿出來,細(xì)細(xì)的看前幾章節(jié),是時候該去看看指針了。在程序中簡單的使用指針。
就這樣往下練吧,估計至少得年吧時間。
再往下走,你應(yīng)該去研究指針了,將指針應(yīng)用到你的程序當(dāng)中,它可以給你解決以往你所遇到的很棘手的問題。
講到指針,該想到結(jié)構(gòu)體了,我們應(yīng)該去學(xué)習(xí)鏈表了,我們要將簡單數(shù)據(jù)結(jié)構(gòu)應(yīng)用到單片機(jī)了。這個期間你如果能去學(xué)習(xí)在操作系統(tǒng)上的編程是很有必要的。如在VC 上做簡單功能界面,Linux 系統(tǒng)編程。這可以讓你看看別人優(yōu)秀代碼,從中吸取經(jīng)驗(yàn),就算看不到源代碼,也可以從別人的函數(shù)所具備的功能上思考的自己的函數(shù)設(shè)計,改善自己的函數(shù),我的很多函數(shù)功能設(shè)計方式就是這么來的。
差不多又是一年時間過去了。真心希望你堅持下來了,到這個時候你基本上已經(jīng)能獨(dú)立解決很多問題了。
這個時候我們該去學(xué)習(xí)什么了了,該去學(xué)習(xí)“易經(jīng)經(jīng)”——C 語言描述數(shù)據(jù)結(jié)構(gòu)與算法分析。在程序的世界里,它就是最高的內(nèi)功心法,能在里面學(xué)的一招半式,就可以行走江湖了。這本書目前我也只是研究過幾個章節(jié),在這里面你會看到操作系統(tǒng)的具體實(shí)現(xiàn),文件系統(tǒng)的設(shè)計思想等等,各類大型程序設(shè)計設(shè)計思想。
關(guān)于單片機(jī)學(xué)習(xí),內(nèi)容遠(yuǎn)不止這些,上述只講了單片機(jī)的程序設(shè)計方面,依據(jù)單片機(jī)的特片還硬件這一塊極為重要,不理解硬件也設(shè)計不好程序。
編輯:admin 最后修改時間:2019-09-06