中穎單片機_EUART_第1頁
中穎單片機_EUART_第2頁
中穎單片機_EUART_第3頁
中穎單片機_EUART_第4頁
中穎單片機_EUART_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、頁數(shù)(PAGE)1/12實驗五:異步串行通訊實驗目標:學習 8051 異步串行通訊的方法(包括異步串行接收、異步串行發(fā)送)需求資源:中穎 SH79F32 學習板,串口線,PC 機,串口調(diào)試軟件實驗操作:步驟一:燒錄程序1. Option 設置:設置振蕩器為外部 32.768KHz,電源為 5V,開啟看門狗和 LVR 復位功能。若仿真器版本為 V2.2 及 V2.2 以上,需勾選“使用 Reset Pin 燒寫”和“上電之前先下電”。2. 將程序燒錄到學習板上,運行程序即可。3. 使用串口線與 PC 機相連,若要使用 USB 轉串口模塊,則使用 USB 線與 PC 機相連(使用前必須前安裝驅動,

2、同時連接 USB 線可能造成程序下載失敗,最好燒錄程序后再連接)。步驟二:系統(tǒng)操作1. 打開串口調(diào)試工具,設置串口參數(shù)。若電腦只有一個串口,則串口號為 1,若有兩個串口,則根據(jù)具體情況選擇 1 或 2。若使用 USB 轉串口模塊,則串口號為 5。2. 設置波特率為 9600,數(shù)據(jù)位 8 位。3. 點擊“打開窗口”。4. 輸入任意數(shù)據(jù)。無論發(fā)送什么,MCU 都反饋“收到了”頁數(shù)(PAGE)2/12關鍵技術說明(包含程序):1. 串口通訊1) 串口通訊原理串口通訊技術是由電子工業(yè)協(xié)會在上世紀60年代發(fā)布的,如今已發(fā)展出多種通訊標準,包括 RS232、RS485、RS422 等,他們的原理大致上是相

3、同的,區(qū)別只是在通訊速度、通訊距離等電氣特性上。在家用領域應用中,一般采用 RS232 標準,其通訊距離短,通訊速率慢(快于并口),工作方式為一發(fā)一收。而在工業(yè)領域則采用 RS485 和 RS422 等,它們通訊距離長,通訊速率快,并且允許一發(fā)多收。由于工作領域的關系,本章只以 RS232 作為對象。如今,串口通訊技術在單片機通訊中占有很大的比重,經(jīng)常被用于單片機之間的通訊,以及單片機和 PC 機之間的通訊。傳統(tǒng) 8051 中集成了一組全雙工的串行通訊模塊,而中穎 8051 單片機是增強型的 8051,比傳統(tǒng) 8051 多增加了一組全雙工的串口通行模塊,兩組分別為 EUART 和 EUART1

