單片機(jī)原理及應(yīng)用(第二版) 課件 (柴鈺)第4-6章 中斷、定時(shí)與串行通信;單片機(jī)系統(tǒng)的擴(kuò)展及接口技術(shù);高性能微處理器_第1頁(yè)
單片機(jī)原理及應(yīng)用(第二版) 課件 (柴鈺)第4-6章 中斷、定時(shí)與串行通信;單片機(jī)系統(tǒng)的擴(kuò)展及接口技術(shù);高性能微處理器_第2頁(yè)
單片機(jī)原理及應(yīng)用(第二版) 課件 (柴鈺)第4-6章 中斷、定時(shí)與串行通信;單片機(jī)系統(tǒng)的擴(kuò)展及接口技術(shù);高性能微處理器_第3頁(yè)
單片機(jī)原理及應(yīng)用(第二版) 課件 (柴鈺)第4-6章 中斷、定時(shí)與串行通信;單片機(jī)系統(tǒng)的擴(kuò)展及接口技術(shù);高性能微處理器_第4頁(yè)
單片機(jī)原理及應(yīng)用(第二版) 課件 (柴鈺)第4-6章 中斷、定時(shí)與串行通信;單片機(jī)系統(tǒng)的擴(kuò)展及接口技術(shù);高性能微處理器_第5頁(yè)
已閱讀5頁(yè),還剩364頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第4章中斷、定時(shí)與串行通信4.1中斷系統(tǒng)4.2定時(shí)/計(jì)數(shù)器4.3串行通信及其接口習(xí)題4

4.1中斷系統(tǒng)

4.1.1中斷的概念中斷是指CPU對(duì)系統(tǒng)中或系統(tǒng)外發(fā)生的某個(gè)事件的一種響應(yīng)過(guò)程,即CPU正在執(zhí)行程序時(shí),系統(tǒng)發(fā)生某一事件需要迅速處理,CPU暫時(shí)停止現(xiàn)行程序的執(zhí)行,而自動(dòng)轉(zhuǎn)去處理該事件;當(dāng)事件處理完成后,CPU再返回到被暫停的程序斷點(diǎn)處,繼續(xù)執(zhí)行原來(lái)的程序,這一過(guò)程稱為中斷,如圖4.1所示。

圖4.1中斷過(guò)程

為實(shí)現(xiàn)中斷功能,單片機(jī)的中斷系統(tǒng)應(yīng)解決以下幾方面的問(wèn)題。

1.中斷源

所謂中斷源,是指引起CPU中斷的事件,即中斷請(qǐng)求信號(hào)的來(lái)源。中斷源向CPU提出的處理請(qǐng)求,稱為中斷請(qǐng)求或中斷申請(qǐng)。中斷請(qǐng)求信號(hào)的產(chǎn)生及該信號(hào)怎樣被CPU有效地識(shí)別是中斷源需要解決的問(wèn)題,而且要求中斷請(qǐng)求信號(hào)產(chǎn)生一次,只能被CPU接收處理一次,不能一次中斷被CPU多次響應(yīng),這也就是中斷請(qǐng)求信號(hào)的及時(shí)撤除問(wèn)題。

2.中斷響應(yīng)、處理與返回

中斷源向CPU提出中斷請(qǐng)求,CPU暫時(shí)停止自身的事務(wù),轉(zhuǎn)去處理事件的過(guò)程,稱為中斷響應(yīng)過(guò)程。對(duì)事件的整個(gè)處理過(guò)程,稱為中斷服務(wù)或中斷處理。處理完畢,再回到原來(lái)被中止的地方,稱為中斷返回。CPU接收到中斷請(qǐng)求信號(hào)后,怎樣轉(zhuǎn)向該中斷源的中斷服務(wù)程序及執(zhí)行完中斷處理程序后如何正確返回被中斷的程序繼續(xù)執(zhí)行是問(wèn)題的關(guān)鍵。中斷響應(yīng)與返回的過(guò)程中涉及CPU響應(yīng)中斷的條件、現(xiàn)場(chǎng)保護(hù)等問(wèn)題。

3.中斷級(jí)別

通常一個(gè)中斷系統(tǒng)都有多個(gè)中斷源,經(jīng)常會(huì)出現(xiàn)兩個(gè)以上中斷源同時(shí)提出中斷請(qǐng)求的情況,這樣就需要設(shè)計(jì)者事先根據(jù)輕重緩急給每一個(gè)中斷源確定一個(gè)中斷級(jí)別(優(yōu)先權(quán)),當(dāng)多個(gè)中斷源同時(shí)發(fā)出中斷申請(qǐng)時(shí),CPU能找到優(yōu)先權(quán)級(jí)別最高的中斷源,響應(yīng)它的中斷請(qǐng)求,在優(yōu)先權(quán)級(jí)別最高的中斷源處理完后,再響應(yīng)級(jí)別較低的中斷源。當(dāng)CPU響應(yīng)某一中斷源的請(qǐng)求并進(jìn)行中斷處理時(shí),若有優(yōu)先權(quán)級(jí)別更高的中斷源發(fā)出中斷申請(qǐng),則CPU要能中斷正在進(jìn)行的中斷服務(wù)程序,保留這個(gè)程序的斷點(diǎn)和現(xiàn)場(chǎng),響應(yīng)高級(jí)中斷,在高級(jí)中斷處理完以后,再繼續(xù)執(zhí)行被中斷的中斷程序,這種情況稱為中斷嵌套。CPU一般都可實(shí)現(xiàn)多級(jí)中斷嵌套。

4.1.2MCS-51系列單片機(jī)的中斷系統(tǒng)

1.?MCS-51系列單片機(jī)中斷系統(tǒng)的組成

MCS-51系列單片機(jī)的中斷系統(tǒng)是8位單片機(jī)中功能較強(qiáng)的一種。51子系列單片機(jī)具有5個(gè)中斷源,52子系列單片機(jī)具有6個(gè)中斷源,具有兩級(jí)中斷優(yōu)先級(jí),可實(shí)現(xiàn)兩級(jí)中斷嵌套,4個(gè)用于中斷控制的特殊功能寄存器IE、IP、TCON和SCON用來(lái)控制中斷的類型、中斷的開(kāi)放/禁止和各種中斷源的優(yōu)先級(jí)別。MCS-51系列單片機(jī)中斷系統(tǒng)結(jié)構(gòu)框圖如圖4.2所示。

圖4.2MCS-51系列單片機(jī)中斷系統(tǒng)結(jié)構(gòu)框圖

1)定時(shí)/計(jì)數(shù)器控制寄存器TCON

TCON為定時(shí)/計(jì)數(shù)器T0、Tl的控制器寄存器,同時(shí)也鎖存了T0、Tl的溢出中斷請(qǐng)求信號(hào)標(biāo)志和外部中斷請(qǐng)求信號(hào)標(biāo)志,其各位的定義如下:

2)串行口控制寄存器SCON

SCON為串行口控制寄存器,SCON的低兩位鎖存串行口接收中斷和發(fā)送中斷標(biāo)志RI和TI,其格式如下:

?TI:串行口發(fā)送中斷標(biāo)志位。

?RI:串行口接收中斷標(biāo)志位。

3.中斷控制

MCS-51單片機(jī)有兩個(gè)特殊功能寄存器,用于中斷系統(tǒng)的控制,分別為中斷允許寄存器IE和中斷優(yōu)先級(jí)寄存器IP。

1)中斷允許寄存器IE

IE控制CPU對(duì)中斷源的開(kāi)放或屏蔽,其格式如下:

?EA:CPU總中斷開(kāi)放標(biāo)志位。

?ES:串行中斷允許標(biāo)志位。

?ET1:定時(shí)/計(jì)數(shù)器T1溢出中斷允許標(biāo)志位。

?EX1:外部中斷1中斷允許標(biāo)志位。

?ET0:定時(shí)/計(jì)數(shù)器T0溢出中斷允許標(biāo)志位。

?EX0:外部中斷0中斷允許標(biāo)志位。

2)中斷優(yōu)先級(jí)寄存器IP

MCS-51單片機(jī)具有兩個(gè)中斷優(yōu)先級(jí),每個(gè)中斷源可編程為高優(yōu)先級(jí)中斷或低優(yōu)先級(jí)中斷,并可實(shí)現(xiàn)二級(jí)中斷嵌套。特殊功能寄存器IP就是用來(lái)設(shè)定各中斷源優(yōu)先級(jí)別的,其格式如下:

?PS:串行口中斷優(yōu)先級(jí)控制位。

?PT1:定時(shí)/計(jì)數(shù)器T1中斷優(yōu)先級(jí)控制位。

?PX1:外部中斷1中斷優(yōu)先級(jí)控制位。

?PT0:定時(shí)/計(jì)數(shù)器T0中斷優(yōu)先級(jí)控制位。

?PX0:外部中斷0中斷優(yōu)先級(jí)控制位。

通過(guò)設(shè)置IP寄存器把各中斷源的優(yōu)先級(jí)分為高、低兩級(jí),它們遵循兩條基本原則:

(1)低優(yōu)先級(jí)中斷可以被高優(yōu)先級(jí)中斷所中斷,反之不能。

(2)一種中斷一旦得到響應(yīng),與它同級(jí)的中斷不能再中斷。

當(dāng)CPU同時(shí)收到幾個(gè)同一優(yōu)先級(jí)別的中斷請(qǐng)求時(shí),哪一個(gè)的請(qǐng)求得到服務(wù)取決于內(nèi)部的硬件查詢順序,CPU將按自然優(yōu)先級(jí)順序確定響應(yīng)哪個(gè)中斷請(qǐng)求。其自然優(yōu)先級(jí)由硬件形成,查詢次序如表4.1所示。

4.1.3中斷處理過(guò)程

中斷處理過(guò)程可分為三個(gè)階段:中斷響應(yīng)、中斷處理和中斷返回。

1.中斷響應(yīng)

1)中斷響應(yīng)條件

單片機(jī)響應(yīng)中斷的條件為中斷源有請(qǐng)求(中斷允許寄存器IE相應(yīng)位置1),且CPU開(kāi)中斷(即EA=1)。這樣,在每個(gè)機(jī)器周期的S5P2期間,對(duì)所有中斷源按用戶設(shè)置的優(yōu)先級(jí)和內(nèi)部規(guī)定的優(yōu)先級(jí)進(jìn)行順序檢測(cè),并可在S6期間找到所有有效的中斷請(qǐng)求。如有中斷請(qǐng)求,且滿足下列條件,則在下一個(gè)機(jī)器周期的S1期間響應(yīng)中斷,否則將丟棄中斷采樣的結(jié)果:

(1)無(wú)同級(jí)或高級(jí)中斷正在處理;

(2)現(xiàn)行指令執(zhí)行到最后一個(gè)機(jī)器周期且已結(jié)束;

(3)若現(xiàn)行指令為RETI或訪問(wèn)IE、IP的指令時(shí),執(zhí)行完該指令且緊隨其后的另一條指令也已執(zhí)行完畢。

2)中斷響應(yīng)過(guò)程

CPU響應(yīng)中斷后,首先置位相應(yīng)的優(yōu)先級(jí)觸發(fā)器,然后把斷點(diǎn)地址壓入堆棧保護(hù),并將響應(yīng)的中斷矢量地址裝入程序計(jì)數(shù)器,轉(zhuǎn)入該中斷服務(wù)程序進(jìn)行處理。各中斷源與之對(duì)應(yīng)的矢量地址見(jiàn)表4.2。

3)中斷響應(yīng)時(shí)間

所謂中斷響應(yīng)時(shí)間,是指CPU檢測(cè)到中斷請(qǐng)求信號(hào)到轉(zhuǎn)入中斷服務(wù)程序入口所需要的機(jī)器周期數(shù)。了解中斷響應(yīng)時(shí)間對(duì)設(shè)計(jì)實(shí)時(shí)測(cè)控應(yīng)用系統(tǒng)有重要指導(dǎo)意義。

