(中職)單片機(jī)原理及應(yīng)用第二章教學(xué)課件_第1頁
(中職)單片機(jī)原理及應(yīng)用第二章教學(xué)課件_第2頁
(中職)單片機(jī)原理及應(yīng)用第二章教學(xué)課件_第3頁
(中職)單片機(jī)原理及應(yīng)用第二章教學(xué)課件_第4頁
(中職)單片機(jī)原理及應(yīng)用第二章教學(xué)課件_第5頁
已閱讀5頁,還剩229頁未讀, 繼續(xù)免費(fèi)閱讀

付費(fèi)下載

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、YCF正版可修改PPT(中職)單片機(jī)原理及應(yīng)用第二章教學(xué)課件第二章 單片機(jī)系統(tǒng)設(shè)計模塊概述由于單片機(jī)面對的是測控對象,突出的是控制功能,所以它從功能和形態(tài)上來說都是應(yīng)控制領(lǐng)域應(yīng)用的要求而誕生的。隨著單片機(jī)技術(shù)的發(fā)展,它在芯片內(nèi)集成了許多面對測控對象的接口電路,如ADC,DAC、高速I/O口、PWM, WDT等。這些對外電路及外設(shè)接口已經(jīng)突破了微型計算機(jī)(microcomputer)傳統(tǒng)的體系結(jié)構(gòu),單片機(jī)電路是由單片機(jī)、單片機(jī)復(fù)位電路、時鐘電路等構(gòu)成的電路單元。本書以51系列單片機(jī)為基礎(chǔ),通過典型實(shí)例分析,指導(dǎo)讀者學(xué)習(xí)單片機(jī)的基本知識,培養(yǎng)讀者設(shè)計單片機(jī)系統(tǒng)的基本技能,下面將就AT89S51單片

2、機(jī)的結(jié)構(gòu)做具體分析。下一頁第二章 單片機(jī)系統(tǒng)設(shè)計教學(xué)目標(biāo)1.理解和掌握單片機(jī)的工作原理和內(nèi)部結(jié)構(gòu)。2.掌握匯編語言程序設(shè)計的基本方法。3.理解人機(jī)接口的硬件結(jié)構(gòu)與軟件編程原理和設(shè)計方法。4.掌握單片機(jī)系統(tǒng)擴(kuò)展技術(shù)。5.掌握單片機(jī)A/D,D/A接口技術(shù)。6.基本掌握51串行通信技術(shù)。7.初步掌握51應(yīng)用系統(tǒng)的開發(fā)技術(shù)。下一頁第二章 單片機(jī)系統(tǒng)設(shè)計2.1單片機(jī)的基本結(jié)構(gòu)2.2單片機(jī)匯編語言指令2.3練習(xí)2.1單片機(jī)的基本結(jié)構(gòu)2.1.1 單片機(jī)的內(nèi)部總體結(jié)構(gòu)總的來說,單片機(jī)是由8個大的部分組成的。這8個部分分別是中央處理器(CPU)、數(shù)據(jù)存儲器(RAM ) ,程序存儲器(ROM/EPROM),輸入/

3、輸出接口(I/O,又分為P0口、P1口、P2口和P3口)、可編程串行口、定時/計數(shù)器、中斷系統(tǒng)以及特殊功能寄存器。下一頁返回2.1單片機(jī)的基本結(jié)構(gòu)2.1.2單片機(jī)的引腳功能 要使用一款單片機(jī),除了知道其內(nèi)部結(jié)構(gòu)之外,還必須了解單片機(jī)的引腳功能。目前的單片機(jī)所采用的外形封裝形式多為40Pin封裝的雙列直接DIP結(jié)構(gòu),圖2-1是AT89S51單片機(jī)引腳配置圖。40個引腳中,正電源和地線兩根,外置石英振蕩器的時鐘線兩根,4組8位共32個I/O口,中斷口線與P3口線復(fù)用。引腳說明如下:(1) Pinto接地腳。( 2) Pin40正電源腳。正常工作或?qū)ζ瑑?nèi)EPROM燒寫程序時,AT89S51可以接 4

4、. 5-5. 5 V范圍內(nèi)的直流正電源。一般取+5V作為電源標(biāo)稱值來使用。下一頁上一頁返回2.1單片機(jī)的基本結(jié)構(gòu) (3) Pin19時鐘XTALl腳,片內(nèi)振蕩電路的輸入端。 (4) Pinl 8時鐘XTAL2腳,片內(nèi)振蕩電路的輸出端。 和其他51類單片機(jī)一樣,AT89 S51的時鐘也有兩種方式:一種是片內(nèi)時鐘振蕩方式,但需在18和19腳外接石英晶體(0一33 MHz)和振蕩電容,振蕩電容的值一般取10一30 pF;另外一種是外部時鐘方式,即將XTALl接地,外部時鐘信號從XTAL2腳輸入,如圖2-2所示。下一頁上一頁返回2.1單片機(jī)的基本結(jié)構(gòu)(5)輸入/輸出(I/O)引腳Pin39一Pin32

5、為P0. 0-P0. 7輸入/輸出腳,Pin1-Pin8為P1. 0-P1. 7輸入/輸出腳,Pin21-Pin28為P2. 0-P2. 7輸入/輸出腳,Pin10-Pin17為P3. 0-P3. 7輸入/輸出腳。這些輸入/輸出腳的功能說明將在以后的內(nèi)容中予以闡述。(6) Pin9 RST復(fù)位信號復(fù)用腳。當(dāng)單片機(jī)通電后,時鐘電路開始工作,在RST引腳上出現(xiàn)24個時鐘周期以上的高電平,系統(tǒng)即初始復(fù)位。初始化后,程序計數(shù)器PC指向0000H, P0-P3輸出口全部為高電平,堆棧指針寫入07H,其他專用寄存器被清“0”。RST由高電平變?yōu)榈碗娖胶?,系統(tǒng)即從0000H地址開始執(zhí)行程序。然而,初始復(fù)位不

6、改變RAM(包括工作寄存器R0-R7)的狀態(tài),單片機(jī)特殊功能寄存器的初始態(tài)如表2-1所列。下一頁上一頁返回2.1單片機(jī)的基本結(jié)構(gòu) 單片機(jī)的復(fù)位方式可以是自動復(fù)位,也可以是手動復(fù)位,見圖2 -3。此外,RST引腳還是一個復(fù)用腳,VcC掉電期間,此腳可接上備用電源,以保證單片機(jī)內(nèi)部RAM的數(shù)據(jù)不丟失。(7) Pin30 ALE/PROG,當(dāng)訪問外部程序存儲器時,ALE(地址鎖存)的輸出用于鎖存地址的低位字節(jié);而訪問內(nèi)部程序存儲器時,ALE端將有一個1/6時鐘頻率的正脈沖信號,這個信號可以用于識別單片機(jī)是否在工作,也可以當(dāng)作一個時鐘向外輸出;還有一個特點(diǎn),當(dāng)訪問外部程序存儲器時,ALE會跳過一個脈沖

7、。如果單片機(jī)是EPROM,在編程期間PROG將用于輸入編程脈沖。( 8) Pin29 PESN,當(dāng)訪問外部程序存儲器時,此引腳輸出負(fù)脈沖選通信號,PC的16位地址數(shù)據(jù)將出現(xiàn)在PO和P2口上,外部程序存儲器則把指令數(shù)據(jù)放到PO口上,由CPU讀入并執(zhí)行。下一頁上一頁返回2.1單片機(jī)的基本結(jié)構(gòu) (9) Pin31 EA/VPP ,程序存儲器的內(nèi)外部選通線。AT89 S51單片機(jī)內(nèi)置有4 KB的程序存儲器。當(dāng)EA為高電平并且程序地址范圍小于4 KB時,讀取內(nèi)部程序存儲器指令數(shù)據(jù);而超過4 KB地址,則讀取外部指令數(shù)據(jù)。如為低電平,則不管地址大小,一律讀取外部程序存儲器指令。在編程時,EA/V。腳還需加

