單片機(jī)串行通信技術(shù)_第1頁
單片機(jī)串行通信技術(shù)_第2頁
單片機(jī)串行通信技術(shù)_第3頁
單片機(jī)串行通信技術(shù)_第4頁
單片機(jī)串行通信技術(shù)_第5頁
已閱讀5頁,還剩68頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、5.4 5.4 單片機(jī)串行通信單片機(jī)串行通信5.4.1 5.4.1 串行通信的基礎(chǔ)知識(shí)串行通信的基礎(chǔ)知識(shí)5.4.2 515.4.2 51系列單片機(jī)的串行接口系列單片機(jī)的串行接口5.4.3 5.4.3 串行口工作模式串行口工作模式5.4.4 5.4.4 串行口應(yīng)用舉例串行口應(yīng)用舉例5.4.15.4.1串行通信的基礎(chǔ)知識(shí)串行通信的基礎(chǔ)知識(shí)l計(jì)算機(jī)與外部設(shè)備或計(jì)算機(jī)與計(jì)算機(jī)之間的信息交換稱為計(jì)算機(jī)與外部設(shè)備或計(jì)算機(jī)與計(jì)算機(jī)之間的信息交換稱為通信通信。l通信的基本方式:通信的基本方式:并行通信并行通信和和串行通信串行通信。在現(xiàn)代測(cè)控系統(tǒng)中信息交換多。在現(xiàn)代測(cè)控系統(tǒng)中信息交換多采用采用串行通信串行通信方

2、式。方式。并行通信:通常是將數(shù)據(jù)字節(jié)的各位用多條數(shù)據(jù)線同時(shí)進(jìn)行傳送。優(yōu)點(diǎn)優(yōu)點(diǎn)是控制簡(jiǎn)單、傳送速度快;是控制簡(jiǎn)單、傳送速度快;缺點(diǎn)缺點(diǎn)是數(shù)據(jù)有多少位,就需要多少根傳輸線,適合于近距離傳輸,長距離是數(shù)據(jù)有多少位,就需要多少根傳輸線,適合于近距離傳輸,長距離傳送時(shí)成本高且接收方的各位同時(shí)接收存在困難。傳送時(shí)成本高且接收方的各位同時(shí)接收存在困難。通信控制線并行通信并行通信串行通信:將數(shù)據(jù)字節(jié)分成一位一位的形式在一條傳輸線上逐個(gè)地傳送。優(yōu)點(diǎn)優(yōu)點(diǎn)是只需一對(duì)傳輸線(如電話線),占用硬件資源少,從而降低了傳輸是只需一對(duì)傳輸線(如電話線),占用硬件資源少,從而降低了傳輸成本,特別適用于遠(yuǎn)距離通信成本,特別適用于

3、遠(yuǎn)距離通信, ,且可以利用電話網(wǎng)等現(xiàn)成的設(shè)備;且可以利用電話網(wǎng)等現(xiàn)成的設(shè)備;缺點(diǎn)缺點(diǎn)是傳送速度較慢是傳送速度較慢, ,數(shù)據(jù)的傳送控制比并行通信復(fù)雜。數(shù)據(jù)的傳送控制比并行通信復(fù)雜。 一一. .串行通信的兩種基本方式串行通信的兩種基本方式串行通信是CPU與外界交換信息的一種基本通信方式。串行通信基本方式:串行通信基本方式:異步通信異步通信和和同步通信同步通信。串行通信串行通信1 1、異步通信方式、異步通信方式異步通信:異步通信:以字符(構(gòu)成的幀)為單位進(jìn)行傳輸,字符與字符之間的間隙(時(shí)間間隔)是任意的,但每個(gè)字符中的各位是以固定的時(shí)間傳送的,即字符之間是異步的(字符之間不一定有“位間隔”的整數(shù)倍的

4、關(guān)系),但同一字符內(nèi)的各位是同步的(各位之間的距離均為“位間隔”的整數(shù)倍)。通信的發(fā)送與接收設(shè)備使用各自的時(shí)鐘控制數(shù)據(jù)的發(fā)送和接收過程。為使雙方的收發(fā)協(xié)調(diào),要求發(fā)送和接收設(shè)備的時(shí)鐘盡可能一致。數(shù)據(jù)在線路上的傳送不連續(xù),字符間隔不定,各個(gè)字符可以連續(xù)傳送也可以間斷傳送(停止位后,線路上自動(dòng)保持為1),完全取決于通信協(xié)議或約定。不要求收發(fā)雙方時(shí)鐘的嚴(yán)格一致,實(shí)現(xiàn)容易,設(shè)備開銷較小,但每個(gè)字符要附加23位用于起止位,各幀之間還有間隔,因此傳輸效率不高。異步通信用一幀表示一個(gè)字符,一個(gè)字符包括異步通信用一幀表示一個(gè)字符,一個(gè)字符包括4 4個(gè)部分:個(gè)部分:起始位:1位(0 0有效)有效) 數(shù)據(jù)位:5-8

5、位(低位在先,高位在后)(低位在先,高位在后)奇偶校驗(yàn)位:1位停止位:1位、1位半、2位(1 1有效)有效)圖圖6-16-1異步通信的字符格式異步通信的字符格式在異步通信時(shí),通信雙方必須事先約定。在異步通信時(shí),通信雙方必須事先約定。(1 1)字符格式)字符格式 雙方要事先約定數(shù)據(jù)位的位數(shù)、奇偶校驗(yàn)形式及起始位和停止位的位數(shù)。 例如:用例如:用ASCASC碼通信,有效數(shù)據(jù)為碼通信,有效數(shù)據(jù)為7 7位,加一個(gè)奇偶校驗(yàn)位、一個(gè)起始位和一個(gè)位,加一個(gè)奇偶校驗(yàn)位、一個(gè)起始位和一個(gè)停止位共停止位共1010位。當(dāng)然停止位也可以大于位。當(dāng)然停止位也可以大于1 1位。位。(2 2)波特率()波特率(Baud r

6、ateBaud rate)l波特率就是傳送速率,即每秒傳送的二進(jìn)制位數(shù),單位為bit/s或波特。l波特率與字符的傳送速率之間的關(guān)系為: 波特率=一個(gè)字符的二進(jìn)制編碼位數(shù)*字符數(shù)/秒.l要求發(fā)送端與接收端的波特率必須一致。假設(shè):數(shù)據(jù)傳送率是假設(shè):數(shù)據(jù)傳送率是120120字符字符/s/s,每個(gè)字符格式包含十個(gè)代碼位(一個(gè)起始位、一,每個(gè)字符格式包含十個(gè)代碼位(一個(gè)起始位、一個(gè)終止位、個(gè)終止位、8 8個(gè)數(shù)據(jù)位),波特率為:個(gè)數(shù)據(jù)位),波特率為: 1010120=1200bit/s=1200120=1200bit/s=1200波特波特同步字符同步字符 數(shù)據(jù)數(shù)據(jù)1 1 數(shù)據(jù)數(shù)據(jù)2 2 數(shù)據(jù)數(shù)據(jù)N N 校