中斷響應(yīng)的最長(zhǎng)時(shí)間(在無(wú)特殊情況下)由下列情況決定:若中斷檢測(cè)時(shí)正在執(zhí)行RETI或訪問(wèn)IE或IP指令的第一個(gè)機(jī)器周期,則包括檢測(cè)在內(nèi)需要兩個(gè)機(jī)器周期(以上三條指令均需兩個(gè)機(jī)器周期);若緊接著要執(zhí)行的指令恰好是執(zhí)行時(shí)間最長(zhǎng)的乘、除法指令,則其執(zhí)行時(shí)間均為四個(gè)機(jī)器周期;再用兩個(gè)機(jī)器周期執(zhí)行一條長(zhǎng)調(diào)用指令才轉(zhuǎn)入中斷服務(wù)程序。這樣,總共需要8個(gè)機(jī)器周期。其他情況下的中斷響應(yīng)時(shí)間一般為3~8個(gè)機(jī)器周期。

2.中斷處理

CPU響應(yīng)中斷結(jié)束后即轉(zhuǎn)至中斷服務(wù)程序的入口,并從中斷服務(wù)程序的第一條指令開(kāi)始執(zhí)行,直到返回指令為止,這個(gè)過(guò)程稱為中斷處理或中斷服務(wù)。中斷處理包括兩部分內(nèi)容:一是保護(hù)現(xiàn)場(chǎng)和恢復(fù);二是為中斷源服務(wù)。

保護(hù)現(xiàn)場(chǎng)是指保護(hù)PSW、工作寄存器、專用寄存器等數(shù)據(jù)。如果在中斷服務(wù)程序中要用這些寄存器,則在進(jìn)入中斷服務(wù)之前應(yīng)將它們的內(nèi)容保護(hù)起來(lái),即保護(hù)現(xiàn)場(chǎng)。在中斷結(jié)束時(shí),即執(zhí)行RETI指令之前,再恢復(fù)這些寄存器的內(nèi)容,即恢復(fù)現(xiàn)場(chǎng)。

中斷服務(wù)是針對(duì)中斷源的具體要求進(jìn)行的處理。

3.中斷返回

中斷服務(wù)程序中,最后一條指令是中斷返回指令RETI,該指令的功能是結(jié)束本次中斷服務(wù),返回到原程序。在執(zhí)行RETI指令時(shí),將壓入堆棧的中斷點(diǎn)地址彈出并送回程序計(jì)數(shù)器,使程序返回到原來(lái)被中斷處繼續(xù)執(zhí)行,同時(shí)清除相應(yīng)的優(yōu)先級(jí)觸發(fā)器。

4.1.4中斷請(qǐng)求的撤除

中斷源發(fā)出中斷請(qǐng)求后,CPU首先置位相應(yīng)的中斷標(biāo)志位,然后通過(guò)對(duì)中斷標(biāo)志位的檢測(cè)決定是否響應(yīng)中斷,所以撤除中斷請(qǐng)求就是要清除中斷標(biāo)志。CPU響應(yīng)某中斷請(qǐng)求后,在該中斷返回之前,應(yīng)將其對(duì)應(yīng)的中斷標(biāo)志位復(fù)位,否則CPU在返回主程序后將再次響應(yīng)該中斷。MCS-51單片機(jī)各個(gè)中斷源標(biāo)志位的清除方法不相同。

圖4.3給出了一種常用的撤銷外部中斷請(qǐng)求電路。

圖4.3撤銷外部中斷請(qǐng)求電路

圖4.4擴(kuò)展四個(gè)外部中斷源電路

4.2定時(shí)/計(jì)數(shù)器

4.2.1定時(shí)/計(jì)數(shù)器的結(jié)構(gòu)及工作原理1.定時(shí)/計(jì)數(shù)器的結(jié)構(gòu)MCS-51單片機(jī)內(nèi)部的定時(shí)/計(jì)數(shù)器邏輯結(jié)構(gòu)如圖4.5所示,它由6個(gè)特殊功能寄存器組成。其中,TMOD為定時(shí)/計(jì)數(shù)器方式控制寄存器,用來(lái)設(shè)置兩個(gè)16位定時(shí)/計(jì)數(shù)器T0和T1的工作方式;TCON為定時(shí)/計(jì)數(shù)器控制寄存器,主要用來(lái)控制定時(shí)/計(jì)數(shù)器T0和T1的啟動(dòng)和停止。兩個(gè)16位的定時(shí)/計(jì)數(shù)器T0?(TH0和TL0)和T1(TH1和TL1)用于設(shè)置定時(shí)或計(jì)數(shù)。

圖4.5定時(shí)/計(jì)數(shù)器邏輯結(jié)構(gòu)框圖

2.定時(shí)/計(jì)數(shù)器的工作原理

MCS-51單片機(jī)內(nèi)部的兩個(gè)16位可編程的定時(shí)/計(jì)數(shù)器T0和T1均有定時(shí)和計(jì)數(shù)功能。T0和T1的工作方式及功能選擇、定時(shí)時(shí)間、啟動(dòng)方式等均可以通過(guò)編程對(duì)相應(yīng)特殊功能

寄存器TMOD和TCON進(jìn)行設(shè)置來(lái)實(shí)現(xiàn),計(jì)數(shù)值也可由軟件命令設(shè)置于16位的定時(shí)/計(jì)數(shù)器(TH0、TL0或TH1、TL1)中。

4.2.2定時(shí)/計(jì)數(shù)器的工作方式寄存器及控制寄存器

1.定時(shí)/計(jì)數(shù)器方式寄存器TMOD(89H)

定時(shí)/計(jì)數(shù)器T0、T1都有四種工作方式,可通過(guò)程序?qū)MOD進(jìn)行設(shè)置來(lái)選擇,其各位定義如下:

?GATE:門控位,用于控制定時(shí)/計(jì)數(shù)器的啟動(dòng)是否受外部中斷請(qǐng)求信號(hào)的控制。

?:定時(shí)或計(jì)數(shù)功能選擇位。

?M1、M0:定時(shí)/計(jì)數(shù)器工作方式選擇位。MCS-51單片機(jī)的定時(shí)/計(jì)數(shù)器有四種工作方式,如表4.3所示。

2.定時(shí)/計(jì)數(shù)器控制寄存器TCON

TCON用于控制定時(shí)/計(jì)數(shù)器的啟、停、溢出標(biāo)志和外部中斷信號(hào)觸發(fā)方式,其各位定義如下:

?TR1:定時(shí)/計(jì)數(shù)器T1的啟停控制位。

?TR0:定時(shí)/計(jì)數(shù)器T0的啟??刂莆?。

3.定時(shí)/計(jì)數(shù)器的工作方式

1)方式0

方式0為13位定時(shí)/計(jì)數(shù)器。13位計(jì)數(shù)寄存器由TH0(TH1)的高8位和TL0(TL1)的低5位構(gòu)成,TL0(TL1)中的高3位不用。T0(或T1)方式0的結(jié)構(gòu)框圖如圖4.6所示。

圖4.6T0(或T1)方式0的結(jié)構(gòu)框圖

2)方式1

方式1是16位定時(shí)/計(jì)數(shù)器,其結(jié)構(gòu)與方式0類似,唯一的區(qū)別在于計(jì)數(shù)器的位數(shù)不同。方式1的加1計(jì)數(shù)器由TH0(TH1)的8位和TL0(TL1)的8位構(gòu)成。

在方式1時(shí),計(jì)數(shù)器的計(jì)數(shù)值由下式確定:

N?=?216-x?=?65536-x

計(jì)數(shù)范圍為1~65536。

定時(shí)器的定時(shí)時(shí)間由下式確定:

T?=?N?×?Tcy?=?(65536-x)Tcy

如果fosc=12MHz,則Tcy=1μs,定時(shí)范圍為1~65536μs。

3)方式2

方式2是能自動(dòng)重裝計(jì)數(shù)初值的8位計(jì)數(shù)器。方式2中把16位的計(jì)數(shù)器拆成兩個(gè)8位計(jì)數(shù)器,低8位作計(jì)數(shù)器用,高8位用以保存計(jì)數(shù)初值。當(dāng)?shù)?位計(jì)數(shù)產(chǎn)生溢出時(shí),將溢出中斷標(biāo)志位置1,同時(shí)又將保存在高8位中的計(jì)數(shù)初值重新裝入低8位計(jì)數(shù)器中,繼續(xù)計(jì)數(shù),循環(huán)不止。T0(或T1)方式2的結(jié)構(gòu)框圖如圖4.7所示。

圖4.7T0(或T1)方式2的結(jié)構(gòu)框圖

在工作方式2時(shí),計(jì)數(shù)器的計(jì)數(shù)值由下式確定:

N?=?28-x?=?256-x

計(jì)數(shù)范圍為1~256。

定時(shí)器的定時(shí)值由下式確定:

T?=?N?×?Tcy?=?(256-x)Tcy

如果fosc=12MHz,則Tcy=1μs,定時(shí)范圍為1~256μs。

4)方式3

定時(shí)/計(jì)數(shù)器T0和T1在前三種工作方式下,其功能完全相同。但工作方式3對(duì)T0和T1是大不相同的。當(dāng)T1設(shè)置為工作方式3時(shí),它將保持初始值不變,并停止計(jì)數(shù),其狀態(tài)相當(dāng)于將啟??刂莆籘R1設(shè)為0,因此T1不能工作在方式3下。

若將T0設(shè)為方式3,TL0和TH0被分成兩個(gè)互相獨(dú)立的8位計(jì)數(shù)器,其邏輯結(jié)構(gòu)如圖4.8所示。

圖4.8T0方式3的結(jié)構(gòu)框圖

4.2.3定時(shí)/計(jì)數(shù)器應(yīng)用舉例

1.定時(shí)/計(jì)數(shù)器初始化

定時(shí)/計(jì)數(shù)器初始化的內(nèi)容包含以下幾點(diǎn):

(1)確定定時(shí)/計(jì)數(shù)器的工作模式及工作方式,即給TMOD置相應(yīng)的控制字。

(2)計(jì)算計(jì)數(shù)初值,送入計(jì)數(shù)器TH0、TL0或TH1、TL1中。

(3)根據(jù)使用要求確定是否需要開(kāi)放中斷,若使用溢出中斷功能,則需要對(duì)中斷允許寄存器IE以及中斷優(yōu)先級(jí)寄存器IP進(jìn)行設(shè)置。

(4)給定時(shí)/計(jì)數(shù)器控制寄存器TCON送入命令字,啟動(dòng)定時(shí)/計(jì)數(shù)器工作。

2.定時(shí)/計(jì)數(shù)器計(jì)數(shù)初值計(jì)算

1)定時(shí)器的初值計(jì)算

當(dāng)選擇定時(shí)功能時(shí),計(jì)數(shù)器是對(duì)機(jī)器周期進(jìn)行計(jì)數(shù)。設(shè)T為定時(shí)時(shí)間,x為計(jì)數(shù)器的初值,n為計(jì)數(shù)器位數(shù),單片機(jī)系統(tǒng)時(shí)鐘頻率為fosc,則計(jì)數(shù)初值可通過(guò)如下公式計(jì)算:

2)計(jì)數(shù)功能的初值計(jì)算

選擇計(jì)數(shù)功能時(shí),計(jì)數(shù)脈沖由外部引腳引入,是對(duì)外部脈沖進(jìn)行計(jì)數(shù),計(jì)數(shù)初值可由下式確定:

x?=?2n-N

式中,N為計(jì)數(shù)值,其他參數(shù)的定義同定時(shí)器初值計(jì)算公式。

3.應(yīng)用舉例

例4.2用定時(shí)/計(jì)數(shù)器T1進(jìn)行外部事件計(jì)數(shù),每計(jì)數(shù)1000個(gè)脈沖后,定時(shí)/計(jì)數(shù)器T1轉(zhuǎn)為定時(shí)工作方式,定時(shí)10ms后又轉(zhuǎn)為計(jì)數(shù)方式,如此循環(huán)不止。假定fosc為6MHz,用方式1編程。

解將T1在定時(shí)和計(jì)數(shù)兩種方式下輪換工作,首先讓T1工作在方式1。

T1為定時(shí)器時(shí)初值計(jì)算如下:

T1為計(jì)數(shù)器時(shí)初值計(jì)算如下:

4.3串行通信及其接口