8、上21 V的編程電壓。2.1.3 AT9 S51單片機(jī)的內(nèi)部構(gòu)成 AT89S51單片機(jī)和其他普通單片機(jī)一樣,其內(nèi)部結(jié)構(gòu)主要由中央處理器(CPU)、存儲器、輸入/輸出I/O端口、定時/計數(shù)器和中斷系統(tǒng)5大部分構(gòu)成。各部分又分別由多個單元模塊構(gòu)成。單片機(jī)內(nèi)部各部分之間的聯(lián)系如圖2 -4所示。下一頁上一頁返回2.1單片機(jī)的基本結(jié)構(gòu)1.中央處理器(CPU)中央處理器(CPU)是整個單片機(jī)的核心部件,是8位數(shù)據(jù)寬度的處理器,能處理8位二進(jìn)制數(shù)據(jù)或代碼。CPU負(fù)責(zé)控制、指揮和調(diào)度整個單片機(jī)系統(tǒng)協(xié)調(diào)地工作,完成運(yùn)算和控制輸入/輸出功能等操作。CPU主要由運(yùn)算器和控制器等構(gòu)成。 (1)運(yùn)算器運(yùn)算器主要包括算術(shù)

9、與邏輯運(yùn)算部件ALU、累加器ACC、寄存器B,暫存器TMP1和TMP2,程序狀態(tài)字寄存器PSW、布爾處理器和十進(jìn)制調(diào)整電路等。 算術(shù)與邏輯運(yùn)算部件ALU可以對4位、8位和16位的數(shù)據(jù)進(jìn)行操作。這些操作包括算術(shù)運(yùn)算操作和邏輯運(yùn)算操作。算術(shù)運(yùn)算操作又包括加、減、乘、除、加1、減1,BCD數(shù)十進(jìn)制調(diào)整與比較等;邏輯運(yùn)算操作又包括與、或、異或、求補(bǔ)、循環(huán)移位等操作。下一頁上一頁返回2.1單片機(jī)的基本結(jié)構(gòu) 累加器ACC ( Accumulator)是運(yùn)算過程中數(shù)據(jù)傳送的中轉(zhuǎn)站。它是8位寄存器,也是常用的專用寄存器。在指令中,ACC一般可用A來表示。它既可以用于存放操作數(shù),也可以用于存放運(yùn)算的中間結(jié)果。單

10、片機(jī)中大部分單操作數(shù)指令的操作數(shù)要從ACC中獲取,許多雙操作數(shù)指令中的一個操作數(shù)也是取自ACC. 寄存器B ( General Purpose Register)是一個專門為乘法和除法運(yùn)算設(shè)置的8位寄存器。在乘法與除法運(yùn)算中,它可用于存放運(yùn)算的操作數(shù)(即乘數(shù)或除數(shù)),并在乘法和除法運(yùn)算完成后,用來存放乘積的高8位或者是除法中的余數(shù)。另外,B寄存器還可以作為一般的數(shù)據(jù)寄存器來使用。下一頁上一頁返回2.1單片機(jī)的基本結(jié)構(gòu)程序狀態(tài)字寄存器PSW (Program Status Word)也是一個8位的寄存器。它用于存放指令執(zhí)行后累加器ACC的狀態(tài)信息。PSW中的狀態(tài)位有Cy, Ac, Ov, P,

11、F0, RSl, RSO等。其中,Cy,Ac,Ov,P狀態(tài)位的數(shù)據(jù)是根據(jù)指令的執(zhí)行結(jié)果由硬件自動形成的,而FO,RSI,RSO狀態(tài)位的數(shù)據(jù)則是由用戶根據(jù)實(shí)際的需要用程序軟件指令來設(shè)定的。PSW的各狀態(tài)位定義如表2-2所列。進(jìn)位標(biāo)志位cy( caTTy)主要有兩個方面的功能:一方面是存放算術(shù)指令運(yùn)算的進(jìn)位標(biāo)志;另一方面是在位操作中,作為累加器c來使用。其中,在算術(shù)指令運(yùn)算中,進(jìn)行加、減等運(yùn)算時,如果運(yùn)算的結(jié)果使累加器A中的最高位D7有進(jìn)位輸出或是借位輸入,那么此時Cy就被置為1;如果沒有上述情況,Cy就為O。下一頁上一頁返回2.1單片機(jī)的基本結(jié)構(gòu)輔助進(jìn)位位Ac ( Auxiliary Carry

12、)在加減運(yùn)算中,當(dāng)累加器A中的D3位向D4位有進(jìn)位或借位時,A。就被置為1;如果沒有上述情況,A。就為0。這個標(biāo)志位的狀態(tài)信息,通常是在二進(jìn)制到十進(jìn)制調(diào)整時使用。用戶標(biāo)志位F0( Flag zero)是一個供用戶定義的標(biāo)志位,用戶根據(jù)需要用程序軟件對該標(biāo)志位進(jìn)行置位與復(fù)位的操作,以便控制用戶程序的轉(zhuǎn)移方向。下一頁上一頁返回2.1單片機(jī)的基本結(jié)構(gòu)工作寄存器區(qū)選擇控制位RS1,RS0這兩個標(biāo)志位是合在一起來使用的,用于設(shè)定4個區(qū)的工作寄存器中,哪一組為當(dāng)前工作的工作寄存器組。也就是說,對相同名稱的RO一R7改變其物理地址,并由用戶通過程序軟件來加以選擇。單片機(jī)在開機(jī)或復(fù)位后,RS1和RS0被設(shè)置為

13、低電平“0”的狀態(tài),因此R0-R7的物理地址就是00H-07H。相應(yīng)的,若改變RS1 , RS0為01B,那么1區(qū)為當(dāng)前工作寄存器組,且R0-R7的物理地址就變?yōu)?8H一OFH。通過這種方法,用戶就可以很方便地通過修改R0-R7物理地址,達(dá)到保護(hù)某一區(qū)RO -R7中數(shù)據(jù)的目的。這無疑對后面的程序設(shè)計是非常有利的。下一頁上一頁返回2.1單片機(jī)的基本結(jié)構(gòu)溢出標(biāo)志位Ov ( Over flow)用于指示累加器A在算術(shù)運(yùn)算過程中是否發(fā)生溢出。即若運(yùn)算結(jié)果超出了8位數(shù)能表示的范圍(-128-+127 ),那么Ov就會自動被設(shè)置為1;若沒有超出表示范圍,則Ov為0。例如,在加法運(yùn)算中,Ov=1,表示運(yùn)算結(jié)

14、果是錯誤的;Ov = 0,表示運(yùn)算正確。在乘法運(yùn)算中,Ov=1,表示運(yùn)算得到的乘積超過255,即乘積不僅僅在累加器A中,它還有一部分(即乘積的高位部分)在B寄存器中;Ov = 0,表示乘積數(shù)據(jù)僅在累加器A中。在除法運(yùn)算中,Ov=1,表示除數(shù)為0,除法運(yùn)算不能進(jìn)行;Ov = 0,表示除數(shù)不為0,因此除法可以正常進(jìn)行。下一頁上一頁返回2.1單片機(jī)的基本結(jié)構(gòu)奇偶標(biāo)志位P ( Parity)用于指示累加器A中1數(shù)量的奇偶性。由硬件根據(jù)累加器A的內(nèi)容對P位自動置位或復(fù)位。若累加器A中1的數(shù)量為奇數(shù),則P=1;反之,若累加器A中1的數(shù)量為偶數(shù),則P=0。布爾處理器:是以PSW中的進(jìn)位標(biāo)志位Cy為其累加器,

15、專門用于處理位操作。這些操作包括置位、位清。、位取反、位等于1轉(zhuǎn)移、位等于。轉(zhuǎn)移、位等于1轉(zhuǎn)移并清。以及位累加器C與其他可位尋址空間之間的信息傳送等。(2)控制器控制器包括時鐘發(fā)生器、定時控制邏輯、指令寄存器IR、指令譯碼器ID,程序計數(shù)器PC,程序地址寄存器、數(shù)據(jù)指針寄存器DPTR和堆棧指針SP等。下一頁上一頁返回2.1單片機(jī)的基本結(jié)構(gòu) 控制器是用來統(tǒng)一指揮和控制計算機(jī)進(jìn)行工作的部件。它的功能是從程序存儲器中提取指令,送到指令寄存器IR,再進(jìn)入指令譯碼器ID進(jìn)行譯碼,并通過定時和控制電路,在規(guī)定的時刻發(fā)出各種操作所需要的全部內(nèi)部控制信息及CPU外部所需要的控制信號,如ALE,PESN,RD,

