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