CPU與外部的信息交換稱為通信。通信的基本方式可分為并行通信和串行通信兩種。并行通信是指構(gòu)成信息的二進(jìn)制字符的各位數(shù)據(jù)同時(shí)傳送的通信方法。并行通信的主要特點(diǎn)是傳輸速度快,在短距離通信中占優(yōu)勢(shì),對(duì)長(zhǎng)距離數(shù)據(jù)傳輸來(lái)說(shuō),因?yàn)樾盘?hào)線太多導(dǎo)致線路復(fù)雜,成本高。串行通信是指構(gòu)成信息的二進(jìn)制字符的各位數(shù)據(jù)一位一位順序地傳送的通信方式。串行通信線路簡(jiǎn)單,成本低但傳輸速度慢,適用于遠(yuǎn)距離傳輸。

4.3.1串行通信方式

1.異步通信

在異步通信中,被傳送的信息通常是一個(gè)字符代碼或一個(gè)字節(jié)數(shù)據(jù),它們都以規(guī)定的相同傳送格式(字符幀格式)一幀一幀地發(fā)送或接收。發(fā)送端和接收端各有一套彼此獨(dú)立、互不同步的通信機(jī)構(gòu),可以由各自的時(shí)鐘來(lái)控制數(shù)據(jù)的發(fā)送和接收。

一個(gè)字符在異步傳送中又稱為一幀數(shù)據(jù),字符幀也稱數(shù)據(jù)幀,由起始位、數(shù)據(jù)位、奇偶校驗(yàn)位和停止位四部分組成,異步通信的字符幀格式如圖4.9所示。圖4.9異步通信的字符幀格式

在串行異步傳送中,通信雙方必須事先約定:

字符格式。雙方要事先約定字符的編碼形式、奇偶校驗(yàn)形式及起始位和停止位的規(guī)定。例如用ASCII碼通信,有效數(shù)據(jù)為7位,加一個(gè)奇偶校驗(yàn)位、一個(gè)起始位和一個(gè)停止位共10位。當(dāng)然停止位也可以大于1位。

波特率。波特率就是數(shù)據(jù)的傳送速率,即每秒鐘傳送的二進(jìn)制位數(shù),單位為位/秒。它與字符的傳送速率(字符/秒)之間有以下關(guān)系:

波特率?=?一個(gè)字符的二進(jìn)制編碼位數(shù)?×?字符/秒

發(fā)送端與接收端的波特率必須一致。

2.同步通信

同步通信是一種連續(xù)串行傳送數(shù)據(jù)的通信方式,一次通信只傳送一幀信息。這里的信息幀與異步通信中的字符幀不同,通常含有若干個(gè)數(shù)據(jù)字符,即數(shù)據(jù)塊,它們都是由同步字符、數(shù)據(jù)字符和校驗(yàn)字符三部分組成的。一旦檢測(cè)到同步字符,下面就是按順序傳送的數(shù)據(jù)塊。同步通信的格式如圖4.10所示。

圖4.10同步通信的格式

3)串行通信的制式

串行通信中,信息數(shù)據(jù)在通信線路兩端的通信設(shè)備之間傳遞,按照數(shù)據(jù)傳遞方向和兩端通信設(shè)備所處的工作狀態(tài),可將串行通信分為單工、半雙工和全雙工三種工作制式,如圖4.11所示。

圖4.11串行通信數(shù)據(jù)傳送的制式

4.3.2MCS-51單片機(jī)的串行通信接口及其工作方式

1.串行口的結(jié)構(gòu)與功能

MCS-51單片機(jī)串行口內(nèi)部結(jié)構(gòu)示意圖如圖4.12所示。?MCS-51單片機(jī)串行口主要由兩個(gè)物理上獨(dú)立的串行數(shù)據(jù)緩沖寄存器SBUF、發(fā)送控制器、接收控制器、輸入移位寄存器和輸出控制門組成。兩個(gè)特殊功能寄存器SCON和PCON用來(lái)控制串行口的工作方式和波特率。發(fā)送緩沖寄存器SBUF只能寫,不能讀;接收緩沖寄存器SBUF只能讀,不能寫。兩個(gè)緩沖寄存器共用一個(gè)地址99H,可以用讀/寫指令區(qū)分。圖4.12MCS-51單片機(jī)串行口內(nèi)部結(jié)構(gòu)示意圖

2.與串行口相關(guān)的控制寄存器

MCS-51單片機(jī)中,與串行口工作相關(guān)的特殊功能寄存器有四個(gè),分別為串行口控制寄存器SCON、電源控制寄存器PCON、中斷允許寄存器IE和中斷優(yōu)先級(jí)寄存器IP。其中PCON、IE、IP在前面章節(jié)已經(jīng)介紹過(guò),在此只介紹SCON。

SCON用于串行口的工作方式選擇、接收和發(fā)送控制以及串行口的狀態(tài)標(biāo)志,是一個(gè)可位尋址的8位特殊功能寄存器。其各位的定義如下:

?SM0、SM1:由軟件置位或清0,用于選擇串行口四種工作方式,如表4.4所示。

3.串行口工作方式

1)方式0

方式0下,串行口用作同步移位寄存器,其波特率固定為單片機(jī)振蕩頻率的1/12,串行傳送數(shù)據(jù)8位為一幀,由RXD(P3.0)引腳發(fā)送或接收,低位在前,高位在后。TXD(P3.1)引腳輸出同步移位脈沖信號(hào),可以作為外部擴(kuò)展的移位寄存器的移位時(shí)鐘,因而串行口方式0常用于擴(kuò)展外部并行I/O口。

2)方式1

在方式1下,串行口為10位通用異步通信接口。一幀信息包括1位起始位(0)、8位數(shù)據(jù)位(低位在前)和l位停止位(1)。TXD是發(fā)送端,RXD是接收端。其傳送波特率可變。

3)方式2與方式3

方式2、方式3都是11位異步通信接口,發(fā)送或接收的一幀信息由11位組成,其中1位起始位、9位數(shù)據(jù)位(低位在前)和1位停止位。方式2與方式3僅波特率不同,方式2的波特率為fosc/32(SMOD=1時(shí))或fosc/64(SMOD=0時(shí)),而方式3的波特率由定時(shí)/計(jì)數(shù)器T1及SMOD決定。

4.波特率設(shè)置

串行口的四種工作方式對(duì)應(yīng)著三種波特率模式。

對(duì)于方式0,波特率是固定的,為fosc12。

對(duì)于方式2,波特率由振蕩頻率fosc和SMOD(PCON.7)所決定,其對(duì)應(yīng)公式為

當(dāng)SMOD=0時(shí),波特率為fosc/64;當(dāng)SMOD=1時(shí),波特率為fosc/32。

對(duì)于方式1和方式3,波特率由定時(shí)/計(jì)數(shù)器T1的溢出率和SMOD決定,即由下式確定:

其中,溢出率取決于計(jì)數(shù)速率和定時(shí)器的初值。當(dāng)利用TI作波特率發(fā)生器時(shí),通常選用方式2,即8位自動(dòng)重裝初值模式,其中TL1作計(jì)數(shù)器,TH1存放自動(dòng)重裝的定時(shí)初值。因此,對(duì)T1初始化時(shí),寫入方式控制字TMOD=00100000B。

這樣每過(guò)“256-x”個(gè)機(jī)器周期,定時(shí)器T1就會(huì)產(chǎn)生一次溢出,溢出周期為

溢出率為溢出周期的倒數(shù),因此,波特率的公式還可寫成:

實(shí)際應(yīng)用時(shí),總是先確定波特率,再計(jì)算定時(shí)器T1的定時(shí)初值。根據(jù)上述波特率的公式,得出計(jì)算定時(shí)器方式2的初值x的公式為

4.3.3串行通信應(yīng)用舉例

1.利用串行口擴(kuò)展并行I/O接口

當(dāng)串行口工作于方式0時(shí),是移位寄存器方式,此時(shí)可以利用串行口外接移位寄存器將串行口擴(kuò)展為并行口。

例4.3利用串行口方式0擴(kuò)展I/O接口,接8個(gè)共陰極數(shù)碼管,使片內(nèi)RAM的30H~37H單元的內(nèi)容依次顯示在8個(gè)數(shù)碼管上。

解串行口工作在方式0,在TXD和RXD引腳連接串入并出的移位寄存器74LS164即可實(shí)現(xiàn)題目要求,利用串行口擴(kuò)展并行I/O口電路圖如圖4.13所示。圖4.13利用串行口擴(kuò)展并行I/O口電路圖

2.用串行口作異步通信

串行口工作方式1、2、3都是異步通信,它們之間的區(qū)別在于字符幀格式和通信波特率不同。雙機(jī)異步通信的連接線路圖如圖4.14所示。圖4.14雙機(jī)異步通信的連接線路圖

例4.4甲乙兩機(jī)按工作方式1進(jìn)行串行通信,甲乙雙方的fosc=11.059MHz,波特率取2400,甲機(jī)將片內(nèi)RAM的30H到3FH的內(nèi)容向乙機(jī)發(fā)送,先發(fā)送數(shù)據(jù)塊長(zhǎng)度,再發(fā)送數(shù)據(jù)。甲機(jī)數(shù)據(jù)全部發(fā)送完向乙機(jī)發(fā)送一個(gè)累加校驗(yàn)和。乙機(jī)接收數(shù)據(jù)進(jìn)行累加和校驗(yàn),若與甲機(jī)發(fā)送的一致,則發(fā)送數(shù)據(jù)AAH,表示接收正確;若不一致,則發(fā)送數(shù)據(jù)BBH,甲機(jī)接收到BBH后,重發(fā)數(shù)據(jù)。編寫程序。

解當(dāng)fosc=11.0592MHz,波特率取2400,取SMOD為0,定時(shí)/計(jì)數(shù)器T1工作于方式2時(shí),計(jì)數(shù)初值為0F4H。設(shè)R6作為數(shù)據(jù)長(zhǎng)度計(jì)算器,R5為累加和寄存器。乙機(jī)接收的數(shù)據(jù)存放于片內(nèi)RAM的30H開(kāi)始的單元。

3.多機(jī)通信

MCS-51的方式2和方式3有一個(gè)專門的應(yīng)用領(lǐng)域,即多處理機(jī)通信,它可以方便地應(yīng)用于主從式系統(tǒng)。這種系統(tǒng)采用一臺(tái)主機(jī)和多臺(tái)從機(jī),主機(jī)和各從機(jī)可實(shí)現(xiàn)全雙工通信,其中主機(jī)發(fā)送的信息可被各從機(jī)接收,而各從機(jī)發(fā)送的信息只能由主機(jī)接收,從機(jī)與從機(jī)之間不能互相直接通信。圖4.15給出了多機(jī)通信連接圖。

圖4.15多機(jī)通信連接圖

主、從多機(jī)通信的過(guò)程如下:

(1)使所有的從機(jī)的SM2位置1,以便接收主機(jī)發(fā)來(lái)的地址。

(2)主機(jī)發(fā)出一幀地址信息,其中包括8位需要與之通信的從機(jī)地址,第9位為1。

(3)所有從機(jī)接收到地址幀后,各自將所接收到的地址與本機(jī)地址相比較,對(duì)于地址相同的從機(jī),使SM2位清0以接收主機(jī)隨后發(fā)來(lái)的所有信息;對(duì)于地址不符合的從機(jī),仍保持SM2=1的狀態(tài),對(duì)主機(jī)隨后發(fā)來(lái)的數(shù)據(jù)不予理睬,直至發(fā)送新的地址幀。

(4)主機(jī)給已被尋址的從機(jī)發(fā)送控制指令和數(shù)據(jù)(數(shù)據(jù)幀的第9位為0)。

習(xí)題4

1.什么是中斷?中斷有什么特點(diǎn)?2.MCS-51單片機(jī)有哪幾個(gè)中斷源?如何設(shè)定它們的優(yōu)先級(jí)?3.中斷響應(yīng)有什么條件?4.?dāng)⑹鯟PU響應(yīng)中斷的過(guò)程。5.外部中斷有哪兩種觸發(fā)方式?對(duì)觸發(fā)脈沖或電平有什么要求?如何選擇和設(shè)定?6.MCS-51定時(shí)/計(jì)數(shù)器的定時(shí)功能和計(jì)數(shù)功能有什么不同?分別應(yīng)用在什么場(chǎng)合?

7.MCS-51單片機(jī)的定時(shí)/計(jì)數(shù)器是增1計(jì)數(shù)器還是減1計(jì)數(shù)器?增1和減1計(jì)數(shù)器在計(jì)數(shù)和計(jì)算計(jì)數(shù)初值時(shí)有什么不同?