16、WR等,使各部分協(xié)調(diào)工作,完成指令所規(guī)定的各種操作。下面,本書就將其中的程序計數(shù)器PC、堆棧指針SP和數(shù)據(jù)指針寄存器DPTR等的具體概念及功能進(jìn)行介紹。 程序計數(shù)器PC ( Program Counter)程序計數(shù)器PC是一個二進(jìn)制16位的程序地址寄存器,專門用于存放下一條需要執(zhí)行指令的內(nèi)存地址,在執(zhí)行指令后能自動加to CPU執(zhí)行指令時,是先根據(jù)程序計數(shù)器PC中的地址從存儲器中取出當(dāng)前需要執(zhí)行的指令碼,并把它送給控制器分析執(zhí)行。隨后,程序計數(shù)器PC中地址碼自動加1,以便為CPU取下一個下一頁上一頁返回2.1單片機(jī)的基本結(jié)構(gòu)需要執(zhí)行的指令碼做準(zhǔn)備。當(dāng)下一個指令碼取出執(zhí)行后,PC又會自動加1。這

17、樣,程序計數(shù)器PC就被一次次地加1,而指令就被一條條地執(zhí)行。因此,必須在程序執(zhí)行之前,預(yù)先將需要執(zhí)行程序的機(jī)器碼按順序一條條存放到程序存儲器中,并且還要將程序計數(shù)器PC設(shè)置為執(zhí)行程序第一條指令的內(nèi)存地址。 AT89S51單片機(jī)的程序計數(shù)器PC由16個觸發(fā)器構(gòu)成,因此,它的編碼范圍為OOOOHFFFFH,共64 KB。這就是說,AT89S51對程序存儲器的尋址范圍為64 KB。如果用戶想為AT89 S51配置大于64 KB的程序存儲器,就必須在制造AT89S51單片機(jī)時加長程序計數(shù)器的位數(shù)。但在實(shí)際應(yīng)用中,64 KB的程序存儲器就已經(jīng)足夠了。下一頁上一頁返回2.1單片機(jī)的基本結(jié)構(gòu)堆棧指針SP (

18、 Stack Pointor)堆棧指針SP是一個8位的專用寄存器,用于指示堆棧頂部在RAM中的位置。單片機(jī)的堆棧定義可以從下面的介紹中得出。人們在往貨倉或貨棧存放貨物時,總是按順序從下往上地依次堆放。這樣一來,當(dāng)要取貨時,需從上往下地取出。也就是說,最先存入貨棧的貨物最后才被取出,而最后存入貨棧的貨物卻最先被取出。即貨棧的堆貨與取貨是按照“先進(jìn)后出,后進(jìn)先出”的原則。計算機(jī)(單片機(jī))中的堆棧是計算機(jī)中一種特定的數(shù)據(jù)存儲區(qū),與貨棧的堆貨與取貨規(guī)律相同的是,它也是按照“先進(jìn)后出,后進(jìn)先出”的原則來存取數(shù)據(jù)的。它的一端是固定不變,而另一端則是浮動的。所有對數(shù)據(jù)存儲區(qū)信息存入與取出的操作,都只在堆棧的

19、浮動端進(jìn)行,因此這個浮動的區(qū)域就稱為堆棧區(qū)。下一頁上一頁返回2.1單片機(jī)的基本結(jié)構(gòu)堆棧與實(shí)際貨棧一樣,也有棧頂與棧底之分。堆棧指針SP中存放的是堆棧中棧頂?shù)拇鎯卧刂?。?dāng)沒有存放數(shù)據(jù)時,堆棧的棧頂?shù)刂肥桥c棧底地址相互重合的,SP中存放的棧頂存儲單元地址實(shí)際上就是棧底的地址。而當(dāng)堆棧中開始存放數(shù)據(jù)之后,每存放一次數(shù)據(jù),棧頂就向“上”挪動一次,也就是說,SP的值就相應(yīng)增加一次,而同時,棧底地址是保持不變的。AT89S51的堆棧區(qū)安放在片內(nèi)低128字節(jié)之內(nèi),在這個范圍內(nèi)可以安排任何區(qū)域?yàn)槎褩^(qū)。一般晴況下,由于CPU在工作時至少要有一組工作寄存器,因此,在單片機(jī)復(fù)位后,堆棧指針SP的初始值就被自動

20、設(shè)為07H。也就是說,當(dāng)?shù)谝粋€數(shù)進(jìn)棧后,SP加1就指向08H單元。下一頁上一頁返回2.1單片機(jī)的基本結(jié)構(gòu)為了合理使用內(nèi)部RAM這個寶貴資源,堆棧一般不設(shè)在工作寄存器區(qū)和位尋址區(qū),通常是在內(nèi)部RAM 30H -7FH地址空間內(nèi)設(shè)置堆棧區(qū)。我們可以用數(shù)據(jù)傳送指令給SP賦初值。例如 MOV SP, #70H 這就可以實(shí)現(xiàn)將70H賦予SP,作為其初始值。另外,棧操作是通過壓棧指令PUSH(即將數(shù)據(jù)存入堆棧)和彈棧指令POP(即將數(shù)據(jù)取出堆棧)來完成的。例如MOV A,#35HPUSH ACC下一頁上一頁返回2.1單片機(jī)的基本結(jié)構(gòu)這樣一來,A中的數(shù)據(jù)即35H就被存放到了堆棧中,而SP指針值也會自動加1。

21、堆棧是為子程序調(diào)用和中斷操作來設(shè)立的,其具體功能是為保護(hù)斷點(diǎn)和保護(hù)現(xiàn)場。在后面的程序指令介紹和設(shè)計實(shí)驗(yàn)中,我們將有比較好的應(yīng)用,這里就不多述。數(shù)據(jù)指針寄存器DPTR ( Data Pointer)數(shù)據(jù)指針寄存器DPTR是一個16位的寄存器,它是由2個8位的特殊功能寄存器DPH和DPL拼接而成的。其中,DPH是DPTR的高8位,DPL是 DPTR的低8位。DPTR在功能上是作為地址指針存放片內(nèi)ROM的地址,同時也可以用來存放片外RAM和片外ROM的地址,它可以對片外0000H-FFFFH共64 KB地址空間尋址。下一頁上一頁返回2.1單片機(jī)的基本結(jié)構(gòu)例如 MOV DPTR,#3000H MOVX

22、 A,DPTR這兩條指令就是完成將片外3000H單元中的內(nèi)容送到片內(nèi)累加器A中的。第一條指令執(zhí)行后,系統(tǒng)將3000H裝人DPTR,而第二條指令執(zhí)行后,系統(tǒng)則把DPTR中的3000H作為外部RAM的地址,并根據(jù)這個地址把其中的內(nèi)容取出送到累加器A中。有關(guān)DPTR的具體應(yīng)用,在后面的程序指令介紹和設(shè)計實(shí)驗(yàn)中,我們再來具體介紹。2.存儲器AT89S51單片機(jī)在物理上有4個存儲空間:片內(nèi)程序存儲器和片外程序存儲器、片內(nèi)數(shù)據(jù)存儲器和片外數(shù)據(jù)存儲器。合起來說,就是數(shù)據(jù)存儲器(RAM)和程序存儲器ROM/EPROM )。下一頁上一頁返回2.1單片機(jī)的基本結(jié)構(gòu)(1)數(shù)據(jù)存儲器RAM AT89 S51單片機(jī)內(nèi)部