7、驗(yàn)字符校驗(yàn)字符1 1 校驗(yàn)字符校驗(yàn)字符2 2 同步字符同步字符2 2、同步通信方式、同步通信方式( (一次傳送一個(gè)數(shù)據(jù)塊,接收雙方采用同一時(shí)鐘一次傳送一個(gè)數(shù)據(jù)塊,接收雙方采用同一時(shí)鐘)u異步通信由于要在每個(gè)數(shù)據(jù)前后附加起始位、停止位,每發(fā)送一個(gè)字符約有20%的附加數(shù)據(jù),占用了傳輸時(shí)間,降低了傳送效率。u同步通信則去掉每個(gè)數(shù)據(jù)的起始位和停止位,把要發(fā)送的數(shù)據(jù)按順序連接成一個(gè)數(shù)據(jù)塊,在數(shù)據(jù)塊的開頭附加12個(gè)同步字符,在數(shù)據(jù)塊的末尾加差錯(cuò)校驗(yàn)字符。u在數(shù)據(jù)塊內(nèi)部,數(shù)據(jù)與數(shù)據(jù)之間沒有間隙;數(shù)據(jù)塊塊之間有間隔,發(fā)送同步字符填充。要求:發(fā)送和接收雙方要保持完全的同步,所以,要求發(fā)送和接收設(shè)備必須使用同一時(shí)

8、鐘。解決辦法:1)對(duì)于近距離通信:采用在傳輸線中增加一根時(shí)鐘信號(hào)線來解決。2)對(duì)于遠(yuǎn)距離通信:通過解調(diào)器從數(shù)據(jù)流中提取同步信號(hào),用鎖相技術(shù)實(shí)現(xiàn)收、發(fā)頻率完全相同的時(shí)鐘信號(hào)。如上所述,異步通信技術(shù)較為簡(jiǎn)單,應(yīng)用范圍廣;同步通信傳輸速率高,如上所述,異步通信技術(shù)較為簡(jiǎn)單,應(yīng)用范圍廣;同步通信傳輸速率高,適用于高速率、大容量的數(shù)據(jù)通信,但硬件復(fù)雜。適用于高速率、大容量的數(shù)據(jù)通信,但硬件復(fù)雜。A AB BA AB BA AB B二、串行通信的數(shù)據(jù)傳送方式二、串行通信的數(shù)據(jù)傳送方式串行通信中,數(shù)據(jù)在兩個(gè)端點(diǎn)之間進(jìn)行傳送,按照數(shù)據(jù)的流動(dòng)方向:1 1、單工方式:、單工方式:?jiǎn)喂な侵笖?shù)據(jù)傳輸單工是指數(shù)據(jù)傳輸僅

9、能沿一個(gè)方向,不能實(shí)現(xiàn)反向傳輸僅能沿一個(gè)方向,不能實(shí)現(xiàn)反向傳輸。數(shù)據(jù)傳送是單向的,一端為發(fā)送另一端為接收,只需一數(shù)據(jù)傳送是單向的,一端為發(fā)送另一端為接收,只需一條數(shù)據(jù)線。條數(shù)據(jù)線。2 2、半雙工方式:、半雙工方式:半雙工是指數(shù)據(jù)傳輸半雙工是指數(shù)據(jù)傳輸可以沿兩個(gè)方向,但需要分時(shí)進(jìn)行可以沿兩個(gè)方向,但需要分時(shí)進(jìn)行。數(shù)據(jù)傳送是雙向的,數(shù)據(jù)傳送是雙向的,ABAB,BABA,同一時(shí)間只能做一個(gè),同一時(shí)間只能做一個(gè)方向傳送,只需一條數(shù)據(jù)線。方向傳送,只需一條數(shù)據(jù)線。3 3、全雙工方式:、全雙工方式:全雙工是指數(shù)據(jù)可以全雙工是指數(shù)據(jù)可以同時(shí)進(jìn)行雙向傳輸同時(shí)進(jìn)行雙向傳輸。 數(shù)據(jù)傳送是雙向的,數(shù)據(jù)傳送是雙向的,

10、A A、B B兩端可同時(shí)發(fā)送,又可同時(shí)接兩端可同時(shí)發(fā)送,又可同時(shí)接收,需兩根數(shù)據(jù)線。收,需兩根數(shù)據(jù)線。單工通信單工通信 半雙工通信半雙工通信 全雙工通信全雙工通信 三、串并轉(zhuǎn)換和串行接口三、串并轉(zhuǎn)換和串行接口通常CPU內(nèi)部并行地輸入、輸出數(shù)據(jù),因此串行數(shù)據(jù)通信要解決的兩個(gè)問題:數(shù)據(jù)傳送、數(shù)據(jù)轉(zhuǎn)換。(1 1)串并轉(zhuǎn)換實(shí)現(xiàn):)串并轉(zhuǎn)換實(shí)現(xiàn):由串并接口電路+適當(dāng)?shù)能浖浜洗薪涌谛酒寒惒浇邮?發(fā)送器UART;同步接收/發(fā)送器USART(2 2) UARTUART組成:組成: 接收器,發(fā)送器,控制器主要功能: 串行并行 (接收器完成) 并行串行 (發(fā)送器完成) 完成格式信息的插入,濾除及錯(cuò)誤校驗(yàn)(控

11、制器完成) (格式信息指異步通信中的起始位、奇偶位、停止位。)(格式信息指異步通信中的起始位、奇偶位、停止位。)5.4.2 MCS-515.4.2 MCS-51系列單片機(jī)的串行接口系列單片機(jī)的串行接口n對(duì)于單片機(jī)來說,除了對(duì)于單片機(jī)來說,除了4 4個(gè)個(gè)8 8位的并行位的并行I/OI/O口口外,為了進(jìn)行串行通信,同樣也需要外,為了進(jìn)行串行通信,同樣也需要有相應(yīng)的有相應(yīng)的串行接口電路串行接口電路。只不過這個(gè)接口電路不是單獨(dú)的芯片,而是集成在單片。只不過這個(gè)接口電路不是單獨(dú)的芯片,而是集成在單片機(jī)芯片的內(nèi)部,成為單片機(jī)芯片的一個(gè)組成部分。機(jī)芯片的內(nèi)部,成為單片機(jī)芯片的一個(gè)組成部分。nMCS-51MC

12、S-51系列單片機(jī)有一個(gè)系列單片機(jī)有一個(gè)全雙工的串行口全雙工的串行口,4 4種工作方式種工作方式,以供不同場(chǎng)合使用,以供不同場(chǎng)合使用,波特率可由軟件設(shè)置波特率可由軟件設(shè)置,由片內(nèi)定時(shí),由片內(nèi)定時(shí)/ /計(jì)數(shù)器產(chǎn)生,工作時(shí)可使用計(jì)數(shù)器產(chǎn)生,工作時(shí)可使用查詢或是中斷方式查詢或是中斷方式,十分靈活,既可用于十分靈活,既可用于網(wǎng)絡(luò)通信網(wǎng)絡(luò)通信,也可以實(shí)現(xiàn),也可以實(shí)現(xiàn)串行異步通信串行異步通信,還可以作為,還可以作為同步移位同步移位寄存器寄存器使用。使用。nMCS-51MCS-51系列單片機(jī)串行通信的基本工作:系列單片機(jī)串行通信的基本工作:發(fā)送數(shù)據(jù)時(shí),將發(fā)送數(shù)據(jù)時(shí),將CPUCPU發(fā)送來的數(shù)據(jù)轉(zhuǎn)換成一定格式的

13、串行數(shù)據(jù),由引腳發(fā)送來的數(shù)據(jù)轉(zhuǎn)換成一定格式的串行數(shù)據(jù),由引腳TXDTXD上按規(guī)上按規(guī)定的波特率逐位輸出;定的波特率逐位輸出;接收數(shù)據(jù)時(shí),監(jiān)視引腳接收數(shù)據(jù)時(shí),監(jiān)視引腳RXDRXD,一旦出現(xiàn)起始位,一旦出現(xiàn)起始位0 0,就將外圍設(shè)備送來的一定格式的,就將外圍設(shè)備送來的一定格式的串行數(shù)據(jù)轉(zhuǎn)換成并行數(shù)據(jù),等待串行數(shù)據(jù)轉(zhuǎn)換成并行數(shù)據(jù),等待CPUCPU讀入。讀入。二、二、 MCS-51MCS-51系列單片機(jī)串行口的結(jié)構(gòu)系列單片機(jī)串行口的結(jié)構(gòu)1 1、組成:、組成:發(fā)送數(shù)據(jù)緩沖器:只能寫入,不能讀出接收數(shù)據(jù)緩沖器:只能讀出,不能寫入發(fā)送控制器接收控制器輸出控制門輸入移位寄存器發(fā)送緩沖器和接收緩沖器用同一符號(hào)S

