新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 經(jīng)驗(yàn)之談:如何學(xué)好單片機(jī)

經(jīng)驗(yàn)之談:如何學(xué)好單片機(jī)

作者: 時(shí)間:2008-12-10 來源:網(wǎng)絡(luò) 收藏

摘要:越來越多的受到電子產(chǎn)品研發(fā)人員和我國(guó)高等技術(shù)類學(xué)校的應(yīng)用與重視。本文在多年實(shí)際的基礎(chǔ)上,從結(jié)構(gòu)、邏輯思維、和微觀理念方面著手,詳細(xì)介紹了如何學(xué)好這門應(yīng)用技術(shù)的幾點(diǎn)之談。

引言

單片機(jī)誕生于20世紀(jì)70年代。所謂單片機(jī)是利用大規(guī)模集成電路技術(shù)把中央處理單元(Center Processing Unit,也即常稱的CPU)和數(shù)據(jù)存儲(chǔ)器(RAM)、程序存儲(chǔ)器(ROM)及其他I/O通信口集成在一塊芯片上,構(gòu)成一個(gè)最小的計(jì)算機(jī)系統(tǒng),再加上了中斷單元,定時(shí)單元及A/D轉(zhuǎn)換等更復(fù)雜、更完善的電路,使得單片機(jī)的功能越來越強(qiáng)大,應(yīng)用更廣泛[1]?,F(xiàn)在更多單片機(jī)的發(fā)展已經(jīng)進(jìn)入了嵌入式系統(tǒng)時(shí)代, 由于制造工藝的進(jìn)步,有如 VHDL、RTOS、CPLD、FPGA、DSP、ARM等這一系列可編程器件的體積越來越小、成本越來越低,而功能是越來越能滿足人們的需要。自上世紀(jì)80年代以來,單片機(jī)技術(shù)在我國(guó)各個(gè)控制領(lǐng)域得到了廣泛應(yīng)用,各個(gè)世界半導(dǎo)體公司都非常看好中國(guó)這個(gè)龐大的市場(chǎng)而紛紛到中國(guó)來投資建廠,如在蘇州就有日本的瑞薩、松下、美國(guó)的快捷等半導(dǎo)體公司在中的生產(chǎn)廠地。同時(shí)面對(duì)這一技術(shù)的不斷發(fā)展,我國(guó)大部分高校都已經(jīng)把單片機(jī)方面的課程作為學(xué)生的必修課,這為我國(guó)近些年來的科技、工業(yè)控制等方面的發(fā)展培養(yǎng)了大量人才,而且社會(huì)對(duì)此方面的人才需求還在不斷的增加。面對(duì)如此情況,作為在校學(xué)生,又該從何學(xué)起?如何學(xué)好這門課程呢?又怎樣才能不讓自己學(xué)了等于沒學(xué)呢?本文在多年實(shí)踐的基礎(chǔ)上,介紹自已的一些感受和。

1理解單片機(jī)的結(jié)構(gòu)

對(duì)于一個(gè)初學(xué)者,最迷糊的就是對(duì)單片機(jī)芯片里面的結(jié)構(gòu)的理解,小小的一個(gè)芯片為何能完成如此神奇的功能。

第一次從事電子方面的工作,也總對(duì)那黑黑的芯片里面感到不可思意的神奇。直到有一天,在檢修一臺(tái)日本二手電子市場(chǎng)里買來的程控交換機(jī)時(shí),發(fā)現(xiàn)里面有一塊黑東西上的黑膠已經(jīng)裂開,把它撬開一看,里面就是一塊電路板,上面焊滿了密密麻麻的電子零件。終于有點(diǎn)明白,原來芯片也可以這樣做成。當(dāng)然當(dāng)時(shí)所見的那塊電路板是不能被稱之為芯片的,那只是日本的電子制造公司為了防止別人抄襲而把整個(gè)電路板密封起來或其它原因,只引出幾個(gè)的引腳與其它電路連接。不過它可以讓人聯(lián)想到芯片的基本結(jié)構(gòu)與此相類似,如果把那些內(nèi)眼看得見的電子零件再縮小一千倍或更小以至于能把所有電子零件做在一個(gè)硅片上,那也就成了名副其實(shí)的芯片了。我們不防以圖1所示的電路及電路板來做一個(gè)生動(dòng)形象的介紹。該圖是一個(gè)直流馬達(dá)可以正反兩個(gè)方向轉(zhuǎn)動(dòng)的電路,做成電路板并焊好電子元件后,經(jīng)測(cè)試沒有問題就可以用黑膠(通常采用酚醛樹脂等材料)把所有電子元件封起來,只留六個(gè)引腳來與外部電路連接,這樣看起來就好像是一個(gè)芯片。

