《單片機原理與應用》課件1第7章_第1頁
《單片機原理與應用》課件1第7章_第2頁
《單片機原理與應用》課件1第7章_第3頁
《單片機原理與應用》課件1第7章_第4頁
《單片機原理與應用》課件1第7章_第5頁
已閱讀5頁,還剩128頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第七章單片機串行口及應用7.1串行口的結構與工作原理

7.2工作方式與波特率的設置

7.3I2C總線及應用7.4串行口應用舉例7.5RS-232C與USB簡介

思考練習題

7.1串行口的結構與工作原理

80C51單片機中的串行口是一個全雙工通信接口,能同時進行發(fā)送和接收。它可以作UART(通用異步接收和發(fā)送器)用,也可以作同步移位寄存器用。其幀格式和波特率可通過軟件編程設置,在使用上非常方便靈活。

7.1.1串行口的結構

80C51單片機的串行口主要由兩個數(shù)據(jù)緩沖器、一個輸入移位寄存器、一個串行控制寄存器SCON和一個波特率發(fā)生器T1等組成,其結構見圖7-1。圖7-1串行口結構串行口數(shù)據(jù)緩沖器SBUF是可以直接尋址的專用寄存器,在80C51中,一個作為發(fā)送緩沖器,一個作為接收緩沖器,兩個緩沖器共用一個地址99H,由讀/寫信號區(qū)分。CPU寫SBUF時為發(fā)送緩沖器,讀SBUF時為接收緩沖器。接收緩沖器是雙緩沖的,可以避免在接收下一幀數(shù)據(jù)之前,CPU未能及時響應接收器的中斷,把上幀數(shù)據(jù)取走,而產(chǎn)生兩幀數(shù)據(jù)重疊的問題。對于發(fā)送緩沖器,為了保持最大傳輸速率,一般不需要雙緩沖,這是因為發(fā)送時CPU是主動的,不會產(chǎn)生寫重疊的問題。

特殊功能寄存器SCON用來存放串行口的控制和狀態(tài)信息。T1作為串行口的波特率發(fā)生器,其波特率是否增倍可由特殊功能寄存器PCON的最高位控制。7.1.2串行通信過程

串行通信的過程如下。

(1)接收數(shù)據(jù)的過程:在進行通信時,當CPU允許接收時(即SCON的REN位置1),外界數(shù)據(jù)通過引腳RXD(P3.0)串行輸入,數(shù)據(jù)的最低位首先進入輸入移位寄存器;一幀接收完畢再并行送入緩沖器SBUF中,同時將接收中斷標志位RI置位,向CPU發(fā)出中斷請求。CPU響應中斷后,用軟件將RI位清除,同時讀取輸入的數(shù)據(jù)。接著又開始下一幀的輸入過程,重復直至所有數(shù)據(jù)接收完畢。

(2)發(fā)送數(shù)據(jù)的過程:CPU要發(fā)送數(shù)據(jù)時,將數(shù)據(jù)并行寫入發(fā)送緩沖器SBUF中,同時啟動數(shù)據(jù)由TXD(P3.1)引腳串行發(fā)送。當一幀數(shù)據(jù)發(fā)送完即發(fā)送緩沖器空時,由硬件自動將發(fā)送中斷標志位TI置位,向CPU發(fā)出中斷請求。CPU響應中斷后,用軟件將TI位清除,同時將下一幀數(shù)據(jù)寫入SBUF中,重復上述過程直到所有數(shù)據(jù)發(fā)送完畢。

7.1.3串行口工作方式及幀格式

80C51單片機串行口可以通過軟件設置四種工作方式,各種工作方式的數(shù)據(jù)格式均有所不同,四種工作方式及幀格式如下。

1.方式0

這種工作方式比較特殊,與常見的微型計算機的串行口不同,它又叫同步移位寄存器輸出方式。在這種方式下,數(shù)據(jù)從RXD端串行輸出或輸入,同步信號從TXD端輸出,波特率固定不變,為振蕩頻率的1/12。該方式以8位數(shù)據(jù)為一幀,沒有起始位和停止位,先發(fā)送或接收最低位。

2.方式1

串行口采用該方式時,特別適合于點對點的異步通信。該方式規(guī)定發(fā)送或接收一個字符10位為一幀,即1個起始位、8個數(shù)據(jù)位、1個停止位,波特率可以改變。

3.方式2

采用這種方式可以接收或發(fā)送11位數(shù)據(jù),以11位為一幀,它比方式1增加了一個數(shù)據(jù)位,其余相同。第9個數(shù)據(jù)即D8位具有特別的用途,可以通過軟件來控制,再加上特殊功能寄存器SCON中SM2位的配合,可使80C51單片機串行口適用于多機通信。方式2的波特率固定,只有兩種選擇,為振蕩頻率的1/64或1/32,可由PCON的最高位選擇。

4.方式3