8.簡(jiǎn)述MCS-51單片機(jī)定時(shí)/計(jì)數(shù)器四種工作方式的特點(diǎn),如何選擇和設(shè)定之?

9.當(dāng)定時(shí)/計(jì)數(shù)器工作于方式1下,晶振頻率為6MHz時(shí),請(qǐng)計(jì)算最短定時(shí)時(shí)間和最長(zhǎng)定時(shí)時(shí)間。

10.使用定時(shí)器T0以工作方式2產(chǎn)生100s定時(shí),在P1.0輸出周期為200s的連續(xù)正方波脈沖。已知晶振頻率fosc=6MHz。

11.用定時(shí)器T1以工作方式2實(shí)現(xiàn)計(jì)數(shù),每計(jì)100次進(jìn)行累加器加1操作。

12.MCS-51單片機(jī)通信有哪幾種方式?各種通信方式有什么異同?

13.什么是串行異步通信?有哪幾種幀格式?

14.定時(shí)器T1作串行口波特率發(fā)生器時(shí),為什么采用方式2?

15.MCS-51型單片機(jī)串行口有哪幾種工作方式?簡(jiǎn)述各種工作方式的特點(diǎn)。

16.利用串行口設(shè)計(jì)四位靜態(tài)LED顯示,畫出電路圖并編寫程序,要求四位LED每隔1s交替顯示“1234”和“5678”。

17.設(shè)計(jì)并編程,完成單片機(jī)的雙機(jī)通信程序,將甲機(jī)片外RAM的1000H~100FH單元中的數(shù)據(jù)塊通過(guò)串行口傳送到乙機(jī)的20H~2FH單元內(nèi)。第5章單片機(jī)系統(tǒng)的擴(kuò)展

及接口技術(shù)5.1系統(tǒng)擴(kuò)展概述5.2存儲(chǔ)器的擴(kuò)展5.3I/O接口技術(shù)概述5.4可編程并行I/O接口芯片8255A5.5A/D轉(zhuǎn)換器接口5.6D/A轉(zhuǎn)換器接口5.7應(yīng)用舉例習(xí)題5

5.1系統(tǒng)擴(kuò)展概述5.1.1最小應(yīng)用系統(tǒng)單片機(jī)系統(tǒng)的擴(kuò)展是以最小系統(tǒng)為基礎(chǔ)的,故應(yīng)首先熟悉最小系統(tǒng)的結(jié)構(gòu)。所謂最小系統(tǒng),也稱為最小應(yīng)用系統(tǒng),是指一個(gè)真正可用的單片機(jī)最小配置系統(tǒng)。實(shí)際上,內(nèi)部帶有程序存儲(chǔ)器的AT89C51或AT89S51等單片機(jī)本身就是一個(gè)最小應(yīng)用系統(tǒng),許多實(shí)際應(yīng)用系統(tǒng)就是用這種成本低和體積小的單片機(jī)結(jié)構(gòu)實(shí)現(xiàn)高性能控制的。對(duì)于內(nèi)部無(wú)程序存儲(chǔ)器的芯片來(lái)說(shuō),則要用外擴(kuò)程序存儲(chǔ)器的方法才能構(gòu)成一個(gè)最小應(yīng)用系統(tǒng)。

圖5.1單片機(jī)最小應(yīng)用系統(tǒng)

該系統(tǒng)的特點(diǎn)如下:

(1)系統(tǒng)有大量的I/O線可供用戶使用:P0、P1、P2、P3四個(gè)口都可以作為I/O口使用。

(2)內(nèi)部存儲(chǔ)器的容量有限,只有128B的RAM和4KB的程序存儲(chǔ)器。

(3)應(yīng)用系統(tǒng)的開(kāi)發(fā)具有特殊性,由于應(yīng)用系統(tǒng)的P0口、P2口在開(kāi)發(fā)時(shí)需要作為數(shù)據(jù)和地址總線,因此這兩個(gè)口上的硬件調(diào)試只能用模擬的方法進(jìn)行。

5.1.2系統(tǒng)擴(kuò)展的內(nèi)容與方法

1.單片機(jī)的三總線結(jié)構(gòu)

當(dāng)單片機(jī)最小系統(tǒng)不能滿足系統(tǒng)功能的要求時(shí),就需要進(jìn)行擴(kuò)展。為了使單片機(jī)能方便地與各種擴(kuò)展芯片連接,常將單片機(jī)的外部連線轉(zhuǎn)換為一般的微型計(jì)算機(jī)三總線結(jié)構(gòu)形式。對(duì)于AT89S51單片機(jī),其三總線結(jié)構(gòu)按照下列方式構(gòu)成。

圖5.2為AT89S51單片機(jī)的三總線結(jié)構(gòu)框圖。這樣一來(lái),擴(kuò)展芯片與主機(jī)的連接方法就同一般三總線結(jié)構(gòu)的微型計(jì)算機(jī)一樣了。對(duì)于MCS-51系列及其兼容單片機(jī)而言,各大公司為其生產(chǎn)了大量的配套外圍芯片,使其系統(tǒng)的擴(kuò)展相當(dāng)方便。

圖5.2AT89S51單片機(jī)的三總線結(jié)構(gòu)框圖

2.系統(tǒng)擴(kuò)展的內(nèi)容與方法

系統(tǒng)擴(kuò)展一般有以下幾方面的內(nèi)容:

(1)外部程序存儲(chǔ)器的擴(kuò)展。

(2)外部數(shù)據(jù)存儲(chǔ)器的擴(kuò)展。

(3)輸入/輸出接口的擴(kuò)展。

(4)管理功能器件(如定時(shí)/計(jì)數(shù)器、鍵盤/顯示器、中斷優(yōu)先級(jí)編碼器等)的擴(kuò)展。

單片機(jī)系統(tǒng)通常可使用下列器件進(jìn)行擴(kuò)展。

(1)使用TTL中、小規(guī)模集成電路進(jìn)行擴(kuò)展。

(2)采用IntelMCS-80/85微處理器外圍芯片來(lái)擴(kuò)展。

(3)采用為MCS-48系列單片機(jī)設(shè)計(jì)的一些外圍芯片來(lái)擴(kuò)展。

(4)采用與MCS-80/85外圍芯片兼容的其他一些通用標(biāo)準(zhǔn)芯片來(lái)擴(kuò)展。

5.1.3常用的擴(kuò)展器件簡(jiǎn)介

1.8D鎖存器74LS373

74LS373是一種帶三態(tài)門的8D鎖存器,采用20腳DIP封裝,其引腳排列如圖5.3所示。

圖5.374LS373的引腳排列圖

2.總線驅(qū)動(dòng)器74LS244、74LS245

總線驅(qū)動(dòng)器74LS244和74LS245常用作三態(tài)數(shù)據(jù)緩沖器,其引腳排列如圖5.4所示。

圖5.4總線驅(qū)動(dòng)器的引腳排列圖

3.3-8譯碼器74LS138

譯碼電路通常采用譯碼芯片,如74LS139(雙2-4譯碼器)、74LS138(3-8譯碼器)及74LS154(4-16譯碼器)等,其中以74LS138最為常用。74LS138的引腳排列如圖5.5所示。圖5.574LS138的引腳排列圖

5.2存儲(chǔ)器的擴(kuò)展

5.2.1存儲(chǔ)器擴(kuò)展概述MCS-51及其兼容單片機(jī)的地址總線寬度為16位,因此最大可尋址的外部存儲(chǔ)器空間為64KB,地址范圍為0000H~0FFFFH。AT89S51單片機(jī)內(nèi)部具有4KB程序存儲(chǔ)器,當(dāng)程序大小超過(guò)4KB時(shí),就需要進(jìn)行程序存儲(chǔ)器的擴(kuò)展。另外,其片內(nèi)數(shù)據(jù)存儲(chǔ)器空間只有128B,如果片內(nèi)的數(shù)據(jù)存儲(chǔ)器不夠用,則需進(jìn)行數(shù)據(jù)存儲(chǔ)器的擴(kuò)展。

存儲(chǔ)器芯片的選擇有兩種方法:線選法和譯碼法。

1.線選法

所謂線選法,就是直接以系統(tǒng)的地址線作為存儲(chǔ)器芯片的片選信號(hào),為此只需把用到的地址線與存儲(chǔ)器芯片的片選端直接相連即可。線選法編址的優(yōu)點(diǎn)是簡(jiǎn)單明了,不需要另外增加譯碼電路,成本低。但其缺點(diǎn)是浪費(fèi)了大量的存儲(chǔ)空間,因此只適用于存儲(chǔ)容量不需要很大的小規(guī)模單片機(jī)系統(tǒng)。

2.譯碼法

所謂譯碼法,就是使用地址譯碼器對(duì)系統(tǒng)的片外地址進(jìn)行譯碼,以其譯碼輸出作為存儲(chǔ)器芯片的片選信號(hào)。這種方法能有效地利用存儲(chǔ)空間,適用于大容量多芯片存儲(chǔ)器的

擴(kuò)展。

譯碼法又有兩種,即完全譯碼法和部分譯碼法。

(1)完全譯碼。地址譯碼器使用了全部地址線,地址與存儲(chǔ)單元一一對(duì)應(yīng),一個(gè)存儲(chǔ)單元只占用一個(gè)地址。

(2)部分譯碼。地址譯碼器僅使用了部分地址線,地址與存儲(chǔ)單元不是一一對(duì)應(yīng)的,而是一個(gè)存儲(chǔ)單元占用多個(gè)地址。如未使用的地址線數(shù)為n,則一個(gè)存儲(chǔ)單元將占用2n個(gè)

地址。

在設(shè)計(jì)存儲(chǔ)器擴(kuò)展連接或分析擴(kuò)展連接電路以確定存儲(chǔ)器芯片的地址范圍時(shí),常采用地址譯碼關(guān)系圖,即一種用簡(jiǎn)單的符號(hào)來(lái)表示全部地址譯碼關(guān)系的示意圖,如圖5.6所示。假定某存儲(chǔ)器芯片進(jìn)行擴(kuò)展連接時(shí)具有如圖5.6所示的譯碼地址線狀態(tài),我們以此為例來(lái)分析其擴(kuò)展的地址范圍。圖5.6地址譯碼關(guān)系圖

3.?dāng)U展存儲(chǔ)器所需芯片數(shù)目的確定

若所選存儲(chǔ)器芯片字長(zhǎng)與單片機(jī)字長(zhǎng)一致,則只需擴(kuò)展容量。所需芯片數(shù)目按下式確定:

若所選存儲(chǔ)器芯片字長(zhǎng)與單片機(jī)字長(zhǎng)不一致,則不僅需進(jìn)行容量擴(kuò)展,還需進(jìn)行字長(zhǎng)擴(kuò)展。所需芯片數(shù)目按下式確定:

5.2.2程序存儲(chǔ)器的擴(kuò)展

在單片機(jī)應(yīng)用系統(tǒng)的擴(kuò)展中,經(jīng)常要進(jìn)行ROM的擴(kuò)展。其擴(kuò)展方法較為簡(jiǎn)單,這是由單片機(jī)優(yōu)良的擴(kuò)展性能決定的。單片機(jī)的地址總線為16位,擴(kuò)展的片外ROM最大容量為64KB,地址為0000H~0FFFFH。擴(kuò)展的片外RAM的最大容量也為64KB,地址也為0000H~0FFFFH。

在單片機(jī)應(yīng)用系統(tǒng)中,片外ROM和RAM共享數(shù)據(jù)總線和地址總線。片外ROM的操作時(shí)序如圖5.7所示。圖5.7片外ROM的操作時(shí)序

單片機(jī)系統(tǒng)片外ROM擴(kuò)展通常使用EPROM芯片。常用的EPROM芯片有2732、2764、27128、27256、27512等。它們的容量和引腳都有所區(qū)別,但用法類似。這幾種EPROM芯片的引腳定義如圖5.8所示。

圖5.8幾種EPROM芯片的引腳定義

例5.1要求用2764芯片來(lái)擴(kuò)展AT89S51的片外程序存儲(chǔ)器空間,采用完全譯碼法,分配的地址范圍為0000H~3FFFH。

解本例采用完全譯碼法,即所有地址線全部連接,每個(gè)單元只占用一個(gè)地址。