知道了一般芯片的原理,同樣可以更進(jìn)一步想象單片機(jī)為什么會(huì)執(zhí)行邏輯運(yùn)算等功能,這就牽涉到數(shù)字電路和模擬電路的知識(shí)。其實(shí)不管一個(gè)單片機(jī)的功能是如何的強(qiáng)大,其只不過是把許多以微米,甚至是納米為單位級(jí)的數(shù)字的和模擬電子器件組成。為了形象的來說明單片機(jī)內(nèi)部的結(jié)構(gòu)原理,這里不訪舉如圖2所示的跑馬燈電路來闡述。圖中電路表明的最終目的是讓LED依次輪流被點(diǎn)亮。首先是通過計(jì)數(shù)器對(duì)輸入脈沖計(jì)數(shù),從0到15共16個(gè)脈沖為一個(gè)輪回,也即計(jì)數(shù)器的輸出依次為二進(jìn)制的0000B到1111B,再由四-十六譯碼器把計(jì)數(shù)器的結(jié)果解碼輸出,即依次置Y0到Y(jié)15由高電平變?yōu)楦唠娖健.?dāng)某一輸出為高電平時(shí),經(jīng)過反向器后,與此線路相連接的LED的陰極被拉為低電平從而點(diǎn)亮該發(fā)光二極管。這樣一來,計(jì)數(shù)器和譯碼器就相當(dāng)于單片機(jī)里的處理器與PC地址寄存器了,與譯碼器輸出腳相連的線就相當(dāng)于地址線,與LED負(fù)極相連的輸出線就相當(dāng)于數(shù)據(jù)線,每一條“地址線”都與8根“數(shù)據(jù)線”有一個(gè)交叉,每一個(gè)交叉就相當(dāng)于存儲(chǔ)單元的每一個(gè)位。在這些交叉處是否要連通就相當(dāng)于把程式燒錄到存儲(chǔ)器(ROM)里。最后總體來看就相當(dāng)于一個(gè)只有16個(gè)地址的8位單片機(jī)。如果把LED換成圖中數(shù)碼管,改變圖中的二極管連接,在“單片機(jī)”通電和輸入時(shí)鐘脈沖后,就可以不停的來顯示數(shù)字了。

另外,要做到對(duì)單片機(jī)內(nèi)部結(jié)果真正的了解,還必須得先要有很扎實(shí)的電路基礎(chǔ)、模擬電路、數(shù)字電路等方面的知識(shí),否則可能就是空中樓閣。

2理清邏輯思維

學(xué)習(xí)單片機(jī)是最重要的一點(diǎn)就是不能糊涂,不能把邏輯關(guān)系搞得亂七八糟。對(duì)于初學(xué)單片機(jī)時(shí),要學(xué)會(huì)把一個(gè)程式的邏輯性關(guān)系用流程圖的形式清楚的表示出來。至于用來編寫程式的單片機(jī)的語言是很簡(jiǎn)單的,不要把它想象得很神秘,不管是匯編語言、C語言、還是更高級(jí)的VC++和圖示化語言(如LABVIEW),都只不過是把我們清楚的邏輯思維告訴單片機(jī)處理器,并指令它將要被如何進(jìn)行邏輯操作。把單片機(jī)的指令看得很重要應(yīng)該是我們大家在學(xué)習(xí)單片機(jī)時(shí)的一個(gè)最大的誤區(qū),老是擔(dān)心指令記不住、不會(huì)用,這也是學(xué)習(xí)單片機(jī)還沒入門、上路的主要表現(xiàn)。其實(shí)這樣有什么擔(dān)心的呢,記不住就不要強(qiáng)求好了,把指令放在旁邊,當(dāng)把邏輯關(guān)系清理好之后,再來對(duì)著指令表確定哪個(gè)邏輯關(guān)系由哪些指令來完成,當(dāng)一條指令運(yùn)用得幾次后,根本就用不著擔(dān)心不知道指令不會(huì)用了。退一步講,即使真的記不得指令,參照書本的指令用法也完全可行,現(xiàn)在的知識(shí)量是海量,全把所學(xué)的知識(shí)死記在腦子里肯定會(huì)把腦袋漲破。在寫程序時(shí),只要程序的邏輯關(guān)系調(diào)理清楚了,寫起來就好比做簡(jiǎn)單的翻譯工作,把邏輯關(guān)系翻譯成計(jì)算機(jī)語言來表示。如下圖3和圖4是一個(gè)簡(jiǎn)單的鍵掃描電路和程式流程圖,我們根據(jù)這個(gè)流程圖就很快能用目前非常普遍的C51匯編語言來寫出這個(gè)程序。

KEY_SCAN:

PUSH A ;保存寄存器A

INC R1 ;

AND R1,00000011B

MOV R2,3

MOVC DPHL,TABLE ;取表首址

MOVC A,@DPHL+R1 ;讀取表中數(shù)據(jù)