4、。我們先來看看中穎 8051 學習板上,單片機與 PC 機串口通訊模塊電路:頁數(shù)(PAGE)3/12SH79F32 串口通訊引腳圖P3.1TxD 口,用于串口數(shù)據(jù)輸出;P3.0RxD 口,用于串口數(shù)據(jù)輸入。電平轉換電路圖從圖中我們可以看到,串口發(fā)送時,數(shù)據(jù)通過單片機主機 Txd(P3.1 口)輸出,經(jīng) MAX232 電平(TxIN 輸入,TxOUT 輸出,x=1,2)轉換后,再通過串口線被 PC 機的 RxD 口接收。串口接收時,數(shù)據(jù)通過 PC 機的 Txd 口發(fā)送,通過串口線進入主機的 MAX232 模塊(RxIN輸入,RxOUT 輸出,x=1,2)進行電平轉化,單片機主機通過 Rxd(P3

5、.0)口接收。而當用于單片機兩機通訊時,就需要去掉 MAX232 芯片了。我們或許會想,為什么與 PC 機通訊時,數(shù)據(jù)必須通過 MAX232 進行轉換了。原因是兩者的電平標準不同。PC 機串口通訊為 RS232 電平標準,當 bit=0 時電平為-15V左右,bit=1 時電平為+15V 左右。而單片機采用的是 TTL 電平標準,當 bit=0 時電平為 0V, bit=1 時電平為+5V。若直接將 PC 機的串口數(shù)據(jù)通過串口線直接接入到單片機的 IO 口,將損壞單片機。RS232 標準采用的串口插口為 DB9 針,引腳分布如下圖:串口公頭:頁數(shù)(PAGE)4/12PC 機端:串口公頭(正面向

6、用戶)Pin No.Signal1DCD2RxD3TxD4DTR5GND6DSR7RTS8CTS9-串口母頭:單片機端:串口母頭(正面向用戶)Pin No.Signal1DCD2TxD3RxD4DSR5GND頁數(shù)(PAGE)5/126DTR7CTS8RTS9-我們在通訊中,一般只使用其中的 3 個引腳,分別是 GND、TxD 和 RxD。其中主機的 TxD 口通過電平轉換后與從機的 RxD 口相連,主機的 RxD 口通過電平轉換后與從機的 TxD 相連。2) 串口通訊相關寄存器 波特率串口通訊速率有兩種度量方式,一種為波特率,一種為比特率。波特率表示的是每秒傳輸多少個數(shù)據(jù)信號,單位為 Bps。

7、比特率表示的是每秒傳輸多少個數(shù)據(jù)位,單位為 bps。兩者經(jīng)常會被混淆一談,波特率指的是數(shù)據(jù)信號對載波的調(diào)制速率,它用單位時間內(nèi)載波調(diào)制狀態(tài)改變的次數(shù)來表示。當數(shù)據(jù)不壓縮時,這時一個調(diào)制狀態(tài)對應一個數(shù)據(jù)位,此時波特率等于比特率。當數(shù)據(jù)壓縮時,這時一個調(diào)制狀態(tài)對應兩個或兩個以上數(shù)據(jù)位。兩者的關系公式如下:比特率=波特率 單個調(diào)制狀態(tài)對應的二進制位數(shù)中穎 8051 中,波特率可以設置為系統(tǒng)時鐘的分頻或定時器的分頻。設置注意事項及規(guī)則如下:A. 波特率不能等于系統(tǒng)時鐘頻率或定時器溢出率,只能為其分頻值。B. 當為串口方式 1 或 3 時,波特率發(fā)生器通過 T2CON 的 TCLK 和 RCLK 來選擇

8、。TCLK和 RCLK 為 1 時,選 Timer2;TCLK 和 RCLK 為 0 時,選 Timer1。C. 當使用 EUART1 時,不能使用 Timer1 產(chǎn)生波特率。不管 TCLK 和 RCLK 為 1 或 0,波特率發(fā)生器都為定時器 2。但是當 TCLK 或 RCLK 為 1 時,波特率為 TCLK 或 RCLK 為 0 時的波特率的二分頻。D. UART 工作在不同的工作方式下,波特率發(fā)生器有所不同,具體見下表。SM0SM1方式類型幀長起始位停止位第 9 位波特000同步8 位000系統(tǒng)時鐘/12 或/4011異步10 位110定時器1 或 2 溢出/32 或/16102異步11

9、 位111系統(tǒng)時鐘/64 或/32113異步11 位111定時器1 或 2 溢出/32 或/16當為方式 0 時,波特率固定,波特率發(fā)生器為系統(tǒng)時鐘的分頻。當 SM2=1 時,波特率為系統(tǒng)時鐘的 4 分頻;當 SM2=0 時,波特率為系統(tǒng)時鐘的 12 分頻。當為方式 1 時,波特率可變,通過設置 TCLK 和 RCLK 來選擇 Timer1 或 Timer2 作為波特率發(fā)生器。通過 SMOD 位(二倍頻控制位)來選擇分頻值。當 SMOD=1 時,波特率為定時器 1 或 2 溢出率 / 32 的二倍頻,即 16 分頻;當 SMOD=0 時,波特率為定時器 1 或 2 溢出率的 32 分頻。當為方

