C單片機(jī)串行通信解讀.ppt_第1頁(yè)
C單片機(jī)串行通信解讀.ppt_第2頁(yè)
C單片機(jī)串行通信解讀.ppt_第3頁(yè)
C單片機(jī)串行通信解讀.ppt_第4頁(yè)
C單片機(jī)串行通信解讀.ppt_第5頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余68頁(yè)可下載查看

下載本文檔

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

文檔簡(jiǎn)介

1、熟悉串行通信的基本概念 掌握串行口的結(jié)構(gòu)及工作原理 掌握串行口的工作方式 掌握串行口的應(yīng)用,學(xué)習(xí)重點(diǎn)和難點(diǎn),80C51單片機(jī)串行通信的基本原理 單片機(jī)串行通信的應(yīng)用,教學(xué)目的,第8章 80C51單片機(jī)串行通信,第8章 80C51單片機(jī)串行通信,8.1 串行通信基礎(chǔ)知識(shí) 8.2 80C51串行口 8.3 80C51串行口工作方式 8.4 串行通信數(shù)據(jù)傳輸速率 8.5 串行通信應(yīng)用,8.1 串行通信基礎(chǔ)知識(shí),通信:指計(jì)算機(jī)與外部設(shè)備或計(jì)算機(jī)與計(jì)算機(jī)之間的信息交換。,在計(jì)算機(jī)系統(tǒng)中,CPU與外部通信的基本方式有兩種: 并行通信數(shù)據(jù)的各位同時(shí)傳送。 串行通信數(shù)據(jù)一位一位順序傳送。,基本通信方式示意圖,

2、8.1 串行通信基礎(chǔ)知識(shí),并行通信的特點(diǎn):各數(shù)據(jù)位同時(shí)傳送,傳送速度快、效率高。但有多少數(shù)據(jù)位就需要有多少根數(shù)據(jù)線,因此傳送成本高。在集成電路芯片的內(nèi)部、同一插件板上各部件之間、同一機(jī)箱內(nèi)各插件板之間等的數(shù)據(jù)傳送都是并行的。并行數(shù)據(jù)傳送的距離通常小于30米。 串行通信的特點(diǎn):數(shù)據(jù)傳送按位順序進(jìn)行,最少只需一根傳輸線即可完成,成本低,但速度慢。計(jì)算機(jī)與遠(yuǎn)程終端或終端與終端之間的數(shù)據(jù)傳送通常都是串行的。串行數(shù)據(jù)傳送的距離可以從幾米到幾千公里。 串行通信有同步通信和異步通信兩種基本方式。,1. 異步串行通信 異步串行通信是以字符為單位的間歇傳輸形式。傳送時(shí)按字符進(jìn)行包裝,為此,在數(shù)據(jù)位之外要增添起始

3、位、奇偶校驗(yàn)位和停止位,構(gòu)成一個(gè)通信幀。下圖為異步通信的幀格式。,8.1.1 異步通信和同步通信,幾點(diǎn)說(shuō)明: 在串行通信中,信息的兩種狀態(tài)分別以mark和space標(biāo)志。其中mark譯為標(biāo)號(hào),對(duì)應(yīng)邏輯狀態(tài)1,在發(fā)送器空閑時(shí),數(shù)據(jù)線應(yīng)保持在mark狀態(tài);space譯為空格,對(duì)應(yīng)邏輯狀態(tài)0。 起始位。發(fā)送器通過(guò)發(fā)送起始位而開(kāi)始一個(gè)字符的傳輸。起始位使數(shù)據(jù)線處于space狀態(tài)。 數(shù)據(jù)位。起始位之后傳送數(shù)據(jù)位。在數(shù)據(jù)位中,低位在前(左)高位在后(右)。由于字符編碼方式的不同,數(shù)據(jù)位可以是5、6、7或8位等多種形式。 奇偶校驗(yàn)位。用于對(duì)字符傳送作正確性檢查,因此,奇偶校驗(yàn)位是可選擇的,共有3種可能,即奇

