單片機系統學結

來源:文萃谷 2.46W

從剛開始接觸單片機,到現在已經有4年的時間了,在這期間學習和使用了51單片機、飛思卡爾單片機,lpc2138,pic16f887等系列的單片機,每接觸一款單片機,都會經歷熟悉其基本開發,然後將其用於項目中的過程,對於如何學習一款單片機,自己做了如下的總結。

單片機系統學結

大家都知道,51單片機是最容易入門的,不僅因為其編程簡單,更重要的是網上的資料非常豐富。所以一般學習單片機開發的都將51單片機作為入門開發的首選。我學習51單片機的時候是採用這樣的一個步驟進行學習的:

第一步(熟悉的過程):買了一款51單片機開發板,然後就開始了我的學習之旅,剛開始的時候沒有去看視頻教程,而是對着一本實驗教材進行學習,那本實驗教材的名字記不清楚了,但是其內容就是圍繞單片機的led燈進行控制,將51單片機內部的各個功能部件全部都使用到了,這樣就能使我在很短的時間內,通過控制led燈的亮、滅熟悉了51單片機的內部的各種資源,這時對51單片機也就沒有感到陌生了。所以,個人覺得,學習單片機,要從實驗入手,先熟悉單片機再説,開發語言開始使用的是c語言。

第二步(進階的過程):有了第一步的基礎之後,接下來的便是進階的過程,當時,我看的是郭天祥十天學會單片機的視頻教程,因為這個教程從基礎到複雜的編程慢慢深入,講的比較的全面,而且也生動,所以那一階段,也是我學習單片機進步最快的階段,每次聽課的時候,按照上面的實驗,以及課堂上面調試程序時出現的一些問題,自己認真的在電腦上進行調試,並分析產生故障的原因,讓我有了一定的開發基礎。在看完了視頻教程之後,後面又對基礎的知識進行了下補習,主要是看單片機原理性的教材,因為有些細節性的東西還是要從教材上面獲得。

第三步(項目實戰的階段):學習單片機的時候,雖然也編寫了一些程序,但是那些都是一些很小的模塊程序,並沒有起到綜合應用的目的,所以在這之後,我和另外一個學習硬件的同學一起組成了一個小的團隊,進行項目實踐開發,那時候,實驗室的條件比價好,有很多的器件可以自己使用。所以,我們就設計了我們的第一個作品,基於單片機的液體點滴監控系統。做這個系統時,就將以前單片機所學的知識,做了一個綜合的應用,包括有lcd1602控制,串口的控制等。