10、式 2 時,波特率固定,波特率發(fā)生器為系統(tǒng)時鐘的分頻。通過 SMOD 位(二倍頻控制位)來選擇分頻值。當 SMOD=1 時,波特率為系統(tǒng)時鐘 / 64 的二倍頻,即 32 分頻;當 SMOD=0頁數(shù)(PAGE)6/12時,波特率為系統(tǒng)時鐘的 64 分頻。當為方式 3 時,波特率可變,通過設置 TCLK 和 RCLK 來選擇 Timer1 或 Timer2 作為波特率發(fā)生器。通過 SMOD 位(二倍頻控制位)來選擇分頻值。當 SMOD=1 時,波特率為定時器 1 或 2 溢出率 / 32 的二倍頻,即 16 分頻;當 SMOD=0 時,波特率為定時器 1 或 2 溢出率的 32 分頻。 串口工作

11、方式由上一節(jié),我們了解到要選擇串口工作方式,我們可以根據(jù)自己的使用需要,設置 SCON的 SM1 和 SM0 位來得到合適的工作方式,下面我來對 4 個串口工作方式進行講解。工作方式 08 位同步通訊,固定波特率(系統(tǒng)時鐘的 4 / 12 分頻),由 8 個數(shù)據(jù)位組成 8 位同步通訊,RxD 被作為輸入/輸出串行端口,而 TxD 被作為移位時鐘。也就是說,當使用串口工作方式 0 時,不管是輸出數(shù)據(jù)還是輸入數(shù)據(jù),都使用 RxD 口作為數(shù)據(jù)端口,而 TxD 端口則振蕩產(chǎn)生移位時鐘。串口發(fā)送時,將數(shù)據(jù)載入到 SBUF 中,每一個移位時鐘(TxD 振蕩產(chǎn)生),8 位數(shù)據(jù)從低位到高位逐個從 RxD 口移

12、出,當移完最后一個位時,發(fā)送結束,TI 硬件置一,RxD 要保持在高電平(無發(fā)送狀態(tài))。方式 0 發(fā)送時序串口接收時,當 RxD 端口讀到低電平時,開始接收動作。先將 REN 置一、R1 清零,以允許接收。接收從下一個系統(tǒng)時鐘開始。每一個移位時鐘(TxD 振蕩產(chǎn)生),8 位數(shù)據(jù)從低位到高位逐個從 RxD 口移入,當移完最后一個位時,接收結束,RI 硬件自動置一。方式 0 接收時序頁數(shù)(PAGE)7/12工作方式 110 位異步通訊,波特率可變(定時器 1 溢出率的 16 / 32 分頻,或定時器 2 溢出率的 16 分頻),由起始位(邏輯 0)、8 位數(shù)據(jù)、結束位組成。串口發(fā)送時,先將 TI

13、清零,然后將 8 位數(shù)據(jù)存入到 SBUF 中,就會啟動發(fā)送,先移出起始位,再移出數(shù)據(jù)位,當溢出結束位時,發(fā)送完成,TI 硬件自動置一。發(fā)送完成后,TxD 口要輸出高電平。方式 1 發(fā)送時序串口接收時,當 RxD 端口讀到低電平時,開始接收動作。先將 REN 置一、RI 清零,然后MCU 就會對 RxD 端口進行采樣。當接收完 8 個數(shù)據(jù)位和結束位時,接收結束,RI 硬件置一。8位數(shù)據(jù)存入數(shù)據(jù)寄存器中,接收位存入 RB8 中。接收完后,要繼續(xù)接收,必須將 RI 清零。方式 1 接收時序工作方式 211 位異步通訊,波特率固定(系統(tǒng)時鐘的 16 / 32 分頻)起始位、8 位數(shù)據(jù)、奇偶位和結束位組