①確定片數(shù)。題目要求的地址范圍為16KB,而一片2764的地址容量為8KB,顯然需要兩片2764。

也可按照5.2.1節(jié)所述的公式計(jì)算:

②分配地址范圍。根據(jù)①的分析,兩片2764應(yīng)平均分擔(dān)16KB的地址,每片8KB,故第1片2764所占用的地址范圍為0000H~1FFFH;第2片2764所占用的地址范圍為2000H~3FFFH。

③畫出地址譯碼關(guān)系圖。

第1片:

第2片:

圖中打“×”部分為片內(nèi)譯碼(與單片機(jī)地址線對(duì)應(yīng)相連)。對(duì)于2764來(lái)說(shuō)有13位,其地址變化范圍為從全“0”變到全“1”,其余部分為片外譯碼(由單片機(jī)剩余的高位地址線與譯碼器輸入相連)。

④設(shè)計(jì)片外譯碼電路。

⑤畫出存儲(chǔ)器擴(kuò)展連接圖(采用地址譯碼器的擴(kuò)展存儲(chǔ)器如圖5.9所示)。

圖5.9中,74LS138只用了兩個(gè)譯碼輸出端,未用的輸出端可以保留,以便于今后系統(tǒng)升級(jí)使用。

圖5.9采用地址譯碼器的擴(kuò)展存儲(chǔ)器連接圖

5.2.3數(shù)據(jù)存儲(chǔ)器的擴(kuò)展

CPU對(duì)擴(kuò)展的片外RAM進(jìn)行讀和寫的操作時(shí)序如圖5.10和圖5.11所示。圖5.10片外RAM讀時(shí)序圖5.11片外RAM寫時(shí)序

圖5.12幾種RAM芯片的引腳定義

用6264擴(kuò)展8KB的RAM的電路圖如圖5.13所示。圖5.136264的擴(kuò)展電路

5.3I/O接口技術(shù)概述

5.3.1I/O接口電路的作用一個(gè)完整的計(jì)算機(jī)系統(tǒng)除了CPU、存儲(chǔ)器外,還必須有外部設(shè)備。計(jì)算機(jī)系統(tǒng)中共有兩類數(shù)據(jù)傳送操作:一類是CPU和存儲(chǔ)器之間的數(shù)據(jù)讀/寫操作;另一類則是CPU和外部設(shè)備之間的數(shù)據(jù)輸入/輸出(I/O)操作。CPU和存儲(chǔ)器之間的數(shù)據(jù)讀/寫操作在上文中已述及,這里不再贅述。此處討論CPU和外部設(shè)備之間的I/O操作。

I/O接口的功能主要有以下幾點(diǎn)。

1.對(duì)單片機(jī)輸出的數(shù)據(jù)鎖存

就對(duì)數(shù)據(jù)的處理速度來(lái)講,單片機(jī)往往要比I/O設(shè)備快得多。

2.對(duì)輸入設(shè)備的三態(tài)緩沖

單片機(jī)系統(tǒng)的數(shù)據(jù)總線是雙向總線,是所有I/O設(shè)備分時(shí)復(fù)用的。

3.信號(hào)轉(zhuǎn)換

由于I/O設(shè)備的多樣性,必須利用I/O接口實(shí)現(xiàn)單片機(jī)與I/O設(shè)備間信號(hào)類型(模擬或數(shù)字、電流或電壓)、信號(hào)電平(高或低、正或負(fù))、信號(hào)格式(并行或串行)等的轉(zhuǎn)換。

4.時(shí)序協(xié)調(diào)

單片機(jī)輸入數(shù)據(jù)時(shí),只有在確知輸入設(shè)備已向I/O接口提供了有效的數(shù)據(jù)后,才能進(jìn)行讀操作。

5.3.2接口與端口

“接口”的英文是“Interface”,具有界面、相互聯(lián)系等含義。接口這個(gè)術(shù)語(yǔ)在計(jì)算機(jī)領(lǐng)域中應(yīng)用十分廣泛。本章所述的接口則特指計(jì)算機(jī)與外設(shè)之間在數(shù)據(jù)傳送方面的聯(lián)系。其功能主要通過(guò)電路來(lái)實(shí)現(xiàn),因此也稱為接口電路,簡(jiǎn)稱接口。

了實(shí)現(xiàn)接口電路在數(shù)據(jù)I/O傳送中的界面功能,在接口電路中應(yīng)該包含數(shù)據(jù)寄存器、狀態(tài)寄存器和命令寄存器,以保存輸入/輸出數(shù)據(jù)、狀態(tài)信息和來(lái)自CPU的有關(guān)數(shù)據(jù)傳送的控制命令。由于在數(shù)據(jù)的I/O傳送中,CPU需要對(duì)這些寄存器進(jìn)行讀/寫操作,因此這些寄存器都是可讀/寫的編址寄存器,對(duì)它們像存儲(chǔ)單元一樣進(jìn)行編址。我們通常把接口電路中這些已編址并能進(jìn)行讀或?qū)懖僮鞯募拇嫫鞣Q為端口(Port),簡(jiǎn)稱口。

5.3.3I/O的編址方式

1.獨(dú)立編址方式

所謂獨(dú)立編址,就是把I/O和存儲(chǔ)器分開(kāi)進(jìn)行編址。

獨(dú)立編址方式的優(yōu)點(diǎn)是不占用存儲(chǔ)器的地址空間,不會(huì)減少內(nèi)存的實(shí)際容量;

缺點(diǎn)是需用專門的I/O指令和控制信號(hào),從而增加了系統(tǒng)的軟、硬件復(fù)雜性。

2.統(tǒng)一編址方式

統(tǒng)一編址就是把系統(tǒng)中的I/O和存儲(chǔ)器統(tǒng)一進(jìn)行編址。在這種編址方式中,把端口當(dāng)作存儲(chǔ)單元來(lái)對(duì)待,也就是讓端口占用存儲(chǔ)器單元地址。這種編址又稱為存儲(chǔ)器映像(MemoryMapped)編址方式。采用這種編址方式的計(jì)算機(jī)只有一個(gè)統(tǒng)一的地址空間,這個(gè)空間既供存儲(chǔ)器編址使用,也供I/O編址使用。

統(tǒng)一編址方式的優(yōu)點(diǎn)是不需要專門的I/O指令,可直接使用存儲(chǔ)器指令進(jìn)行I/O操作,不但簡(jiǎn)單方便、功能強(qiáng),而且I/O地址范圍不受限制。

其缺點(diǎn)是端口地址占用了一部分存儲(chǔ)器地址空間,使存儲(chǔ)器的有效容量減少。另外,16位的端口地址會(huì)使地址譯碼變得復(fù)雜,尋址指令長(zhǎng)且執(zhí)行速度慢。

5.3.4I/O的傳送方式

1.無(wú)條件傳送方式

無(wú)條件傳送也稱為同步程序傳送,類似于CPU和存儲(chǔ)器之間的數(shù)據(jù)傳送。無(wú)條件傳送方式適用于以下兩類外設(shè)的輸入/輸出:

(1)外設(shè)的工作速度非常快,足以和CPU同步工作。

(2)具有不變的或變化緩慢的數(shù)據(jù)信號(hào)的外設(shè)。

2.查詢傳送方式

查詢傳送又稱為條件傳送,即數(shù)據(jù)的傳送是有條件的。單片機(jī)在執(zhí)行輸入/輸出指令前,首先要檢測(cè)I/O接口的狀態(tài)及端口的狀態(tài),以了解外設(shè)是否已為數(shù)據(jù)輸入/輸出做好了準(zhǔn)備。只有在確認(rèn)外設(shè)已“準(zhǔn)備就緒”的情況下,CPU才能執(zhí)行數(shù)據(jù)輸入/輸出操作。通常把通過(guò)程序?qū)ν庠O(shè)狀態(tài)的檢測(cè)稱之為“查詢”,所以這種方式又稱為程序查詢方式。查詢傳送方式與前述無(wú)條件的同步傳送不同,是有條件的異步傳送。

3.中斷傳送方式

由于在查詢傳送方式中,CPU主動(dòng)要求傳送數(shù)據(jù),而它又不能控制外設(shè)的工作速度,因此只能用等待的方法來(lái)解決CPU和外設(shè)工作速度的匹配問(wèn)題。而在一般的控制系統(tǒng)中,往往有大量的I/O設(shè)備,有些I/O設(shè)備還要求單片機(jī)為它們進(jìn)行實(shí)時(shí)服務(wù)。如果采用查詢傳送方式,除浪費(fèi)等待時(shí)間外,還很難及時(shí)地響應(yīng)I/O設(shè)備的請(qǐng)求。這時(shí),可以采用中斷傳送方式。

4.直接存儲(chǔ)器存取(DMA)方式

利用中斷傳送方式,雖然可以提高單片機(jī)的工作效率,但它仍需由單片機(jī)通過(guò)執(zhí)行程序來(lái)傳送數(shù)據(jù),并在處理中斷時(shí),還要進(jìn)行“保護(hù)現(xiàn)場(chǎng)”和“恢復(fù)現(xiàn)場(chǎng)”等操作,而這些操作與數(shù)據(jù)傳送沒(méi)有直接的關(guān)系,卻依然要占用一定的時(shí)間,這對(duì)于高速外設(shè)以及成組數(shù)據(jù)交換的場(chǎng)合還是顯得較慢。

5.4可編程并行I/O接口芯片8255A

可供單片機(jī)進(jìn)行I/O擴(kuò)展的接口芯片很多,但按其所能實(shí)現(xiàn)的擴(kuò)展功能又可分為兩類:一類是只能實(shí)現(xiàn)簡(jiǎn)單擴(kuò)展的中、小規(guī)模集成電路芯片;另一類則是能實(shí)現(xiàn)可編程I/O擴(kuò)展的可編程接口芯片。

簡(jiǎn)單I/O擴(kuò)展可利用74LS系列集成電路按照“輸出鎖存,輸入三態(tài)”的原則構(gòu)成,如5.1.3節(jié)中所述的74LS244/245可用于實(shí)現(xiàn)簡(jiǎn)單輸入接口的擴(kuò)展,利用74LS377(具有使能控制端的8D鎖存器)可實(shí)現(xiàn)簡(jiǎn)單輸出接口的擴(kuò)展。本節(jié)將重點(diǎn)講述能實(shí)現(xiàn)可編程I/O擴(kuò)展的并行接口芯片。這些芯片功能較強(qiáng),其最大的特點(diǎn)在于工作方式的確定和改變是用程序?qū)崿F(xiàn)的,因此稱之為可編程接口芯片。

在單片機(jī)I/O擴(kuò)展中常用的可編程接口芯片有可編程通用并行接口芯片8255A、帶RAM和定時(shí)/計(jì)數(shù)器的可編程并行接口芯片8155等。

5.4.18255A的內(nèi)部結(jié)構(gòu)與引腳

1.8255A的內(nèi)部結(jié)構(gòu)

8255A的內(nèi)部結(jié)構(gòu)框圖如圖5.14所示。

圖5.148255A的內(nèi)部結(jié)構(gòu)框圖

8255A由以下幾部分組成:

(1)數(shù)據(jù)端口A、B、C。8255A有三個(gè)8位數(shù)據(jù)端口,即端口A、端口B和端口C。編程人員可以通過(guò)軟件將它們分別作為輸入端口或輸出端口,這三個(gè)端口在不同的工作方式下有不同的功能及特點(diǎn),如表5.1所示。

(2)?A組和B組控制電路。這是兩組根據(jù)CPU的命令字控制8255A工作方式的電路。它們的控制寄存器先接收CPU送出的命令字,然后根據(jù)命令字分別決定兩組的工作方式,也可根據(jù)CPU的命令字對(duì)端口C的每一位實(shí)現(xiàn)按位“復(fù)位”或“置位”。其中:

?A組控制電路控制端口A和端口C的上半部(PC7~PC4)。

?B組控制電路控制端口B和端口C的下半部(PC3~PC0)。

(3)數(shù)據(jù)總線緩沖器。這是一個(gè)三態(tài)雙向的8位數(shù)據(jù)緩沖器,可直接與系統(tǒng)的數(shù)據(jù)總線相連,以實(shí)現(xiàn)CPU和8255A之間的數(shù)據(jù)、控制字和狀態(tài)信息等的傳送。