4、校驗(yàn)、偶校驗(yàn)和無(wú)校驗(yàn),由用戶根據(jù)需要選定。,所謂偶校驗(yàn),即數(shù)據(jù)位和奇偶校驗(yàn)位中邏輯1的個(gè)數(shù)加起來(lái)必須是偶數(shù)(全0也視為偶數(shù)個(gè)1)。 所謂奇校驗(yàn),即數(shù)據(jù)位和奇偶校驗(yàn)位中邏輯1的個(gè)數(shù)加起來(lái)必須是奇數(shù)。 停止位。停止位在最后,用于標(biāo)志一個(gè)字符傳輸?shù)慕Y(jié)束,對(duì)應(yīng)于mark狀態(tài)。停止位可能是1、1.5或2位,在實(shí)際應(yīng)用中根據(jù)需要確定。 位時(shí)間。一個(gè)格式位的時(shí)間寬度。 幀(Frame)。從起始位開(kāi)始到停止位結(jié)束的全部?jī)?nèi)容稱為一幀。 異步串行通信是一幀接一幀進(jìn)行的,傳輸可以是連續(xù)的,也可以是斷續(xù)(間歇)的。,2. 同步串行通信 為提高傳送速度,把數(shù)據(jù)傳輸按相等的時(shí)間間隔分塊進(jìn)行,在數(shù)據(jù)塊的開(kāi)始加一些特殊字符,

5、作為發(fā)送和接收雙方的同步標(biāo)志。由于數(shù)據(jù)塊的位數(shù)較多,為防止錯(cuò)位,在發(fā)送數(shù)據(jù)時(shí)一般同時(shí)給出時(shí)鐘信號(hào),以保持接收與發(fā)送的同步,這就是同步串行通信。同步串行通信的數(shù)據(jù)傳送格式如下圖所示:,同步串行通信的數(shù)據(jù)格式有如下特點(diǎn)和要求: 只在數(shù)據(jù)塊傳輸?shù)拈_(kāi)始使用同步字符串,作為發(fā)送和接收雙方同步的標(biāo)志,而在結(jié)束時(shí)不需要同步標(biāo)志。 數(shù)據(jù)字符之間不允許有間隔,當(dāng)線路空閑或沒(méi)有數(shù)據(jù)可發(fā)時(shí),可發(fā)送同步字符串。 數(shù)據(jù)塊內(nèi)各字符的格式必須相同。 同步串行通信比異步串行通信的傳送速度快,但同步串 行通信要求收發(fā)雙方在整個(gè)數(shù)據(jù)傳輸過(guò)程中始終保持同步, 這將對(duì)硬件提出更高的要求,實(shí)現(xiàn)起來(lái)難度大一些;而異步 串行通信只要求在每

6、幀的短時(shí)間內(nèi)保持同步即可,實(shí)現(xiàn)起來(lái) 容易得多。所以同步串行通信適用于數(shù)據(jù)量大、對(duì)速度要求 比較高的串行通信場(chǎng)合。,1. 單工形式 單工(Simplex)形式的數(shù)據(jù)傳輸是單向的。通信雙方中一方固定為發(fā)送端,另一方則固定為接收端。單工形式的串行通信只需要一條數(shù)據(jù)線,如下圖所示。 例如,計(jì)算機(jī)與打印機(jī)之間的串行通信。,8.1.2 串行通信線路形式,2. 全雙工形式 全雙工(Full duplex)形式的數(shù)據(jù)傳輸是雙向的,可以同時(shí)發(fā)送和接收數(shù)據(jù),因此,全雙工形式的串行通信需要兩條數(shù)據(jù)線。,3. 半雙工形式 半雙工(Half duplex)形式的數(shù)據(jù)傳輸也是雙向的。但任何時(shí)刻只能由其中的一方發(fā)送數(shù)據(jù),另

7、一方接收數(shù)據(jù)。因此半雙工形式既可以使用一條數(shù)據(jù)線,也可以使用兩條數(shù)據(jù)線。,近程串行通信 單片機(jī)的數(shù)據(jù)信號(hào)在傳輸線上傳送時(shí),由于受到線間分布電容和噪聲干擾等影響,將引起傳輸信號(hào)的幅度衰減和波形畸變,極易導(dǎo)致傳輸錯(cuò)誤。加之導(dǎo)線越長(zhǎng)電容越大,所以傳輸距離就受到一定的限制。 由于近距離串行通信不改變數(shù)據(jù)位波形和頻率,所以也稱為基帶傳輸方式。雖然基帶方式實(shí)現(xiàn)起來(lái)既方便又經(jīng)濟(jì),但只能用于近程通信。,對(duì)于近距離的串行通信(例如一個(gè)房間內(nèi)的計(jì)算機(jī)之間, 距離不超過(guò)10 m),傳輸中雖有波形畸變產(chǎn)生,但不會(huì)嚴(yán) 重到影響使用,仍可使用TTL電平直接傳輸。近距離的串 行通信并不復(fù)雜,只需將兩端串行口直接連接就可進(jìn)行