14、BUF,地址99H,用指令判斷選哪個(gè)。 MOV SBUFMOV SBUF,A A -將數(shù)據(jù)寫入發(fā)送緩沖器將數(shù)據(jù)寫入發(fā)送緩沖器 MOV AMOV A,SBUFSBUF -從接收緩沖器讀取數(shù)據(jù)從接收緩沖器讀取數(shù)據(jù)兩個(gè)專用寄存器:SCONSCON:存放串行口的控制和狀態(tài)信息 PCONPCON:改變串行通信波特率51單片機(jī)串行口是可編程接口,對(duì)它初始化只用兩個(gè)控制字分別寫入這兩個(gè)寄存器即可。發(fā)送發(fā)送SBUFSBUF(99H99H)發(fā)送控制器發(fā)送控制器接收控制器接收控制器輸入移位寄存器輸入移位寄存器串串行行控控制制寄寄存存器器(98H98H)門門定定時(shí)時(shí)器器T1T111接收接收SBUFSBUF(99H9

15、9H)串行口中斷串行口中斷8 88 88 8TXD(P3.1)TXD(P3.1)RXD(P3.0)RXD(P3.0)TITIRIRI內(nèi)部總線內(nèi)部總線圖5-25 串行口結(jié)構(gòu)框圖SM0 SM0 SM1SM1工作模工作模式式 功功 能能 說說 明明 波波 特特 率率0 00 0模式模式0 0同步移位寄存器方式(用于同步移位寄存器方式(用于I/OI/O口擴(kuò)展)口擴(kuò)展)f foscosc/12/12 0 10 1模式模式1 11010位異步接收發(fā)送位異步接收發(fā)送 可變可變( (由定時(shí)器控制由定時(shí)器控制) ) 1 01 0模式模式2 21111位異步接收發(fā)送位異步接收發(fā)送 f foscosc/32/32或

16、或f foscosc/64/641 11 1模式模式3 31111位異步接收發(fā)送位異步接收發(fā)送 可變可變( (由定時(shí)器控制由定時(shí)器控制) )SM0 SM1 SM2 REN TB8 RB8 TI RISM0 SM1 SM2 REN TB8 RB8 TI RID7D7D5D5D6D6D4D4D3D3D2D2D1D1D0D0二、二、 MCS-51MCS-51單片機(jī)串行口的控制單片機(jī)串行口的控制1 1串行口控制寄存器串行口控制寄存器SCONSCON串行口的工作模式的選擇、接收/發(fā)送控制及串行口的狀態(tài)信息由它控制和指示字節(jié)地址98H,可位尋址,位地址為98H9FH。SM0SM0、SM1SM1:工作模式選

17、擇位??蛇x擇4種工作模式。 表5.10串行口的工作模式SM2SM2:多機(jī)通信控制位:多機(jī)通信控制位(主要用于模式(主要用于模式2 2和模式和模式3 3)在模式在模式2 2和模式和模式3 3:SM2=1SM2=1,在主從式多機(jī)通信中,在主從式多機(jī)通信中,SM2SM2用于控制從機(jī)的接收。用于控制從機(jī)的接收。l設(shè)設(shè)SM2=1SM2=1:從機(jī):從機(jī)( (接收機(jī)接收機(jī)) )只接收地址幀;只接收地址幀;( (利用收到的利用收到的RB8RB8來控制是否激活來控制是否激活RI)RI)若接收到的若接收到的第第9 9位數(shù)據(jù)(位數(shù)據(jù)(RB8RB8)為)為0 0時(shí)(數(shù)據(jù)幀),時(shí)(數(shù)據(jù)幀),不激活接收中斷標(biāo)志不激活接收

18、中斷標(biāo)志RIRI(即(即RI=0RI=0),并且將接收到的前),并且將接收到的前8 8位數(shù)據(jù)丟棄;位數(shù)據(jù)丟棄;只有當(dāng)只有當(dāng)?shù)诘? 9位數(shù)據(jù)(位數(shù)據(jù)(RB8RB8)為)為1 1時(shí)(地址幀),時(shí)(地址幀),才將接收到的前才將接收到的前8 8位數(shù)據(jù)送入位數(shù)據(jù)送入SBUFSBUF中,并激活中,并激活RIRI,以產(chǎn)生中斷申請(qǐng)。,以產(chǎn)生中斷申請(qǐng)。l設(shè)設(shè)SM2=0SM2=0:從機(jī):從機(jī)( (接收機(jī)接收機(jī)) )可接收所有信息;不論收到的可接收所有信息;不論收到的RB8RB8是是0 0還是還是1 1,均可以使,均可以使收到的數(shù)據(jù)進(jìn)入收到的數(shù)據(jù)進(jìn)入SBUFSBUF,并激活,并激活RIRI。(即此時(shí)(即此時(shí)RB8R

19、B8不具有控制不具有控制RIRI激活的功能)激活的功能)在模式在模式1 1:若若SM2=1SM2=1,則只有接收到有效停止位時(shí),則只有接收到有效停止位時(shí),RIRI才置才置1 1。在模式在模式0 0:SM2SM2必須是必須是0 0。RENREN:允許接收控制位:允許接收控制位 (串行接收的開關(guān))(串行接收的開關(guān))REN=1REN=1時(shí),允許接收數(shù)據(jù);時(shí),允許接收數(shù)據(jù);REN=0REN=0時(shí),則禁止接收;時(shí),則禁止接收;該位由軟件置該位由軟件置1 1或清或清0 0。TB8TB8:發(fā)送數(shù)據(jù)第:發(fā)送數(shù)據(jù)第9 9位。位。該位根據(jù)發(fā)送數(shù)據(jù)的需要由軟件置位或復(fù)位。該位根據(jù)發(fā)送數(shù)據(jù)的需要由軟件置位或復(fù)位。在模

20、式在模式2 2和模式和模式3 3中:中:TB8TB8是要發(fā)送數(shù)據(jù)的第是要發(fā)送數(shù)據(jù)的第9 9位。位。在多機(jī)通信時(shí):在多機(jī)通信時(shí):作為作為發(fā)送地址幀或數(shù)據(jù)幀的標(biāo)志位發(fā)送地址幀或數(shù)據(jù)幀的標(biāo)志位。一般約定:發(fā)送。一般約定:發(fā)送地址幀地址幀時(shí),時(shí),設(shè)置設(shè)置TB8=1TB8=1;發(fā)送;發(fā)送數(shù)據(jù)幀數(shù)據(jù)幀時(shí),設(shè)置時(shí),設(shè)置TB8=0TB8=0。在單機(jī)通信時(shí):在單機(jī)通信時(shí):它也可作奇偶校驗(yàn)位。它也可作奇偶校驗(yàn)位。在模式在模式0 0或模式或模式1 1中:中:該位未用。該位未用。RB8RB8:接收數(shù)據(jù)第:接收數(shù)據(jù)第9 9位。位。在模式在模式2 2和模式和模式3 3中:中:RB8RB8是接收數(shù)據(jù)的第是接收數(shù)據(jù)的第9 9

21、位。位。在多機(jī)通信時(shí):在多機(jī)通信時(shí):也可以是也可以是約定的地址約定的地址/ /數(shù)據(jù)標(biāo)志位數(shù)據(jù)標(biāo)志位 ,可根據(jù),可根據(jù)RB8RB8被置位的情況對(duì)被置位的情況對(duì)接收數(shù)據(jù)進(jìn)行某種判斷,若接收數(shù)據(jù)進(jìn)行某種判斷,若RB8=1RB8=1,說明收到的數(shù)據(jù)為,說明收到的數(shù)據(jù)為地址幀地址幀;RB8=0RB8=0,收到的數(shù),收到的數(shù)據(jù)為據(jù)為數(shù)據(jù)幀數(shù)據(jù)幀。 在單機(jī)通信時(shí):在單機(jī)通信時(shí):它可以是約定的奇偶校驗(yàn)位。它可以是約定的奇偶校驗(yàn)位。在模式在模式1 1時(shí):時(shí):若若SM2=0SM2=0(即不是多機(jī)通信情況),則(即不是多機(jī)通信情況),則RB8RB8是已接收到的停止位。是已接收到的停止位。在模式在模式0 0中:中:該

22、位未用。該位未用。TITI:發(fā)送中斷標(biāo)志。:發(fā)送中斷標(biāo)志。在一幀數(shù)據(jù)發(fā)送結(jié)束時(shí)由硬件置位。在一幀數(shù)據(jù)發(fā)送結(jié)束時(shí)由硬件置位。在方式在方式0 0時(shí),當(dāng)串行發(fā)送第時(shí),當(dāng)串行發(fā)送第8 8位數(shù)據(jù)結(jié)束時(shí),或在其它方式,串行發(fā)送停止位的開始時(shí),由位數(shù)據(jù)結(jié)束時(shí),或在其它方式,串行發(fā)送停止位的開始時(shí),由內(nèi)部硬件使內(nèi)部硬件使TITI置置1 1,向,向CPUCPU發(fā)中斷申請(qǐng)。發(fā)中斷申請(qǐng)。lTI=1TI=1表示表示“發(fā)送緩沖器已空發(fā)送緩沖器已空”,通知通知CPUCPU可以發(fā)送下一幀數(shù)據(jù)??梢园l(fā)送下一幀數(shù)據(jù)。lTITI位可作為查詢;也可作為位可作為查詢;也可作為中斷申請(qǐng)標(biāo)志位。中斷申請(qǐng)標(biāo)志位。lTITI不會(huì)自動(dòng)復(fù)位,必