(4)讀/寫控制邏輯。讀/寫控制邏輯電路負(fù)責(zé)管理8255A的數(shù)據(jù)傳輸過(guò)程。

2.8255A的芯片引腳

8255A的引腳圖如圖5.15所示。除電源(+5V)和地外,其他信號(hào)可以分為兩組:

(1)與外設(shè)相連接的引腳。

?PA7~PA0:A口數(shù)據(jù)線。

?PB7~PB0:B口數(shù)據(jù)線。

?PC7~PC0:C口數(shù)據(jù)線。

5.4.28255A的工作方式

1.方式0(基本輸入/輸出方式)

這種工作方式不需要任何選通信號(hào),A口、B口及C口的高4位和低4位都可以設(shè)定為輸入或輸出。作為輸出口時(shí),輸出的數(shù)據(jù)均被鎖存;作為輸入口時(shí),A口的數(shù)據(jù)能鎖存,B口和C口的數(shù)據(jù)不能鎖存。

2.方式1(選通輸入/輸出方式)

在這種工作方式下,A口可由編程設(shè)定為輸入口或輸出口,C口的三位用來(lái)作為輸入/輸出操作的控制和同步信號(hào);B口同樣可由編程設(shè)定為輸入口或輸出口,C口的另三位用來(lái)作為輸入/輸出操作的控制和同步信號(hào)。在方式1下,A口和B口的輸入/輸出數(shù)據(jù)都能被鎖存。

為了便于闡述問(wèn)題,我們以A口、B口均為輸入或均為輸出加以說(shuō)明。

1)方式1下A口、B口均為輸入

在方式1下,A口和B口均工作在輸入狀態(tài)時(shí),需利用C口的6條線作為控制和狀態(tài)信號(hào)線,方式1下的信號(hào)定義如圖5.16(a)所示。

圖5.16方式1下的信號(hào)定義

圖5.17方式1下的輸入時(shí)序

2)方式1下A口、B口均為輸出

與輸入時(shí)一樣,也要利用C口的6根信號(hào)線,其定義如圖5.16(b)所示。用于輸出的聯(lián)絡(luò)信號(hào)有:

圖5.18方式1下的輸出時(shí)序

3.方式2(雙向數(shù)據(jù)傳送方式)

8255A只有A口具有這種雙向輸入/輸出工作方式,實(shí)際上是在方式1下A口輸入/輸出的結(jié)合。在這種方式下,A口為8位雙向傳輸口,C口的PC7~PC3用來(lái)作為輸入/輸出的同步控制信號(hào)。當(dāng)A口工作于方式2下時(shí),B口和PC2~PC0只能編程為方式0或者方式1工作,而C口剩下的3條線可作為輸入或輸出線使用或用作B口在方式1下工作時(shí)的控制線。

當(dāng)A口工作于方式2時(shí),方式2下的信號(hào)定義如圖5.19所示(其中的控制信號(hào)與前述相同)。圖5.19方式2下的信號(hào)定義

在方式2下,其輸入/輸出的操作時(shí)序如圖5.20所示。圖5.20方式2下的時(shí)序

5.4.38255A的控制字及初始化

1.工作方式控制字

工作方式控制字用于確定各口的工作方式及數(shù)據(jù)的傳送方向,8255A工作方式控制字如圖5.21所示。圖5.218255A工作方式控制字

說(shuō)明如下:

(1)?A口有三種工作方式,而B口只有兩種工作方式。

(2)?A組包括A口與C口的高4位,B組包括B口與C口的低4位。

(3)在方式1或方式2下,將C口定義為輸入或輸出不影響作為聯(lián)絡(luò)線使用的C口各位的功能。

(4)最高位(D7)是標(biāo)志位,其值固定為1,用于表明本字節(jié)是方式控制字。

2.C口置位/復(fù)位控制字

在一些應(yīng)用情況下,C口用來(lái)定義控制信號(hào)和狀態(tài)信號(hào),因此C口的每一位都可以進(jìn)行置位或復(fù)位。對(duì)C口各位的置位或復(fù)位是由置位/復(fù)位控制字進(jìn)行控制的。C口置位/復(fù)位控制字如圖5.22所示。圖5.22C口置位/復(fù)位控制字

3.8255A的初始化編程

對(duì)任何可編程的接口芯片,在使用前都必須對(duì)其進(jìn)行初始化。8255A的初始化就是向控制字寄存器寫入工作方式控制字和C口置位/復(fù)位控制字。這兩個(gè)控制字可按同一個(gè)地址寫入且不受先后順序限制。由于兩個(gè)控制字標(biāo)志位的狀態(tài)不同,因此8255A能加以區(qū)分。

5.4.48255A與系統(tǒng)的連接方法

由于8255A是Intel公司專為其主機(jī)配套設(shè)計(jì)制造的標(biāo)準(zhǔn)化外圍接口芯片,因此,它與MCS-51及其兼容單片機(jī)的連接比較簡(jiǎn)單方便。

單片機(jī)擴(kuò)展的I/O接口均與片外RAM統(tǒng)一編址。由于單片機(jī)系統(tǒng)片外RAM的實(shí)際容量一般均不太大,遠(yuǎn)遠(yuǎn)達(dá)不到64KB的范圍,因此I/O接口芯片大多采用部分譯碼法或線選法。這種方法雖然要浪費(fèi)大量的地址號(hào),但譯碼電路比較簡(jiǎn)單。8255A與單片機(jī)的連接如圖5.23所示。圖5.238255A與單片機(jī)的連接

5.5A/D轉(zhuǎn)換器接口

5.5.1A/D轉(zhuǎn)換器概述A/D轉(zhuǎn)換器用以實(shí)現(xiàn)模擬量向數(shù)字量的轉(zhuǎn)換。在設(shè)計(jì)A/D轉(zhuǎn)換器與單片機(jī)接口之前,往往要根據(jù)A/D轉(zhuǎn)換器的原理及技術(shù)指標(biāo)選擇A/D轉(zhuǎn)換器。常用的A/D轉(zhuǎn)換器按轉(zhuǎn)換原理有計(jì)數(shù)式、雙積分式、逐次逼近式及并行式等。

例如,當(dāng)滿量程電壓為5V時(shí),采用10位A/D轉(zhuǎn)換器的量化間隔、絕對(duì)量化誤差、相對(duì)量化誤差分別為

5.5.2ADC0809及其與系統(tǒng)的連接

A/D轉(zhuǎn)換器(ADC)與單片機(jī)接口具有硬、軟件相依性。一般來(lái)說(shuō),A/D轉(zhuǎn)換器與單片機(jī)的接口主要考慮的是數(shù)字量輸出線的連接、ADC啟動(dòng)方式、轉(zhuǎn)換結(jié)束信號(hào)處理方法以及時(shí)鐘的連接等。

A/D轉(zhuǎn)換器數(shù)字量輸出線與單片機(jī)的連接方法與其內(nèi)部結(jié)構(gòu)有關(guān)。對(duì)于內(nèi)部帶有三態(tài)鎖存數(shù)據(jù)輸出緩沖器的ADC(如ADC0809、AD574等),可直接與單片機(jī)相連。對(duì)于內(nèi)部不帶鎖存器的ADC,一般通過(guò)鎖存器或并行I/O接口與單片機(jī)相連。

A/D轉(zhuǎn)換器的另一個(gè)重要連接信號(hào)是時(shí)鐘,其頻率是決定芯片轉(zhuǎn)換速度的基準(zhǔn)。整個(gè)A/D轉(zhuǎn)換過(guò)程都是在時(shí)鐘的作用下完成的。A/D轉(zhuǎn)換時(shí)鐘的提供方法有兩種:一種是由芯片內(nèi)部提供(如AD574),一般不允許外加電路;另一種是由外部提供,有的用單獨(dú)的振蕩電路產(chǎn)生,更多的則把單片機(jī)輸出時(shí)鐘經(jīng)分頻后,送到A/D轉(zhuǎn)換器的相應(yīng)時(shí)鐘端。這里只介紹ADC0809與單片機(jī)的接口方法。

1.ADC0809芯片簡(jiǎn)介

ADC0809是8位逐次比較式A/D轉(zhuǎn)換芯片,具有8路模擬量輸入通道,ADC0809芯片的內(nèi)部邏輯結(jié)構(gòu)與引腳如圖5.24所示。圖5.24ADC0809芯片的內(nèi)部邏輯結(jié)構(gòu)與引腳

圖5.24中,8路模擬開(kāi)關(guān)可選通8個(gè)模擬量,允許8路模擬量分時(shí)輸入,并共用一個(gè)A/D轉(zhuǎn)換器進(jìn)行轉(zhuǎn)換。地址鎖存與譯碼電路完成對(duì)A、B、C三個(gè)地址位進(jìn)行鎖存和譯碼的功能,其譯碼輸出用于通道選擇,如表5.3所示。8位A/D轉(zhuǎn)換器為逐次逼近式,由控制與時(shí)序電路、逐次逼近寄存器、樹狀開(kāi)關(guān)及256個(gè)電阻梯形網(wǎng)絡(luò)等組成。三態(tài)輸出鎖存器用于存放和輸出轉(zhuǎn)換得到的數(shù)字量。

ADC0809芯片為28引腳雙列直插式封裝,其引腳簡(jiǎn)介如下:

?IN7~I(xiàn)N0:模擬量輸入通道。ADC0809對(duì)輸入模擬量的主要要求有:信號(hào)單極性、電壓范圍為0~5V。如輸入信號(hào)幅度過(guò)小還需進(jìn)行放大。另外,輸入模擬量在A/D轉(zhuǎn)換過(guò)程中其值不應(yīng)變化,如輸入模擬量變化速度較快,則在輸入前應(yīng)增加采樣保持器電路。

?ADDA、ADDB、ADDC:模擬通道地址線。這三根線用于對(duì)模擬通道進(jìn)行選擇,如表5.3所示。ADDA為低地址,ADDC為高地址。

?

ALE:地址鎖存信號(hào)。對(duì)應(yīng)于ALE上跳沿時(shí),ADDA、ADDB、ADDC地址狀態(tài)送入地址鎖存器中。

?START:轉(zhuǎn)換啟動(dòng)信號(hào)。在START信號(hào)上跳沿時(shí),所有內(nèi)部寄存器清0;在START下跳沿時(shí),開(kāi)始進(jìn)行A/D轉(zhuǎn)換。在A/D轉(zhuǎn)換期間,START信號(hào)應(yīng)保持低電平。

?D7~D0:數(shù)據(jù)輸出線。該數(shù)據(jù)輸出線為三態(tài)緩沖形式,可以與單片機(jī)的數(shù)據(jù)總線直接相連。

?OE:輸出允許信號(hào)。它用于控制三態(tài)輸出鎖存器向單片機(jī)輸出轉(zhuǎn)換后的數(shù)據(jù)。OE=0時(shí)輸出數(shù)據(jù)線呈高阻狀態(tài);OE=1時(shí)允許輸出。

?CLK:時(shí)鐘信號(hào)。ADC0809的內(nèi)部沒(méi)有時(shí)鐘電路,所需時(shí)鐘信號(hào)由外界提供,通常使用500kHz的時(shí)鐘信號(hào)。

?EOC:轉(zhuǎn)換結(jié)束狀態(tài)信號(hào)。當(dāng)EOC=0時(shí),表示正在進(jìn)行轉(zhuǎn)換;當(dāng)EOC=1時(shí),表示轉(zhuǎn)換結(jié)束。實(shí)際使用中,該信號(hào)既可作為查詢的狀態(tài)標(biāo)志,也可作為中斷請(qǐng)求信號(hào)。

?VCC:+5V電源。

?VREF:參考電壓。參考電壓作為逐次逼近的基準(zhǔn),并用來(lái)與輸入的模擬信號(hào)進(jìn)行比較。其典型值為+5V(VREF(+)=+5V、VREF(-)=0V)。

2.ADC0809與單片機(jī)的接口

電路的連接主要考慮兩個(gè)問(wèn)題:一是8路模擬信號(hào)的通道選擇;二是A/D轉(zhuǎn)換完成后轉(zhuǎn)換數(shù)據(jù)的傳送。典型的ADC0809與單片機(jī)的連接如圖5.25所示。