方式3和方式2完全類似,唯一的區(qū)別是方式3的波特率是可變的。方式3的幀格式與方式2一樣,為11位一幀,所以方式3也適用于多機通信。7.1.4串行口控制

80C51串行口的工作方式選擇、中斷標志、可編程位的設置、波特率的增倍均是通過兩個特殊功能寄存器SCON和PCON來控制的。

1.電源和波特率控制寄存器PCON

PCON的地址為87H,只能進行字節(jié)尋址,不能按位尋址。PCON是為在CHMOS結構的51系列單片機上實現(xiàn)電源控制而附加的,而HMOS結構的51系列單片機只用了其最高位,其余位都是虛設的。PCON的最高位D7位作SMOD,是串行口波特率的增倍控制位。當SMOD=1時,波特率加倍。當SMOD=0時,波特率不加倍。系統(tǒng)復位時,SMOD位為0。PCON其它各位定義在第二章已述。

2.串行口控制寄存器SCON

深入理解SCON各位的含義,正確地用軟件設定修改SCON各位是運用80C51串行口的關鍵。該專用寄存器的主要功能是串行通信方式選擇,接收和發(fā)送控制及串行口的狀態(tài)標志指示等。其各位的含義如下:

(1)?SCON.7和SCON.6為SM0、SM1位——串行工作方式選擇位。

(2)SCON.4為REN位——可用軟件允許/禁止串行接收,REN=1時允許串行口接收數(shù)據(jù),REN=0時禁止串行口接收數(shù)據(jù)。

(3)SCON.5、SCON.3和SCON.2為SM2和TB8、RB8位——實現(xiàn)多機通信的控制位。

在方式0下,SM2應設置為0,不用TB8和RB8位。在方式1下,當SM2=0時,RB8是接收到的停止位;當SM2=1時,則只有收到有效的停止位才會激活RI使之置1,否則RI不置位。

在方式2和方式3下,TB8是發(fā)送的第9位(D8)數(shù)據(jù),可用軟件置1和置0;RB8是接收到的第9位(D8)數(shù)據(jù)。這兩位也可以作為奇偶校驗位。當單片機在方式2或方式3下處于接收狀態(tài)時,若SM2=1,且接收到的第9位RB8為0,則RI不置1;若SM2=1,且RB8也為1,則RI置1。

當單片機在方式2或方式3下處于多機通信狀態(tài)時,TB8和RB8位可作為地址數(shù)據(jù)幀標志位。一般約定地址幀為“1”,數(shù)據(jù)幀為“0”。

(4)?SCON.1為TI位——作發(fā)送中斷標志。

在方式0中,發(fā)送完8位數(shù)據(jù)后,由硬件置位;在其它方式中,在發(fā)送停止位之初,由硬件置位。TI置位后可向CPU申請中斷。任何方式下都必須由軟件來清除TI。

(5)?SCON.0為RI位——作接收中斷標志。

在方式0下,接收完8位數(shù)據(jù)后,RI位由硬件置位;在其它方式下,在接收停止位的一半時由硬件將RI置位(還應考慮SM2的設定)。RI被置位后可允許CPU申請中斷,任何方式都必須由軟件來清除RI。

7.2工作方式與波特率的設置

7.2.1各方式波特率的設置

在串行通信中,收發(fā)雙方對發(fā)送或接收的數(shù)據(jù)速率(即波特率)要有一定的約定。串行口的工作方式可以通過編程選擇4種工作方式中的一種。各種方式下其波特率的設置均有所不同,方式0和方式2的波特率是固定的;而方式1和方式3的波特率是可變的,由定時器T1的溢出率控制。下面分別予以說明。

1.方式0和方式2

在方式0時,每個機器周期發(fā)送或接收一位數(shù)據(jù),因此波特率固定為振蕩頻率的1/12,且不受SMOD位的控制。

方式2的波特率要受PCON中SMOD位的控制,當SMOD設置為0時,波特率為振蕩頻率的1/64即等于fosc/64;若SMOD設置為1時,則波特率等于fosc/32。方式2的波特率可用下式表示:

2.方式1和方式3

80C51串行口方式1和方式3的波特率由定時器T1的溢出率與SMOD位同時控制。其波特率可以用以下方式表示:

其中,N=32或16,取決于PCON的SMOD位的值。SMOD=0時,N=32;SMOD=1時,N=16。因此波特率也可用下式來表示:T1的溢出周期為

溢出率為溢出周期之倒數(shù),所以

定時器T1方式2的計數(shù)初值由上式可得:

例7-1

選用定時器T1,工作方式2,作波特率發(fā)生器,波特率為2400波特/秒。已知fosc?=?11.0592?MHz,求計數(shù)初值X。

解設波特率控制位SMOD=0,不增倍時:

所以 TH1?=?TL1?=?F4H