23、須在中斷服務(wù)程序中,由不會(huì)自動(dòng)復(fù)位,必須在中斷服務(wù)程序中,由軟件清軟件清0 0。RIRI:接收中斷標(biāo)志。:接收中斷標(biāo)志。在接收到一幀有效數(shù)據(jù)后由硬件置位。在接收到一幀有效數(shù)據(jù)后由硬件置位。在方式在方式0 0時(shí),當(dāng)串行接收第時(shí),當(dāng)串行接收第8 8位數(shù)據(jù)結(jié)束時(shí),或在其它方式,串行接收停止位的中間時(shí),由位數(shù)據(jù)結(jié)束時(shí),或在其它方式,串行接收停止位的中間時(shí),由內(nèi)部硬件使內(nèi)部硬件使RIRI置置1 1,向,向CPUCPU發(fā)中斷申請(qǐng)。發(fā)中斷申請(qǐng)。lRI=1RI=1表示一幀數(shù)據(jù)接收完畢,并已裝入接收緩沖器中,即表示表示一幀數(shù)據(jù)接收完畢,并已裝入接收緩沖器中,即表示“接收緩沖器已接收緩沖器已滿滿”,通知通知CPU

24、CPU可取走該數(shù)據(jù)??扇∽咴摂?shù)據(jù)。l該位可作為查詢,也可作為該位可作為查詢,也可作為中斷申請(qǐng)標(biāo)志位。中斷申請(qǐng)標(biāo)志位。l同樣同樣RIRI不會(huì)自動(dòng)復(fù)位,必須在中斷服務(wù)程序中,由不會(huì)自動(dòng)復(fù)位,必須在中斷服務(wù)程序中,由軟件清軟件清0 0。SMOD GF1 GF0 PD IDLSMOD GF1 GF0 PD IDLD7D7D5D5D6D6D4D4D3D3D2D2D1D1D0D02 2電源控制寄存器電源控制寄存器PCONPCON字節(jié)地址為87H,不可位尋址。低4位:CHMOS器件的掉電方式控制位。SMODSMOD:波特率倍增位,:波特率倍增位,在模式1、2、3中:SMOD=1,波特率提高1倍;SMOD=0

25、,波特率不增倍;復(fù)位時(shí),PCON=00H。三、波特率設(shè)計(jì)三、波特率設(shè)計(jì)串行口有串行口有4 4種工作模式,通信時(shí)收發(fā)雙方對(duì)傳輸?shù)臄?shù)據(jù)速率有一定約定,由于輸入種工作模式,通信時(shí)收發(fā)雙方對(duì)傳輸?shù)臄?shù)據(jù)速率有一定約定,由于輸入的移位時(shí)鐘的來源不同,各種方式的波特率計(jì)算公式也不相同,對(duì)應(yīng)著的移位時(shí)鐘的來源不同,各種方式的波特率計(jì)算公式也不相同,對(duì)應(yīng)著3 3種波特率。種波特率。1 1模式模式0 0的波特率的波特率波特率固定:每個(gè)機(jī)器周期產(chǎn)生一個(gè)移位時(shí)鐘,可發(fā)送或接收一位數(shù)據(jù),且不受SMOD位的影響。即:模式0的波特率=fosc/12 (f foscosc是振蕩器頻率)是振蕩器頻率)2 2模式模式2 2的波特

26、率的波特率由系統(tǒng)的振蕩頻率fosc和SMOD共同確定,即: 模式2的波特率=2SMODfosc /643 3模式模式1 1和模式和模式3 3的波特率的波特率模式1和模式3的移位時(shí)鐘由定時(shí)器T1的溢出率決定,故波特率由T1的溢出率與SMOD值共同決定,即:模式1和模式3的波特率= 2SMODT1的溢出率/32SMOD+SMOD+1 11212foscfosc(SMOD+1)384波特率波特率T1T1做波特率發(fā)生器使用:做波特率發(fā)生器使用:T1作為波特率發(fā)生器時(shí),最典型的用法是使T1工作在模式2(初值自動(dòng)加載)、定時(shí)方式,若計(jì)數(shù)初值為X,則每經(jīng)過”256X”個(gè)機(jī)器周期,定時(shí)器T1就會(huì)產(chǎn)生一次溢出;

27、溢出周期為: (256X)溢出率為溢出周期的倒數(shù),所以波特率=此時(shí),定時(shí)器T1工作在模式2時(shí)的初值應(yīng)為: X=(256 )2SMOD32fosc12(256-X)2 2SMODSMODl在單片機(jī)的應(yīng)用中,常用的晶振頻率為:在單片機(jī)的應(yīng)用中,常用的晶振頻率為:12MHz12MHz和和11.0592MHz11.0592MHz。所。所以,選用的波特率也相對(duì)固定。以,選用的波特率也相對(duì)固定。l常用的串行口波特率以及各參數(shù)的關(guān)系如表所示。常用的串行口波特率以及各參數(shù)的關(guān)系如表所示。例 已知51系列單片機(jī)系統(tǒng)晶振頻率為11.0592 MHz,選用定時(shí)器T1工作模式2做波特率發(fā)生器,波特率為2400波特,求

28、初值X。解:設(shè)波特率選擇位SMOD=0,則有: X=25611.0592*106(0+1)/(320*2400)=244=F4H 所以,(TH1)=(TL1)=F4H。 系統(tǒng)晶振頻率選為11.0592 MHz是為了使初值為整數(shù),從而產(chǎn)生精確的波特率。5.4.35.4.3串行口工作模式串行口工作模式一、模式一、模式0 0l模式0時(shí),串行口為同步移位寄存器輸入輸出方式同步移位寄存器輸入輸出方式,外接移位寄存器用于擴(kuò)展I/O口。當(dāng)串行口別無他用時(shí),可用串行口模式0擴(kuò)展并行的I/O口。l模式0以8 8位為一幀數(shù)據(jù),沒有起始位和停止位位為一幀數(shù)據(jù),沒有起始位和停止位,發(fā)送和接收均為8位數(shù)據(jù),低位在前、高

29、位在后低位在前、高位在后。 l8位串行數(shù)據(jù)的輸入或輸出都是通過RXDRXD(P3.0P3.0)端)端,而TXDTXD(P3.1P3.1)端)端用于送出同步移位脈沖,作為外接器件的同步移位信號(hào)。l輸出時(shí)將發(fā)送數(shù)據(jù)緩沖器的內(nèi)容串行地移到外部的移位寄存器,輸入時(shí)將外部移位寄存器內(nèi)容移入內(nèi)部的輸入移位寄存器,然后寫到內(nèi)部的接收數(shù)據(jù)緩沖器。l波特率固定為fosc/12。l模式0中,SCON寄存器中的SM2SM2、RB8RB8、TB8TB8不起作用,可設(shè)為0。k發(fā)送工作過程:發(fā)送工作過程:模式0的發(fā)送是在TI=0的情況下,由一條寫發(fā)送緩沖器的指令開始。MOV SBUF,ACPU執(zhí)行完該指令,串行口即將8位

30、數(shù)據(jù)從RXD端送出(低位在前),同時(shí),在TXD端發(fā)出同步移位脈沖。8位數(shù)據(jù)發(fā)送完畢后,由硬件置位TI=1??赏ㄟ^查詢TI位來確定是否發(fā)送完一組數(shù)據(jù),TI=1表示發(fā)送緩沖器已空;TI=1也可作為中斷請(qǐng)求信號(hào),申請(qǐng)串行口發(fā)送中斷。當(dāng)要發(fā)送下一組數(shù)據(jù)時(shí),需用軟件使TI清0,然后才可發(fā)送下一組數(shù)據(jù)。k接收工作過程:接收工作過程:模式0的接收是在RI=0和REN=1的條件下,啟動(dòng)串行口接收。接收數(shù)據(jù)由RXD端輸入(低位在前),TXD端仍發(fā)出同步移位脈沖。接收到8位數(shù)據(jù)以后,由硬件使RI=1??赏ㄟ^查詢RI位來確定是否接收到一組數(shù)據(jù),RI=1表示接收數(shù)據(jù)已裝入接收緩沖器,可以由CPU用指令讀取;RI=1也