圖5.25ADC0809與單片機(jī)的連接

1)?8路模擬通道的選擇

圖5.25中,ADC0809的轉(zhuǎn)換時(shí)鐘由單片機(jī)的ALE提供。因ADC0809的典型轉(zhuǎn)換頻率在640kHz以下,ALE信號(hào)頻率與晶振頻率有關(guān),如果晶振頻率為12MHz,則ALE的頻率為2MHz,所以ADC0809的時(shí)鐘端CLK與單片機(jī)的ALE相連時(shí),要考慮分頻。

從圖5.25中可以看到,ALE信號(hào)與START(ST)信號(hào)連在一起,這樣連接可以在信號(hào)的前沿寫入地址信號(hào),在其后沿便啟動(dòng)轉(zhuǎn)換。ADC0809相關(guān)信號(hào)時(shí)序如圖5.26所示。圖5.26ADC0809相關(guān)信號(hào)時(shí)序

2)轉(zhuǎn)換數(shù)據(jù)的傳送

A/D轉(zhuǎn)換后得到的數(shù)據(jù)為數(shù)字量,這些數(shù)據(jù)應(yīng)傳送給單片機(jī)進(jìn)行處理。數(shù)據(jù)傳送的關(guān)鍵問(wèn)題是如何確認(rèn)A/D轉(zhuǎn)換的完成,因?yàn)橹挥写_認(rèn)數(shù)據(jù)轉(zhuǎn)換完成后,才能進(jìn)行傳送。通常可采用下述三種方式。

(1)定時(shí)傳送方式。

(2)查詢方式。

(3)中斷方式。

這里需要說(shuō)明的是,ADC0809的三個(gè)地址端ADDA、ADDB、ADDC既可以如前所述與地址線相連,也可與數(shù)據(jù)線相連,例如與D0~D2相連,ADC0809與系統(tǒng)的另一種連接方法如圖5.27所示。這時(shí)啟動(dòng)A/D轉(zhuǎn)換的指令與上述類似,只不過(guò)A的內(nèi)容不能為任意值,而必須和所選輸入通道號(hào)IN0~I(xiàn)N7相一致。

圖5.27ADC0809與系統(tǒng)的另一種連接方法

5.6D/A轉(zhuǎn)換器接口

5.6.1D/A轉(zhuǎn)換器的技術(shù)指標(biāo)D/A轉(zhuǎn)換器(DAC)是單片機(jī)應(yīng)用系統(tǒng)與外部模擬對(duì)象之間的一種重要控制接口。單片機(jī)輸出的數(shù)字信號(hào)必須經(jīng)D/A轉(zhuǎn)換器,變換為模擬信號(hào)后,才能對(duì)控制對(duì)象進(jìn)行控制。這就涉及D/A轉(zhuǎn)換接口的問(wèn)題。

1.分辨率

分辨率是指輸入數(shù)字量的最低有效位(LSB)發(fā)生變化時(shí),所對(duì)應(yīng)的輸出模擬量(常為電壓)的變化量。分辨率是D/A轉(zhuǎn)換器對(duì)輸入量變化敏感程度的描述,與輸入數(shù)字量的位數(shù)有關(guān)。對(duì)于線性D/A轉(zhuǎn)換器來(lái)說(shuō),如果其輸入數(shù)字量的位數(shù)為n,則其分辨率Δ可表示為

2.線性度

線性度(也稱非線性誤差)是實(shí)際轉(zhuǎn)換特性曲線與理想的直線特性之間的最大偏差。通常以相對(duì)于滿刻度的百分?jǐn)?shù)來(lái)表示。如某D/A轉(zhuǎn)換器的線性度為±1%,說(shuō)明其實(shí)際輸出值與理論值之差在滿刻度的±1%以內(nèi)。

3.絕對(duì)精度與相對(duì)精度

絕對(duì)精度(簡(jiǎn)稱精度)是指在整個(gè)刻度范圍內(nèi),任一輸入數(shù)碼所對(duì)應(yīng)的模擬量實(shí)際的輸出值與理論值之間的最大誤差。絕對(duì)精度是由DAC的增益誤差(當(dāng)輸入數(shù)碼為全1時(shí),實(shí)際輸出值與理想輸出值之差)、零點(diǎn)誤差(數(shù)碼輸入為全0時(shí)DAC的非零輸出值)、非線性誤差和噪聲等引起的。絕對(duì)精度(即最大誤差)應(yīng)小于1個(gè)LSB。

4.建立時(shí)間

建立時(shí)間是指輸入的數(shù)字量發(fā)生滿刻度變化時(shí),輸出模擬信號(hào)達(dá)到滿刻度值的±1/2個(gè)LSB所需的時(shí)間。這是描述DAC轉(zhuǎn)換速率的一個(gè)動(dòng)態(tài)指標(biāo)。電流輸出型DAC的建立時(shí)間短,電壓輸出型DAC的建立時(shí)間主要決定于運(yùn)算放大器的響應(yīng)時(shí)間。根據(jù)建立時(shí)間的長(zhǎng)短,可以將DAC分成超高速(小于1μs)、高速(10~1μs)、中速(100~10μs)和低速(大于等于100μs)等。

5.6.2DAC0832及其與系統(tǒng)的連接

1.DAC0832芯片簡(jiǎn)介

DAC0832是一個(gè)典型的8位D/A轉(zhuǎn)換器,采用單電源供電,電源電壓在+5~+15V范圍內(nèi)均可正常工作?;鶞?zhǔn)電壓的范圍為±10V。電流輸出時(shí)其電流建立時(shí)間約為1μs,當(dāng)需要轉(zhuǎn)換為電壓輸出時(shí),可外接運(yùn)算放大器。CMOS工藝為低功耗設(shè)計(jì),功耗約為20mW。

DAC0832由一個(gè)8位輸入寄存器、一個(gè)8位DAC寄存器和一個(gè)8位D/A轉(zhuǎn)換器及邏輯控制電路組成。DAC0832內(nèi)部結(jié)構(gòu)框圖如圖5.28所示。

圖5.28DAC0832內(nèi)部結(jié)構(gòu)框圖

DAC0832為電流輸出形式,其兩個(gè)輸出端電流的關(guān)系為

IOUT1?+?IOUT2?=?常數(shù)

為了得到電壓輸出,可在電流輸出端接一個(gè)運(yùn)算放大器,如圖5.29所示。在DAC0832內(nèi)部已有反饋電阻RFB,其阻值為15kΩ。若需加大阻值,則可外接反饋電阻。

DAC0832為20腳雙列直插封裝,其引腳排列如圖5.30所示。

圖5.29DAC0832電壓輸出電路圖5.30DAC0832引腳排列

2.DAC0832與單片機(jī)的接口

DAC0832可以通過(guò)三種方式與單片機(jī)相連,即直通方式、單緩沖方式及雙緩沖方式。

1)直通方式

2)單緩沖方式

所謂單緩沖方式,就是使DAC0832的兩個(gè)寄存器中有一個(gè)處于直通方式,而另一個(gè)處于受控的鎖存方式,當(dāng)然也可以使兩個(gè)寄存器同時(shí)選通及鎖存。因此,單緩沖方式有三種不同的連接方法,DAC0832的三種單緩沖連接方法如圖5.31所示。圖5.31DAC0832的三種單緩沖連接方法

3)雙緩沖方式

所謂雙緩沖方式,就是把DAC0832的兩個(gè)鎖存器都接成受控鎖存方式。由于芯片中有兩個(gè)數(shù)據(jù)寄存器,這樣就可以將8位輸入數(shù)據(jù)先保存在“輸入寄存器”中,當(dāng)需要D/A轉(zhuǎn)換時(shí),再將此數(shù)據(jù)從輸入寄存器送至“DAC寄存器”中鎖存,并進(jìn)行D/A轉(zhuǎn)換輸出。采用這種方式,可以克服在輸入數(shù)據(jù)更新期間輸出模擬量隨之出現(xiàn)的不穩(wěn)定。這時(shí),可以在上一次模擬量輸出的同時(shí),將下一次要轉(zhuǎn)換的數(shù)據(jù)事先存入“輸入寄存器”中,一方面克服了不穩(wěn)定現(xiàn)象,另一方面提高了數(shù)據(jù)的轉(zhuǎn)換速度。用這種方式還可以同時(shí)更新多個(gè)D/A轉(zhuǎn)換器的輸出。DAC0832的雙緩沖連接方式如圖5.32所示,圖中給出了采用線選法,利用兩位地址碼進(jìn)行兩次輸出操作完成數(shù)據(jù)的傳送及轉(zhuǎn)換的雙緩沖方式。

圖5.32DAC0832的雙緩沖連接方式

由于兩個(gè)鎖存器分別占據(jù)兩個(gè)地址,因此在程序中需要使用兩條傳送指令,才能完成一個(gè)數(shù)字量的模擬轉(zhuǎn)換。假設(shè)輸入寄存器地址為0FEFFH,DAC寄存器地址為0FDFFH,則完成一次D/A轉(zhuǎn)換的程序段可如下編制:

5.7應(yīng)用舉例5.7.18255A應(yīng)用舉例8255A在單片機(jī)控制系統(tǒng)中得到了廣泛的應(yīng)用,現(xiàn)舉例加以說(shuō)明。

例5.2要求通過(guò)8255A的PC5端向外輸出一個(gè)正脈沖信號(hào),已知8255A的C口和控制口的地址分別為0002H和0003H。解若要從PC5端輸出一個(gè)正脈沖信號(hào),可通過(guò)對(duì)PC5位的置位和復(fù)位控制來(lái)實(shí)現(xiàn)。由于每送一個(gè)控制字,只能對(duì)一位作一次置位或復(fù)位操作,因而產(chǎn)生一個(gè)正脈沖要對(duì)PC5位先送置位控制字,經(jīng)過(guò)一定延時(shí)后(延時(shí)時(shí)間視脈寬而定),再送復(fù)位控制字即能實(shí)現(xiàn)。

例5.3完成8255A作為連接打印機(jī)的接口電路的程序編制。

解8255A連接打印機(jī)的接口電路如圖5.33所示。圖5.338255A連接打印機(jī)的接口電路

5.7.2A/D應(yīng)用舉例

例5.4設(shè)有一個(gè)8路模擬量輸入的巡回檢測(cè)系統(tǒng),使用中斷方式采集數(shù)據(jù),每次中斷依次采集8路輸入,并將轉(zhuǎn)換結(jié)果對(duì)應(yīng)存放在外部RAM的30H~37H單元中。采集完一遍以后即停止采集。

解硬件電路可采用前述圖5.25,其數(shù)據(jù)采樣的初始化程序和中斷服務(wù)程序如下。

5.7.3D/A應(yīng)用舉例

D/A轉(zhuǎn)換器可以應(yīng)用在許多場(chǎng)合,例如控制伺服電機(jī)或其他執(zhí)行機(jī)構(gòu),也可以很方便地產(chǎn)生各種輸出波形,如矩形波、三角波、階梯波、鋸齒波、梯形波、正弦波及余弦波等。這里介紹利用D/A轉(zhuǎn)換器來(lái)產(chǎn)生波形的方法。

例5.5產(chǎn)生階梯波。

解階梯波是在一定的時(shí)間范圍內(nèi)每隔一段時(shí)間,輸出幅度遞增一個(gè)恒定值的波形。如每隔1ms輸出幅度增長(zhǎng)一個(gè)定值,經(jīng)10ms后重新循環(huán)。用DAC0832在單緩沖方式下可以輸出這樣的波形(單緩沖方式的連接方法可參考前述圖5.31),這里假定DAC0832地址為7FFFH。系統(tǒng)中所需的1ms延時(shí)可以通過(guò)延時(shí)程序獲得,也可以通過(guò)單片機(jī)內(nèi)的定時(shí)器來(lái)定時(shí)。

例5.6同步波形輸出——同時(shí)輸出X和Y波形到示波器。

解在應(yīng)用系統(tǒng)中,如果需要同時(shí)輸出幾路模擬信號(hào),這時(shí)D/A轉(zhuǎn)換器就必須采用雙緩沖工作方式,兩路DAC0832與單片機(jī)的接口電路如圖5.34所示。

圖5.34兩路DAC0832與單片機(jī)的接口電路