23、有256字節(jié)的RAM。按功能可分為低128字節(jié)(即128個8位)和高128字節(jié)兩部分。其中,低128字節(jié)為用戶數(shù)據(jù)存儲單元,高128字節(jié)為特殊功能寄存器SFR存儲單元。它們是統(tǒng)一編址的,特殊功能寄存器單元只能用于存放控制指令數(shù)據(jù),用戶只能訪問,而不能用于存放用戶數(shù)據(jù)。因此,用戶能使用的RAM只有128個,它可用于存放讀寫的數(shù)據(jù)、運(yùn)算的中間結(jié)果或用戶定義的字型表等。具體來說,內(nèi)部RAM按功能分為便簽區(qū)、位尋址區(qū)和工作寄存器區(qū)三個部分,其具體的分配情況如表2-3所列。特殊功能寄存器如表2-4所列。下一頁上一頁返回2.1單片機(jī)的基本結(jié)構(gòu)用戶可使用的數(shù)據(jù)存儲單元又可以分為三部分:工作寄存器區(qū)、位尋址區(qū)

24、和用戶RAM區(qū)。工作寄存器區(qū),地址為00H-1FH,包括了4組工作寄存器,每組8個RAM字節(jié),標(biāo)記為R0-R7。位尋址區(qū),地址為20H-2FH,共16字節(jié)。這個區(qū)域除了可作為一般RAM單元進(jìn)行讀寫之外,還可以對其中每個字節(jié)的每一位進(jìn)行操作。用戶RAM區(qū),地址為30H-7FH,共80字節(jié)。這個區(qū)域通常應(yīng)用于堆棧數(shù)據(jù)的存放。另外,在使用單片機(jī)時,還可以在其片外通過擴(kuò)展得到64 KB的數(shù)據(jù)存儲器。下一頁上一頁返回2.1單片機(jī)的基本結(jié)構(gòu)(2)程序存儲器ROM/EPROM程序存儲器用于存放用戶程序、原始數(shù)據(jù)或表格。AT89 S51共有4 096個8位掩膜ROM,也就是說,它有4 KB的片內(nèi)ROM和64

25、KB的片外RIM。它們也是統(tǒng)一編址的,CPU的控制器專門提供了一個控制信號EA來區(qū)分內(nèi)部ROM和外部ROM的公用地址區(qū),EA引腳的接法參照前面引腳的說明。 在程序存儲器中,有6個單元具有特殊功能。這6個單元的入口地址分別如下: “ 0000H-0002H;所有執(zhí)行程序的入口地址,當(dāng)單片機(jī)復(fù)位后,CPU總是從0000H單元開始執(zhí)行程序; 0003 H:外部中斷0的入口地址; 000BH:定時器0溢出中斷入口地址;下一頁上一頁返回2.1單片機(jī)的基本結(jié)構(gòu) 0013H:外部中斷1的入口地址; 001 BH:定時器1溢出中斷入口地址; 0023 H:串行口中斷入口地址。這些地址在編寫程序時,通常是在該地

26、址處存放一條絕對跳轉(zhuǎn)指令,使程序跳轉(zhuǎn)到用戶安排的中斷程序起始地址,或是從0000H起始地址跳轉(zhuǎn)到用戶設(shè)計的初始程序上。 3.輸入/輸出(I/O)端口 I/O端口又稱為I/O接口,也叫I/O通道或I/O .通路。 I/O端口是單片機(jī)對外實(shí)現(xiàn)控制和信息交換的必經(jīng)之路,是一個過渡的集成電路,用于信息傳送過程中的速度匹配和增強(qiáng)它的負(fù)載能力。 I/O端口有串行和并行之分,串行I/O端口一次只能傳送一位二進(jìn)制信息,并行I/O端口一次可以傳送一組二進(jìn)制信息。下一頁上一頁返回2.1單片機(jī)的基本結(jié)構(gòu)(1)并行I/O端口AT89S51共有四個并行I/O端口,分別為P0,P1,P2和P3。這些端口都具有雙向I/O功

27、能。即CPU既可以從四個并行I/O 端口中的任何一個輸出數(shù)據(jù),也可以通過它們輸入數(shù)據(jù)。四個并行I/O端口在結(jié)構(gòu)上并不相同,因此它們在功能和用途上的差異就比較大。P0口和P2口內(nèi)部均有一個受控制器控制的二選一選擇電路,因此它們除可以用作通用I/O口外,還具有特殊的功能。其中P0口可以輸出片外存儲器的低8位地址碼和讀寫數(shù)據(jù);P2口可以輸出片外存儲器的高8位地址碼。P1口常作為通用I/O口使用,為CPU傳送用戶數(shù)據(jù)。P3口除可以作為通用I/O口使用外,還具有第二功能(如表2 -5所列)。下一頁上一頁返回2.1單片機(jī)的基本結(jié)構(gòu)(2)串行I/O端口與其他普通單片機(jī)不同,AT89S51有兩個全雙工的可編程

28、串行I/O端口。這些串行I/O端口既可以在程序控制下把CPU的8位并行數(shù)據(jù)變成串行數(shù)據(jù)一位一位地由發(fā)送數(shù)據(jù)線TXD或MISO發(fā)送出去,也可以把串行數(shù)據(jù)接收線RXD或MOSI上收到的數(shù)據(jù)變成8位并行數(shù)據(jù),并送到CPU。而且,這種串行發(fā)送和串行接收既可以單獨(dú)進(jìn)行,也可以同時進(jìn)行。 單片機(jī)的串行發(fā)送和串行接收是利用了P3口的第二功能,即它利用P3.1,引腳作為串行數(shù)據(jù)的發(fā)送線TXD,利用P3.0引腳作為串行數(shù)據(jù)的接收線RXD。另外,P1.5和P1.6的復(fù)用功能,即MOSI和MISO功能引腳,也實(shí)現(xiàn)了串行數(shù)據(jù)的接收和發(fā)送。下一頁上一頁返回2.1單片機(jī)的基本結(jié)構(gòu)4.定時/計數(shù)器 AT89S51內(nèi)部有兩個

29、16位可編程的定時/計數(shù)器,分別為T0和T1. 8052除了T0和T1外,還有T3。每一個定時/計數(shù)器都是由高8位TH和低8位TL拼接而成的,如T0就是由TH0和TL0拼接而成的。T0和T1的最大計數(shù)模值為216-1,有兩種工作模式,每種工作模式下又分為若干工作方式。在定時器模式下,T0和T1的計數(shù)脈沖可以由單片機(jī)時鐘脈沖經(jīng)12分頻后提供,因此定時時間和單片機(jī)時鐘頻率有關(guān)。在計數(shù)模式下,T0和T1的計數(shù)脈沖可以從P3.4引腳(T0)和P3.5引腳(T1)上輸入。下一頁上一頁返回2.1單片機(jī)的基本結(jié)構(gòu)T0和T1有兩個8位的特殊功能寄存器:一個是定時器方式選擇寄存器TMOD,用于確定工作模式為定時

30、器模式或計數(shù)器模式;另一個是定時器控制寄存器TCON,可以決定定時器或計數(shù)器的啟動/停止以及中斷的控制。5.中斷系統(tǒng)計算機(jī)中的中斷是指CPU暫停原程序執(zhí)行轉(zhuǎn)而為外部設(shè)備服務(wù)(即執(zhí)行中斷服務(wù)程序),并在服務(wù)完成后回到原程序執(zhí)行的過程。中斷系統(tǒng)是指能夠處理上述中斷過程所需要的那部分電路。下一頁上一頁返回2.1單片機(jī)的基本結(jié)構(gòu)中斷源是指能產(chǎn)生中斷請求信號的源泉。AT89S51共可處理5個中斷源發(fā)出的中斷請求,可以對這5個中斷請求信號進(jìn)行排隊和控制,并響應(yīng)其中優(yōu)先級最高的中斷請求。AT89 S51單片機(jī)的5個中斷源有內(nèi)部和外部之分,其中外部中斷源兩個,通常由外部設(shè)備產(chǎn)生;內(nèi)部中斷源三個,即兩個定時/計

31、數(shù)器中斷源和一個串行口中斷源。外部中斷源從P3. 3和P3.2引腳上輸入,有電平或邊沿兩種引起中斷的觸發(fā)方式。內(nèi)部中斷源”和T1的兩個中斷是在它們從全,1”變?yōu)槿?”溢出時,自動向中斷系統(tǒng)提出的;內(nèi)部串行口中斷源的中斷請求是在串行口每發(fā)送完一個8位二進(jìn)制數(shù)據(jù)或接收到一組輸入數(shù)據(jù)8位后,自動向中斷系統(tǒng)提出的。下一頁上一頁返回2.1單片機(jī)的基本結(jié)構(gòu)AT89S51的中斷系統(tǒng)主要由中斷允許控制器IE和中斷優(yōu)先級控制器IP等電路組成。其中,IE用于控制5個中斷中哪些中斷請求被允許向CPU提出,哪些中斷源的中斷請求被禁止;IP用于控制5個中斷源的中斷請求哪個優(yōu)先權(quán)最高,可以被CPU最先處理。2.1.4時