31、可作為中斷請(qǐng)求信號(hào),申請(qǐng)串行口接收中斷。當(dāng)CPU讀取數(shù)據(jù)后,需用軟件清RI,以準(zhǔn)備接收下一組數(shù)據(jù)。擴(kuò)展并行輸出口擴(kuò)展并行輸出口n在模式0時(shí)外接一個(gè)串入/并出的移位寄存器,就可以擴(kuò)展一個(gè)8位并行輸出口。所用的移位寄存器應(yīng)該帶有輸出允許控制端,這樣可以避免在數(shù)據(jù)串行輸入時(shí),并行輸出端出現(xiàn)不穩(wěn)定的輸出。采用串入采用串入/ /并出移位寄存器并出移位寄存器CD4094CD4094(也可用(也可用74LS16474LS164)(1 1)先對(duì))先對(duì)SCONSCON寄存器初始化,進(jìn)行工作模式設(shè)置寄存器初始化,進(jìn)行工作模式設(shè)置 模式模式0 0的設(shè)置:只把的設(shè)置:只把00H00H送入送入SCONSCON即可。即可

32、。(2 2)數(shù)據(jù)輸出:)數(shù)據(jù)輸出: 中斷方式:中斷方式:TI=1TI=1,產(chǎn)生中斷申請(qǐng),產(chǎn)生中斷申請(qǐng),可采用可采用 中斷后才發(fā)下一組數(shù)據(jù)。中斷后才發(fā)下一組數(shù)據(jù)。 查詢方式:查詢方式:TI=0TI=0,繼續(xù)查詢;,繼續(xù)查詢; TI=1TI=1,結(jié)束查詢,發(fā)下一組數(shù)據(jù)。,結(jié)束查詢,發(fā)下一組數(shù)據(jù)。80518051P1.0P1.0TXDTXDRXDRXDCD4094CD4094DATADATACLKCLKSTBSTB并行輸出并行輸出STBSTB:輸出允許控制端:輸出允許控制端STB=1STB=1,打開輸出控制門,打開輸出控制門,輸出輸出例例5.65.6 用8751串行口外接CD4094擴(kuò)展8位并行輸出

33、口,8位輸出端的各位都接一個(gè)發(fā)光二極管。要求編程實(shí)現(xiàn):發(fā)光二極管從左到右以一定延遲輪流點(diǎn)亮,并不斷循環(huán)。假設(shè)發(fā)光二極管為共陰極,則電路連接如圖5-26所示。89C51解: 數(shù)據(jù)的串行發(fā)送采用查詢方式,顯示的延遲由數(shù)據(jù)的串行發(fā)送采用查詢方式,顯示的延遲由延時(shí)程序延時(shí)程序DELAYDELAY實(shí)現(xiàn)。編程如下:實(shí)現(xiàn)。編程如下: ORG 0200H ORG 0200H BFS0BFS0:MOV SCON MOV SCON ,#00H #00H ;串行口模式;串行口模式0 0的初始化的初始化 CLR ES CLR ES ;禁止串行中斷;禁止串行中斷 MOV A MOV A ,#80H #80H ;擬先點(diǎn)亮

34、最左邊一位;擬先點(diǎn)亮最左邊一位 LOOPLOOP:CLR P1.0 CLR P1.0 ;關(guān)閉并行輸出;關(guān)閉并行輸出 MOV SBUF MOV SBUF ,A A ;數(shù)據(jù)送;數(shù)據(jù)送SBUF,SBUF,啟動(dòng)串行輸出啟動(dòng)串行輸出 JNB TI JNB TI ,$ $ ;查詢;查詢TI=0TI=0,未發(fā)送完等待,未發(fā)送完等待 SETB P1.0 SETB P1.0 ;TI=1,TI=1,發(fā)送完啟動(dòng)并行輸出發(fā)送完啟動(dòng)并行輸出 ACALL DELAY ACALL DELAY ;調(diào)延時(shí)程序;調(diào)延時(shí)程序 CLR TI CLR TI ;軟件清;軟件清TI TI RR A RR A ;右移一位,準(zhǔn)備顯示下一位;右