經過以上三個步驟的學習之後,對於51單片機的開發基本上就算入門了。而對於其他類型的單片機,如飛思卡爾單片機,lpc2148 arm7單片機,pic16f887等,雖然每個系列的功能不一樣,但是最基本的編程思想還是一樣的,不同的可能就是編譯器,程序下載的軟件等差別,所以有了51單片機的開發基礎之後,學習其他單片機所採用的方法就是一個差異化的`學習,學習各種單片機不同的地方,這樣,就能很快的熟悉一款新的型號的單片機。

如在學習pic16f887這個系列的單片機時,我首先做的工作不是去閲讀數據手冊,而是先拿着demo代碼,在編譯軟件中編譯、鏈接、生成hex文件,然後將其下載到開發板中跑起來,這個過程主要就是學習其軟件的基本操作,有了這個基礎之後,就能自己進行編程、測試。之後就是熟悉其編程的模式,所謂其編程模式,就是寄存器的控制,中斷程序的編寫,熟悉了這個操作,也就能控制其他的功能模塊了,如串口的控制、i2c硬件控制器的控制。這些基本的開發熟悉了之後,接下來便是學習差異的部分,例如pic單片機c語言中,其堆棧深度不能超過8級,超過了之後,將會使得程序出現跑飛的現象。而且內存的分配完全要靠自己來控制,分成了4個bank的數據,bank0,bank1,bank2,bank3 等。這些就是每個系列單片機所獨有的一些東西,這些東西需要詳細的瞭解,因為它們可能為你的編程帶來很大的便利。

以上就是我學習單片機的總結,如果大家有更好的學習方法,希望大家能夠提出來,一起討論,共同進步。

單片機系統學結 [篇2]

人的一生是一個不斷學習、不斷成長的過程。轉眼間,研究生的學習生涯結束了,走上新的工作崗位。回頭看看,發現自己不知不覺已經走過了五年的單片機學習之旅。

在2003年最初接觸單片機的時候,在我心中覺得51就是單片機,單片機就是51,根本不知道還有其他單片機的存在。那時候老師只教會了我們彙編語言,根本不知道用c語言也可以進行單片機開發。幸運的是,我加入了單片機興趣小組,在老師的指導下,做了一系列實驗,有“基於ds18b20的温度採集系統”、“有基於164的移位寄存器的燈光控制系統”、“有步進電機和直流電機的控制系統”。這時候我才發現,這是學習單片機的一個最好途徑——在實踐中領悟理論,用理論指導實踐。在上課的整整一個學期中,雖然老師講得很詳細,但是大部分概念都是到了實際動手做東西的時候才弄明白的。而且在經歷了迷惑之後再搞清楚,印象就特別深刻。直到現在我對那些概念和接口都非常清晰。其實我也很慶幸學習和使用了兩年多的彙編語言。由於有這些鍛鍊,我對單片機底層結構和接口時序就弄得很清楚。在使用c語言開發的時候,優化代碼和處理中斷也就不會太費勁。我覺得,雖然現在絕大部分單片機開發都使用c語言,甚至有些公司還推出了圖形化編程的工具,這樣對於項目的開展從時間上快了很多,在管理上也規範了不少,但是從學習和想深入掌握單片機精髓的角度來説,還是需要熟練掌握彙編語言的使用。

機會總是青睞於有準備的人。也許有了前面一段時間的理論和實踐的積累,我才慢慢得到了一些參加科技競賽和參與科研項目的機會。在參加第一屆浙江省機械設計競賽的時候,我們設計的由多單片機系統協調控制的“月球車”機器人奪得了唯一的一個特等獎。這個競賽給我最大的收穫是我對單片機的認識改變了,它不再僅僅是一門學科了,它是一個可以讓你的創意得到充分發揮的平台。後來參與了“基於視頻分劃技術的鋼捲尺自動切零位機”、“電能表渦槓渦輪齧合深度檢測系統”、“基於公共電話網的水錶集抄數據路由器”、“高精度電感微位移測量系統”等一些實際的項目。在這些過程中,我發現只是精通單片機技術還不能很好的解決問題。體會最深的是,單片機只有融合到各種應用領域中,才能展現它的最大活力。然而單片機僅僅是一個工具而已,要做好單片機系統還需要各種應用領域的專業知識的支持。例如,在“基於視頻分劃技術的鋼捲尺自動切零位機”中,就需要搞清楚全電視信號的時序,弄明白鋼捲尺切零位機的工作原理,懂得怎麼利用疊加在視頻信號中的橫豎線來進行刻度的瞄準等。沒有這些專業知識,就算單片機技術再厲害也不可能做好這個項目。脱離應用背景的單片機開發,就像一個沒有靈魂的軀體一樣。

隨着arm的出現,我曾經認為,8位單片機可能在32位單片機的衝擊下就此走進歷史,可是很快就認識到我是錯誤的。隨着技術的革新和時間的推移,各大單片機公司紛紛將單片機朝着片上系統這個方向發展,集成了現在各種流行的技術和常用的模塊。我相信,在當前國內和國外的這個市場中,8位單片機應用的市場仍然是充滿生機,活力無限。在市場的不斷變化和技術的不斷更新過程中,8位單片機也會順應潮流不斷革新。

從我五年走過的路來看,單片機學習的過程應該是一個循序漸進、不斷學習、不斷積累的過程,可以分為三個階段。

第一階段:掌握開發單片機的必備基礎知識。首先是熟練掌握單片機的基本原理,其實各家各門的單片機其基本結構和原理都差不多,特別是共有的知識需要好好理解和掌握。例如,內核結構、內存分配、中斷處理、定時計數、串行通信、端口複用等一些最基本的概念和原理。除此之外,我們還需要具備模擬電子、數字電子、c語言程序開發知識以及原理圖和pcb設計等一些技能。在進行系統開發的時候,進行原理設計、pcb布板、程序編寫、系統聯調這些工作都是在所難免的。

第二階段:在掌握好一款單片機原理和應用的基礎上,開始學習其他各家單片機的獨有技術,學不了那麼多也要多瞭解瞭解。同時儘可能多地掌握單片機的一些外圍器件和常用電路,以備不時之需。有時候客户要求低成本,那我們只好選用合鈦、義隆、華邦等這類台灣芯片;如果客户要求工業級的性能,那麼我們就得從pic、nec、飛思卡爾、nxp等這些歐美和日式單片機中選擇;若要進行功耗的開發,選用msp430系列應該有一定優勢;在進行測量儀器設計的時候,c8051和aduc842這類數模混合芯片就顯得比較方便。所以説最好每個類型的單片機都會一兩款,在實際項目選型中可以更加靈活。另外,要注意平時的技術積累。比如,在項目開發過程中將一些常用的接口程序和控制算法整理成模塊或者函數,在其他的項目開發中,有同樣或者接近的需求時馬上就可以使用,又快又好。

第三階段:在實際的項目開發過程中,不斷深化單片機應用技術,不斷積累應用行業的專業知識。例如,我完成了“高精度電感微位移測量系統”,就會對電感傳感器的測量機理和信號特性、測量電路的設計、電磁兼容處理、誤差修正和非線性處理等測控方面的專業技術有很深的認識。以後碰到類似的項目時,很多東西就可以直接利用了。有了紮實的單片機應用相關的基礎知識,並且熟悉掌握了幾款不同類型單片機的開發方法,再結合實際的應用背景,那麼就可以隨心所欲,設計出性能最優、結構最合理的單片機應用系統。這是我最大的奮鬥目標,我覺得這也應該是單片機應用的最高境界吧。

在這五年的學習中,有感慨、有遺憾、有憧憬、有希望,更重要的是我對單片機應用這個領域充滿熱情。由於才疏學淺、涉世未深,希望能與行業裏的各位老師多多交流,不斷學習,不斷成長。

單片機系統學結 [篇3]

基於本人學習單片機的痛苦經歷,特編寫本教程,以此獻給廣大的單片機初學者,希望您能從中受益。

作者提示:本教程乃最通俗易懂之單片機教材也,如果您還是看不懂,請千萬不要涉足此行,以免誤入歧途,耽誤您的前程*_*

拿到這本教程您首先就會想,什麼是iap教學法?是不是一種什麼全新的教學方法?當然不是,我可沒有那麼大的本事,其實這只是我杜撰的一個新名詞,意思就是in applications program(在應用中編程),當然這只是針對單片機教學,説法是否正確,還得您説了算。

至於為什麼要提這種説法,那我倒想説幾句。大家都知道,學習電子技術是一件非常無聊和枯燥的事情,為什麼會有這種想法,就是因為我們傳統的教學方法只重理論而忽略了實踐,要一個人記住那些空洞而有無聊的理論知識實在不是一件容易的事,好在我們總算熬過來了,不管如何,也多多少少的學習了一些電子基礎知識。

接下來我們應該進一步掌握些什麼知識呢,凡涉足此行的朋友都知道,那就是單片機。不過這可不是一件容易的事,倒不是因為單片機很難學,而實在是我們身邊很難找到一本專為單片機入門者而編寫的教材。翻一下傳統的單片機教材,都好象是為已經懂單片機的人而寫的,一般總是以單片機的結構為主線,先講硬件原理,然後是指令,接着講軟件編程,再是系統擴展和外圍器件,最後舉一些實例(隨

,很少涉及單片機的基礎知識,如果按照此種學習方法,想便説一點:很多書中的實例都是有錯誤的)

進行產品開發,就必須先把所有的知識全部掌握了才可以進行實際應用。孰不知,單片機不象模擬電路和數字電路那樣,只要搞懂了電路原理,再按照產品要求設計好相應的電路就可以了。它是一種以簡單的硬件結構,複雜而有靈活的軟件系統來完成設計的通用性產品,不同的設計者只會使用其不同的功能,幾乎沒有人會把它的全部指令都使用起來,所以學習使用單片機只能靠循序漸進的積累,而不可能先把

。 它全部掌握了再去做產品開發(當然天才就例外了*_*)

基於以上原因,本人想嘗試一種全新的單片機教學方法,打破傳統的循序漸進式的教學方法,以單片機的應用為藍本,結合基本的工業控制系統和實踐工作中的具體應用,不分先後順序,將各條指令貫串於一個又一個的實驗中,通過所見即所得的實驗來講解各種指令的編程方法,順便講解相關的基本概念,使您儘快地熟悉單片機應用的基本步驟,掌握軟件編程的基本方法。

如果您學完了就能成為單片機的入門者,完全可以進行一般產品的開發;下冊部分是單片機應用的提高部分,主要學習單片機的系統擴展(比如:rom和ram存儲器的擴展,並行口的擴展,串行口的擴展,a/d和d/a與單片機的接口)以及相關開發工具和軟件的使用(包括kell c51的應用與調試技巧,硬件仿真器的使用)等等,如果您學完了下冊部分,那就得恭喜您成為了單片機開發的高手了,不過單片機的技術是在不斷的發展和提高的,您也不要太驕傲哦!

為了儘量把最新的單片機知識和應用成果收錄進我們的教程,希望您能不吝賜教,共同來努力把我們的教程不斷的改進和完善。還是那句題外話,技術是靠不斷的積累和交流才會進步的,固封自守只會更加落後。

由於時間和精力的限制,我還是希望在您學習本教程之前,自己先熟悉一點相關的電子技術知識,特別是數字電路基礎,這對您學習中碰到的相關概念會有很大的幫助。

熱門標籤