如果串行通信選用很低的波特率,設置定時器T1為方式0或方式1定時,當T1產(chǎn)生溢出時需要重裝計數(shù)初值,故對波特率會產(chǎn)生一定的誤差。7.2.2串行口各工作方式的應用

通過對串行口的SCON控制寄存器編程可以選擇4種工作方式,各方式使用方法分述如下。

1.方式0用法

80C51串行口的方式0用于同步移位寄存器式的輸入輸出,8位數(shù)據(jù)從RXD(P3.0)引腳輸入輸出,由TXD(P3.1)引腳輸出移位時鐘使系統(tǒng)同步,波特率固定為fosc/12,即每一個機器周期輸出或輸入一位數(shù)據(jù)。

(1)方式0發(fā)送。以圖7-2為例說明串行口方式0發(fā)送的基本連線方法、工作時序(只畫出了RXD、TXD的波形)以及基本軟件的編程方法。圖7-2方式0發(fā)送連線及時序圖7-2中采用一個74HC164串入并出移位寄存器,串行口的數(shù)據(jù)通過RXD引腳加到74HC164的輸入端,串行口輸出移位時鐘通過TXD引腳加到74HC164的時鐘端。使用另一條I/O線P1.0控制164的CLR選通端(也可以將74HC164的選通端直接接高電平)。

根據(jù)以上硬件連接方法,對串行口方式0發(fā)送數(shù)據(jù)過程編程如下:

SCON=0x00; //選通方式0

P1.0=1; //選通74HC164

SBUF=data; //數(shù)據(jù)寫入SBUF并啟動發(fā)送

while(TI==0); //等待一個字節(jié)發(fā)送完成

P1.0=0; //關閉164選通

TI=0; //清除TI中斷標志

若還需要繼續(xù)發(fā)送新的數(shù)據(jù),只要使程序返回到第二條指令處即可。

(2)方式0接收。以圖7-3為例說明串行口方式0的基本連線方法、工作時序及編程方法。圖7-3方式0接收連線及時序

2.方式1用法

當串行口定義為方式1時,可作為異步通信接口,一幀為10位:1個起始位、8個數(shù)據(jù)位、1個停止位;波特率可以改變,由SMOD位和T1的溢出率決定。串行口方式1的發(fā)送和接收時序如圖7-4所示。圖7-4串行口方式1的發(fā)送和接收時序

(1)發(fā)送時序。任何一條寫入SBUF指令,都可啟動一次發(fā)送,使發(fā)送控制器的SEND(發(fā)送)端有效(即SEND=0),同時自動添加一個起始位向TXD端輸出。首先發(fā)送一個起始位0,此后每經(jīng)過一個時鐘周期產(chǎn)生一個移位脈沖,并且由TXD端輸出一個數(shù)據(jù)位。當8位數(shù)據(jù)全部送完后,使TI置1,可申請中斷,置TXD=1作為停止位,再經(jīng)一個時鐘周期撤消SEND信號。

(2)接收時序。方式1是靠檢測RXD來判斷接收過程的開始的。CPU不斷采樣RXD,采樣速率為波特率的16倍。一旦采樣到RXD由1至0的負跳變,16分頻器立刻復位,啟動一次接收,同時接收控制器把1FFH(9個1)寫入移位寄存器(9位)。計數(shù)器復位的目的是使計數(shù)器滿度翻轉的時刻恰好與輸入位的邊沿對準。

計數(shù)器的16個狀態(tài)把每一位的時間分為16份,在第7、8、9狀態(tài)時,位監(jiān)測器對RXD端采樣,這3個狀態(tài)理論上對應于每一位的中央段,若發(fā)送端與接收端的波特率有差異,就會發(fā)生偏移,只要這種差異在允許范圍內(nèi),就不至于產(chǎn)生錯位或漏碼。在上述3個狀態(tài)下,取得3個采樣值,用3取2的表決方法,即3個采樣值中至少有2個值是一致的,這種一致的值才被接收。如果所接收的第一位不是0,說明它不是一幀數(shù)據(jù)的起始位,接收電路被復位,再重新對RXD進行上述采樣過程。若起始位有效C=0,則被移入輸入移位寄存器,并接收這一幀中的其它位。當數(shù)據(jù)位逐一由右邊移入時,原先裝在移位寄存器內(nèi)的9個1逐位由左邊移出。當起始位0移到最左邊時,就通知接收控制器進行最后一次移位,并把移位寄存器9位內(nèi)容中的8位數(shù)據(jù)并行裝入SBUF(8位),第9位則置入RB8(SCON.2)位,并將RI置1,向CPU申請中斷。在串行移位方式下接收到一幀數(shù)據(jù)時,裝入SBUF和RB8位以及RI置位的信號,在最后一個移位脈沖并同時滿足以下兩個條件時才會產(chǎn)生中斷:

①RI=0,即上一幀數(shù)據(jù)接收完成后發(fā)出的中斷請求已被響應,SBUF中的數(shù)據(jù)已被取走。