8、 串行數(shù)據(jù)通信,省去了接口的麻煩,見(jiàn)下圖。,遠(yuǎn)程通信,對(duì)于遠(yuǎn)程通信(例如城市之間),不能使用基帶傳輸方式,只能使用模擬信 號(hào)形式進(jìn)行,一般使用電話線。 為了在電話線上進(jìn)行串行數(shù)據(jù)傳輸,需要在發(fā)送端把數(shù)字信號(hào)轉(zhuǎn)變?yōu)槟M信 號(hào)再進(jìn)行發(fā)送,這種把數(shù)字信號(hào)轉(zhuǎn)變?yōu)槟M信號(hào)的過(guò)程稱為調(diào)制。在接收端 應(yīng)把模擬信號(hào)再轉(zhuǎn)變?yōu)閿?shù)字信號(hào),這一過(guò)程稱為解調(diào)。遠(yuǎn)程通信多采用雙工 方式,即通信雙方都應(yīng)具有發(fā)送和接收功能。為此在通信線路的兩端都設(shè)置 調(diào)制器和解調(diào)器,并且把二者結(jié)合在一起稱為調(diào)制解調(diào)器(Modem)。使用電 話線作傳輸線的遠(yuǎn)程通信連接如下圖所示。,8.2 80C51串行口,為了實(shí)現(xiàn)串行通信,需要有硬件電路以解

9、決串行數(shù)據(jù)傳輸中的一系列協(xié)調(diào)問(wèn)題,這些硬件就是串行接口電路或簡(jiǎn)稱串行口。 8.2.1 80C51串行口硬件結(jié)構(gòu) 通常把實(shí)現(xiàn)異步通信的串行口稱為通用異步接收器/發(fā)送器UART(Universal Asynchronous Receiver/Transmitter)。 80C51的串行口,雖然是既能實(shí)現(xiàn)同步通信,又能實(shí)現(xiàn)異步通信的全雙工串行口,但在單片機(jī)的串行數(shù)據(jù)通信中,最常用的是異步方式,因此,常把它寫(xiě)為UART。串行接口結(jié)構(gòu)如下圖所示。,80C51串行口寄存器結(jié)構(gòu),80C51單片機(jī)有兩個(gè)獨(dú)立的接收、發(fā)送緩沖器SBUF(屬于特殊功能寄存器),一個(gè)用作發(fā)送,一個(gè)用作接收。發(fā)送緩沖器只能寫(xiě)入不能讀出

10、;接收緩沖器只能讀出不能寫(xiě)入,兩者共用一個(gè)字節(jié)地址(99H)。 在發(fā)送時(shí),CPU由一條寫(xiě)發(fā)送緩沖器的指令把數(shù)據(jù)(字符)寫(xiě)入串行口的發(fā)送緩沖器SBUF(發(fā))中,然后從TXD端一位位地向外發(fā)送。與此同時(shí),接收端RXD也可一位位地接收數(shù)據(jù),直到收到一個(gè)完整的字符數(shù)據(jù)后通知CPU,再用一條指令把接收緩沖器SBUF(收)的內(nèi)容讀入累加器??梢?jiàn),在整個(gè)串行收發(fā)過(guò)程中,CPU的操作時(shí)間很短,使得CPU還可以從事其他的各種操作(指工作在中斷方式下),從而大大提高了CPU的效率。,80C51串行口通過(guò)控制寄存器、中斷功能和波特率設(shè) 置實(shí)現(xiàn)串行通信控制。 串行口控制寄存器(SCON)98H SM0、SM1串行口工

11、作方式選擇位。其狀態(tài)組合所對(duì)應(yīng)的工作方式為: SM0 SM100,工作方式0; SM0 SM101,工作方式1; SM0 SM110,工作方式2; SM0 SM111,工作方式3。,8.2.2 串行口控制機(jī)制,SM2多機(jī)通信控制位。TB8發(fā)送數(shù)據(jù)位8。RB8接收數(shù)據(jù)位8。(這3位用于多機(jī)通信),因?yàn)槎鄼C(jī)通信是在方式2和方式3下進(jìn)行的,因此SM2主要用于方式2和方式3。當(dāng)串行口以方式2和方式3接收數(shù)據(jù)時(shí), SM2=1,則只有在接收到的第9位數(shù)據(jù)(RB8)為1時(shí)才將接收到的前8位數(shù)據(jù)送入SBUF,并置位RI產(chǎn)生中斷請(qǐng)求;否則將接收到的前8位數(shù)據(jù)丟棄。 SM2=0,則不論第9位數(shù)據(jù)是0還是1,都將前