35、移一位,準(zhǔn)備顯示下一位 SJMP LOOP SJMP LOOP ;轉(zhuǎn)移,繼續(xù)發(fā)送;轉(zhuǎn)移,繼續(xù)發(fā)送 RETRET擴(kuò)展并行輸入口:擴(kuò)展并行輸入口:在模式在模式0 0時(shí)時(shí), ,外接一個(gè)并入外接一個(gè)并入/ /串出的移位寄存器串出的移位寄存器, ,就可就可以擴(kuò)展一個(gè)以擴(kuò)展一個(gè)8 8位并行輸入口。位并行輸入口。如圖外接一個(gè)并入如圖外接一個(gè)并入/ /串出的移位寄存器串出的移位寄存器CD4014CD4014(也可(也可用用74LS16574LS165)數(shù)據(jù)輸入:數(shù)據(jù)輸入: 中斷方式:中斷方式:RI=1RI=1,產(chǎn)生中斷申請(qǐng),產(chǎn)生中斷申請(qǐng),可采用可采用 中斷后才讀取數(shù)據(jù)。中斷后才讀取數(shù)據(jù)。 查詢方式:查詢方式:

36、RI=0RI=0,繼續(xù)查詢;,繼續(xù)查詢; RI=1RI=1,結(jié)束查詢,讀取數(shù)據(jù)。,結(jié)束查詢,讀取數(shù)據(jù)。89518951P1.0P1.0TXDTXDRXDRXDCD4014CD4014Q8Q8CLKCLK并行輸入并行輸入P/SP/SP/SP/S:預(yù)置:預(yù)置/ /移位控制端移位控制端P/S=1P/S=1:8 8位數(shù)據(jù)并行置入移位數(shù)據(jù)并行置入移位寄存器位寄存器P/S=0P/S=0:8 8位數(shù)據(jù)串行移位輸出位數(shù)據(jù)串行移位輸出 例例 用89C51串行口外接CD4014擴(kuò)展8位并行輸入口,輸入數(shù)據(jù)由8個(gè)開關(guān)提供,另有一個(gè)開關(guān)S提供聯(lián)絡(luò)信號(hào),電路連接如圖6-7所示。當(dāng)S=0時(shí),要求輸入數(shù)據(jù),并連續(xù)輸入8組數(shù)

37、據(jù),讀入的數(shù)據(jù)轉(zhuǎn)存到內(nèi)部RAM 40H開始的單元中。試編程實(shí)現(xiàn)。 解 : 用串行口模式0接收數(shù)據(jù),初始化時(shí)應(yīng)使REN為1,采用查詢方式輸入數(shù)據(jù)。89C51 ORG 0300HORG 0300HBJS0BJS0:JB P1.0 JB P1.0 ,LP2 LP2 ;開關(guān);開關(guān)K K未閉合,轉(zhuǎn)返回未閉合,轉(zhuǎn)返回 MOV R6 MOV R6 ,#08H #08H ;K K閉合,讀入次數(shù)送閉合,讀入次數(shù)送R6 R6 MOV R1 MOV R1 ,#40H #40H ;存放數(shù)據(jù)的首地址送;存放數(shù)據(jù)的首地址送R1 R1 CLR ES CLR ES ;禁止串行中斷;禁止串行中斷 MOV SCON MOV SC

38、ON ,#10H #10H ;設(shè)模式;設(shè)模式0,RI0,RI清清0,0,啟動(dòng)接收啟動(dòng)接收LPLP: SETB P1.1 SETB P1.1 ;P/S=1P/S=1,并行置入開關(guān)數(shù)據(jù),并行置入開關(guān)數(shù)據(jù) CLR P1.1 CLR P1.1 ;P/S=0P/S=0,開始串行,開始串行 LP1LP1:JNB RI,LP1 JNB RI,LP1 ;查詢;查詢RI,RI=0,RI,RI=0,未接收完等待未接收完等待 CLR RI CLR RI ;接收完;接收完, ,清清RI,RI,準(zhǔn)備接收下一個(gè)準(zhǔn)備接收下一個(gè) MOV A MOV A ,SBUF SBUF ;讀取數(shù)據(jù)送入累加器;讀取數(shù)據(jù)送入累加器 MOV

39、R1 MOV R1 ,A A ;送內(nèi)部;送內(nèi)部RAMRAM區(qū)區(qū) INC R1 INC R1 ;修改地址,指向下一個(gè)單元;修改地址,指向下一個(gè)單元 DJNZ R6 DJNZ R6 ,LP LP ;計(jì)數(shù)器減;計(jì)數(shù)器減1,1,不為不為0,0,轉(zhuǎn)繼續(xù)接收轉(zhuǎn)繼續(xù)接收LP2LP2:RET RET ;接收完,子程序返回;接收完,子程序返回二、二、 模式模式1 1l模式1是10位數(shù)據(jù)的串行異步通信方式。lTXD為數(shù)據(jù)發(fā)送端,RXD為數(shù)據(jù)接收端。l波特率可變,由定時(shí)器T1的溢出率及SMOD位決定。l一幀數(shù)據(jù)10位:1位起始位,8位數(shù)據(jù)位,1位停止位,其幀格式為:k模式模式1 1的發(fā)送:的發(fā)送:在TI=0時(shí),由M

40、OV SBUF,A指令啟動(dòng)。啟動(dòng)發(fā)送后,串行口自動(dòng)地插入一位起始位(邏輯0),接著是8位數(shù)據(jù)(低位在前),然后又插入一位停止位(邏輯1),在發(fā)送移位脈沖作用下,依次由TXD端發(fā)出。一幀信息發(fā)完之后,即插入停止位后,由硬件使TI置1,用以通知CPU可以發(fā)送下一幀數(shù)據(jù),TXD端的信號(hào)自動(dòng)維持為1。k模式模式1 1的接收:的接收:在REN置1的條件下,串行口采樣引腳RXD。在無信號(hào)時(shí),RXD端的狀態(tài)為1,當(dāng)采樣到1至0的跳變時(shí),確認(rèn)是起始位“0”,就開始接收一幀數(shù)據(jù)。在接收移位脈沖的控制下,把收到的數(shù)據(jù)一位一位地送入輸入移位寄存器,直到9位數(shù)據(jù)全部收齊(包括一位停止位)模式1接收時(shí),應(yīng)先用軟件清RI

41、或SM2標(biāo)志。三、模式三、模式2 2l模式2是11位串行異步通信方式。lTXD為數(shù)據(jù)發(fā)送端,RXD為數(shù)據(jù)接收端。l一幀數(shù)據(jù)11位:1位起始位、8位數(shù)據(jù)位、1位可編程位、1位停止位,其幀格式為:l模式2的波特率有兩種:一種是fosc/32;另一種是fosc/64。k模式模式2 2的發(fā)送:的發(fā)送:l包括9位有效數(shù)據(jù),在啟動(dòng)發(fā)送之前,應(yīng)把要發(fā)送的第9位數(shù)值裝入SCON寄存器中的TB8位。(是由用戶根據(jù)通信協(xié)議用軟件來設(shè)置)l啟動(dòng)發(fā)送:設(shè)置好TB8的值以后,在TI=0的條件下,執(zhí)行一條MOV SBUF,A 指令就可以。l串行口能自動(dòng)把TB8取出,并裝入到第9位數(shù)據(jù)的位置,逐一發(fā)送出去。l發(fā)送完畢,由硬

42、件使TI置1。(這些過程與模式1基本相同) 模式2的發(fā)送: 發(fā)送開始時(shí),先把起始位0輸出到TXD引腳,然后發(fā)送移位寄存器的輸出位(D0)到TXD引腳。每一個(gè)移位脈沖都使輸出移位寄存器的各位右移一位,并由TXD引腳輸出。 第一次移位時(shí),停止位“1”移入輸出移位寄存器的第9位上 ,以后每次移位,左邊都移入0。當(dāng)停止位移至輸出位時(shí),左邊其余位全為0,檢測(cè)電路檢測(cè)到這一條件時(shí),使控制電路進(jìn)行最后一次移位,并置TI=1,向CPU請(qǐng)求中斷。 k模式模式2 2的接收:的接收:模式2的接收與模式1不同之處是要接收9位有效數(shù)據(jù)。在模式1時(shí)是把停止位當(dāng)作第9位數(shù)據(jù)來處理;在模式2(或模式3)中存在著真正的第9位數(shù)

43、據(jù)。l因此,模式2接收數(shù)據(jù)真正有效的條件為:(1) RI=0;(2) SM2=0或收到的第9位數(shù)據(jù)為1。第一個(gè)條件是提供第一個(gè)條件是提供“接收緩沖器已空接收緩沖器已空”的信息,即的信息,即CPUCPU已把已把SBUFSBUF中上次收到的數(shù)據(jù)讀走,中上次收到的數(shù)據(jù)讀走,允許再次寫入。允許再次寫入。第二個(gè)條件則提供了根據(jù)第二個(gè)條件則提供了根據(jù)SM2SM2的狀態(tài)和所接收到的第的狀態(tài)和所接收到的第9 9位狀態(tài)來決定接收數(shù)據(jù)是否有效。位狀態(tài)來決定接收數(shù)據(jù)是否有效。u若第9位是一般的奇偶校驗(yàn)位(單機(jī)通信時(shí)),應(yīng)令SM2=0,以保證可靠的接收;u若第9位作地址/數(shù)據(jù)標(biāo)志位(多機(jī)通信時(shí)),應(yīng)令SM2=1,這樣

44、。當(dāng)?shù)?位為1時(shí),表明接收的信息為地址幀,串行口將接收該地址信號(hào)。n若上述兩個(gè)條件成立,接收的前8位數(shù)據(jù)進(jìn)入SBUF,以準(zhǔn)備讓CPU讀取,接收的第9位數(shù)據(jù)進(jìn)入RB8,同時(shí)置位RI。n若以上條件不成立,則這次接收無效,放棄接收結(jié)果,即8位數(shù)據(jù)不裝入SBUF,也不置位RI。 模式2的接收: 接收時(shí),數(shù)據(jù)從右邊移入輸入移位寄存器,在起始位0移到最左邊時(shí),控制電路進(jìn)行最后一次移位。當(dāng)RI=0,且SM2=0(或接收到的第9位數(shù)據(jù)為1)時(shí),接收到的數(shù)據(jù)裝入接收緩沖器SBUF和RB8(接收數(shù)據(jù)的第9位),置RI=1,向CPU請(qǐng)求中斷。如果條件不滿足,則數(shù)據(jù)丟失,且不置位RI,繼續(xù)搜索RXD引腳的負(fù)跳變。四、

45、模式四、模式3 3l模式3同樣是11位串行異步通信方式。l其一幀數(shù)據(jù)格式,接收、發(fā)送過程與模式2完全相同。l與模式2不同的僅在于波特率,模式2的波特率只有固定的兩種,而模式3的波特率由定時(shí)器T1的溢出率及SMOD決定,這一點(diǎn)與模式1相同。5.4.4 5.4.4 串行口應(yīng)用舉例串行口應(yīng)用舉例利用串行口控制寄存器SCON中的有關(guān)控制位,可以實(shí)現(xiàn)擴(kuò)展I/O口、雙機(jī)通信以及多機(jī)通信。一、用串行口擴(kuò)展一、用串行口擴(kuò)展I/OI/O口口l串行口的模式0不屬于通信,主要用途可以和外接的移位寄存器結(jié)合來進(jìn)行并行I/O口的擴(kuò)展。當(dāng)串行口別無它用時(shí),則可利用串行口模式0來擴(kuò)展并行I/O口。l優(yōu)點(diǎn):這種方法不占用片外