②SM2=0或接收到的停止位為1。

這兩個條件任一個不滿足,所接收的數(shù)據(jù)幀就會丟失,不再恢復。兩者都滿足,停止位進入RB8位,8位數(shù)據(jù)進入SBUF,RI置1。此后,接收控制器又將重新采樣測試RXD出現(xiàn)的負跳變,以接收下一幀數(shù)據(jù)。

(3)方式1用法。串行口方式1適用于點對點的異步通信,若假定通信雙方都使用80C51的串行口,硬件連接如圖7-5所示。圖7-5點對點的異步通信連接要實現(xiàn)雙方的通信還必須編寫雙方的通信程序,編寫程序應遵守雙方的約定。

通信雙方的軟件約定如下:發(fā)送方應知道什么時候發(fā)送消息,消息的內(nèi)容,對方是否收到,對方收到的內(nèi)容是否有誤,要不要重發(fā),怎樣通知對方發(fā)送結束等。接收方必須知道對方是否發(fā)送了消息,發(fā)送的是什么,收到的信息是否有錯,如果有錯怎樣通知對方,怎樣判斷發(fā)送結束等。

這些約定必須在編程之前確定下來,這種約定叫做“規(guī)程”或“協(xié)議”。發(fā)送和接收方的數(shù)據(jù)幀格式、波特率等必須一致。按這些協(xié)議可以編寫出程序。

3.方式2、方式3的用法

串行口方式2和方式3除了波特率規(guī)定不同之外,其它的性能完全一樣,都是11位的幀格式。方式2的波特率只有fosc/32和fosc/64兩種,而方式3的波特率是可變的,前面已述。

串行口方式2和方式3的發(fā)送和接收時序見圖7-6。圖7-6方式2、方式3的發(fā)送和接收時序方式2、方式3的發(fā)送和接收時序與方式1相比,主要區(qū)別在第9個位數(shù)據(jù)位上。

(1)發(fā)送時序。任何一條“寫入SBUF”指令,都可啟動一次發(fā)送,并把TB8的內(nèi)容裝入發(fā)送寄存器的第9位,使SEND信號有效,發(fā)送開始。在發(fā)送過程中,先自動添加一起始位放入TXD,然后每經(jīng)過一個TX時鐘(由波特率決定)產(chǎn)生一個移位脈沖,并由TXD輸出一個數(shù)據(jù)位。當最后一個數(shù)據(jù)位(附加位)送完后,撤消SEND,并使TI置1,置TXD=1作為停止位,使TXD輸出一個完整的異步通信字符格式。

(2)接收時序。接收部分與方式1類似,在置REN=1之后,硬件自動檢測RXD信號,當檢測RXD由1至0的跳變時,就開始一個接收過程。首先,判斷是否為一個有效的起始位。對RXD的檢測是以波特率的16倍速率采樣,并在每個時鐘周期的中間(第7、8、9計數(shù)狀態(tài))對RXD連續(xù)采樣3次,取兩次相同的值進行判斷。若不是起始位,則此次接收無效,重新檢測RXD;若是有效起始位,就在每一個RX時鐘周期里接收一位數(shù)據(jù)。在9位數(shù)據(jù)收齊后,如果下列兩個條件成立:

①?RI=0;

②?SM2=0或接收到的第9位數(shù)據(jù)為1;

則把已收到的數(shù)據(jù)裝入SBUF和RB8,并將RI置1。如果不滿足上述兩個條件,則丟失已收到的一幀信息,不再恢復,也不置位RI。兩者都滿足時,第9位數(shù)據(jù)就進入RB8,8位數(shù)據(jù)進入SBUF。此后,無論哪種情況都將重新檢測RXD的負跳變。

注意:與方式1不同,方式2和方式3中進入RB8的是第9位數(shù)據(jù),而不是停止位。接收到的停止位的值與SBUF、RB8或RI是無關的。這一特點可用于多處理機通信。

(3)用第9位數(shù)據(jù)作奇偶校驗位。方式2、方式3也可以像方式1一樣用于點對點的異步通信。在數(shù)據(jù)通信中由于傳輸距離較遠,數(shù)據(jù)信號在傳送過程中會產(chǎn)生畸變,從而引起誤碼。為了保證通信質(zhì)量,除了改進硬件之外,通常要在通信軟件上采取糾錯的措施。常用的一種簡單方法就是用“檢查和”作為第9位數(shù)據(jù),稱奇偶校驗位,將其置入TB8位一同發(fā)送。在接收端可以用第9位數(shù)據(jù)來核對接收的數(shù)據(jù)是否正確。例如,發(fā)送端發(fā)送一個數(shù)據(jù)字節(jié)及其奇偶校驗位的程序段如下:

SCON=0x80; //選通方式2

TB8=PSW^0; //奇偶標志位置入TB8中

