|
一段話(huà)教會(huì )你熟練掌握單片機
一、前言
很多單片機初學(xué)者與我交流時(shí)總說(shuō)的一句話(huà)是我現在是單片機初學(xué)者,我怎樣才能更快的學(xué)好單片機,我該從哪方便入手。對于這個(gè)問(wèn)題,現在就我自己如何學(xué)單片機,如何入門(mén),如何熟練談?wù)勏敕ā?br />
先說(shuō)單片機,現在用的比較多的以51為內核的8位單片機(考慮到成本及引腳資源在實(shí)際開(kāi)發(fā)中用的51單片機型號不一),它的學(xué)習資料非常多,且學(xué)習成本非 常低,可能有些初學(xué)者會(huì )說(shuō)企業(yè)里用的不是51單片機,更多的是松翰、義隆什么,但是我想說(shuō)的是那些單片機的輔助開(kāi)發(fā)工具你有嗎。51單片機對于智能電子技術(shù)的入門(mén)學(xué)習是非常有優(yōu)勢,成本低,開(kāi)發(fā)簡(jiǎn)單,一線(xiàn)下載程序,ARM太神秘,PLC太高貴,想來(lái)想去還是51,曾經(jīng)有過(guò)AVR和PIC,但是現在51也不 賴(lài)。
那怎樣才能更快更好的學(xué)好單片機呢?
單片機作為集電子技術(shù)與計算機編程技術(shù)為一體是一項非常重視動(dòng)手實(shí)踐的科目,如果你是單片機高手,那么說(shuō)明你也是計算機編程和電子技術(shù)高手。
二、學(xué)習單片機一定要看書(shū)
不能總是看書(shū),但是學(xué)習它首先必須得看書(shū),那這不很矛盾?因為從書(shū)中你需要了解單片機各個(gè)功能寄存器(比如引腳控制寄存器、定時(shí)、中斷、串口相關(guān)寄存 器),控制單片機的核心是用程序去控制單片機的各個(gè)功能寄存器,給寄存器賦值二進(jìn)制數據0或者1,對于像中斷、定時(shí)器、串口、AD轉換等內部資源寄存器, 單片機也可以通過(guò)二進(jìn)制數據0和1進(jìn)行設置和使用。比如單片機引腳寄存器P1,語(yǔ)句P1=0xfe;(MOV P1,#0FEH)指控制單片機P1口的第 一個(gè)引腳輸出低電平,其他引腳輸出高電平,外設電路根據高低電平工作。比如中斷允許寄存器IE,語(yǔ)句IE=0x81;(MOV IE,#81H) 則說(shuō)明 控制中斷打開(kāi)總開(kāi)關(guān)和外部中斷0的子開(kāi)關(guān)。當然了,單片機的寄存器還可以接受位控制,這樣編程更方便。
至于看書(shū),只需大概了解單片機各管腳、各個(gè)功能寄存器是干什么的能實(shí)現什么功能就夠了?這個(gè)非常重要,這也許是看單片機參考書(shū)最主要目的之一。
第一次,第二次你可能看不明白,但這不要緊,因為還缺少實(shí)際的感觀(guān)認識。通過(guò)接下來(lái)的實(shí)驗就可以非常感觀(guān)的認識,在這個(gè)過(guò)程一定要花時(shí)間,學(xué)習程序不能硬背,但是學(xué)習寄存器一定要下功夫,理解他的功能所在,適當的時(shí)候當單詞背下來(lái)。
推薦一本書(shū),就這一本就足夠了,書(shū)名是《列說(shuō)8051》,有匯編語(yǔ)言和C語(yǔ)言兩種版本,現在已經(jīng)是第三版本了。非常強悍的一本書(shū),沒(méi)有廣告,沒(méi)有局限,不像培訓手冊,更不像教科書(shū),完全是一本非常好的參考書(shū)。我用一個(gè)五一假期的時(shí)間看完了這本書(shū),真的當時(shí)看完后,覺(jué)得自己已經(jīng)是單片機高手了,很多曾經(jīng)抽象的知識不再抽象。書(shū)中圖文并茂,內容安排緊張有序,并非市面上很多說(shuō)教的技術(shù)文檔式的書(shū),什么學(xué)完概念,學(xué)指令,學(xué)完指令學(xué)接口,學(xué)完接口才知道,原來(lái)學(xué) 習單片機像在學(xué)天書(shū),因為前面的章節已經(jīng)使你頭昏腦脹了,自己看還好,一講更有問(wèn)題。
那如何看書(shū)呢?第一步先根據書(shū)本的安排循序漸進(jìn)的看完前兩章,在你腦子開(kāi)始發(fā)熱,覺(jué)得自己已經(jīng)是工程師的時(shí)候,接下來(lái)一定是實(shí)踐,一定是實(shí)踐啊,這是非常 非常關(guān)鍵的,當然了實(shí)踐并非一定是左手電烙鐵右手萬(wàn)能板的那種,也可以是仿真軟件Proteus,或者是自己自己電路原理路的簡(jiǎn)單單片機實(shí)驗板(千萬(wàn)不要 用那種有貼片器件很多,看半天看不清電路連接的那種)。三國期間,諸葛亮揮淚斬馬謖的重典告訴我們紙上談兵害人害己,學(xué)習單片機也一樣,很多相關(guān)專(zhuān)業(yè)的研 究生甚至博士生直到畢業(yè)都不清楚單片機的IO口的分布,不知分布談何開(kāi)發(fā)。
只要過(guò)了第一關(guān),后面的路就好走,萬(wàn)事起步難啊。
第二:你身邊如果有單片機入門(mén)者,動(dòng)手能力比較強,請他幫忙,搭個(gè)簡(jiǎn)單的單片機最小電路,哪怕是控制一個(gè)LED閃爍的電路。只要在你眼皮底下經(jīng)過(guò)電路設 計、程序編寫(xiě)、程序下載都通過(guò)了,那你就要感謝他一輩子,因為你已經(jīng)在入門(mén)了。對于他們來(lái)說(shuō),做個(gè)單片機的最小系統板是輕而易舉,而對于初學(xué)者可就難多,中間的一層窗戶(hù)紙破了什么都簡(jiǎn)單了。因為在這個(gè)過(guò)程中,你學(xué)會(huì )了如何下載程序到單片機內部,如何識別單片機,如何設計單片機最小電路。為什么有很多電子和 計算機專(zhuān)業(yè)的學(xué)生不好找工作,因為他們中很多同學(xué)在將自己簡(jiǎn)歷設計的眉飛色舞的時(shí)候,他還沒(méi)有見(jiàn)過(guò)單片機單片機。
因為只有對硬件了解,才能熟練運用。只有知道程序是如何被下載的,才會(huì )清楚為什么要寫(xiě)單片機控制程序,這個(gè)動(dòng)力來(lái)自于哪里,來(lái)至于心里有底。
單片機編程就是與單片機對話(huà),如果不知道對方誰(shuí),有沒(méi)有再聽(tīng),你還會(huì )有說(shuō)話(huà)的沖動(dòng)嗎。當然了如果沒(méi)有這樣的人,還是那句話(huà),在網(wǎng)上多找幾個(gè)最小電路電路原 理圖,在面包板上焊接就可以了。當然了這個(gè)也不會(huì )的,那建議你一定要買(mǎi)一塊功能簡(jiǎn)單的實(shí)驗板,以后單片機的學(xué)習實(shí)驗及項目測試驗都用的上。
三、如何邁入單片機開(kāi)發(fā)世界
有了單片機實(shí)驗板你就要多練習,最好是自己有臺電腦,少下載幾部電影,少網(wǎng)絡(luò )游戲,把實(shí)驗板和電腦連好,安裝上必備的軟件 (Keil Proteus STCisp),下載參考程序,并修改參考程序,從最簡(jiǎn)單的交通燈實(shí)驗開(kāi)始,等你發(fā)現你能控制交通燈,并了解交通的軟硬設計 的時(shí)其實(shí)你已經(jīng)入門(mén)了,你會(huì )發(fā)現單片機是多么迷人的東西啊,這不是在學(xué)習知識,而是在提升自身的價(jià)值。
用途那么廣的交通設計都不在話(huà)下,你還會(huì )為自己身無(wú)絕技而煩擾嗎?還會(huì )覺(jué)得自己什么都不會(huì )嗎?計算機編程、電子技術(shù)的專(zhuān)業(yè)知識都用上了啊。
當你編寫(xiě)的程序按你的意愿實(shí)現時(shí),比做什么事都開(kāi)心,那種學(xué)習的收獲感和成就感還有充實(shí)感是非常難得的。然后讓數碼管亮起來(lái)顯示你所需要的數字,都到這一步,你已經(jīng)不能自拔了,你已經(jīng)開(kāi)始考慮你這輩子要走哪一行了。
入門(mén)入門(mén),什么才叫入門(mén),要對得起自己啊。
我的要求很簡(jiǎn)單,單片機是否入門(mén)只有三點(diǎn):
1、獨立掌握Keil+Proteus兩大軟件的使用方法并設計出仿真版的交通燈。
2、獨立在面包板上搭接單片機最小電路,并通過(guò)下載器將控制一個(gè)LED閃爍的HEX文件下載進(jìn)去看到效果。
3、清楚自己?jiǎn)纹瑱C學(xué)的動(dòng)力所在,并為自己的學(xué)習做一個(gè)規劃。
但是在寫(xiě)程序的時(shí)候你肯定會(huì )遇到很多問(wèn)題,而這時(shí)你再去翻書(shū)找,這其中你會(huì )找你之前學(xué)過(guò)的編程的書(shū),還有數電模電的書(shū),你會(huì )發(fā)現原來(lái)之前學(xué)的知識還是有用 的。遇到不懂再去找以前學(xué)過(guò)的書(shū)本查閱,這才是 “溫故而知新,可以為師矣”的大道理啊。知識必須用于現實(shí)生活中,解決實(shí)際問(wèn)題,用單片機設計個(gè)簡(jiǎn)易的家 電定時(shí)器、紅外遙控器什么,這樣才能發(fā)揮它的作用,好好想想,上了這么多年大學(xué),探索了那么久,猶豫徘徊,天天上課,在課堂上學(xué)到了什么?、
是不是為了期末60分的考試而忙碌,僥幸靠了90分,很高興啊,在別人面前吹自己專(zhuān)業(yè)知識如何如何學(xué)習的好,殊不知,大學(xué)考試不像高中考試啊,拿到獎學(xué)金 又怎么樣。下學(xué)期開(kāi)學(xué)回來(lái)一想,所學(xué)的知識已經(jīng)忘得一干二凈。學(xué)到什么了?為什么要推薦學(xué)習單片機,因為單片機是工科生學(xué)的,集合計算機編程電子技術(shù)及多 門(mén)控制語(yǔ)言為一體的學(xué)科,與其說(shuō)是在學(xué)習單片機,不如說(shuō)是在學(xué)習一個(gè)大學(xué)科。
四、學(xué)習單片機是匯編編程還是C語(yǔ)言編程
關(guān)于用匯編和C語(yǔ)言編程的問(wèn)題。
這個(gè)問(wèn)題困惱很多人,但是我覺(jué)得學(xué)習匯編語(yǔ)言和C語(yǔ)言就像一個(gè)人進(jìn)入社會(huì )要學(xué)習方言和普通話(huà)一樣。都要掌握,孰重孰輕自己把握?赡苤饕菍W(xué)校教學(xué)和部分 教材引導,大一開(kāi)了C語(yǔ)言編程,沒(méi)等學(xué)生知道到底C語(yǔ)言有什么實(shí)際用途,馬上其他的語(yǔ)言一下子過(guò)來(lái)了。即使開(kāi)設了專(zhuān)門(mén)單片機課程,但是課程的內容與技術(shù)文 檔很相識,程序雖然很多,但完整的不多,所以學(xué)完了也不知道,到底為什么要學(xué)習編程。
很多同學(xué)大一就開(kāi)設了C語(yǔ)言的課,我也上過(guò),但是那時(shí)就是天天幾乘幾,幾加幾啊,求個(gè)階乘啊,用C語(yǔ)言去解決小學(xué)數學(xué)問(wèn)題,每周兩次上機,對著(zhù)書(shū)本不停的敲打,完全在練習打字速度。下課了也不知道自己到底掌握了什么,掌握了這個(gè)有什么用途。學(xué)完了有什么用?
如果在面試的時(shí)候,老板問(wèn),你學(xué)過(guò)編程嗎,你腦子里馬上是什么“C語(yǔ)言,VC什么VB。很多,什么C語(yǔ)言是基礎是面向工程的,什么VC是高級面向對象 的”,但是老板又問(wèn),你能將你所學(xué)習的C語(yǔ)言應用到實(shí)際開(kāi)發(fā)中,比如設計一個(gè)定時(shí)報警器的C語(yǔ)言。這下傻了,老師沒(méi)教過(guò)啊。
單片機編程用C語(yǔ)言或匯編語(yǔ)言都可以,但是我建議用C語(yǔ)言比較好,模塊化管理編程方便,移植性強,適合編寫(xiě)大程序。如果原來(lái)有C語(yǔ)言的基礎那學(xué)起來(lái)會(huì )更 好,如果沒(méi)有,也可以邊學(xué)單片機邊學(xué)C語(yǔ)言。雖然很多人是從匯編語(yǔ)言開(kāi)始接觸單片機的,但是寫(xiě)小程序匯編語(yǔ)言還是簡(jiǎn)單的,如果要實(shí)現一些算法,那匯編語(yǔ)言 就不簡(jiǎn)單了。雖說(shuō)C語(yǔ)言編譯以后代碼量明顯比匯編長(cháng),而且執行效率也沒(méi)有匯編語(yǔ)言高,但是在以前單片機開(kāi)發(fā)中芯片工藝的限制,及單片機主頻的限制,很多單 片機內部存儲器小的可伶,主頻也小得可伶。但是現在不一樣了,芯片內部的存儲器根不不在乎這點(diǎn)差別。主頻也越來(lái)越高。
那匯編語(yǔ)言是不是不學(xué)了呢?不是的,一定要學(xué)習,有兩方面首先入門(mén)單片機的時(shí)候要用匯編語(yǔ)言,它的語(yǔ)法簡(jiǎn)單。第二如果你要做單片機的程序的高級設計師,那 匯編語(yǔ)言是非掌握不可的,很多像高級單片機ARM都是匯編語(yǔ)言作為引導代碼的,還有就是很多新出品的單片機起先也是先有匯編語(yǔ)言編譯器之后才有C語(yǔ)言編譯 器。所以,我覺(jué)得對于單片機學(xué)習匯編語(yǔ)言入門(mén),C語(yǔ)言精通,匯編語(yǔ)言再精通。
有句話(huà)很有道理“單片機C語(yǔ)言高手絕對是匯編語(yǔ)言高手,但是匯編語(yǔ)言高手不一定是C語(yǔ)言高手”
最后,對于單片機的學(xué)習,入門(mén)為先,入門(mén)了以后就要去關(guān)注市場(chǎng),關(guān)注企業(yè),企業(yè)需要什么樣的人才,我想有了基礎以后在面試之前了解下企業(yè)所需要的單片機類(lèi)型,很快就上手了,畢竟學(xué)習是相同的。
更多嵌入式、單片機、FPGA、PCB、STM32、Java等相關(guān)課程的學(xué)習請聯(lián)系宋老師企鵝號三五二四六五九零八八 Tel:173--1795--1908
|
|