上述例子僅說(shuō)明了單片機(jī)如何通過(guò)D/A轉(zhuǎn)換器產(chǎn)生模擬波形。用這種方法產(chǎn)生信號(hào)波形時(shí),由于受單片機(jī)本身工作速度的限制(12MHz晶振頻率時(shí),機(jī)器周期為1μs),輸出頻率不可能太高。另一方面,為了有一定的顯示質(zhì)量,在信號(hào)的一個(gè)周期內(nèi)取樣點(diǎn)也不可能太少,這就進(jìn)一步限制了信號(hào)的頻率。但是,用單片機(jī)產(chǎn)生波形比較靈活,特別是可以產(chǎn)生各種不規(guī)則的波形,因此在一些要求不高的場(chǎng)合還存在著一定的應(yīng)用。

5.7.4集成溫度傳感器及其應(yīng)用舉例

1.DS18B20簡(jiǎn)介

DS18B20是美國(guó)Dallas公司生產(chǎn)的最新的單線數(shù)字溫度傳感器,支持“1-Wire”接口。1-Wire是一種簡(jiǎn)單的信號(hào)交換方式,它是指在主機(jī)與外圍器件之間通過(guò)一條線路進(jìn)行雙向通信。多個(gè)1-Wire總線器件可以直接掛接在一條總線上,使用戶可輕松地組建傳感器網(wǎng)絡(luò)?,F(xiàn)場(chǎng)溫度直接以1-Wire的數(shù)字方式傳輸,大大提高了系統(tǒng)的抗干擾性,適合于惡劣環(huán)境的現(xiàn)場(chǎng)溫度測(cè)量。

1)?DS18B20的主要特性

DS18B20的主要特性如下所述:

(1)單線接口,即僅需一根接口線與單片機(jī)連接。

(2)每個(gè)器件的內(nèi)部存儲(chǔ)器中存儲(chǔ)有該器件唯一的64位序列號(hào)。

(3)無(wú)需外圍元件即可實(shí)現(xiàn)溫度測(cè)量。

(4)可通過(guò)數(shù)據(jù)線供電,工作電壓范圍為3.0~5.5V。

(5)測(cè)溫范圍為-55℃~+125℃,在-10℃~+85℃范圍內(nèi)精度為±0.5℃。

(6)用戶可以選擇9~12位的分辨率,其中9位分辨率轉(zhuǎn)換時(shí)間為93.75ms,12位分辨率轉(zhuǎn)換時(shí)間為750ms。

(7)用戶可自行設(shè)定溫度報(bào)警的上、下限,其值在斷電后仍可保存,利用報(bào)警搜索命令可識(shí)別超限報(bào)警的器件。

2)?DS18B20的引腳及功能

DS18B20的引腳排列如圖5.35所示,各引腳功能如下:

?GND:地。

?DQ:數(shù)據(jù)輸入/輸出引腳,為開(kāi)漏單總線接口引腳,當(dāng)被用在寄生電源下時(shí),也可以向器件提供電源。

?VDD:可選擇的電源引腳。當(dāng)工作于寄生電源時(shí),此引腳必須接地。圖5.35DS18B20的引腳排列

3)?DS18B20的工作原理

DS18B20的內(nèi)部結(jié)構(gòu)框圖如圖5.36所示。圖5.36DS18B20的內(nèi)部結(jié)構(gòu)框圖

DS18B20高速緩沖寄存器包含了9個(gè)連續(xù)字節(jié),DS18B20內(nèi)部E2PROM與高速寄存器的映射關(guān)系如圖5.37所示。第1字節(jié)的內(nèi)容是溫度的低8位;第2字節(jié)是溫度的高8位;第3、4字節(jié)是溫度設(shè)定上限TH和下限TL的易失性拷貝,第5字節(jié)是配置寄存器的易失性拷貝,這3個(gè)字節(jié)的內(nèi)容在每次上電復(fù)位時(shí)被刷新;第6、7、8字節(jié)用于內(nèi)部計(jì)算;第9字節(jié)是冗余校驗(yàn)字節(jié)。

圖5.37DS18B20內(nèi)部E2PROM與高速寄存器的映射關(guān)系

配置寄存器的結(jié)構(gòu)框圖如圖5.38所示。低5位固定為1,TM是測(cè)試模式位,用于設(shè)置DS18B20在工作模式還是測(cè)試模式,該位出廠時(shí)被設(shè)置為0,用戶一般不要去改動(dòng)。R1和R0用來(lái)設(shè)置分辨率,如表5.4所示。圖5.38配置寄存器的結(jié)構(gòu)框圖

DS18B20中的溫度傳感器可完成對(duì)溫度的測(cè)量,以12位轉(zhuǎn)換為例:用16位符號(hào)擴(kuò)展的二進(jìn)制補(bǔ)碼形式提供,以0.0625℃/LSB形式表達(dá),DS18B20溫度傳感器的數(shù)據(jù)格式如圖5.39所示。圖5.39DS18B20溫度傳感器的數(shù)據(jù)格式

2.DS18B20的應(yīng)用示例

DS18B20的1-Wire總線可以很方便地與單片機(jī)進(jìn)行連接,只需將其DQ端與單片機(jī)的一條I/O線相接即可,且多個(gè)DS18B20可以同時(shí)掛接在同一根總線上,多個(gè)DS18B20與單片機(jī)的連接如圖5.40所示。

圖5.40多個(gè)DS18B20與單片機(jī)的連接

三片DS18B20都接到單片機(jī)的一個(gè)I/O口時(shí),注意上拉電阻不能太大,否則DS18B20可能工作不正常。當(dāng)DS18B20工作于寄生供電方式時(shí),為保證提供足夠的工作電流,可用一個(gè)MOSFET管來(lái)完成對(duì)總線的上拉,DS18B20溫度轉(zhuǎn)換期間的強(qiáng)上拉供電如圖5.41所示。圖5.41DS18B20溫度轉(zhuǎn)換期間的強(qiáng)上拉供電

5.7.5液晶顯示模塊及其應(yīng)用舉例

液晶顯示器(LCD)是近年來(lái)飛速發(fā)展的一種顯示器件。LCD通常都是作為一個(gè)整體模塊用于設(shè)備中的,這是因?yàn)橐壕骷奶厥庑砸约斑B接和裝配需要專用的工具,且操作技術(shù)的難度較大等原因。生產(chǎn)廠家將液晶顯示屏幕、連接件、驅(qū)動(dòng)電路的PCB電路板、背光燈(視型號(hào)而定)等元器件封裝在一起,只留有背光燈插頭(視型號(hào)而定)和驅(qū)動(dòng)信號(hào)輸入插座,這種組件被稱為液晶顯示模塊。

1.LCD1602簡(jiǎn)介

LCD1602是一種字符式液晶顯示模塊,它可以顯示兩行,每行16個(gè)字符,相當(dāng)于32個(gè)LED數(shù)碼管,而且比數(shù)碼管顯示的信息還要豐富。LCD1602采用單一?+5V電源供電,外圍電路配置簡(jiǎn)單,價(jià)格便宜,具有較高的性價(jià)比。LCD1602的引腳排列如圖5.42所示圖5.42LCD1602的引腳排列

LCD1602有11個(gè)控制指令,其功能如表5.5所示。

其中,常用的命令格式及其功能簡(jiǎn)介如下。

(3)光標(biāo)、畫面位移:

(4)功能設(shè)置:

2.LCD1602應(yīng)用示例

LCD1602與單片機(jī)連接的典型電路如圖5.43所示。圖5.43LCD1602與單片機(jī)連接的典型電路

習(xí)題5

1.什么是單片機(jī)最小應(yīng)用系統(tǒng)?2.MCS-51系列單片機(jī)如何訪問(wèn)外部ROM及外部RAM?3.試說(shuō)明存儲(chǔ)器的容量與芯片的地址線和數(shù)據(jù)線之間的關(guān)系。4.當(dāng)單片機(jī)應(yīng)用系統(tǒng)中數(shù)據(jù)存儲(chǔ)器RAM地址和程序存儲(chǔ)器EPROM地址重疊時(shí),是否會(huì)發(fā)生數(shù)據(jù)沖突?為什么?5.在AT89S51單片機(jī)應(yīng)用系統(tǒng)中,P0口和P2口是否可以直接作為輸入/輸出而連接開(kāi)關(guān)、指示燈等外圍設(shè)備?為什么?

6.試用Intel2764(8K×8bit)和6116(2K×8bit)為AT89S51單片機(jī)設(shè)計(jì)一個(gè)外部存儲(chǔ)器系統(tǒng),它具有8KB的程序存儲(chǔ)器(地址為0000H~1FFFH)和8KB的數(shù)據(jù)存儲(chǔ)器(地址為0000H~1FFFH)。畫出該存儲(chǔ)器系統(tǒng)的硬件連接圖。

7.采用線選法在AT89S51單片機(jī)上擴(kuò)展兩片2764EPROM芯片,試連接三總線及根據(jù)連線確定兩芯片的地址空間。

8.采用線選法在AT89S51單片機(jī)上擴(kuò)展兩片6264RAM芯片,試連接三總線及根據(jù)連線確定兩芯片的地址空間。

9.?dāng)?shù)據(jù)存儲(chǔ)器的擴(kuò)展與程序存儲(chǔ)器的擴(kuò)展有哪些主要區(qū)別?

10.I/O編址方式有哪幾種?各有什么優(yōu)缺點(diǎn)?

11.I/O接口和I/O端口有什么區(qū)別?I/O接口的功能是什么?

12.I/O數(shù)據(jù)傳送有哪幾種傳送方式?分別在哪些場(chǎng)合下使用?

13.簡(jiǎn)要說(shuō)明單片機(jī)I/O口擴(kuò)展的特點(diǎn)及應(yīng)注意的事項(xiàng)。

14.8255A共有幾種工作方式?怎樣進(jìn)行選擇?各種方式分別適用于什么場(chǎng)合?

15.8255A的方式控制字和C口按位置位/復(fù)位控制字都可以寫入8255A的同一控制寄存器。請(qǐng)問(wèn)8255A是如何區(qū)分這兩個(gè)控制字的?

16.試編程對(duì)8255A進(jìn)行初始化。設(shè)A口為選通輸出,B口為基本輸入,C口作為控制聯(lián)絡(luò)口,并啟動(dòng)定時(shí)/計(jì)數(shù)器按方式1工作,定時(shí)時(shí)間為10ms,定時(shí)器計(jì)數(shù)脈沖頻率為單片機(jī)時(shí)鐘頻率的24分頻,fosc=12MHz。

17.現(xiàn)用AT89S51單片機(jī)擴(kuò)展一片8255A,若把8255A的B口用做輸入,B口的每一位接一個(gè)開(kāi)關(guān),A口用作輸出,A口每一位接一個(gè)發(fā)光二極管,請(qǐng)畫出電路原理圖,并編寫出B口某一位接高電平時(shí),A口相應(yīng)位發(fā)光二極管被點(diǎn)亮的程序。

18.單片機(jī)系統(tǒng)硬件連接如圖5.44所示,系統(tǒng)采用12MHz的晶體振蕩器,擴(kuò)展了一片數(shù)據(jù)存儲(chǔ)器6264和一片8255A,并通過(guò)8255A的PA端口驅(qū)動(dòng)8個(gè)發(fā)光二極管,各發(fā)光二極管的陰極一起連接到地(GND)。要求:

(1)寫出數(shù)據(jù)存儲(chǔ)器6264的地址范圍。

(2)寫出8255A各端口地址。

(3)編程實(shí)現(xiàn)連接在8255A的PA端口上的發(fā)光二極管循環(huán)閃亮的控制程序。要求循環(huán)閃亮的時(shí)間間隔為50ms,采用定時(shí)中斷的方式來(lái)實(shí)現(xiàn)。

圖5.44第18題圖

19.用8255A擴(kuò)展電路設(shè)計(jì)四路搶答器。要求A口輸入四路搶答信號(hào),B口輸出四路搶答指示(用LED發(fā)光二極管)和聲音提示。

20.編寫程序,采用8255A的C口按位置位/復(fù)位控制字,將PC7置0,PC4置1(已知8255A各端口的地址為7FFCH~7FFFH)。

21.在一個(gè)AT89S51應(yīng)用系統(tǒng)

溫馨提示

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

評(píng)論

0/150

提交評(píng)論