SBUF=DATA; //啟動一次發(fā)送,數(shù)據(jù)連同奇偶校驗位一同被發(fā)送

while(TI==0); //等待發(fā)送完成

方式2、方式3的發(fā)送過程中,將數(shù)據(jù)和附加的TB8中的奇偶校驗位一同發(fā)送出去。因此,作為接收的一方應設法取出該奇偶校驗位進行核對,相應的接收程序段如下:接收到的字符從SBUF轉移到A中時會產(chǎn)生接收端的奇偶校驗值,而保存在RB8中的值為發(fā)送端的奇偶校驗值,兩個奇偶校驗值應相等,否則接收字符有錯。發(fā)現(xiàn)錯誤要及時通知對方重發(fā)。

(4)用第9位數(shù)據(jù)作多機通信的聯(lián)絡位。計算機與計算機的通信不僅限于點對點的通信,還會出現(xiàn)一機對多機或多機之間的通信,構成計算機網(wǎng)絡。按網(wǎng)絡的拓撲結構,計算機網(wǎng)絡通??蓜澐譃槿缦聨追N:星型網(wǎng)、樹型網(wǎng)、環(huán)型網(wǎng)、總線型網(wǎng)等。有一種比較特殊的總線型網(wǎng),即主從式或叫廣播式網(wǎng)絡。所謂主從式,即多臺計算機中有一臺是主機,其余的為從機(如圖7-7所示),從機要服從主機的調(diào)度和支配。80C51單片機的串行口方式2、方式3就適合于這種主從式的通信結構。圖7-7主從式多機通信網(wǎng)的結構形式第9位數(shù)據(jù)可以用于多機通信的關鍵在于巧妙地利用了SM2和接收到的第9位附加數(shù)據(jù)(接收后放在RB8中)的配合。例如,通信各方約定如下:

①主機向從機發(fā)送地址信息,其第9位數(shù)據(jù)必須為1,而向從機發(fā)送數(shù)據(jù)信息包括命令時,其第9位數(shù)據(jù)規(guī)定為0。

②從機在建立與主機通信之前,隨時處于對通信線路的監(jiān)聽狀態(tài)。在監(jiān)聽狀態(tài)下必須使SM2=1,此時只能收到主機發(fā)出的地址信息(第9位為1),非地址信息被丟棄。③從機接收到地址后應進行識別,是否主機呼叫本站,如果地址符合,確認呼叫本站,此時從機解除監(jiān)聽狀態(tài),使SM2=0,同時把本站地址發(fā)回主機作為應答,只有這樣才能收到主機發(fā)送的有效數(shù)據(jù)。其它從機由于地址不符,仍處于監(jiān)聽狀態(tài),繼續(xù)保持SM2=1,所以無法接收主機的數(shù)據(jù)。

④主機收到從機的應答信號,比較收與發(fā)的地址是否相符,如果不符,則發(fā)出復位信號(例如發(fā)任一數(shù)據(jù),但TB8=1);如果地址相符,則清除TB8,正式開始發(fā)送數(shù)據(jù)和命令。⑤從機收到復位命令后再次回到監(jiān)聽狀態(tài),再置SM2=1,否則正式開始發(fā)送數(shù)據(jù)和命令。

下面舉例說明按上述約定編寫主機和1號從機的聯(lián)絡過程的程序片斷,設主、從機均采用方式2工作(方式3用法與此類似,只是波特率設置不同)。

主機呼叫1號從機的聯(lián)絡程序:

7.3I2C總線及應用

7.3.1I2C總線

總線(InterIntegratedCircuitBUS)是Plilips公司推出的串行擴展總線,為二線制,總線上擴展的外圍器件及外設接口通過總線尋址。圖7-8為I2C總線外圍擴展示意。圖7-8I2C總線外圍擴展

I2C總線由數(shù)據(jù)線SDA和時鐘線SCL構成。SDA/SCL總線上掛接單片機(MCU)、外圍器件(如I/O口、日歷時鐘、ADC、DAC、存儲器等)和外設接口(如鍵盤、顯示器、打印機等)。所有掛接在I2C總線上的器件和接口電路都應具有I2C總線接口,而且所有的SDA/SCL同名端相連。

I2C總線接口電路均為漏極開路,故總線必須有上拉電阻。

所有掛接到總線上的器件及接口都通過總線尋址,故I2C總線具有最簡單的電路擴展方式。

I2C總線的驅動能力為400?pF,通過驅動擴展可達4000?pF,原規(guī)范中傳輸速率為100?kb/s,新規(guī)范的傳輸速率可達400kb/s。

1.80C51UART的串行擴展接口

80C51的UART有4種工作方式,其中方式0為移位寄存器工作方式,采用最為常見的移位寄存器工作方式,能方便地擴展串行數(shù)據(jù)傳送接口。目前有許多外圍器件選擇了移位寄存器的串行擴展接口,圖7-9為80C51UART的外圍擴展示意。