32、鐘電路及CPU時序的概念時鐘電路是單片機(jī)電路中一個非常重要的組成部分。計算機(jī)工作時,是在統(tǒng)一的時鐘脈沖控制下一拍一拍地進(jìn)行的。這個脈沖是由單片機(jī)控制器中的時序電路發(fā)出的。 時鐘電路是用于產(chǎn)生單片機(jī)工作所需的時鐘信號的電路。時鐘信號可以由兩種方式產(chǎn)生內(nèi)部時鐘方式和外部時鐘方式。下一頁上一頁返回2.1單片機(jī)的基本結(jié)構(gòu)1.內(nèi)部時鐘方式 AT89S51單片機(jī)內(nèi)部有一個高增益反向放大器,用于構(gòu)成振蕩器,引腳XTALl和XTAL2分別是此放大器的輸入端和輸出端。內(nèi)部時鐘方式是設(shè)計中常用的時鐘方式。這種方式是在XTALl和XTAL2兩端跨接晶體或陶瓷諧振器,構(gòu)成穩(wěn)定的自激振蕩器,其發(fā)出的脈沖直接送入內(nèi)部時鐘

33、發(fā)生器,如圖2-5所示。 電路在加電后延遲約10 ms振蕩器起振,在XTAL2引腳上產(chǎn)生幅度為3V左右的正弦波時鐘信號,其振蕩頻率主要由石英晶振的頻率確定。電路中外接的兩個電容C1和C2的作用主要有兩個:一是幫助振蕩器起振(C1,C2值大,起振速度慢;C1,C2值小,起振速度快);二是對振蕩器的頻率起微調(diào)作用(C1,C2值大,頻率下一頁上一頁返回2.1單片機(jī)的基本結(jié)構(gòu)略有降低;C1,C2值小,頻率略有提高)。由于通常選用的振蕩頻率的范圍為1. 2-12 MHz,典型值為12 MHz和11. 059 2 MHz,因此,電容容量的范圍就為5-60 pF。一般來說,當(dāng)選用內(nèi)部晶體振蕩器時,C1,C2

34、的電容值通常選擇為30 pF左右;當(dāng)外接陶瓷諧振器時,C1,C2電容值約為47 pF。為了減少寄生電容,更好地保證振蕩器穩(wěn)定可靠地工作,諧振器和電容應(yīng)盡可能安裝在與單片機(jī)芯片近一些的位置。內(nèi)部時鐘發(fā)生器實(shí)質(zhì)上是一個二分頻的觸發(fā)器。其輸出信號是單片機(jī)工作所需的時鐘信號。 2.外部時鐘方式外部時鐘方式是采用外部振蕩器,外部振蕩脈沖信號由XTAL2端接入后直接送至內(nèi)部時鐘發(fā)生器,如圖2 -6所示。下一頁上一頁返回2.1單片機(jī)的基本結(jié)構(gòu)輸入端XTALl應(yīng)接地,由于XTAL2端的邏輯電平不是TTL的,因此,建議在實(shí)際連線設(shè)計時外接一個上拉電阻。一般要求,外接的脈沖信號應(yīng)當(dāng)是高、低電平的持續(xù)時間大于20n

35、s,且頻率低于12MHz的方波。這種方式適合于多塊芯片同時工作,便于同步。下一頁上一頁返回2.1單片機(jī)的基本結(jié)構(gòu)2.1.5 單片機(jī)復(fù)位電路1.單片機(jī)的復(fù)位狀態(tài)計算機(jī)在啟動運(yùn)行時都需要復(fù)位,復(fù)位使中央處理器CPU和系統(tǒng)中的其他器件都處于一種確定的初始狀態(tài)或者成為原始狀態(tài)。在這種狀態(tài)下,所有的專用寄存器都被賦予系統(tǒng)的默認(rèn)值。AT89 S51單片機(jī)的復(fù)位狀態(tài)如表2-1所列。 在復(fù)位時,ALE和PESN成輸入狀態(tài),即ALE = PESN = 1,片內(nèi)RAM不受復(fù)位的影響。復(fù)位后,各特殊工作寄存器狀態(tài)改變的含義可以分析如下: 首先,復(fù)位后,PC指向0000H,單片機(jī)從起始地址0000H開始執(zhí)行程序;PS

36、W = 00H,從而使CPU選擇工作寄存器組;SP=07H,也就是設(shè)定堆棧在07H地址。同時,復(fù)位后的THO,TLO,TH1和TL1都變?yōu)镺OH,表示定下一頁上一頁返回2.1單片機(jī)的基本結(jié)構(gòu)時/計數(shù)器復(fù)位后都被清除為00H; TMOD和TCON均為00H,則表示定時/計數(shù)器工作在方式0,并且系統(tǒng)禁止定時器計數(shù),其中斷被屏蔽。還有,復(fù)位后,SCON = 00H,則串行口工作在方式Oo IE=00H,CPU屏蔽所有中斷。IP復(fù)位后的有效數(shù)字位都為。,使5個中斷源都被設(shè)置為低中斷優(yōu)先級。另外,P1,P2,P3都為FFH,則這些I/O端口都處于輸入的狀態(tài)。AT89S51單片機(jī)有一個復(fù)位引腳RST,后面

37、要介紹的復(fù)位電路就是利用這個引腳來搭建的。 2.復(fù)位電路的形式 (1)簡單復(fù)位電路簡單復(fù)位電路有上電復(fù)位和手動復(fù)位兩種。但不管是哪一種復(fù)位電路形式,都是要保證在RST復(fù)位引腳上提供10 ms以上穩(wěn)定的高電平。 下一頁上一頁返回2.1單片機(jī)的基本結(jié)構(gòu)上電復(fù)位電路上電復(fù)位電路是簡單復(fù)位電路中的一種,只要在RST復(fù)位引腳上接一個電容到Vcc,再接一個電阻到地端,就構(gòu)成了一個簡單的上電復(fù)位電路。上電復(fù)位電路就是指在給系統(tǒng)上電時,復(fù)位電路通過電容加到RST復(fù)位引腳一個短暫的高電平信號,這個復(fù)位信號隨著Vcc對電容的充電過程而回落,所以RST復(fù)位引腳的高電平維持時間取決于電容的充電時間。為了保證系統(tǒng)安全可

38、靠地復(fù)位,RST引腳的高電平信號必須維持足夠長的時間。常用的上電復(fù)位電路如圖2 -7所示。這種上電復(fù)位電路的工作過程可以描述如下:當(dāng)系統(tǒng)加電時,電容C充電,電路有電流流過,構(gòu)成回路,在電阻R上產(chǎn)生壓降,RST引腳為高電平;當(dāng)電容C充滿電后,電路相當(dāng)于斷開,RST的電位與地相同,復(fù)位結(jié)束。由此可見,復(fù)位的時間與充電的時間有關(guān),充電時間越長,增大電容的容量或增大電阻的阻值都可以增加復(fù)位的時間。下一頁上一頁返回2.1單片機(jī)的基本結(jié)構(gòu)手動復(fù)位電路手動復(fù)位就是需要人為在復(fù)位輸入端加高電平讓系統(tǒng)實(shí)現(xiàn)復(fù)位的方式。一般來說,系統(tǒng)運(yùn)行過程中,為了避免系統(tǒng)硬件因經(jīng)常加電和斷電而造成的損壞,而同時又需要進(jìn)行系統(tǒng)復(fù)位