12、8位數(shù)據(jù)裝入SBUF中,并產(chǎn)生中斷請(qǐng)求。在方式0時(shí),SM2必須為0。,REN允許接收位。REN0;禁止接收;REN1,允許接收。 TI串行發(fā)送中斷請(qǐng)求標(biāo)志。在數(shù)據(jù)發(fā)送過(guò)程中,當(dāng)最后一個(gè)數(shù)據(jù)位被發(fā)送完成后,TI由硬件置位。 RI串行接收中斷請(qǐng)求標(biāo)志。在數(shù)據(jù)接收過(guò)程中,當(dāng)采樣到最后一個(gè)數(shù)據(jù)位有效時(shí),RI由硬件置位。,2. 串行中斷 80C51有兩個(gè)串行中斷,即串行發(fā)送中斷和串行接收中斷。但這兩個(gè)串行中斷共享一個(gè)中斷向量0023H。每當(dāng)串行口發(fā)送或接收一個(gè)數(shù)據(jù)字節(jié)時(shí),都產(chǎn)生中斷請(qǐng)求。串行中斷請(qǐng)求在芯片內(nèi)部發(fā)生,因此不需要引腳。兩個(gè)中斷共享一個(gè)中斷向量,就需要在中斷服務(wù)程序中對(duì)中斷源進(jìn)行判斷,以便進(jìn)行

13、不同的中斷處理。 對(duì)于串行中斷控制共涉及3個(gè)寄存器,其中一個(gè)就是串行口控制寄存器SCON,用于存放串行中斷請(qǐng)求標(biāo)志。另外兩個(gè)中斷允許控制寄存器IE和中斷優(yōu)先級(jí)控制寄存器IP。,8.3 80C51串行口工作方式,80C51單片機(jī)的串行口共有4種工作方式,見(jiàn)下表。,8.3.1 串行工作方式0,串行工作方式0是把串行口作為同步移位寄存器使用,實(shí) 現(xiàn)串行數(shù)據(jù)的輸入/輸出。移位數(shù)據(jù)的傳輸以8位為一組,低位 在前、高位在后。 利用串行工作方式0,加上“并入串出”或“串入并出”芯片 的配合,80C51的串行口可實(shí)現(xiàn)數(shù)據(jù)的并行輸入/輸出。 方式0實(shí)現(xiàn)數(shù)據(jù)并行輸入/輸出,“并入串出”芯片74LS165、 CD4

14、014)用于把并行輸入數(shù)據(jù)通過(guò)移位形成位串,傳送給串行 口;而“串入并出”芯片(74LS164、CD4094)則接收串行口的 串行數(shù)據(jù),通過(guò)移位形成8位并行數(shù)據(jù)輸出。,74LS164 CLR為清0端,輸出時(shí)CLR必須為1,否則74HC164 Q0Q7輸出為0。,74HC165 S/L端為移位/置入端,當(dāng)S/L=0時(shí),從Q0Q7并行數(shù)據(jù)置入寄存器,當(dāng)S/L=1時(shí),允許從Q端移出數(shù)據(jù)。,串行接口工作方式0其波特率是固定的,為fosc(振蕩頻率)的1/12。 1.方式0發(fā)送 數(shù)據(jù)從RxD引腳串行輸出,TxD引腳輸出同步脈沖。當(dāng)一個(gè)數(shù)據(jù)寫(xiě)入串行口發(fā)送緩沖器時(shí),串行口將8位數(shù)據(jù)以fosc/12的固定波特

15、率從RxD引腳輸出,從低位到高位。發(fā)送后置中斷標(biāo)志TI為1,請(qǐng)求中斷,在再次發(fā)送數(shù)據(jù)之前,必須用軟件將TI清零。,2.方式0接收 在滿足REN=1和RI=0的條件下,串行口處于方式0輸入。此時(shí),RxD為數(shù)據(jù)輸入端,TXD為同步信號(hào)輸出端,接收器也以fosc/12的波特率對(duì)RxD引腳輸入的數(shù)據(jù)信息采樣。當(dāng)接收器接收完8位數(shù)據(jù)后,置中斷標(biāo)志RI=1為請(qǐng)求中斷,在再次接收之前,必須用軟件將RI清零。 在方式0工作時(shí),必須使SCON寄存器中的SM2位為“0”,這并不影響TB8位和RB8位。方式0發(fā)送或接收完數(shù)據(jù)后由硬件置位TI或RI, CPU在響應(yīng)中斷后要用軟件清除TI或RI標(biāo)志。,8.3.2 串行工

