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