46、RAM地址,而且還能簡(jiǎn)化單片機(jī)系統(tǒng)的硬件結(jié)構(gòu)。l缺點(diǎn):操作速度較慢。1.1.擴(kuò)展并行輸出口擴(kuò)展并行輸出口在模式0時(shí)外接一個(gè)串入串入/ /并出的移位寄存器并出的移位寄存器,就可以擴(kuò)展一個(gè)8位并行輸出口。所用的移位寄存器應(yīng)該帶有輸出允許控制端輸出允許控制端,這樣可以避免在數(shù)據(jù)串行輸入時(shí),并行輸出端出現(xiàn)不穩(wěn)定的輸出。STB:輸出允許控制端STB=1,打開輸出控制門,實(shí)現(xiàn)并行輸出采用串入采用串入/ /并出移位寄存器并出移位寄存器CD4094CD4094(也可用(也可用74LS16474LS164)。)。用串行口擴(kuò)展用串行口擴(kuò)展I/OI/O口:口:(1)先對(duì)SCON寄存器初始化,進(jìn)行工作模式設(shè)置 模式0

47、的設(shè)置:只把00H送入SCON即可。(2)數(shù)據(jù)輸出: 中斷方式:TI=1,產(chǎn)生中斷申請(qǐng),可采用中斷后才發(fā)下一組數(shù)據(jù)。 查詢方式:TI=0,繼續(xù)查詢; TI=1,結(jié)束查詢,發(fā)下一組數(shù)據(jù)。例6-2用8951串行口外接CD4094擴(kuò)展8位并行輸出口,8位輸出端的各位都接一個(gè)發(fā)光二極管。要求編程實(shí)現(xiàn):發(fā)光二極管從左到右以一定延遲輪流點(diǎn)亮,并不斷循環(huán)。假設(shè)發(fā)光二極管為共陰極,則電路連接如下所示。89C51解:數(shù)據(jù)的串行發(fā)送采用查詢方式,顯示的延遲由延時(shí)程序DELAY實(shí)現(xiàn)。編程如下: ORG 0200H BFS0: MOV SCON,#00H ;串行口模式0的初始化 CLR ES ;禁止串行中斷 MOV

48、A,#80H ;擬先點(diǎn)亮最左邊一位 LOOP: CLR P1.0 ;關(guān)閉并行輸出 MOV SBUF,A ;數(shù)據(jù)送SBUF,啟動(dòng)串行輸出 JNB TI,$ ;查詢TI=0,未發(fā)送完等待 SETB P1.0 ;TI=1,發(fā)送完啟動(dòng)并行輸出 ACALL DELAY ;調(diào)延時(shí)程序 CLR TI ;軟件清TI RR A ;右移一位,準(zhǔn)備顯示下一位 SJMP LOOP ;轉(zhuǎn)移,繼續(xù)發(fā)送 RET80518051P1.0P1.0TXDTXDRXDRXDCD4014CD4014Q8Q8CLKCLK并行輸入并行輸入P/SP/SP/S:預(yù)置/移位控制端P/S=1:8位數(shù)據(jù)并行置入移位寄存器P/S=0:8位數(shù)據(jù)串行移

49、位輸出2 2、擴(kuò)展并行輸入口、擴(kuò)展并行輸入口模式0時(shí),外接一個(gè)并入/串出的移位寄存器,就可以擴(kuò)展一個(gè)8位并行輸入口。如圖外接一個(gè)并入如圖外接一個(gè)并入/ /串出的移位寄存器串出的移位寄存器CD4014CD4014(也可用(也可用74LS16574LS165)數(shù)據(jù)輸入:數(shù)據(jù)輸入: 中斷方式:RI=1,產(chǎn)生中斷申請(qǐng),可采用 中斷后才讀取數(shù)據(jù)。 查詢方式:RI=0,繼續(xù)查詢; RI=1,結(jié)束查詢,讀取數(shù)據(jù)。例6-3用8751串行口外接CD4014擴(kuò)展8位并行輸入口,輸入數(shù)據(jù)由8個(gè)開關(guān)提供,另有一個(gè)開關(guān)S提供聯(lián)絡(luò)信號(hào),電路連接如下所示。當(dāng)S=0時(shí),要求輸入數(shù)據(jù),并連續(xù)輸入8組數(shù)據(jù),讀入的數(shù)據(jù)轉(zhuǎn)存到內(nèi)部R

50、AM 40H開始的單元中。試編程實(shí)現(xiàn)。解:用串行口模式0接收數(shù)據(jù),初始化時(shí)應(yīng)使REN為1,采用查詢方式輸入數(shù)據(jù)。 ORG 0300HBJS0:JB P1.0 ,LP2 ;開關(guān)K未閉合,轉(zhuǎn)返回 MOV R6,#08H ;K閉合,讀入次數(shù)送R6 MOV R1,#40H ;存放數(shù)據(jù)的首地址送R1 CLR ES ;禁止串行中斷 MOV SCON,#10H ;設(shè)模式0,RI清0,啟動(dòng)接收 LP: SETB P1.1 ;P/S=1,并行置入開關(guān)數(shù)據(jù) CLR P1.1 ;P/S=0,開始串行 LP1: JNB RI,LP1 ;查詢RI,RI=0,未接收完等待 CLR RI ;接收完,清RI,準(zhǔn)備接收下一個(gè)

51、MOV A,SBUF ;讀取數(shù)據(jù)送入累加器 MOV R1,A ;送內(nèi)部RAM區(qū) INC R1 ;修改地址,指向下一個(gè)單元 DJNZ R6,LP ;計(jì)數(shù)器減1,不為0,轉(zhuǎn)繼續(xù)接收LP2: RET ;接收完,子程序返回二、單片機(jī)雙機(jī)通信技術(shù)二、單片機(jī)雙機(jī)通信技術(shù)雙機(jī)通信也稱為點(diǎn)對(duì)點(diǎn)的異步通信。1.1.串行接口的硬件連接串行接口的硬件連接1 1)TTLTTL電平信號(hào)直接傳輸電平信號(hào)直接傳輸通信雙方傳輸距離近(小于5M),可將雙方的串行口直接連接,采用單片機(jī)自身的TTL電平直接傳輸信息。2 2)RS-232CRS-232C接口接口l通信雙方傳輸距離較近(小于15M),可采用RS-232C電平信號(hào)傳輸。

52、lRS-232C是EIA(美國電子工業(yè)協(xié)會(huì))1969年修訂RS-232C標(biāo)準(zhǔn)。RS-232C定義了數(shù)據(jù)終端設(shè)備(DTE)與數(shù)據(jù)通信設(shè)備(DCE)之間的物理接口標(biāo)準(zhǔn)。lRS-232C電氣特性:采用負(fù)邏輯邏輯邏輯“1”1”:-5-15V -5-15V 邏輯邏輯“0”0”:+5+15V +5+15V lTTL電平與單片機(jī)信號(hào)電平兼容:邏輯邏輯“1”1”:+2.4V +2.4V 邏輯邏輯“0”0”:0.4V0.4VlTTL電平與RS-232C信號(hào)電平不匹配,需連接轉(zhuǎn)換芯片,常用的轉(zhuǎn)換芯片:MC1488:長線傳輸驅(qū)動(dòng)器,完成TTL電平到RS-232C電平的轉(zhuǎn)換;MC1499:長線傳輸接收器,完成RS-2

53、32C電平到TTL電平的轉(zhuǎn)換;MAX232:完成發(fā)送轉(zhuǎn)換和接收轉(zhuǎn)換的雙重功能。RS-232C電平與TTL電平轉(zhuǎn)換驅(qū)動(dòng)電路RS-232C電平與TTL電平轉(zhuǎn)換驅(qū)動(dòng)電路采用RS-232C接口存在的問題傳輸距離短,傳輸速率低RS-232C總線標(biāo)準(zhǔn)受電容允許值的約束,使用時(shí)傳輸距離一般不要超過15米(線路條件好時(shí)也不超過幾十米)。最高傳送速率為20Kbps。有電平偏移RS-232C總線標(biāo)準(zhǔn)要求收發(fā)雙方共地。通信距離較大時(shí),收發(fā)雙方的地電位差別較大,在信號(hào)地上將有比較大的地電流并產(chǎn)生壓降??垢蓴_能力差RS-232C在電平轉(zhuǎn)換時(shí)采用單端輸入輸出,在傳輸過程中當(dāng)干擾和噪聲混在正常的信號(hào)中。為了提高信噪比,RS

