新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 教你學(xué)單片機(jī) 1 :簡介,關(guān)于單片機(jī)的OOXX

教你學(xué)單片機(jī) 1 :簡介,關(guān)于單片機(jī)的OOXX

作者: 時(shí)間:2016-11-25 來源:網(wǎng)絡(luò) 收藏
微處理器的四十年歷史:四十年回顧 CPU處理器全面發(fā)展史
后來,微處理器的發(fā)展就越來越迅猛了,掀起了一場個(gè)人電腦時(shí)代的技術(shù)革命,微處理器越來越風(fēng)行,滲透到了人們生活的各方各面。人們見識到了微處理器的強(qiáng)大,于是他們就有一種想法,既然微處理器這么強(qiáng)大,是不是所有設(shè)備都可以由它來控制呢?如果可以的話確實(shí)是很方便,這個(gè)想法很美好,但是有一個(gè)問題:雖然相對大型計(jì)算機(jī)來講,微機(jī)的體積和功耗是少了很多,但如果要把它應(yīng)用在日常生活中的小設(shè)備上,比如把它放到洗衣機(jī)上,讓它控制洗衣機(jī)自動(dòng)運(yùn)行,很顯然它還是太大了,因?yàn)楦鶕?jù)馮諾依曼架構(gòu),一臺計(jì)算機(jī)必須具有五個(gè)部分,分別是:運(yùn)算器,控制器,存儲設(shè)備,輸入設(shè)備,輸出設(shè)備。運(yùn)算器和控制器集成在一起變成微處理器,但還是需要內(nèi)存,還有IO設(shè)備,所有這些東西加在一起才可以正常工作。而現(xiàn)在人們想把這套東西放進(jìn)洗衣機(jī)里面工作,先不說功耗和體積,它的價(jià)格就遠(yuǎn)遠(yuǎn)要高過洗衣機(jī)本身好多倍了。人們又在想,有什么辦法可以制造出一個(gè)可以擔(dān)當(dāng)此類工作的計(jì)算機(jī)系統(tǒng)呢。其實(shí)計(jì)算機(jī)所做的工作是很廣泛的,稱之為通用計(jì)算機(jī),“通用”兩個(gè)字表示它什么都可以做,但是如果我們只要它用來執(zhí)行某一些特定的,而且不復(fù)雜的任務(wù),換句話說,我們能不能制造出這樣一種計(jì)算機(jī),它必須功耗足夠小,價(jià)格讓人可以接受,功能可以不用那么強(qiáng)大,只需要執(zhí)行一些簡單的事情就行了,這樣不就可以滿足人們?nèi)粘I钪袑π⌒陀?jì)算機(jī)系統(tǒng)的需求了?比如自動(dòng)洗衣機(jī)?自動(dòng)洗碗機(jī)?按照這種想法,人們就在想,可不可以把個(gè)人計(jì)算機(jī)再微型化,要變得足夠小、足夠小才行,最好小到把功能都放到一塊芯片里面,用一塊芯片就可以執(zhí)行所有功能!這時(shí)候,單片機(jī)就出現(xiàn)了,單片機(jī)全稱:單片機(jī)微型計(jì)算機(jī),它按照人們的愿景,把本來需要放在外圍的隨機(jī)存儲器RAM,程序存儲器ROM,IO設(shè)備,定時(shí)器,CPU等等這些部件全部集中在一起芯片中,只要對它進(jìn)行編程就能實(shí)現(xiàn)各種功能!這就是單片機(jī)的由來。
1976年,英特爾推出它的第一款單片機(jī):MCS-48。Zilog公司也于1976年研發(fā)出Z80微處理器。應(yīng)該算是單片機(jī)的最早版本。而1980年,英特爾在MCS-48的基礎(chǔ)上,推出了MCS-51系列8位單片機(jī),這個(gè)系列無論在性能還是容量上都較之前的單片機(jī)型號有了很大的提高,由于它是如此地好用,MCS-51架構(gòu)到現(xiàn)在還是風(fēng)靡全球,占領(lǐng)了低端單片機(jī)的大部分市場,很多芯片制造商就是購買了英特爾的MCS-51內(nèi)核然后自己推出基于該內(nèi)核的芯片,而我后面要講的內(nèi)容都是以51單片機(jī)為平臺的。
后來,隨著時(shí)代的發(fā)展,IC制造技術(shù)越來越高超,(根據(jù)IT行業(yè)的摩爾定律,每過18個(gè)月,CPU的速度就會(huì)提高一倍,內(nèi)存容量會(huì)增大一倍),單片機(jī)的性能也越來越強(qiáng)大,體積也越做越小,滲入到生活的各方各面,從以前的MCU時(shí)代(性能較弱,內(nèi)部只能運(yùn)行簡單的控制程序)進(jìn)入了SOC時(shí)代(System on chip,即片上系統(tǒng),在芯片上運(yùn)行操作系統(tǒng)),比如現(xiàn)在的移動(dòng)終端,像手機(jī)、MP3等無不是用單片機(jī)作為控制核心,這些芯片已經(jīng)達(dá)到很高的運(yùn)行速度,性能直逼90年代中期的PC,目前最高端的手機(jī)CPU主頻已經(jīng)超過了1.5G Hz。以前只能在電腦上做的事情現(xiàn)在單片機(jī)也可以很輕易地做到了,而且功耗還比電腦低得多。
這就是單片機(jī)的簡單發(fā)展史。
而現(xiàn)在,你即將進(jìn)入這一領(lǐng)域,你可以想象一下,用你的手敲出一行行代碼,經(jīng)過編譯器編譯之后變成單片機(jī)可以執(zhí)行的機(jī)器碼,然后經(jīng)過一個(gè)下載器和一個(gè)下載軟件,機(jī)器碼就變成數(shù)字流通過導(dǎo)線一條條注入單片機(jī)內(nèi)部,單片機(jī)把你的機(jī)器碼全部記錄在他的ROM里面,下載完畢之后,你按原計(jì)劃連好線路,接上電源,在你還沒反應(yīng)過來的一瞬間,單片機(jī)就按照你的交代在乖巧地運(yùn)行著代碼了!這一切看起來那么神奇,讓人振奮,你可以充分發(fā)揮你的想象,讓單片機(jī)為你做任何事情,讓你感到成就感十足!
好了,如果你看到這里覺得很有趣,正在考慮想磨拳擦掌大干一場了,那我首先祝賀你,你的興趣已經(jīng)被激發(fā)起來了,這是最重要的。但我也得打擊一下你,單片機(jī)不是那么好學(xué)的,需要你具有編程基礎(chǔ),還要有一點(diǎn)點(diǎn)電子學(xué)的基礎(chǔ)。你沒學(xué)過編程?沒學(xué)過電子?沒關(guān)系,這些都可以學(xué),最重要的是你必須有一顆堅(jiān)持到底的心。老實(shí)告訴你,在你寫代碼的時(shí)候通常你不可能會(huì)第一次就可以把一個(gè)完全正確地寫出來,它有時(shí)候會(huì)產(chǎn)生BUG(軟件漏洞),導(dǎo)致程序錯(cuò)亂,這時(shí)就需要你奈心地進(jìn)行DEBUG(漏洞調(diào)試),直到它正常運(yùn)行;有時(shí)候硬件也會(huì)出問題(不是有時(shí)候,是大多時(shí)候),這時(shí)候也需要你一點(diǎn)一點(diǎn)地檢查硬件電路,上網(wǎng)查找資料,直接到硬件調(diào)通。這個(gè)過程有時(shí)候是很漫長并且痛苦的,大多數(shù)人就是因?yàn)檫@樣而放棄了學(xué)習(xí)。不過你要知道,你的每次辛苦付出得到的都是超值的回報(bào),比如你在一次軟件調(diào)試中成功地解決了某個(gè)算法的漏油,證明你在之后再次應(yīng)用到這個(gè)算法的時(shí)候就會(huì)得心應(yīng)手,不會(huì)再犯錯(cuò)。高手都是從菜鳥進(jìn)化來的。慢慢地,你就會(huì)非常享受每次調(diào)試完系統(tǒng)之后那種愉悅的成就感了。
OK?沒問題?你覺得你能承受?你覺得你會(huì)堅(jiān)持到底?嗯,我暫且相信你,畢竟你都看到這里來了。
那你可以開始學(xué)單片機(jī)了。
第一個(gè)問題是,你需要選擇一個(gè)什么樣的單片機(jī)來學(xué)?你上網(wǎng)搜索,搜著搜著,你發(fā)現(xiàn),有一大堆單片機(jī)型號羅列在你面前,接著你去逛技術(shù)論壇,想聽一下高手們的意見,結(jié)果發(fā)現(xiàn)每種型號的單片機(jī)都有專門的技術(shù)版塊,每種都有很多資料,每個(gè)版塊的人都在向你說:學(xué)這種吧,OOXXOOXX~~~T_T~~~。你暈了。有時(shí)候選擇的東西太多了也是個(gè)麻煩事。
這時(shí)候,你可能很想聽一下某個(gè)當(dāng)初也是這么迷茫的人的建議。
我的建議是,先學(xué)51單片機(jī)吧!好好地學(xué),先把它學(xué)熟了再說吧!不要管有些人說:51過時(shí)了,幾十年前的架構(gòu),現(xiàn)在誰還用?我很想知道,他說這話的時(shí)候有沒有認(rèn)真地學(xué)過51,是不是所有指令都會(huì)用了?
事實(shí)就是,其實(shí)學(xué)哪種單片機(jī)都一樣,因?yàn)閱纹瑱C(jī)的基本原理都是相通的,沒有太多特別的區(qū)別。但如果你剛開始入門學(xué)習(xí),你必須要一個(gè)適應(yīng)期,在這個(gè)適應(yīng)期里你應(yīng)該不止是使用單片機(jī),你還得把它從里到外都搞通,你會(huì)用C語言熟練地給它編程之后,還必須要學(xué)會(huì)用匯編(關(guān)于匯編與C語言的紛爭我之后將會(huì)專門講一下),你還得了解它的內(nèi)部結(jié)構(gòu),比如它是屬于哪種指令集(復(fù)雜指令集CISC和精簡指令集RISC),比如它在函數(shù)調(diào)用的時(shí)候都發(fā)生了哪些作用??傊?,在最后,你必須要懂得以機(jī)器執(zhí)行指令的過程來理解你的代碼的含義,這時(shí)候你才算成功地學(xué)會(huì)了單片機(jī)(而不是簡單地把單片機(jī)的外設(shè)學(xué)會(huì),然后用高級語言按照人類的思維給它編程,然后下載了事)。你懂得以機(jī)器的角度來思考高級代碼之后,一理能百理明,你會(huì)發(fā)現(xiàn)很多事情都是相通的,你會(huì)在上《微機(jī)原理》的課程里比別人學(xué)得輕松,因?yàn)槟阋呀?jīng)懂得計(jì)算機(jī)工作的最基本原理。
既然學(xué)哪種單片機(jī)都一樣,為什么要特別選擇51呢?這是因?yàn)橐话闱闆r下51單片機(jī)比別種類型的單片機(jī)外設(shè)要少,功能相對簡單一點(diǎn),雖然這樣,但這對初學(xué)者來說卻是至關(guān)重要的。想象一下你剛上學(xué)的時(shí)候,老師從教你認(rèn)識0-9的數(shù)字開始,然后教你加減法,后來再教你乘除法,當(dāng)你有一些基礎(chǔ)之后,才開始教你函數(shù)和幾何,最后才是微積分。同樣的道理,當(dāng)你開始學(xué)單片機(jī)的時(shí)候,要怎么讓你慢慢接受一個(gè)你以前從未接受過的概念?你當(dāng)前希望解釋這個(gè)概念的模型要越簡單越直白越好,由淺入深。據(jù)此,51單片機(jī)給了你一個(gè)最簡單輕松的學(xué)習(xí)環(huán)境,有道理不?另外,51架構(gòu)的存在已經(jīng)有幾十年了,應(yīng)用已經(jīng)很廣泛(暫時(shí)不要去考慮哪種單片機(jī)有前景,千萬不要去糾結(jié)這種問題,你都還沒入門,就想起飛來了),所以相對其他單片機(jī)來說資料更齊全,對你學(xué)習(xí)更有幫助。
經(jīng)過一番解釋,我試圖說服你,學(xué)51沒錯(cuò)。你被我說服了嗎?好吧。假如你還在猶豫之中,接下來我就大概一下介紹目前比較多人學(xué)的幾種芯片。
先說51,51是這類芯片的內(nèi)部架構(gòu),全稱8051,制造商有很多,但內(nèi)核都是購買英特爾公司的。51跟其他芯片相比主頻比較低(主頻即是CPU每秒執(zhí)行的指令數(shù)),一條指令的執(zhí)行需要用12個(gè)時(shí)鐘周期(一個(gè)時(shí)鐘脈沖稱為一個(gè)時(shí)鐘周期),也就是說,需要給他12個(gè)時(shí)鐘脈沖才會(huì)完成一條指令;所以雖然有時(shí)候51的外部晶振頻率比別人高,但其實(shí)執(zhí)行速度沒有別人高。51一般內(nèi)存比較小,標(biāo)準(zhǔn)C51(因?yàn)槭褂?1內(nèi)核的芯片很多,資源也不相同,下面我以標(biāo)準(zhǔn)C51來介紹)只有128字節(jié)內(nèi)存,而且頭32個(gè)字節(jié)還要被用做通用寄存器,能給用戶使用的其實(shí)只有96字節(jié)。有32個(gè)通用IO口,可作為輸入或者輸出,P3口還有第二功能,串口等等,先不說這么多,以后再慢慢介紹。有8KB的程序存儲器。51使用的是復(fù)雜指令集CISC(什么東西?先不用管,了解就行了,呵呵)。

關(guān)鍵詞: 單片機(jī)簡

評論


技術(shù)專區(qū)

關(guān)閉