16、作方式1,串行工作方式1是10位為一幀的異步串行通信方式,幀格式包括1個(gè)起始位,8個(gè)數(shù)據(jù)位和1個(gè)停止位。這種工作方式是為雙機(jī)通信而準(zhǔn)備的。,1.方式l發(fā)送 由一條寫(xiě)發(fā)送寄存器(SBUF)的指令開(kāi)始,隨后在串行口 由硬件自動(dòng)加入起始位和停止位,構(gòu)成一個(gè)完整的幀格 式,然后在移位脈沖的作用下,由TXD端串行輸出。一個(gè)字符幀發(fā)送完后,使TXD輸出線維持在1狀態(tài)下,并將SCON寄存器的TI位置1,通知CPU可以接著發(fā)送下一個(gè)字符。,2.方式1接收 SCON的REN位應(yīng)處于允許接收狀態(tài),即REN1。在此前提下,串行口采樣RXD端,當(dāng)采樣到從1到0的狀態(tài)跳變時(shí),就認(rèn)為已接收到起始位。隨后在移位脈沖的控制下

17、,把接收到的數(shù)據(jù)位移入接收寄存器中。直到停止位到來(lái)之后置位中斷標(biāo)志位RI,通知CPU從SBUF取走接收到的一個(gè)字符。,8.3.3 串行工作方式2 和3,串行工作方式2和3都是11位為一幀的串行通信方式,即1個(gè) 起始位、9個(gè)數(shù)據(jù)位和1個(gè)停止位。這兩種工作方式主要是 為多機(jī)通信而準(zhǔn)備的。,在這兩種工作方式下,字符還是8個(gè)數(shù)據(jù)位,只不過(guò)增加了 一個(gè)第9數(shù)據(jù)位(D8),它是一個(gè)可編程位,其功能由用戶設(shè)定。 在發(fā)送數(shù)據(jù)時(shí),應(yīng)予先在串行口控制寄存器SCON的TB8位中把第9個(gè)數(shù)據(jù)位的內(nèi)容準(zhǔn)備好。 這兩種工作方式的數(shù)據(jù)接收過(guò)程也與方式1基本類(lèi)似,不同 點(diǎn)仍在第9數(shù)據(jù)位上,串行口把接收到的前8個(gè)數(shù)據(jù)位移入 S

18、BUF,而把第9數(shù)據(jù)位送SCON的RB8。 串行工作方式2和3是為多機(jī)通信而準(zhǔn)備的。兩者的工作過(guò)程 相同,差別僅在于波特率的設(shè)置,方式2的波特率是固定的 ,而方式3的波特率可由用戶根據(jù)需要設(shè)定,設(shè)定方法與方 式1相同。,8.4 串行通信數(shù)據(jù)傳輸速率,8.4.1傳輸速率的表示方法,1.與傳輸速率有關(guān)的術(shù)語(yǔ) 波特率:每秒鐘事件發(fā)生的數(shù)目或信號(hào)變化的次數(shù)。 單位:波特(B,Baud) 比特率:每秒鐘傳送二進(jìn)制的位數(shù)。 單位:位/秒(bps),說(shuō)明: (1)在一般的單片機(jī)串行通信中,事件和信號(hào)變化都反映在二進(jìn)制位上,波特率與比特率的概念是一樣的。 (2)但在高速串行通信中,由于一個(gè)事件的編碼往往不止1

19、位,因此波特率與比特率就不一樣了。 例如事件按4位編碼,如果數(shù)據(jù)傳輸?shù)牟ㄌ芈适?400, 則比特率就是,9600,2.單片機(jī)中使用的波特率 在單片機(jī)中使用波特率來(lái)表示串行通信的傳送速率。,波特率:每秒鐘傳送二進(jìn)制的位數(shù),1波特=1位/秒(bps),注意:波特率和字符的傳輸速率不同 例如:如果每秒鐘傳送240個(gè)字符,而每個(gè)字符格式包含10位(1個(gè)起始位、8個(gè)數(shù)據(jù)位、 1個(gè)停止位),這時(shí)的波特率為: 10位240個(gè)/秒 = 2400 bps,波特率是串行通信的重要技術(shù)指標(biāo) 在串行通信中,波特率除表明數(shù)據(jù)傳送速率外,還可以表示串行口中移位脈沖頻率的高低。波特率高表明移位脈沖頻率高,串行數(shù)據(jù)傳輸速度就