39、,此時,就可以選擇采用手動復(fù)位。經(jīng)常采用的手動復(fù)位方法是在RST端和正電源Vc0之間先接成上電復(fù)位電路的形式,然后再接一個串聯(lián)了電阻的按鍵開關(guān)。這樣一來,當(dāng)系統(tǒng)加電時,系統(tǒng)可以實(shí)現(xiàn)上電復(fù)位;而當(dāng)按下按鍵開關(guān)時,電路使Vc0和RST端接通,從而實(shí)現(xiàn)系統(tǒng)復(fù)位。按鍵的動作必須保證有數(shù)十毫秒,也就是大于兩個機(jī)器周期的時間,這樣才能保證讓系統(tǒng)安全地實(shí)現(xiàn)復(fù)位。下一頁上一頁返回2.1單片機(jī)的基本結(jié)構(gòu)圖2 -8中的圖(a),(b)分別為手動復(fù)位電路的兩個示例圖。其中圖2-8(a)為按鍵式復(fù)位電路,圖2一8(b)為按鍵脈沖復(fù)位電路。它們都兼有上電復(fù)位和按鍵后系統(tǒng)復(fù)位的功能。圖2-8(a)中,當(dāng)按下按鍵后,通過R

40、1和R2形成的回路,使RST引腳端產(chǎn)生高電平,從而實(shí)現(xiàn)系統(tǒng)復(fù)位。圖2-8(b)中,按鍵后,是利用RC微分電路在RST端產(chǎn)生正脈沖來實(shí)現(xiàn)系統(tǒng)復(fù)位。 簡單復(fù)位電路中,干擾很容易串人復(fù)位端,在大多數(shù)情況下是不會造成單片機(jī)的錯誤復(fù)位的,但它會引起單片機(jī)內(nèi)部某些寄存器的錯誤復(fù)位。這時,我們常見的改進(jìn)方法就是在RST復(fù)位引腳上接一個去藕電容。如圖2-8(c)所示。下一頁上一頁返回2.1單片機(jī)的基本結(jié)構(gòu) (2)復(fù)雜復(fù)位電路在電路使用環(huán)境的干擾較大,電壓波動也較大的情況下,為了保證系統(tǒng)可靠地工作,在設(shè)計復(fù)位電路時,就應(yīng)當(dāng)采用復(fù)雜復(fù)位電路的形式。實(shí)際應(yīng)用中的復(fù)雜復(fù)位電路的形式是多種多樣的,可以將RC電路接一定的

41、處理電路后再接到單片機(jī)的復(fù)位引腳,也可以采用一些專用的復(fù)位電路芯片來實(shí)現(xiàn)復(fù)位。另外,還可以采用內(nèi)置了一些復(fù)位處理電路的單片機(jī),如AT89S51單片機(jī),以及Motorola, Microchip等公司的單片機(jī),其中有些內(nèi)置了“看門狗”定時器功能。下面的圖2-9就是一些復(fù)雜復(fù)位電路的示例圖。下一頁上一頁返回2.1單片機(jī)的基本結(jié)構(gòu)2.1.6單片機(jī)的基本輸出元件單元一個單片機(jī)系統(tǒng)是離不開輸出元件的。如果沒有輸出元件單元對系統(tǒng)實(shí)現(xiàn)的功能進(jìn)行顯示,那么,系統(tǒng)設(shè)計是毫無意義的。單片機(jī)系統(tǒng)中基本的輸出元件單元有LED顯示器件、液晶(LCD)顯示器件、CRT顯示器件等。其中LED顯示器和LCD顯示器又可以分為數(shù)

42、碼顯示和點(diǎn)陣顯示。在單片機(jī)系統(tǒng)中,通常用LED數(shù)碼顯示器來顯示各種數(shù)字或符號。由于LED顯示器價格低廉,發(fā)光較強(qiáng),機(jī)械性能好,顯示清晰,使用電壓低,使用壽命長,因此在普通單片機(jī)系統(tǒng)中應(yīng)用非常廣泛。液晶LCD顯示器質(zhì)量輕,功耗低,可以顯示文字圖形等。CRT顯示器則顯示功能強(qiáng)大,使用比較普遍。 下一頁上一頁返回2.1單片機(jī)的基本結(jié)構(gòu)下面本書將分別介紹這幾種顯示器件的原理與基本結(jié)構(gòu)。 1. LCD顯示器LCD顯示器就是平時所說的液晶顯示器。不過由于一般的單片機(jī)系統(tǒng)要求實(shí)現(xiàn)的顯示內(nèi)容相對較少,因此,這里使用的LCD顯示器就是小型或是微型的液晶顯示器了。液晶顯示器相對于其他類型的顯示器有如下優(yōu)點(diǎn): .低

43、壓微功耗,可以和大規(guī)模集成電路相匹配,使便攜式計算機(jī)和電子儀表成為可能; .顯示的信息量大,無電磁輻射,一般可以顯示單行或多行字符、漢字或圖形; .體積小,采用平板式結(jié)構(gòu),使用方便; .適合戶外使用,符合人眼的視覺習(xí)慣,但在黑暗的環(huán)境下一頁上一頁返回2.1單片機(jī)的基本結(jié)構(gòu)條件下,必須使用外接的光源才能使LCD顯示正常接收。不過,目前的液晶顯示器還存在一些缺點(diǎn),比如使用溫度較窄,大屏幕LCD顯示器價格較高等,但家用電器、計算機(jī)、自動化儀表等領(lǐng)域中都有液晶顯示器的應(yīng)用。在單片機(jī)應(yīng)用系統(tǒng)中,最為常用的液晶顯示器類型是段型和點(diǎn)陣兩種類型。(1)段型液晶顯示器段型液晶顯示器是指以長條狀顯示像素組成一位顯

44、示的液晶顯示器,它主要用于數(shù)字顯示,也可用于顯示某些西文字符等。從顯示形狀上分類,段型顯示可以分為6段顯示、7段顯示、8段顯示、14段顯示和16段顯示等,在形狀上它總是圍繞數(shù)字8的結(jié)構(gòu)變化。其中以7段顯示最為常用,被廣泛應(yīng)用于各種數(shù)字儀表和計數(shù)器中。下一頁上一頁返回2.1單片機(jī)的基本結(jié)構(gòu) 從驅(qū)動方式上分類,段型顯示可以分為靜態(tài)顯示驅(qū)動和動態(tài)顯示驅(qū)動兩種。一個段型顯示器的驅(qū)動方式主要取決于該器件各顯示像素外引線的引出和排列方式。由于引線電極排列不同,因此其驅(qū)動方式也就不同。所以,在使用段型液晶顯示器時,必須首先弄清楚其引線電極排列的具體情況,然后再據(jù)此使用相應(yīng)的控制方法。 (2)點(diǎn)陣液晶顯示器由

45、于點(diǎn)陣液晶顯示器的引線比較多,用戶使用時非常不便,因此,點(diǎn)陣制造商通常將點(diǎn)陣液晶顯示器和驅(qū)動器連接之后做成一個電路模塊來出售,我們常將這樣的產(chǎn)品稱為液晶顯示模塊(LCM )。在液晶顯示模塊上,線路板為雙面印刷線路板,其正面布有電極引線,并且還固定有液晶顯示器件;其背面裝配好了液晶顯示驅(qū)動電路和分壓電路,下一頁上一頁返回2.1單片機(jī)的基本結(jié)構(gòu)并且也提供了驅(qū)動電路的接口。有些液晶顯示模塊內(nèi)部有控制電路,這種內(nèi)置控制電路的液晶顯示模塊所給出的接口可以直接與微處理器連接。這樣,用戶就可以把主要精力投人到顯示屏畫面軟件設(shè)計中。點(diǎn)陣液晶顯示的實(shí)現(xiàn),主要是靠液晶顯示控制器來完成的。字符型液晶顯示模塊是一類專

46、門用于顯示字母、數(shù)字、符號等的點(diǎn)陣型液晶顯示模塊。在顯示器的電極使用控制上,它由若干個5 x5或5 x11點(diǎn)陣字符位組成。每一個點(diǎn)陣字符位都可以顯示一個字符。點(diǎn)陣字符位之間有一個點(diǎn)距的間隔,起到了字符間距和行距的作用。字符型液晶顯示模塊安裝在一塊雙面印刷線路板上,其一面用導(dǎo)電橡膠將電路與液晶顯示器連接,另一面則裝配有所需要的驅(qū)動器、控制器以及驅(qū)動所需的分壓電路。下一頁上一頁返回2.1單片機(jī)的基本結(jié)構(gòu)。它們一般都可以與單片機(jī)接口以便組成點(diǎn)陣顯示系統(tǒng)。不同類型的字符型液晶顯示模塊,其顯示的字符數(shù)目和尺寸有所不同,而相關(guān)的電路原理、控制方法等則基本相同或相近在今后的實(shí)際應(yīng)用中,讀者可以參閱具體使用的