14、成。此工作模式,增加了一個第九位,該位存入到 RB8 和 TB8 中??捎糜谄媾夹r灒脩艨梢栽O置為 PSW 中的奇偶位 P;也可用于多機通訊時,作為地址/數(shù)據(jù)標志位。本 DEMO 中,該位用于奇偶校驗,載入 PSW 的奇偶位 P。串口發(fā)送時,先將 TI 清零,并發(fā)送起始位(邏輯 0),然后將 8 位數(shù)據(jù)載入到 SBUF 中,TB8載入 PSW 的 P 位。當發(fā)送完結束位時,發(fā)送結束,TI 硬件置一。發(fā)送完數(shù)據(jù)后,TxD 端口要處在高電平狀態(tài)。頁數(shù)(PAGE)8/12方式 2 發(fā)送時序串口接收時,當 RxD 端口讀到低電平時,開始接收動作。先將 RI 清零、REN 置一,MCU開始采樣 RxD

15、 的狀態(tài),當接收完結束位時,接收結束,RI 硬件置一。當只有 RB8 等于 PSW 的奇偶位 P 時,此時接收才是正確的,我們才將數(shù)據(jù)保存到數(shù)據(jù)寄存器中。接收完后,要繼續(xù)接收,必須將 RI 清零。方式 2 接收時序工作方式 311 位異步通訊,波特率可變(定時器 1 溢出率的 16 / 32 分頻,或定時器 2 溢出率的 16 分頻)除波特率可變以外,其余與工作方式 2 一致。下面,我們就以本 DEMO 中串口通訊部分為例,進行具體講解。/*-串口通訊初始化-*/TR1=0;TR2=0;TF1=0;TF2=0;TMOD=Bin(00010001);/設置 Timer1 為定時模式,工作方式一(

16、16bit,用于)頁數(shù)(PAGE)9/12TL1=LOBYTE(CLOCK_1MS);TH1=HIBYTE(CLOCK_1MS);T2MOD=Bin(00000000);/設置 Timer2 用于產(chǎn)生波特率T2CON=Bin(00110000);SCON=Bin(11010000);/設置串口通訊方式為方式 3RCAP2L=LOBYTE(UART_BAUDRATE); /設置定時器溢出率TL2=LOBYTE(UART_BAUDRATE);RCAP2H=HIBYTE(UART_BAUDRATE);TH2=HIBYTE(UART_BAUDRATE);TR1=1;/start timer1TR2=1

17、;/start timer2IEN0 =Bin(00011000);/開啟 EUART 和 Timer1 中斷IEN1 =Bin(00000000);/* 波特率計算公式,其中 f T2 為系統(tǒng)時鐘,DEMO 的系統(tǒng)時鐘為 8.192MHz,要得到 9600Bps,則定時器 2 計數(shù)值為 65536 8192000/ 32 / 9600 = UART_BAUDRATE */*-數(shù)據(jù)發(fā)送-*/void UartSend (void)Byte IntTemp;if(TI)/發(fā)送完一個數(shù)據(jù)TI=0x00;/*-數(shù)據(jù)發(fā)送中-*/if(gbUartTran)/*-發(fā)送未完成-*/if(gBUartLen

18、 MAX_UART_DATA_LEN )gbUartRece =gBUartLen =0;0x00;/關閉接收/*-超時處理-*/void UartRxdTimeout(void)if(gbUartRece)if(gWUartRxdTimeOut-)=0)/接收完成/finishgbUartRece = 0;gbUartTran = 0;gbUartRxdFrameReq = 1;REN = 0;/清接收數(shù)據(jù)狀態(tài)標志/清發(fā)送數(shù)據(jù)狀態(tài)標志/設置接收完一個數(shù)據(jù)包標志/禁止接收/* 為了防止接收出錯,接收部分做了兩個保護。1.當接收時間完成,但仍在接收數(shù)據(jù),且沒有超過最大字節(jié)數(shù),則以接收完成處理。2.在接收時間內(nèi),接收到的數(shù)據(jù)大于用戶設置的最大字節(jié)數(shù),

溫馨提示

  • 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

提交評論