20、快;反之,波特率低表明移位脈沖頻率也低,串行數(shù)據(jù)傳輸速度就慢。,在實(shí)際的串行通信中,應(yīng)根據(jù)速度要求、線路質(zhì)量以及設(shè)備情況等因素選定波特率。,1.串行工作方式0的波特率 串行工作方式0的波特率是固定的,其計(jì)算公式為:,2.串行工作方式2的波特率 串行工作方式2的波特率也是固定的,但有兩個(gè)數(shù)值。其計(jì)算公式為:,SMOD=0時(shí),波特率= ,SMOD=1時(shí),波特率=,8.4.2 80C51單片機(jī)的波特率設(shè)置,電源控制寄存器PCON,字節(jié)地址87H,其中SMOD:串行口的波特率倍增位 SMOD=0,波特率不加倍 SMOD=1,串行口波特率加倍。,系統(tǒng)復(fù)位時(shí), SMOD=0。 PCON不能位尋址。,3.串

21、行工作方式1和方式3的波特率,串行工作方式1和方式3的波特率不是固定的,可以根據(jù)需要設(shè)置。,當(dāng)串行口工作在方式1和方式3時(shí), 由80C51單片機(jī)的定時(shí)器T1作為波特率發(fā)生器(以定時(shí)器T1作波特率發(fā)生器是由系統(tǒng)決定的),為串行口提供移位脈沖。,串行工作方式1和方式3的波特率計(jì)算公式為:,當(dāng)定時(shí)器T1作波特率發(fā)生器使用時(shí),通常選用工作方式2(即8位自動(dòng)重裝載方式)。選擇方式2可以避免通過(guò)程序反復(fù)裝入定時(shí)初值所引起的定時(shí)誤差,使波特率更加穩(wěn)定,定時(shí)器的溢出周期:定時(shí)器溢出一次所需要的時(shí)間。 定時(shí)器的溢出率:?jiǎn)挝粫r(shí)間定時(shí)器溢出的次數(shù)。,溢出率等于溢出周期的倒數(shù),當(dāng)定時(shí)器T1工作在方式2 (即8位自動(dòng)重

22、裝載方式),假定定時(shí)器T1的計(jì)數(shù)初值為X,則定時(shí)器T1的溢出周期為:,溢出率為溢出周期的倒數(shù),則定時(shí)器T1的溢出率為:,實(shí)際使用中,波特率是已知的。因此需要根據(jù)波特率的計(jì)算公式求定時(shí)初值X。,思考題:定時(shí)器T1工作在方式2,串行口方式1波特率=1200bps,fosc=12MHZ,SMOD=0,則X=?,如果T1預(yù)裝的初值X=E6H,則實(shí)際得到的波特率為:,誤差怎么解決?,其它條件不變,取fosc=11.0592MHZ,則X=?,說(shuō)明: (1)當(dāng)串行口工作在方式1或方式3,且要求波特率按規(guī)范取 1200、2400、4800、9600時(shí),若采用晶振12MHz和6MHz,按波 特率計(jì)算公式算出的T

23、1定時(shí)初值將不是一個(gè)整數(shù),因此會(huì)產(chǎn)生 波特率誤差而影響串行通信的同步性能。解決的方法可以調(diào)整 單片機(jī)的晶振頻率fosc,通常采用為11.0592MHz的晶振,這樣 可使計(jì)算出的T1初值為整數(shù)。 (2)實(shí)際使用時(shí),可根據(jù)波特率的計(jì)算公式來(lái)計(jì)算T1的初值。為避免煩雜的初值計(jì)算,可以通過(guò)查常用波特率與定時(shí)器1 的 參數(shù)關(guān)系表。,(3)串行口工作在方式1和方式3時(shí),定時(shí)器1初始化程序的步驟: 首先確定波特率 再計(jì)算定時(shí)器1的計(jì)數(shù)初值 然后進(jìn)行定時(shí)器的初始化,例題:?jiǎn)纹瑱C(jī)的晶振頻率為11.0592MHZ,串行口工作在方式1,波特率為2400bps,計(jì)算定時(shí)器T1的計(jì)數(shù)初值,并寫(xiě)出初始化程序。(假設(shè)SMO

24、D=0),解:定時(shí)器T1工作在方式2 (8位自動(dòng)重裝載方式),初始化程序:,MOV TMOD , #20H MOV TL1, #0F4H MOV TH1, #0F4H SETB EA CLR ES MOV PCON, #00H MOV SCON, #50H SETB TR1,80C51單片機(jī)的串行口共有4種工作方式,見(jiàn)下表。,【例題】用80C51單片機(jī)的串行口外接串入并出的芯片CD4094擴(kuò)展并行輸出口控制一組發(fā)光二極管,使發(fā)光二極管從左至右延時(shí)輪流點(diǎn)亮。(fosc=12MHZ),ORG 0000H LJMP MAIN ORG 2000H MAIN: MOV SCON,#00H MOV A,#