47、點(diǎn)陣液晶顯示器說明來進(jìn)行設(shè)計實(shí)驗(yàn),這里就不多介紹了。 2. LED顯示器 LED顯示器就是我們常見的發(fā)光二極管、數(shù)碼管顯示器和點(diǎn)陣顯示器。(1)發(fā)光二極管發(fā)光二極管是普通二極管的功能改進(jìn)類型。它具有普通二極管的基本特性,即在其正極引腳上接正電源,在其負(fù)極引腳上接地,則其會處于導(dǎo)通的狀態(tài),而且它同時會發(fā)出一定顏色的光。我們常利用發(fā)光二極管來指示電源、某些儀器的出錯警示,或是用來模擬一些生活中的大型彩燈下一頁上一頁返回2.1單片機(jī)的基本結(jié)構(gòu)的發(fā)光情況。發(fā)光二極管的發(fā)光顏色是有許多選擇的,實(shí)際設(shè)計時,設(shè)計者可以根據(jù)實(shí)際設(shè)計任務(wù)的需要來選擇。如圖2-10(a)所示。(2)數(shù)碼管顯示器 顯示器基本結(jié)構(gòu)如

48、果將數(shù)個發(fā)光二極管按一定的規(guī)律進(jìn)行組合,那么就可以得到其他形式的LED顯示器件。數(shù)碼管就是這樣的一種元件。它由發(fā)光二極管構(gòu)成顯示字段,每段由一個或幾個發(fā)同種顏色光的發(fā)光二極管構(gòu)成。下面以每段只有一個發(fā)光二極管構(gòu)成的數(shù)碼管為例來介紹。 由于一般的數(shù)碼管是顯示字形“8,即由七只發(fā)光二極管分別構(gòu)成“8”的每一劃,因此,我們常將此類數(shù)碼管稱為七段數(shù)碼管。數(shù)碼管中除了構(gòu)成基本顯示字形的7個發(fā)光二極管之外,還有一個構(gòu)成顯示小數(shù)點(diǎn)的發(fā)光二極管。這8個下一頁上一頁返回2.1單片機(jī)的基本結(jié)構(gòu)發(fā)光二極管分別用a,b,c,d,e,f,g,dp來表示。在實(shí)際應(yīng)用中,我們是將這8個發(fā)光二極管某一端連接到一起,而將另一端

49、作為控制信號的輸入端。當(dāng)將正極引腳連接到一起時,將這類數(shù)碼管稱為共陽極數(shù)碼管;反之,當(dāng)將負(fù)極引腳連接到一起時,將這類數(shù)碼管稱為共陰極數(shù)碼管。如圖2-11所示。以共陰極數(shù)碼管為例,當(dāng)公共連接點(diǎn)接地(低電平),而控制某段的輸入信號為高電平時,該段就會被點(diǎn)亮。在對應(yīng)的顯示字形上就會呈現(xiàn)一個固定的符號字。例如,當(dāng)顯示字形中的b段和。段被點(diǎn)亮?xí)r,就構(gòu)成了一個“1。又如,當(dāng)顯示字形中的a段、b段、c段、e段、f段和g段被點(diǎn)亮?xí)r,就構(gòu)成了一個“A。如果把顯示字符所對應(yīng)的段點(diǎn)亮順序?qū)懗勺侄未a,就稱這個處理過程為“譯碼”。圖2一12表示的是數(shù)碼管顯示的字形,表2一6所列為數(shù)碼管顯示字形與對應(yīng)的段輸入數(shù)據(jù)對照表。

50、下一頁上一頁返回2.1單片機(jī)的基本結(jié)構(gòu)在實(shí)際應(yīng)用中可以通過軟件譯碼和硬件譯碼兩種方式來實(shí)現(xiàn)顯示字符到其字段碼的轉(zhuǎn)換。軟件譯碼就是將要顯示的字符代碼通過軟件程序轉(zhuǎn)換(也就是翻譯)成字段碼,CPU直接將字段碼通過并行接口送到數(shù)碼管顯示器就可實(shí)現(xiàn)顯示。軟件譯碼的優(yōu)點(diǎn)是方便靈活,可以顯示特殊字形,且小數(shù)點(diǎn)處理方便。硬件譯碼就是CPU將字符代碼通過4位并行接口送到一個譯碼器芯片,由該譯碼器芯片完成譯碼的工作后,再送到數(shù)碼顯示器。硬件譯碼的優(yōu)點(diǎn)是編程比較簡單,但硬件譯碼不能產(chǎn)生特殊字形,小數(shù)點(diǎn)的顯示也要單獨(dú)來處理。在初學(xué)單片機(jī)還不很熟悉單片機(jī)編程方法時,可以考慮用硬件譯碼來實(shí)現(xiàn)單片機(jī)的顯示控制功能;待編程

51、已比較熟悉之后,就可將這兩種方式適時地結(jié)合,從而達(dá)到設(shè)計的目的。數(shù)碼管顯示時的設(shè)計方.式數(shù)碼管設(shè)計顯示的方式有兩種:靜態(tài)顯示方式和動態(tài)顯示方式。下一頁上一頁返回2.1單片機(jī)的基本結(jié)構(gòu) a.靜態(tài)顯示方式靜態(tài)顯示就是顯示器的每個字段控制都要用單獨(dú)的一條I/O端口線,當(dāng)CPU把待顯示的字(經(jīng)硬件譯碼)或字段碼(經(jīng)軟件譯碼)送到輸出口上時,顯示器就可以顯示出所需顯示的字符。在CPU改寫它以前,這個顯示的字符將保持不變。 靜態(tài)顯示的優(yōu)點(diǎn)是顯示程序比較簡單,亮度高,由于在不改變顯示內(nèi)容時不需要CPU去干預(yù)顯示的狀態(tài)保持問題,因此節(jié)約了CPU的時間。靜態(tài)顯示的缺點(diǎn)是,顯示位數(shù)占用的系統(tǒng)I/O端口線較多,硬件

52、比較復(fù)雜,因此,這種方式只適合于顯示位數(shù)比較少的系統(tǒng)設(shè)計。 b.動態(tài)顯示方式動態(tài)掃描顯示方式是單片機(jī)應(yīng)用中使用最為廣泛的一種顯示方式。它具有線路簡單、成本低的特點(diǎn)。在搭建電路時,是將多位的數(shù)碼管顯示器相同的字段控制下一頁上一頁返回2.1單片機(jī)的基本結(jié)構(gòu)線連接在一起,然后由單片機(jī)的8個I/O端口線來集中送顯示數(shù)據(jù),如字段a就與另一個數(shù)碼管的字段a相連。之后,每個數(shù)碼管的COM端則由單片機(jī)的I/O端口線單獨(dú)來控制。這樣,當(dāng)CPU向顯示器輸出顯示數(shù)據(jù)時,只有COM端被設(shè)置為有效信號的數(shù)碼管才會顯示這個數(shù)據(jù)。 實(shí)際上,動態(tài)掃描就是利用分時工作的方法,使多個數(shù)碼管輪流來顯示數(shù)據(jù)。一般,各數(shù)碼管的顯示時間

53、為1 ms左右,由于人視覺暫留現(xiàn)象且發(fā)光二極管具有余輝效應(yīng),使得各數(shù)碼管顯示的效果在人看來就是很穩(wěn)定的一組數(shù)據(jù)。在編寫程序時,只要使掃描的時間比較短,那么輸出顯示的效果就不會有閃爍感。鑒于后面的實(shí)驗(yàn)中對這部分內(nèi)容有專門的介紹,這里就不重復(fù)舉例來說明了。下一頁上一頁返回2.1單片機(jī)的基本結(jié)構(gòu)2.1.7 單片機(jī)的基本輸入元件單元 單片機(jī)系統(tǒng)中的基本輸入元件就是按鍵開關(guān)和鍵盤。圖2-13所示是按鍵與鍵盤的一些實(shí)例圖片。 按鍵是最為簡單的輸入元件之一,將其一端接到電源的正極(或者負(fù)極),另一端接到單片機(jī)的某個I/O端口引腳,當(dāng)按鍵動作時,相應(yīng)的I/O端口引腳上的電平狀態(tài)就會發(fā)生變化。若在程序中對I/O