80C51的UART移位寄存器方式(方式0)用于串行同步數(shù)據(jù)傳送,TXD端為同步脈沖輸出端,RXD為數(shù)據(jù)串行輸出/輸入端。擴展外圍器件時,TXD端與外圍器件串行口的時鐘端相連,RXD則與數(shù)據(jù)端相連。圖7-980C51UART的外圍擴展示意

2.I2C總線的串行擴展技術

I2C總線具有十分完善的總線協(xié)議,可構成多主機系統(tǒng);在協(xié)議軟件支持下,可自動處理總線上任何可能的運行狀態(tài)。本節(jié)將主要介紹I2C總線的虛擬技術。在單片機應用系統(tǒng)中,這種虛擬技術應用十分廣泛。

1)?I2C總線的串行外圍擴展示意

圖7-10為總線外圍擴展示意。圖中只表示出單片機應用系統(tǒng)中常用的總線外圍通用器件、外圍設備模塊、接口以及其它單片機節(jié)點。最常使用的通用外圍器件有SRAM、EEPROM、ADC/DAC、RTC、I/O口、DTMF等。圖7-10I2C總線外圍擴展示意外圍設備模塊有由LED驅動控制器構成的LED顯示器,由各種LCD驅動控制器構成的段式、圖形點陣、字符點陣液晶顯示器等。

具有I2C總線I/O口的器件可構成許多通用接口,如鍵盤、碼盤、打印機接口和LCD顯示器接口等。

I2C總線可構成多主機系統(tǒng),故I2C總線上可掛接一些帶I2C總線接口的單片機,因為帶I2C接口的單片機中,有支持多主機功能的SFR。除了圖7-10中的通用外圍器件外,Philips公司還提供了許多帶I2C總線接口的專用外圍器件,在通信、視頻、音響家電系統(tǒng)中得到了廣泛的應用。圖7-1180C51I2C總線接口的電氣結構

I2C總線上所有的外圍器件都有規(guī)范的器件地址。器件地址由7位組成,它和1位方向位構成了總線器件的尋址字節(jié)SLA。尋址字節(jié)格式如下:

(1)器件地址(DA3、DA2、DA1、DA0):總線外圍接口器件固有的地址編碼,器件出廠時就已給定。例如,I2C總線EEPROMAT24C××的器件地址為1010,4位LED驅動器SAA1064的器件地址為0111。表7-1常用I2C接口通用器件的種類、型號及尋址字節(jié)7.3.2EEPROM的讀寫應用練習

1.硬件電路設計

(1)器件選擇。帶I2C總線接口的EEPROM有許多型號系列,其中AT24C××系列使用十分普遍,有AT24C01/02/04/08/16等,其容量分別為128×8/256×8/512×8/1024×8/2048×8bit。圖7-12(b)是一個AT24C02的EEPROM擴展電路,圖7-12(a)是其封裝引腳示意。圖7-12AT24C02及其外圍擴展電路

(2)電路設計。AT24C02的TEST腳為測試端,系統(tǒng)中可接地處理。A2、A1、A0可任接,因此I2C總線上可連接多達8片AT24C02,總容量為8×256×8=2048×8?bit。由于片內(nèi)子地址采用8位地址指針尋址,超過256×8?地址空間,要占用引腳地址,如果使用AT24C04,則A0作為子地址軟件尋址位;使用AT24C08、AT24C16時,A1、A2也分別作為子地址的軟件尋址位,這時相應的外部A0、A1、A2無效。

(3)節(jié)點地址。AT24C××的器件地址是1010,A2、A1、A0為引腳地址。按照圖7-12(b)中的連接方式引腳地址為000,因此AT24C02在系統(tǒng)中的尋址字節(jié)SLAW=A0H,SLAR=A1H。

2.AT24C02的結構與應用原理

AT24C02為256×8?bit的EEPROM,圖7-13為其內(nèi)部結構示意,由輸入緩沖器和EEPROM陣列組成。由于EEPROM的半導體工藝特性,寫入時間為5~10?ms,如果從外部直接寫入EEPROM,每寫一個字節(jié)都要等候5~10?ms,成批數(shù)據(jù)寫入時等候時間很長。在設置SRAM性質(zhì)的輸入緩沖器時,對EEPROM的寫入變成對SRAM緩沖器的裝載,裝載完后啟動一個自動寫入邏輯將緩沖器中的全部數(shù)據(jù)一次寫入EEPROM陣列中。對數(shù)據(jù)緩沖器的輸入稱為頁寫,緩沖器的容量稱為頁寫字節(jié)數(shù)。AT24C02的頁寫字節(jié)數(shù)為8,占用最低3位地址,只要從最低3位零地址開始寫入,不超過頁寫字節(jié)數(shù)時,對EEPROM器件的寫入操作與對SRAM的操作相同。若超過頁寫字節(jié)數(shù),應等候5~10?ms后再啟動一次寫操作。