25、80H CLR P1.0 START:MOV SBUF,A LOOP:JNB TI,LOOP SETB P1.0 ACALL DELAY CLR TI RR A CLR P1.0 SJMP START,DELAY:MOV R7,#05H LOOP2:MOV R6,#0FFH LOOP1:DJNZ R6,LOOP1 DJNZ R7,LOOP2 RET END,【思考題】 用80C51單片機(jī)的串行口外接并入串出的芯片CD4014 擴(kuò)展并行輸入口,輸入一組開(kāi)關(guān)的信息,開(kāi)關(guān) K 閉合時(shí)有效。,ORG 0000H LJMP MAIN ORG 2000H MAIN:SETB P1.1 START:JB P

26、1.1,START SETB P1.0 MOV SCON,#10H CLR P1.0 LOOP:JNB RI,LOOP CLR RI MOV A,SBUF,常用波特率與定時(shí)器1的參數(shù)關(guān)系表,8.5 串行通信應(yīng)用,8.5.1近程串行通信,8.5.2調(diào)制解調(diào)器的使用,8.5.3 雙機(jī)通信,在進(jìn)行雙機(jī)通信之前,發(fā)送和接收雙方要進(jìn)行一些約定,明確一些技術(shù)問(wèn)題。,(1)數(shù)據(jù)通路采用何種形式,硬件電路如何連接?采用何種串行工作方式?,約定:串行工作方式1,雙機(jī)異步通信接口電路,(2)數(shù)據(jù)傳送的波特率是多少?,約定:2400bps,(4)雙方如何取得聯(lián)絡(luò)?,約定: 甲機(jī)向乙機(jī)發(fā)送一個(gè)E1作為聯(lián)絡(luò)信號(hào),表示請(qǐng)

27、求通信 乙機(jī)收到E1信號(hào)后,回答一個(gè)E2作為應(yīng)答信號(hào),表示通信,(3)如何檢驗(yàn)數(shù)據(jù)傳輸?shù)恼_性?,約定:采用累加和檢驗(yàn)(代碼和檢驗(yàn)),累加和檢驗(yàn):發(fā)送方對(duì)所發(fā)送的數(shù)據(jù)塊求和,并將“檢驗(yàn)和”附加到數(shù)據(jù)塊末尾,也發(fā)送給接收方。接收方接收數(shù)據(jù)時(shí),也是先對(duì)數(shù)據(jù)塊求和,將所得結(jié)果與發(fā)送方的“檢驗(yàn)和”進(jìn)行比較,若兩者相同,表示傳送正確,若不相同表示傳送出了差錯(cuò)。,(5)雙方通信如何結(jié)束?,約定: 乙機(jī)如果接收的數(shù)據(jù)正確,向甲機(jī)發(fā)送00H信號(hào),表示結(jié)束雙方的通信。 乙機(jī)如果接收的數(shù)據(jù)不正確,向甲機(jī)發(fā)送非00H信號(hào),表示數(shù)據(jù)出錯(cuò),要求甲機(jī)重新發(fā)送。,甲機(jī)通信流程圖,乙機(jī)通信流程圖,ASTART:CLR EA

28、MOV TMOD,#20H MOV TH1,#0F4H MOV TL1,#0F4H MOV PCON,#00H SETB TR1 MOV SCON,#50H ALOOP1:MOV SBUF,#0E1H JNB TI,$ CLR TI JNB RI,$ CLR RI MOV A,SBUF XRL A,#0E2H JNZ ALOOP1,ALOOP3: MOV SBUF,R0 MOV A,R6 ADD A,R0 MOV R6,A INC R0 JNB TI,$ CLR TI DJNZ R7,ALOOP3 MOV SBUF,R6 JNB TI,$ CLR TI JNB RI,$ CLR RI MOV

29、A,SBUF JNZ ALOOP2 RET,甲機(jī)發(fā)送程序清單(采用查詢方式),BSTART:CLR EA MOV TMOD,#20H MOV TH1,#0F4H MOV TL1,#0F4H MOV PCON,#00H SETB TR1 MOV SCON,#50H BLOOP1:JNB RI,$ CLR RI MOV A,SBUF XRL A,#0E1H JNZ BLOOP1 MOV SBUF,#0E2H JNB TI,$ CLR TI BLOOP2:MOV R0,#40H MOV R7,#10H MOV R6,#00H,BLOOP3:JNB RI,$ CLR RI MOV A,SBUF MOV