54、引腳狀態(tài)進(jìn)行檢測,那么就可以實(shí)現(xiàn)由按鍵動作操縱某些程序的執(zhí)行、啟動與停止了。鍵盤是由多個按鍵根據(jù)一定的規(guī)律組合而構(gòu)成的。常見的鍵盤可以分為編碼鍵盤和非編碼鍵盤;另外,鍵盤也可分為獨(dú)立式鍵盤與矩陣式鍵盤。編碼鍵盤就是采用硬件線路來實(shí)現(xiàn)鍵盤按鍵的編碼,每按一次鍵。鍵盤就產(chǎn)生一個編碼,并且它還有去抖動的功能。這種鍵盤使用比較方便,但硬件比較復(fù)下一頁上一頁返回2.1單片機(jī)的基本結(jié)構(gòu)雜,一般只用于按鍵數(shù)量較少的場合。在簡單的單片機(jī)系統(tǒng)設(shè)計中,這種鍵盤是比較常用的。1.獨(dú)立式鍵盤獨(dú)立式鍵盤也稱為簡單鍵盤,在應(yīng)用系統(tǒng)中如果需要的按鍵數(shù)量比較少,那么就可以使用獨(dú)立式鍵盤。如圖2-14所示,在鍵盤沒有按鍵動作時

55、,P0. 0, P0. 1, P0. 2三個I/O端口引腳上的輸入電平都是高電平。當(dāng)S0,S1,S2中某一個有按鍵動作時,對應(yīng)的I/O引腳上的輸入電平就會變?yōu)榈碗娖健.?dāng)按鍵松開后,該I/O引腳的輸入電平就又會回復(fù)到高電平的狀態(tài)。(1)按鍵去抖動的處理由于按鍵是機(jī)械元件,在按鍵過程中,都會存在抖動的問題。也就是說,當(dāng)按鍵時,由于存在抖動,使得相應(yīng)的引腳上不會馬上變成低電平,而是出現(xiàn)一下一頁上一頁返回2.1單片機(jī)的基本結(jié)構(gòu)系列的中間電平值;而當(dāng)按鍵松開時,也是由于存在抖動,使得相應(yīng)的引腳上不會馬上變成高電平,而是出現(xiàn)一系列的中間電平值。如果在設(shè)計時不考慮對于按鍵抖動的處理,那么系統(tǒng)很可能會因?yàn)槎秳?/p>

56、而出現(xiàn)誤操作,即在該響應(yīng)按鍵動作時沒有響應(yīng),而在該停止響應(yīng)按鍵動作時卻沒有停止響應(yīng)。實(shí)際上,抖動出現(xiàn)的時間一般為5-10 ms,之后按鍵的動作就會變得穩(wěn)定。因此,如果在系統(tǒng)設(shè)計時,使程序在檢測到按鍵動作后,先延遲一定的時間,然后再檢測按鍵是否還是之前檢測到的動作狀態(tài),若是,那么就可以根據(jù)按鍵的狀態(tài)電平去響應(yīng);反之,系統(tǒng)就無需響應(yīng)這個操作。這樣,就可以很好地協(xié)調(diào)按鍵響應(yīng)與按鍵抖動之間的矛盾了。一般情況下,常采用的延時去抖動時間為10-20 ms.下一頁上一頁返回2.1單片機(jī)的基本結(jié)構(gòu) (2)獨(dú)立式鍵盤與單片機(jī)的接口獨(dú)立式鍵盤與單片機(jī)的接口方式有并行I/O口直接連接方式、擴(kuò)展并行I/O 口連接方式

57、等。如圖2-14所示就是單片機(jī)的I/O口與鍵盤按鍵的直接連接方式。在后面的設(shè)計實(shí)驗(yàn)中,對此種方式有很具體的應(yīng)用,這里就不多介紹。2.矩陣式鍵盤 矩陣式鍵盤也叫行列式鍵盤。如圖2-15所示為一個3x3共九個按鍵的矩陣式鍵盤。其中單片機(jī)的P1. 7, P1. 6,P1. 5分別控制了鍵盤的行線,而P1. 4, P1 . 3 , P1. 2則分別控制了鍵盤的列線。下一頁上一頁返回2.1單片機(jī)的基本結(jié)構(gòu)矩陣式鍵盤的按鍵處理方法與獨(dú)立式按鍵處理方法基本相同。即先檢測鍵盤有無按鍵動作,若有按鍵動作,則作延時以便去除抖動影響。然后再檢測,若此時檢測到已沒有按鍵動作,則返回前面重新檢測;若檢測到仍然有按鍵動作

58、,那么就根據(jù)檢測到的數(shù)據(jù)查找按鍵所處的位置,之后就根據(jù)按鍵的位置確定按鍵所代表的按鍵值。與獨(dú)立式鍵盤不同的是,獨(dú)立式鍵盤可以直接確定按鍵的值;而矩陣式鍵盤就沒那么簡單了,它必須通過檢測有無按鍵動作以及查找按鍵的具體位置才能確定按鍵的值。(1)矩陣式鍵盤按鍵檢測與鍵值確定的步驟矩陣式鍵盤檢測有無按鍵動作以及查找按鍵的具體位置的方法一般是采用掃描法。具體的步驟如下:檢測有無按鍵的動作即先使列線上的所有輸出引腳上電平下一頁上一頁返回2.1單片機(jī)的基本結(jié)構(gòu)全設(shè)為0。然后,進(jìn)行檢測。若沒有按鍵動作,那么行線上的所有輸出引腳上電平應(yīng)當(dāng)全為1;若某處有按鍵動作,那么就必然會有一個位置的行線輸出引腳電平不為1

59、,也就是說,行根據(jù)前面的檢測,查找按鍵的位置即在有按鍵動作時,再進(jìn)行逐行逐列的掃描。以圖2-15為例,先使列線上的P1. 2 =0,P1. 3和P1.4=1。之后,依次檢測行線P1. 7, P1. 6, P1. 5引腳的電平值。若全為1,則說明P1. 2列沒有按鍵動作;但若不是全為1,例如檢測到P1. 7 =0,則表示跨接在P1. 7行和P1. 2列的按鍵有動作,即圖2-15按鍵有動作。如果在該列沒有檢測到有按鍵動作,那么就應(yīng)轉(zhuǎn)到下一列,即使下一個列線引腳電平為0,再去檢測各行線引腳的電平值。就這樣依次逐列逐行地掃描檢測,直到找到有按鍵動作的情況為止。下一頁上一頁返回2.1單片機(jī)的基本結(jié)構(gòu)確定

60、按鍵的位置當(dāng)找到有按鍵動作的情況后,根據(jù)正在掃描的列線和行線的編號就可以確定按鍵的具體位置,通過后面的程序處理,就可以計算得到相應(yīng)的按鍵值,也就是產(chǎn)生按鍵碼。按鍵碼的編號,在程序運(yùn)行之前,就應(yīng)當(dāng)事先定好,并且按照按鍵的排列順序有規(guī)律地列成一個表格,以供后面查詢程序去具體查詢。線上輸出引腳上電平不全為1。 (2)矩陣式鍵盤的基本工作方式系統(tǒng)CPU對鍵盤的基本工作就是掃描方式,可以分為三種:隨機(jī)方式、定時掃描方式和中斷掃描方式。 隨機(jī)方式就是系統(tǒng)僅在CPU處在空閑狀態(tài)時,才去掃描鍵盤的按鍵情況。當(dāng)CPU在執(zhí)行其他應(yīng)用程序,而該程序中沒有鍵盤掃描的程序內(nèi)容時,系統(tǒng)就不能去響應(yīng)此時的按鍵動作。下一頁上

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論