由于緩沖區(qū)容量較小,只占據(jù)最低3位,且不具溢出進位功能,因而在從非零地址寫入8個字節(jié)數(shù),或從零地址寫入字節(jié)數(shù)超過8個字節(jié)時,會形成地址翻卷,導致寫入出錯。圖7-13AT24C02EEPROM內(nèi)部結構示意

3.AT24C××的數(shù)據(jù)操作格式

在I2C總線中,對AT24C02內(nèi)部存儲單元讀寫時,除了要尋址該器件的節(jié)點地址外,還須指定存儲器讀寫的子地址(SUBADR)。按照AT24C02的器件手冊,讀寫N個字節(jié)的數(shù)據(jù)操作格式如下:

寫N個字節(jié)的數(shù)據(jù)操作格式

讀N個字節(jié)的數(shù)據(jù)操作格式在讀操作中,除了發(fā)送尋址字節(jié)外,還要發(fā)送子地址SUBADR。因此,在讀N個字節(jié)操作前,要進行一個字節(jié)(SUBADR)的寫操作,然后重新啟動讀操作。

例7-2

在圖7-12(b)的擴展電路中,寫入一個字節(jié)到AT24C02中。

按圖7-12(b)的擴展連接,AT24C02的尋址字節(jié)(寫)為A0H,子地址SUBADR為50H。

程序清單如下:

7.4串行口應用舉例

本節(jié)介紹串行口作I/O擴展口及在一般異步通信和多機通信中應用的幾個實例。

7.4.1用串行口擴展并行I/O

用串行口工作于方式0擴展并行I/O的方法在上一節(jié)中已述,此處將給出原理圖和簡單的控制程序。

1.用并行輸入8位移位寄存器74HC165擴展輸入口

圖7-14是利用3根口線擴展16位輸入口線的實用電路。從理論上講,利用這種方法可以擴展更多的輸入口,但擴展的輸入口越多,口的操作速度會越低。圖7-14利用串行口擴展輸入口

2.用8位并行輸出串行移位寄存器74HC164擴展輸出口

圖7-15是利用74HC164擴展16位輸出口線的實用電路。由于74HC164無并行輸出控制端,在串行輸入過程中,其輸出端的狀態(tài)會不斷變化,故在某些應用場合,應在74HC164與輸出裝置之間加上輸出可控制的緩沖器級(74HC244等),以便串行輸入完成后再控制輸出。圖7-15利用串行口擴展輸出口圖7-15中的輸出裝置是兩位共陽極七段LED顯示器,采用靜態(tài)顯示方式。由于74HC164在低電平輸出時,允許通過的電流可達8?mA,故不需要再加驅動電路。與動態(tài)掃描顯示比較起來,靜態(tài)顯示方式的優(yōu)點是CPU不必頻繁地為顯示服務,軟件設計比較簡單,很容易做到顯示不閃爍。

編程把存放在dat_tab中的數(shù)據(jù)5和8取出,由串行口輸出顯示,程序如下:7.4.2用串行口作異步通信接口

1.用串行口發(fā)送帶奇偶校驗位的數(shù)據(jù)塊

例7-4編程把存放在data中的32個ASCII碼數(shù)據(jù)在最高位上加奇偶校驗后,由串行口發(fā)送,采用8位數(shù)據(jù)異步通信,串行口采用方式1發(fā)送,用T1做波特率發(fā)生器,設波特率為1200波特/秒,fosc=11.0592MHz。

解用定時器T1模式2做波特率發(fā)生器,設波特率不增倍(SMOD=0),其計數(shù)初值X為

即TH1=TL1=0E8H。程序如下:7.4.3用串行口作多機通信接口

80C51串行口的方式2和方式3有一個專門的應用領域,即多機通信。這一功能使它可以方便地應用于集散式分布系統(tǒng)中。多機通信的連接方法見圖7-7。這里仍以主從式的多機通信結構為例說明多機通信的應用。對于不同的應用場合,人們制定了各種通信協(xié)議,本節(jié)采用如下幾條簡單的協(xié)議:

(1)系統(tǒng)中允許接有255臺從機,它們的地址分別為00H~FFH。

(2)地址FFH是對所有從機都起作用的一條控制命令:命令各個從機恢復SM2=1的狀態(tài)。

(3)主機發(fā)送的控制命令代碼為:

00H——要求從機接收數(shù)據(jù)塊;

01H——要求從機發(fā)送數(shù)據(jù)塊;

其它——非法命令。

(4)數(shù)據(jù)塊長度:16字節(jié)。

(5)從機狀態(tài)字格式如下:

其中:若ERR=1,表示從機接收到非法指令;若TRDY=1,表示從機發(fā)送準備就緒。下面給出串行口通信程序,主程序部分是以子程序的方式給出的,要進行串行通信時,可以直接調(diào)用這個子程序。主機在接收或發(fā)送完一個數(shù)據(jù)塊后可返回主程序,完成其它任務。從機部分以串行口中斷服務程序的方式給出,若從機未做好接收或發(fā)送數(shù)據(jù)的準備,就從中斷程序中返回,在主程序中做好準備。故主機在這種情況下不能簡單地等待從機準備就緒,而要重新與主機聯(lián)絡,使從機再次進入串行口中斷。系統(tǒng)可以采用T1作為波特率發(fā)生器,也可采用固定的波特率。主機和從機中對T1初始化的程序從略。

下面設計一個1臺主機、255臺從機的多機通信系統(tǒng),程序如下:上述簡化程序描述了多級串行通信中從機的基本工作過程,實際應用系統(tǒng)中還應考慮更多的因素,如命令的種類可以更多些;若波特率較低且CPU還要完成其它實時任務,發(fā)送和接收過程還可能要采用中斷控制方式等。 7.5RS-232C與USB簡介

7.5.1RS-232C簡介

計算機與計算機或計算機與終端之間的數(shù)據(jù)傳送可以采用串行通信和并行通信兩種方式。由于串行通信方式具有使用線路少、成本低等優(yōu)點,特別是在遠程傳輸時可避免多條線路特性的不一致,因而被廣泛采用。在串行通信時,要求通信雙方都采用一個標準接口,使不同的設備可以方便地連接起來進行通信。RS-232C接口(又稱EIARS-232C)是目前最常用的一種串行通信接口。它是在1970年由美國電子工業(yè)協(xié)會(EIA)聯(lián)合貝爾系統(tǒng)、調(diào)制解調(diào)器廠家及計算機終端生產(chǎn)廠家共同制定的用于串行通信的標準。它的全名是“數(shù)據(jù)終端設備(DTE)和數(shù)據(jù)通信設備(DCE)之間串行二進制數(shù)據(jù)交換接口技術標準”,該標準規(guī)定采用一個25個引腳的DB25連接器,對連接器的每個引腳的信號內(nèi)容加以規(guī)定,還對各種信號的電平加以規(guī)定。

1.接口信號

EIARS-232C是異步串行通信中應用最廣泛的標準總線,它包括了按位串行傳輸?shù)碾姎夂蜋C械方面的規(guī)定,適用于數(shù)據(jù)終端設備(DTE)和數(shù)據(jù)通信設備(DCE)之間的接口。其中DTE主要包括計算機和各種終端機,而DCE的典型代表是調(diào)制解調(diào)器(MODEM)。

RS-232C的機械指標規(guī)定:RS-232C接口通向外部的連接器(插針插座)是一種“D”型25針插頭。在微機通信中,通常被使用的RS-232C接口信號只有9個引腳,見表7-2。表7-2微機通信中常用的RS-232C接口信號圖7-16給出了RS-232C的“D”型9針插頭引腳定義圖。RS-232C的“D”型25針插頭引腳定義如圖7-17所示。圖7-16“D”型9針插頭引腳定義圖7-17“D”型25針插頭引腳定義

2.電氣特性

RS-232C采用負邏輯,即邏輯“1”:-3~-15?V;邏輯“0”:+3~+15?V。

表7-3列出了RS-232C接口的主要電氣性能。RS-232C標準信號傳輸?shù)淖畲箅娎|長度為30?m;異步方式速率最高為115.2?kb/s,同步方式最高為128?kb/s。表7-3RS-232C電氣特性表

3.電平轉換

由于TTL電平和RS-232C電平互不兼容,所以兩者接口時,必須進行電平轉換。RS-232C與TTL的電平轉換最常用的芯片是傳輸線驅動器MC1488和傳輸線接收器MC1489,其內(nèi)部結構與管腳配置如圖7-18所示。其作用除了電平轉換外,還實現(xiàn)正負邏輯電平的轉換。圖7-18RS-232C電平轉換芯片

MCl488內(nèi)部有三個與非門和一個反相器,供電電壓為±15?V或±12?V,輸入為TTL電平,輸出為RS-232C電平。

MCl489內(nèi)部有4個反相器,輸入為RS-232C電平,輸出為TTL電平,供電電壓為+5?V。MC1489中每一個反相器都有一個控制端,高電平有效,可作為RS-232C操作的控制端。在控制端可接一濾波電容。TTL與RS-232C的電平接口電路如圖7-19所示。圖7-19RS-232C接口電平轉換電路7.5.2USB接口簡介

1.概述

USB是英文UniversalSerialBus的縮寫,中文含義是“通用串行總線”。它不是一種新的總線標準,而是應用在PC領域的新型接口技術。早在1995年,就已經(jīng)有PC機帶有USB接口了,但由于缺乏軟件及硬件設備的支

溫馨提示

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

評論

0/150

提交評論