30、 R0,A INC R0 ADD A,R6 MOV R6,A DJNZ R7,BLOOP3 JNB RI,$ CLR RI MOV A,SBUF XRL A,R6 JZ END1 MOV SBUF,#0FFH JNB TI,$ CLR TI AJMP BLOOP2 END1: MOV SBUF,#00H RET,乙機(jī)接收程序清單(采用查詢方式),8.5.4 多機(jī)通信,多機(jī)通信是指一臺(tái)主機(jī)和多臺(tái)從機(jī)之間的通信。通常單片機(jī) 的多機(jī)通信采用主從式多機(jī)通信方式。在這種方式中,只有 一臺(tái)主機(jī),有多臺(tái)從機(jī)。主機(jī)發(fā)送的信息可以傳到各個(gè)從機(jī) 或指定的從機(jī),各從機(jī)發(fā)送的信息只能被主機(jī)接收。 主要問(wèn)題: 怎樣識(shí)別

31、地址? 怎樣維持主機(jī)與指定從機(jī)之間的通信?,1.多機(jī)通信連接電路,在串行方式2或方式3條件下,可實(shí)現(xiàn)一臺(tái)主機(jī)和多臺(tái)從機(jī)之間的通信,其連接電路如圖所示。,2.多機(jī)通信原理,多機(jī)通信時(shí),主機(jī)向從機(jī)發(fā)送的信息分為地址幀和數(shù)據(jù)幀兩類(lèi),以可編程第9位TB8作區(qū)分標(biāo)志: TB8=0,表示數(shù)據(jù);TB8=1,表示地址。 多機(jī)通信充分利用了80C51串行控制寄存器SCON中的多機(jī)通信控制位SM2的特性。 當(dāng)SM2=1時(shí),CPU接收的前8位數(shù)據(jù)是否送入SBUF取決于接收的第9位RB8的狀態(tài):若RB8=1,將接收到的前8位數(shù)據(jù)送入SBUF,并置位RI產(chǎn)生中斷請(qǐng)求;若RB8=0,則接收到的前8位數(shù)據(jù)丟棄。即當(dāng)從機(jī)SM

32、2=1時(shí),從機(jī)只能接收主機(jī)發(fā)送的地址幀(RB8=1),對(duì)數(shù)據(jù)幀(RB8=0)不予理睬。 當(dāng)從機(jī)SM2=0時(shí),從機(jī)可接收主機(jī)發(fā)送的所有信息。,通信開(kāi)始時(shí),主機(jī)首先發(fā)送地址幀。由于各從機(jī)的SM2=1和RB8=1,所以各從機(jī)均能接收到地址幀,分別發(fā)出串行接收中斷請(qǐng)求,通過(guò)串行中斷服務(wù)程序來(lái)判斷主機(jī)發(fā)送的地址與本從機(jī)地址是否相符。如果相符,則把自身的SM2清0,以準(zhǔn)備接收隨后傳送來(lái)的數(shù)據(jù)幀。其余從機(jī)由于地址不符,則仍保持SM2=1狀態(tài),因而不能接收主機(jī)傳送來(lái)的數(shù)據(jù)幀。這就是多機(jī)通信中主、從機(jī)一對(duì)一的通信情況。這種通信只能在主、從機(jī)之間進(jìn)行,如果想在兩個(gè)從機(jī)之間進(jìn)行通信,則要通過(guò)主機(jī)作中介才能實(shí)現(xiàn)。,3

33、.多機(jī)通信過(guò)程,(1)主、從機(jī)工作于方式2或方式3,主機(jī)置SM2=0,REN=1;從機(jī)置SM2=1,REN=1。 (2)主機(jī)置位TB8=1,向從機(jī)發(fā)送尋址地址幀,各從機(jī)因滿足接收條件(SM2=1,RB8=1),從而接收到主機(jī)發(fā)來(lái)的地址,并與本機(jī)地址進(jìn)行比較。 (3)地址一致的從機(jī)(被尋址機(jī))將SM2清0,并向主機(jī)返回地址,供主機(jī)核對(duì)。地址不一致的從機(jī)(未被尋址機(jī))保持SM2=1。 (4)主機(jī)核對(duì)返回的地址,若與此前發(fā)出的地址一致則準(zhǔn)備發(fā)送數(shù)據(jù);若不一致則返回(2)重新發(fā)送地址幀。,(5)主機(jī)向從機(jī)發(fā)送數(shù)據(jù),此時(shí)主機(jī)的TB8=0,只有被選中的那臺(tái)從機(jī)能接收到該數(shù)據(jù)。其他從機(jī)則舍棄該數(shù)據(jù)。 (6)本次通信結(jié)束后,從機(jī)重新置SM2=1,等待下次通信。,4. 多機(jī)通信實(shí)現(xiàn)方法 (1)有關(guān)通信協(xié)議的幾條規(guī)定 從機(jī)地址為00HF

溫馨提示

  • 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)論