54、-232C總線標(biāo)準(zhǔn)不得不采用比較大的電壓擺幅。3 3)RS-422ARS-422A接口接口lRS-422A輸出驅(qū)動(dòng)器為雙端平衡驅(qū)動(dòng)器。如果其中一條線為邏輯“1”狀態(tài),另一條線就為邏輯“0”,比采用單端不平衡驅(qū)動(dòng)對(duì)電壓的放大倍數(shù)大一倍。l差分電路能從地線干擾中拾取有效信號(hào),差分接收器可以分辨200mV以上電位差。若傳輸過程中混入了干擾和噪聲,由于差分放大器的作用,可使干擾和噪聲相互抵消。因此可以避免或大大減弱地線干擾和電磁干擾的影響。lRS-422A傳輸速率(90Kbps)時(shí),傳輸距離可達(dá)1200米。 lRS-485是RS-422A的變型:RS-422A用于全雙工,而RS-485則用于半雙工。l

55、RS-485是一種多發(fā)送器標(biāo)準(zhǔn),在通信線路上最多可以使用32 對(duì)差分驅(qū)動(dòng)器/接收器。如果在一個(gè)網(wǎng)絡(luò)中連接的設(shè)備超過32個(gè),還可以使用中繼器。 lRS-485的信號(hào)傳輸采用兩線間的電壓來表示邏輯1和邏輯0。由于發(fā)送方需要兩根傳輸線,接收方也需要兩根傳輸線。傳輸線采用差動(dòng)信道,所以它的干擾抑制性極好,又因?yàn)樗淖杩沟?,無接地問題,所以傳輸距離可達(dá)1200米,傳輸速率可達(dá)1Mbps。lRS-485是一點(diǎn)對(duì)多點(diǎn)的通信接口,一般采用雙絞線的結(jié)構(gòu)。l對(duì)于單片機(jī)可以通過芯片MAX485來完成TTL/RS-485的電平轉(zhuǎn)換。4 4)RS-485RS-485接口接口串行口工作之前,應(yīng)對(duì)其進(jìn)行初始化,主要是設(shè)置產(chǎn)

56、生波特率的定時(shí)串行口工作之前,應(yīng)對(duì)其進(jìn)行初始化,主要是設(shè)置產(chǎn)生波特率的定時(shí)器器1 1、串行口控制和中斷控制。具體步驟如下:、串行口控制和中斷控制。具體步驟如下: 確定確定T1T1的工作方式的工作方式(編程(編程TMODTMOD寄存器);寄存器); 計(jì)算計(jì)算T1T1的初值的初值,裝載,裝載TH1TH1、TL1TL1; 啟動(dòng)啟動(dòng)T1T1(編程(編程TCONTCON中的中的TR1TR1位);位); 確定確定串行口控制串行口控制(編程(編程SCONSCON寄存器);寄存器);1.1.串行口在中斷方式工作時(shí),要進(jìn)行中斷設(shè)置(編程串行口在中斷方式工作時(shí),要進(jìn)行中斷設(shè)置(編程IEIE、IPIP寄存器)。寄存

57、器)。2 2雙機(jī)通信軟件設(shè)計(jì)雙機(jī)通信軟件設(shè)計(jì)為確保通信成功為確保通信成功, ,通信雙方必須在軟件上有一系列的約定通信雙方必須在軟件上有一系列的約定, ,通常稱為軟件協(xié)議。通常稱為軟件協(xié)議。例例1:1:規(guī)定雙機(jī)通信的軟件協(xié)議如下:規(guī)定雙機(jī)通信的軟件協(xié)議如下:(1 1) 甲、乙雙方均工作在甲、乙雙方均工作在模式模式3 3;(2 2) 采用采用定時(shí)器定時(shí)器T1T1工作在工作在模式模式2 2做波特率發(fā)生器,波特率為做波特率發(fā)生器,波特率為2400 2400 波特波特,當(dāng)系統(tǒng)晶,當(dāng)系統(tǒng)晶振為振為6MHz6MHz時(shí),計(jì)數(shù)初值為時(shí),計(jì)數(shù)初值為F3HF3H,SMOD=1SMOD=1;(3 3) 發(fā)送方是把發(fā)送

58、方是把片內(nèi)片內(nèi)RAM 50HRAM 50H5FH5FH單元單元中的數(shù)據(jù)塊從串行口輸出。接收方則把接中的數(shù)據(jù)塊從串行口輸出。接收方則把接收的數(shù)據(jù)塊存入收的數(shù)據(jù)塊存入片外片外RAM 2000HRAM 2000H200FH200FH單元單元中;中;(4 4) 甲、乙雙方使用甲、乙雙方使用偶校驗(yàn)偶校驗(yàn),發(fā)送方通過對(duì),發(fā)送方通過對(duì)TB8TB8置置1 1或置或置0 0來保證發(fā)送偶數(shù)個(gè)來保證發(fā)送偶數(shù)個(gè)1 1,接,接收方接收到有效數(shù)據(jù)(收方接收到有效數(shù)據(jù)(8 8位數(shù)據(jù)加位數(shù)據(jù)加RB8RB8)后,要判斷是否為偶數(shù)個(gè))后,要判斷是否為偶數(shù)個(gè)1 1,若為偶數(shù),若為偶數(shù)1 1,表,表明明接收正確,置接收正確,置F0F

59、0標(biāo)志為標(biāo)志為0 0,否則,否則,接收出錯(cuò),置接收出錯(cuò),置F0F0標(biāo)志為標(biāo)志為1 1,然后返回;,然后返回;(5 5) 甲、乙雙方均可發(fā)送和接收,并且雙方均采用甲、乙雙方均可發(fā)送和接收,并且雙方均采用查詢方式查詢方式接收和發(fā)送數(shù)據(jù)。接收和發(fā)送數(shù)據(jù)。 奇奇/ /偶校驗(yàn)偶校驗(yàn)l奇奇/ /偶校驗(yàn)是數(shù)據(jù)傳送時(shí)采用的一種校正數(shù)據(jù)錯(cuò)誤的一種方式,分為偶校驗(yàn)是數(shù)據(jù)傳送時(shí)采用的一種校正數(shù)據(jù)錯(cuò)誤的一種方式,分為奇校驗(yàn)奇校驗(yàn)和偶校驗(yàn)兩種。和偶校驗(yàn)兩種。 l采用奇校驗(yàn),在傳送每一個(gè)字節(jié)的時(shí)候另外附加一位作為校驗(yàn)位,當(dāng)實(shí)際數(shù)據(jù)中采用奇校驗(yàn),在傳送每一個(gè)字節(jié)的時(shí)候另外附加一位作為校驗(yàn)位,當(dāng)實(shí)際數(shù)據(jù)中“1”1”的個(gè)的個(gè)數(shù)

60、為偶數(shù)的時(shí)候,這個(gè)校驗(yàn)位就是數(shù)為偶數(shù)的時(shí)候,這個(gè)校驗(yàn)位就是“1”1”,否則這個(gè)校驗(yàn)位就是,否則這個(gè)校驗(yàn)位就是“0”0”,在接收方收到數(shù)據(jù)時(shí),在接收方收到數(shù)據(jù)時(shí),將按照奇校驗(yàn)的要求檢測(cè)數(shù)據(jù)中將按照奇校驗(yàn)的要求檢測(cè)數(shù)據(jù)中“1”1”的個(gè)數(shù),如果是奇數(shù),表示傳送正確,否則表示傳送錯(cuò)的個(gè)數(shù),如果是奇數(shù),表示傳送正確,否則表示傳送錯(cuò)誤。誤。 l采用偶校驗(yàn),當(dāng)實(shí)際數(shù)據(jù)中采用偶校驗(yàn),當(dāng)實(shí)際數(shù)據(jù)中“1”1”的個(gè)數(shù)為偶數(shù)的時(shí)候,這個(gè)校驗(yàn)位就是的個(gè)數(shù)為偶數(shù)的時(shí)候,這個(gè)校驗(yàn)位就是“0”0”,否則這個(gè)校,否則這個(gè)校驗(yàn)位就是驗(yàn)位就是“1”1”,這樣就可以保證傳送數(shù)據(jù)滿足偶校驗(yàn)的要求。在接收方收到數(shù)據(jù)時(shí),將按照,這樣就可以

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論