AND A,00001111B ;保留低4位

MOV P1,A ;按所取表中數(shù)據(jù)由P1低4位輸出

CALL DELAY_TIME ;延時(shí)

MOV A,P1 ;讀取P1端口

AND A,11100000B ;保留P14、P16、P17

LOOP:

RLC A ;左移A一位到位寄存器“C”

JC R1,LOOP1 ;判斷位寄存器“C”是否為“0”

CALL KEY_CAL ;調(diào)用鍵碼計(jì)算子程序

LOOP1:

DJNE R2,LOOP ;判斷是否已移3位

POP A ;恢復(fù)寄存器A

RTI ;本次掃描結(jié)束


KEY_CAL: ;鍵碼計(jì)算子程序

… … …

RTS


DELAY_TIME: ;延時(shí)子程序

… … …

RTS


TABLE: ;鍵掃描輸出表

DB 11111110B

DB 11111101B

DB 11111011B

DB 11110111B

3對(duì)微觀世界的想象

曾經(jīng)在設(shè)計(jì)電路板時(shí),為了讓線路中的電流能流暢的通過線路,為了所設(shè)計(jì)的電路板能滿足各種測(cè)試條件下的安全標(biāo)準(zhǔn),如UL標(biāo)準(zhǔn)要求最長(zhǎng)的電源地線不能過0.02歐姆(其測(cè)試條件是在20A的電流情況下測(cè)量它的功率P=I2R)。如果假如是0.02歐姆,通以20A的電流,那這條線路的發(fā)熱功率將會(huì)是8W。把電流看作是我們宏觀世界里的水,線路就好比一條水溝。要讓水在水溝里怎么流,這理所當(dāng)然是很容易控制的了。如水在急轉(zhuǎn)彎的地方會(huì)起漩渦,會(huì)對(duì)急轉(zhuǎn)達(dá)彎的溝的對(duì)面產(chǎn)生沖擊。同樣在電路板上的線路如果存在急轉(zhuǎn)彎的情況,電流也會(huì)引起渦流,也會(huì)對(duì)線路的拐點(diǎn)處有一個(gè)沖擊作用而產(chǎn)生輻射。這樣一來,在理解了這一原理之后,每一次電路板的設(shè)計(jì)完成之后,所有的測(cè)試都能一次通過??梢姲盐⒂^世界想象成宏觀世界相類似的事物或過程是非常有幫助的?,F(xiàn)代電子世界,特別是微電子,要想看清他的真面目,只有在高清昕度的顯微鏡下才能看到他的外形,可是即使了解了它的外形,也只不過是知其然而不知其所以然,它的工作過程根本無法看得到。


現(xiàn)在單片機(jī)結(jié)構(gòu)越來越復(fù)雜,集成度越來越高,存儲(chǔ)量越來越大,將來還可能采用分子級(jí)電子晶體管呢。它的運(yùn)行速度也是如此的越來越快,現(xiàn)在已經(jīng)是采用納秒級(jí)來定義它的運(yùn)行時(shí)間了,最長(zhǎng)的運(yùn)行一條指令的時(shí)間最多不過一兩個(gè)微秒,簡(jiǎn)直就是比一閃而過還要少好多好多。既然我們可以在空間上利用放大鏡把外形放大后來了解,那么同樣可以在時(shí)間上把時(shí)間拉長(zhǎng)來解。不訪把一微秒當(dāng)作時(shí)一分鐘或一小時(shí)來理解,這樣我們就不難理解CPU就如人一樣在處理某一條指令。比如指令“MOV A,01H”就是CPU把數(shù)據(jù)01H送到A累加器,在這個(gè)運(yùn)送的過程就如人搬運(yùn)東西的過程,這個(gè)過程的處理時(shí)間就是CPU處理一個(gè)指令的時(shí)間,通常稱之為指令周期。有些時(shí)候單片機(jī)會(huì)出現(xiàn)對(duì)某個(gè)操作處理的時(shí)間不夠,如進(jìn)行數(shù)據(jù)采集時(shí),被采集的信號(hào)相對(duì)于單片機(jī)處理時(shí)間比較快就會(huì)出現(xiàn)數(shù)據(jù)遺失的情況,這就要求單片機(jī)的運(yùn)行速度更快。如果沒有這處微觀時(shí)間的概念,就很難理解怎么會(huì)出現(xiàn)這種情況。


4結(jié)束語

單片機(jī)變化發(fā)展迅速,但萬變不離其宗,只要清楚了它們的基本原理和構(gòu)造思想,不管它怎么變,都能做到知其然知其所以然。

參考文獻(xiàn):

1、匡忠輝 單片機(jī)原理及應(yīng)用[M] 北京:機(jī)械工業(yè)出版社 2007年1月



評(píng)論


相關(guān)推薦

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

關(guān)閉