串口中斷2 (2)_第1頁
串口中斷2 (2)_第2頁
串口中斷2 (2)_第3頁
串口中斷2 (2)_第4頁
串口中斷2 (2)_第5頁
已閱讀5頁,還剩70頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、項目7 PC機與單片機串行通信單片機應用技術精品課程組單片機應用技術1本講主要內容4 相關知識1 教學目標2 工作任務3 項目實踐5 能力拓展6 項目考核21、終極目標:制作PC機與單片機通信的單片機系統(tǒng)。2、促成目標:(1) 了解MCS-51單片機串行接口結構;(2) 掌握MCS-51串行接口的使用方法;(3) 理解MCS-51單片機串行口接收和發(fā)送數(shù)據的實現(xiàn)方法;(4) 熟悉MCS-51單片機串行通信的格式規(guī)定;(5) 理解MCS-51單片機串行通信的程序設計思想。【教學目標】3 單片機系統(tǒng)接收電腦PC機串口發(fā)過來的ASCII碼,并在液晶LCD1602上顯示出來;同時把收到的ASCII碼回

2、傳給電腦PC機串口,以驗證串口接收、發(fā)送數(shù)據的正確性?!竟ぷ魅蝿铡?1系統(tǒng)組成 本系統(tǒng)功能由硬件和軟件兩大部份協(xié)調完成,硬件部分主要完成信息的顯示;軟件主要完成信號的處理及控制功能等。 本系統(tǒng)的硬件采用模塊化設計,以AT89S52單片機為核心,與LCD顯示電路、串行口通信電路組成控制系統(tǒng)。該系統(tǒng)硬件主要包括以下幾個模塊:AT89S52主控模塊、LCD顯示模塊、串行口通信模塊等。其中AT89S52主要完成外圍硬件的控制以及一些運算功能,LCD顯示模塊完成字符、數(shù)字的顯示功能、串行口通信模塊主要完成單片機和PC機之間的通信功能。系統(tǒng)組成方框圖如圖7.1所示。【項目實踐】【活動一】總體設計5單片機L

3、CD顯示電路復位電路時鐘電路電源電路串行口通信電路圖7.1 單片機串行通信控制系統(tǒng)組成方框圖【項目實踐】6 應用軟件采用模塊化設計方法。該系統(tǒng)軟件主要由主程序、串口接收發(fā)送數(shù)據中斷子程序、LCD顯示子程序等模塊組成,系統(tǒng)軟件結構框圖如圖7.4所示。LCD顯示子程序串口接收發(fā)送數(shù)據中斷子程序主 程 序圖7.4 系統(tǒng)軟件結構框圖【項目實踐】72系統(tǒng)工作原理 MCS51單片機串行口發(fā)送/接收數(shù)據時,通過2個串行緩沖器SBUF進行,這2個緩沖器采用一個地址(98H),但在物理上是獨立的。其中接收緩沖器只能讀出不能寫入,發(fā)送緩沖器只能寫入不能讀出。 發(fā)送過程 由指令MOV SBUF,A啟動,此時待傳送的

4、數(shù)據由A累加器傳入串行發(fā)送緩沖器SBUF,由硬件自動在發(fā)送字符的始、末加上起始位(低電平)、停止位(高電子)及其它控制位(如奇偶位等),而后在移位脈沖的控制下,低位在前,高位在后,逐位從TXD端(方式0除外)發(fā)出?!卷椖繉嵺`】8 接收過程 串行口的接收與否受制于允許接收位REN的狀態(tài),當REN被軟件置“1”后,允許接收器接收。串口的接收器以所選波特率的16倍速對RXD線進行監(jiān)視。當“1”到“0”跳變時,檢測器連續(xù)采樣到RXD線上低電平時。便認定RXD端出現(xiàn)起始位,繼而接收控制器開始工作。在每位傳送時間的第7、8、9三個脈沖狀態(tài)采樣RXD線,決定所接收的值為“0”或“1”。當接收完停止位后,控制

5、電路使中斷標志R1置為“1”,此時程序可通過MOV A,SBUF指令將接收到的字符從SBUF送入累加器A,從而完成一幀數(shù)據的接收工作?!卷椖繉嵺`】91主控模塊設計 本項目采用ATMEL公司生產的AT89S52單片機,主控模塊的具體設計參見項目1。 2LCD顯示模塊設計 LCD顯示模塊選用1602字符型LCD模塊,具體設計請參見項目6“LCD顯示技術”。 3串行口通信模塊設計 51單片機有一個全雙工的串行通信口,使單片機和計算機之間可以方便地進行通信。 電平范圍是電路能夠安全可靠識別信號的電壓范圍。 CMOS電路的電平范圍一般是從0到電源電壓。CMOS電平中,高電平(3.55V)為邏輯“1”,低

6、電平(00.8V)為邏輯“0”。 【項目實踐】【活動二】硬件設計10 RS232接口的電平范圍是-15V到+15V,RS232電平采用負邏輯,即邏輯“1”:-3-15V,邏輯“0”:+3+15V。 單片機的串口是TTL電平的,而計算機的串口是RS232電平,要使兩者之間進行通信,兩者之間必須有一個電平轉換電路,即單片機的串口要外接電平轉換電路芯片把與TTL兼容的CMOS高電平表示的1轉換成RS232的負電壓信號,把低電平轉換成RS-232的正電壓信號。典型的轉換電路給出-9V和+9V。 實現(xiàn)邏輯電平轉換可以采用以下三種方式: (1) 采用MC1488和MC1489芯片的轉換接口 MC1488和

7、MC1489芯片為早期的RS232至TTL邏輯電平的轉換芯片。該方式的不便之處是需要12V電壓,并且功耗較大,不適合用于低功耗的系統(tǒng)?!卷椖繉嵺`】11 (2) 采用MAX232芯片的轉換接口 MAX232是MAXIM公司生產的,包含兩路驅動器和接收器的RS-232轉換芯片。MAX232芯片內部有一個電壓轉換器,可以把輸人的+5V電壓轉換為RS-232接口所需的10V電壓,尤其適用于沒有12V的單電源系統(tǒng)。與此原理相同的芯片還有MAX202、AD公司的ADDt101以及SIL公司的IC1232芯片。 (3) 采用分立元件實現(xiàn)轉換接口 采用分立元件實現(xiàn)的RS232至TTL電平的轉換接口電路,其特點

8、是利用PC機的RS232接口的3腳信號(也可用4、7腳)來供給負電源,PC機的3、4、7腳在非發(fā)送邏輯“0”電平時均為1電平(10V左右),其驅動能力為20mA,利用這個特性,用一個二極管和電解電容,即在電解電容上獲取了RS232通信所需的負電源。該電路簡單、功耗小,在沒有專用芯片時不失為一種替代方法。 使用RS232接口進行異步通信,必須將單片機的TTL電平轉換為RS232電平,即在通信方的單片機接口部分增加RS232電氣轉換接口,在本項目中利用MAXIM公司的MAX232集成芯片構成轉換接口電路。 【項目實踐】12圖7.5 MAX232芯片引腳圖【項目實踐】13圖7.5 MAX232芯片內

9、部框圖【項目實踐】14圖7.1 RS232接口引腳圖RS232引腳定義如表7.1所示。 表7.1 RS232接口引腳定義引腳定義符號1載波檢測DCD2接收數(shù)據RXD3發(fā)送數(shù)據TXD4數(shù)據終端準備好DTR5信號地SG6數(shù)據準備好DSR7請求發(fā)送RTS8清除發(fā)送CTS9振鈴提示RI【項目實踐】15 因此,MAX232芯片的T1in引腳連接AT89S52單片機的TXD引腳,MAX232芯片的R1out引腳連接AT89S52單片機的RXD引腳;MAX232芯片的T1out引腳連接DB9針接口的第2引腳,MAX232芯片的R1in引腳連接DB9針接口的第3引腳,串行通信模塊與單片機的接口電路原理圖見圖6

10、.7?!卷椖繉嵺`】16圖7.7 串行通信模塊與單片機的接口電路原理圖【項目實踐】171算法設計 編寫單片機異步通信程序步驟如下: (1) 設置串口工作方式。 此時需對串行控制器SCON中的SM0、SM1進行設置。PC機與單片機的通信中一般選擇串口工作在方式1下。 串行控制器SCON(98H)的格式如下所示:SM0SMlSM2RENTB8RB8TIRI (2) 選擇波特率發(fā)生器。選擇定時器l或定時器2做為其波特率發(fā)生器。 【項目實踐】【活動三】軟件設計18 (3) 設置定時器工作方式。 當選擇定時器1做為波特率發(fā)生器時,需設置其方式寄存器TMOD 為計數(shù)方式并選擇相應的工作方式(一般選擇方式2以

11、避免重裝定時器初值);當選擇定時器2做為波特率發(fā)生器時,需將T2CON設置為波特率發(fā)生器工作方式。 (4) 設置波特率參數(shù)。 影響波特率的參數(shù)有二,一是特殊寄存器PCON的SMOD位,另一個是相應定時器初值。 (5) 允許串行中斷。 因在程序中我們一般采有中斷接收方式,故應設EAl、ES=1。 (6) 允許接收數(shù)據。 設置SCON中的REN為1。表示允許串行口接收數(shù)據。 (7) 允許定時/計數(shù)器工作。 此時開啟定時/計數(shù)器,使其產生波特率 (8) 編寫串行中斷服務程序。 當有數(shù)據到達串口時,系統(tǒng)將自動執(zhí)行所編寫的中斷服務程序。 (9) 收/發(fā)相應數(shù)據。 注意的是發(fā)送操作完成需將T1清零,接收工

12、作完成后需將R1清零?!卷椖繉嵺`】19 2數(shù)據結構設計 1602LCD使能信號E 定義為P2口線的P2.2; 1602LCD讀/寫選擇信號R/W定義為P2口線的P2.1,0為寫數(shù)據信號,1為讀數(shù)據信號; 1602LCD 數(shù)據/命令選擇信號RS定義為P2口線的P2.0,0為命令信號;1為數(shù)據信號; 1602LCD的8位雙向數(shù)據線DB7DB0信號LCDPORT定義為P0口線; 1602LCD寫命令入口參數(shù)CMD_BYTE定義為片內數(shù)據存儲器的2EH單元; 1602LCD寫顯示數(shù)據入口參數(shù)DAT_BYTE定義為片內數(shù)據存儲器的2FH單元; 串口成功接收數(shù)據標志位RECOKBIT定義為片內數(shù)據存儲器的

13、位尋址區(qū)的00H位; 串口接收數(shù)據單元RECDATA定義為片內數(shù)據存儲器的30H單元;【項目實踐】20 3程序設計 (1) 主程序設計 主程序主要完成硬件初始化、子程序調用等功能。 初始化 首先調用LCD子程序,設置LCD的DDRAM地址,在LCD上顯示數(shù)據“RECDATA:”。把串口接收數(shù)據單元RECDATA清零。設置寄存器SCON的SM0、SM1位定義串口工作方式,選擇波特率發(fā)生器為定時器T1;設定定時器T1工作方式為方式2;設置波特率參數(shù)為9600bps;允許串行中斷及總中斷;允許串口接收數(shù)據,定義REN=1;啟動定時/計數(shù)器T1工作,定義TR1=1。 串口收發(fā)數(shù)據 判斷串口成功接收數(shù)據

14、標志位RECOKBIT是否為0,若RECOKBIT為0,表明串口未接收到數(shù)據,則繼續(xù)等待串口接收數(shù)據;若RECOKBIT為1,表明串口成功接收或發(fā)送數(shù)據,進入串口中斷服務子程序,單片機接收數(shù)據,并將串口成功接收數(shù)據標志位RECOKBIT清零,調用LCD顯示接收數(shù)據子程序,在LCD上顯示單片機從串口接收到的數(shù)據。主程序設計流程圖如圖7.5所示。【項目實踐】21主程序設計流程圖如圖7.5所示?!卷椖繉嵺`】22圖6.5 主程序設計流程圖【項目實踐】23 (2) 串口接收發(fā)送數(shù)據中斷服務子程序設計 判斷串口發(fā)送標志位TI是否為1,若TI為1,則把數(shù)據從單片機發(fā)給PC機,并把TI清零,中斷子程序返回;若

15、TI為0,表明RI=0,則把串口接收標志位RI清零,把串口接收緩沖器SBUF中的數(shù)據寫入串口接收數(shù)據單元RECDATA,再把該數(shù)據送到串口發(fā)送緩沖器SBUF中,傳給PC機,置串口成功接收數(shù)據標志位RECOKBIT為1,表明串口成功接收發(fā)送數(shù)據,最后中斷子程序返回。串口收發(fā)數(shù)據中斷服務子程序設計流程圖如圖7.6所示?!卷椖繉嵺`】24接收標志位RI清零從PC機串口接收數(shù)據,把接收緩沖器SBUF中的數(shù)據寫到單片機的接收數(shù)據單元RECDATA設置成功接收數(shù)據標志位RECOKBIT發(fā)送標志位TI=1?中斷子程序返回YN把單片機的接收數(shù)據單元RECDATA數(shù)據發(fā)送到發(fā)送緩沖器SBUF中,PC機的串口調試軟

16、件SSCOM3.2接收數(shù)據并顯示在窗口中接收標志位RI清零開始圖7.6 串口接收發(fā)送數(shù)據中斷服務子程序流程圖【項目實踐】25 (3) LCD顯示子程序模塊設計 LCD顯示子程序模塊包括LCD初始化子程序、寫入指令數(shù)據到LCD子程序、寫入顯示數(shù)據到LCD子程序、字符顯示子程序、延時子程序等模塊組成,詳細設計請參見項目6“LCD顯示技術”。 4匯編語言源程序;*;實驗名稱:RS232通信與PC通信;功能:接收電腦送過來的數(shù)據,并且顯示16進制數(shù),并將數(shù)據回傳到電腦(只;顯示最后一個);作者:linux;日期:08-04-08;*【項目實踐】26;*;功能:LCD口線的定義;* E BIT P2.2

17、; RW BIT P2.1 RS BIT P2.0 LCDPORT EQU P0 CMD_BYTE EQU 2EH DAT_BYTE EQU 2FH RECOKBIT BIT 00H ;串口成功接收數(shù)據標志位 RECDATA EQU 30H ;串口接收數(shù)據單元 ORG 0000H AJMP MAIN【項目實踐】27;*;功能:串口接收發(fā)送數(shù)據中斷子程序;* ORG 0023HRS232: JB TI,SEND232CLR RIMOV A,SBUFMOV RECDATA,AMOV SBUF,ASETB RECOKBIT RETISEND232:CLR TI RETI;*;功能:主程序;*【項目實

18、踐】28ORG 0050HMAIN: MOV 20H,#00HLCALL INITLCDMOV CMD_BYTE,#80H ;設置DDRAM的地址LCALL WRITE_CMDLCALL DELAY0MOV DAT_BYTE,#RLCALL WRITE_DATMOV DAT_BYTE,#ELCALL WRITE_DATMOV DAT_BYTE,#CLCALL WRITE_DATMOV DAT_BYTE,#DLCALL WRITE_DATMOV DAT_BYTE,#A“LCALL WRITE_DATMOV DAT_BYTE,#TLCALL WRITE_DAT【項目實踐】29MOV DAT_BYT

19、E,#ALCALL WRITE_DATMOV DAT_BYTE,#:LCALL WRITE_DATMOV RECDATA,#00HMOV TMOD,#20HMOV TH1,#0FDH;波特率9600MOV TL1,#0FDHMOV SCON,#50HSETB TR1SETB RENMOV IE,#90H;串口中斷WAIT:JNB RECOKBIT,WAITCLR RECOKBITACALL DISPRECSJMP WAIT【項目實踐】30;*;功能:;LCD1602要用到的一些子程序;*;*;功能:;寫命令(入口參數(shù)CMD_BYTE);*WRITE_CMD:CLR RS CLR RW MOV

20、A,CMD_BYTE MOV LCDPORT,A SETB E NOP NOP CLRE LCALL DELAY0 RET【項目實踐】31;*;功能:;寫顯示數(shù)據(入口參數(shù)DAT_BYTE);*WRITE_DAT:SETB RS CLR RW MOV A,DAT_BYTE MOV LCDPORT,A SETB E NOP NOP CLR E LCALL DELAY0 RET【項目實踐】32;*;功能:;LCD顯示初始化;*INITLCD:MOV CMD_BYTE,#30H LCALL WRITE_CMD MOV CMD_BYTE,#30H LCALL WRITE_CMD MOV CMD_BYT

21、E,#30H LCALL WRITE_CMD MOV CMD_BYTE,#38H;設定工作方式 LCALL WRITE_CMD MOV CMD_BYTE,#0CH;顯示狀態(tài)設置 LCALL WRITE_CMD MOV CMD_BYTE,#01H;清屏 LCALL WRITE_CMD MOV CMD_BYTE,#06H;輸入方式設置 LCALL WRITE_CMD RET【項目實踐】33;*;功能:延時子程序;*DELAY0:MOV R5, #0A0HDELAY1:NOPDJNZ R5,DELAY1RET;*;功能:LCD顯示接收數(shù)據子程序;*DISPREC:MOV CMD_BYTE, #89H

22、 ;設置DDRAM的地址 LCALL WRITE_CMD MOV DAT_BYTE,RECDATA LCALL WRITE_DAT RET END【項目實踐】34/*實驗名稱:RS232通信實驗 功能:接收電腦送過來的數(shù)據,并且顯示16進制數(shù),并將數(shù)據回傳到電腦 作者:http:/ 08-04-008 */#include /LCD的口線sbit E=P22;sbit RW=P21;sbit RS=P20;unsigned char recdata;/RS232收到的值unsigned char bdata myflag;sbit recokbit = myflag0;void Delay(u

23、nsigned int t);void SendCommandByte(unsigned char ch);void SendDataByte(unsigned char ch);【項目實踐】5C語言源程序35void InitLcd(void);void disprec(void); void rs232(void);void main(void)InitLcd();myflag=0 x00;SendCommandByte(0 x80);Delay(2);SendDataByte(R);SendDataByte(E);SendDataByte(C);SendDataByte(D);SendD

24、ataByte(A);SendDataByte(T);SendDataByte(A);SendDataByte(:);TMOD=0 x20;【項目實踐】36TH1=0 xfd;TL1=0 xfd;SCON=0 x50;TR1=1;REN=1;IE=0 x90;while(1)if(recokbit=1)recokbit=0;disprec();/以下為串口中斷程序void rs232(void) interrupt 4【項目實踐】37if(RI=1)RI=0;recdata=SBUF;SBUF=recdata;recokbit=1;elseTI=0;void Delay(unsigned in

25、t t) / delay 40us for(;t!=0;t-) ;/=void SendCommandByte(unsigned char ch)【項目實踐】38 RS=0; RW=0; P0=ch; E=1; Delay(1); E=0; Delay(100); /delay 40us/-void SendDataByte(unsigned char ch) RS=1; RW=0; P0=ch; E=1; Delay(1); E=0; Delay(100); /delay 40us【項目實踐】39/-void InitLcd(void)SendCommandByte(0 x30); Send

26、CommandByte(0 x30); SendCommandByte(0 x30); SendCommandByte(0 x38);/設置工作方式 SendCommandByte(0 x0c); /顯示狀態(tài)設置 SendCommandByte(0 x01); /清屏 SendCommandByte(0 x06); /輸入方式設置void disprec(void)SendCommandByte(0 x89);SendDataByte(recdata); 【項目實踐】40 在PC機上打開串口調試軟件串口調試助手SSCOM3.2,設置串口號、波特率、校驗位等參數(shù)(注意:這些參數(shù)應與單片機中串口參

27、數(shù)設置一致),在字符輸入框內要發(fā)送的ASCII碼,點擊發(fā)送,此時在LCD1602上顯示出當前收到的ASCII碼。同時在串口調試助手SSCOM3.2的接收窗口可以看到當前的回傳ASCII碼。串口與PC機通信系統(tǒng)調試過程如圖7.8所示。 【項目實踐】【活動四】系統(tǒng)仿真調試41圖7.8 串口與PC機通信系統(tǒng)調試示意圖【項目實踐】42 在實際工作中,計算機的CPU與外部設備之間常常要進行信息交換;一臺計算機與外界的信息交換稱為數(shù)據通信。 數(shù)據通信方式有兩種,即并行數(shù)據通信和串行數(shù)據通信。并行數(shù)據通信中,數(shù)據的各位同時傳送,其優(yōu)點是傳遞速度快;缺點是數(shù)據有多少位,就需要多少根傳送線;串行通信中,數(shù)據字節(jié)

28、一位一位串行地順序傳送,通過串行接口實現(xiàn)。它的優(yōu)點是只需一對傳送線(利用電話線就可作為傳送線),這樣就大大降低了傳送成本,特別適用于遠距離通信;其缺點是傳送速度較低。在應用時,可根據數(shù)據通信的距離決定采用哪種通信方式,例如,在PC機與外部設備(如打印機等)通信時,如果距離小于30m可采用并行數(shù)據通信方式;當距離大于30m時,則要采用串行數(shù)據通信方式。 8051單片機具有并行和串行二種基本數(shù)據通信方式。圖5-1(a)所示為8051單片機與外設間8位數(shù)據并行通信的連接方法。圖5-1(b)所示為串行數(shù)據通信方式的連接方法?!鞠嚓P知識】43下面主要介紹單片機串行通信技術: 圖5-1 兩種通信方式的示意

29、圖 (a)并行通信 (b)串行方式【相關知識】44一、串行通信分類 按照串行數(shù)據的時鐘控制方式,串行通信分為異步通信和同步通信兩類。 1、異步通信 在異步通信中,數(shù)據是以字符為單位組成字符幀傳送的。發(fā)送端和接收端由各自獨立的時鐘來控制數(shù)據的發(fā)送和接收,這兩個時鐘彼此獨立,互不同步。每一字符幀的數(shù)據格式如圖5-2所示。在幀格式中,一個字符由四個部分組成:起始位、數(shù)據位、奇偶校驗位和停止位。 (1)起始位:位于字符幀開頭,僅占一位,為邏輯低電平“0”,用來通知接收設備,發(fā)送端開始發(fā)送數(shù)據。線路上在不傳送字符時應保持為“1”。接收端不斷檢測線路的狀態(tài) ,若連續(xù)為“1”以后又測到一個“0”,就知道發(fā)來

30、一個新字符,應馬上準備接收。 【相關知識】【第一部分】串行通信基礎45 (2)數(shù)據位:數(shù)據位(D0D7)緊接在起始位后面,通常為58位,依據數(shù)據位由低到高的順序依次傳送。 (3)奇偶校驗位:奇偶校驗位只占一位,緊接在數(shù)據位后面,用來表征串行通信中采用奇校驗還是偶校驗,也可用這一位(I/O)來確定這一幀中的字符所代表信息的性質(地址/數(shù)據等)。 (4)停止位:位于字符幀的最后,表征字符的結束,它一定是高電位(邏輯“1”)。停止位可以是1位、1.5位、或2位。接收端收到停止位后,知道上一字符已傳送完畢,同時也為接收下一字符作好準備(只要再收到“0”就是新的字符的起始位)。若停止位以后不是緊接著傳送

31、下一個字符,則讓線路上保持為“1”。圖5-2(a)表示一個字符緊接一個字符傳送的情況,上一個字符的停止位和下一個字符的起始位是緊相鄰的;圖5-2(b)則是兩個字符間有空閑位的情況,空閑位為“1”,線路處于等待狀態(tài)。存在空閑位正是異步通信的特征之一?!鞠嚓P知識】46 圖5-2 異步通信一幀數(shù)據格式 (a)無空閑位字符幀 (b)有空閑位字符幀【相關知識】47 2同步通信 同步通信時,字符與字符之間沒有間隙,也不用起始位和停止位,僅在數(shù)據塊開始時用同步字符SYNC來指示(常約定12個),然后是連續(xù)的數(shù)據塊。同步字符的插入可以是單同步字符方式或雙同步字符方式,如圖5-3所示;同步字符可以由用戶約定,也

32、可以采用ASCII碼中規(guī)定的SYN代碼,即16H。通信時先發(fā)送同步字符,接收方檢測到同步字符后,即準備接收數(shù)據。 在同步傳輸時,要求用時鐘來實現(xiàn)發(fā)送端與接收端之間的同步。為了保證接收無誤,發(fā)送方除了傳送數(shù)據外,還要把時鐘信號同時傳送?!鞠嚓P知識】48同步字符1數(shù)據字符1數(shù)據字符2數(shù)據字符3數(shù)據字符nCRC1CRC2同步字符1同步字符2數(shù)據字符1數(shù)據字符2數(shù)據字符nCRC1CRC2(a) (b) 圖5-3 同步傳送的數(shù)據格式 (a)單同步字符幀格式 (b)雙同步字符幀格式 同步通信方式適合2400bps以上速率的數(shù)據傳輸,由于不必加起始位和停止位,傳送效率較高,但實現(xiàn)起來比較復雜?!鞠嚓P知識】4

33、9二、波特率 波特率,即數(shù)據傳送速率,表示每秒鐘傳送二進制代碼的位數(shù),它的單位是位/秒(b/s),常用bps表示。波特率是異步通信的重要指標,表征數(shù)據傳輸?shù)乃俣?,波特率越高,?shù)據傳輸速度越快, 在數(shù)據傳送方式確定后,以多大的速率發(fā)送/接收數(shù)據,是實現(xiàn)串行通信必須解決的問題。 假設數(shù)據傳送的速率是120字符/s,每個字符格式包含10個代碼位(1個起始位、1個停止位、8個數(shù)據位),則通信波特率為:120字符/s10位/字符1200b/s1200波特 每一位的傳輸時間為波特率的倒數(shù):Td1/12000.833ms三、串行通信的制式 在串行通信中按照數(shù)據傳送方向,串行通信可分為單工、半雙工和全雙工三種

34、制式。 1單工制式 在單工制式中,只允許數(shù)據向一個方向傳送,通信的一端為發(fā)送器,另一端為接收器?!鞠嚓P知識】502半雙工制式在半雙工制式中,系統(tǒng)每個通信設備都由一個發(fā)送器和一個接收器組成,允許數(shù)據向兩個方向中的任一方向傳送,但每次只能有一個設備發(fā)送,即在同一時刻,只能進行一個方向傳送,不能雙向同時傳輸。3全雙工制式在全雙工制式中,數(shù)據傳送方式是雙向配置,允許同時雙向傳送數(shù)據。 在實際應用中,異步通信通常采用半雙工制式,這種用法簡單、實用?!鞠嚓P知識】51【第二部分】串行通信總線標準 在進行串行通信接口設計時,必須根據需要確定選擇標準接口、傳輸介質及電平轉換等問題。和并行傳送一樣,現(xiàn)在已經頒布了

35、很多種串行標準總線,如RS-232C,RS-422、RS-485和20mA電流環(huán)等。采用標準接口后,能夠方便地把單片機和外設、測量儀器等有機地連接起來,從而構成一個測控系統(tǒng)。一、RS-232C總線標準與應用 RS-232C是使用得最早、最多的一種異步串行通信總線標準。它由美國電子工業(yè)協(xié)會 (Electronic Industries Association)于1962年公布,1969年最后一次修訂而成。其中RS是 Recommended Sandard的縮寫,232是該標準的標識,C表示此標準已修改了三次。 RS-232C主要用來定義計算機系統(tǒng)的一些數(shù)據終端設備(DTE)和數(shù)據通信設備(DCE

36、)之間接口的電氣特性,目前已廣泛用于計算機與終端或外設之間的近端連接,適合于短距離或帶調制解調器的通信場合。【相關知識】 52 (一)RS-232C的電氣特性 RS-232C標準早于TTL電路的產生,與TTL、MOS邏輯電平規(guī)定不同。該標準采用負邏輯:低電平表示邏輯1,電平值為3Vl5V;高電平表示邏輯0,電平值為+3V一+l5V。因此,RS-232C不能直接與TTL電路連接,使用時必須加上適當?shù)碾娖睫D換電路,否則將使TTL電路燒毀。 (二)RS-232C引腳功能 RS-232C標準總線有25條信號線,引腳名稱見表5-1。 RS-232C信號分為兩類,一類是DTE與DCE交換的信息:TxD和R

37、xD;另一類是為了正確無誤地傳輸上述信息而設計的聯(lián)絡信號。下面介紹這兩類信號。 1數(shù)據發(fā)送與接收線 發(fā)送數(shù)據TxD:通過TxD線,終端將串行數(shù)據由發(fā)送端(DTE)向接收端(DCE)發(fā)送。按串行數(shù)據格式,先低位后高位的順序發(fā)出。接收數(shù)據RxD:通過RxD線,終端接收從發(fā)送端DTE (或調制解調器)輸出的數(shù)據?!鞠嚓P知識】53 2聯(lián)絡信號 這類信號共有6個: 請求傳送信號RTS:用來表示DTE請求DCE發(fā)送數(shù)據,即當終端要發(fā)送數(shù)據時,該信號RTS=1。 清除發(fā)送信號CTS: 用來表示DCE準備好接收DTE發(fā)來的數(shù)據,是對請求發(fā)送信號RTS的響應信號。 數(shù)據準備就緒信號DSR:這是DCE向DTE發(fā)出

38、的聯(lián)絡信號。DSR將指出本地DCE的工作狀態(tài)。當DSR=l時,表示DCE沒有處于測試通話狀態(tài),這時DCE可以與遠程DCE建立通道。 數(shù)據終端就緒信號DTR:這是DTE向DCE發(fā)送的聯(lián)絡信號。DTR=l時,表示DTE處于就緒狀態(tài),本地DCE和遠程DCE之間建立通信通道;而DTR=0時,將迫使DCE終止通信工作。 數(shù)據載波檢測信號DCD:這是DCE向DTE發(fā)出的狀態(tài)信息。當DCD=1時,表示本地DCE接收到遠程DCE發(fā)送。 振鈴指示信號RI:這是DCE向DTE發(fā)出的狀態(tài)信息。RI=1時,表示本地DCE接收到遠程DCE的振鈴信號。【相關知識】54表5-1 RS232各引腳信號說明 【相關知識】1*2

39、*3*4*5*6*7*8*9,101112131455續(xù)表5-1 RS232各引腳信號說明 【相關知識】15*1617*181920*21*22*23*24*25563RS-232C與單片機的連接 RS-232C接口與單片機聯(lián)接時需要進行電平轉換,常用的電平轉換芯片有MC1488、MC1489、MAX232,其中MAX232采用單5V電源供電,使用非常方便。 MAX232系列芯片由MAXIM公司生產,內含兩路接收器和驅動器。其內部的電源電壓變換器可以把輸入的+5V電源電壓變換成RS-232C輸出所需的10V電壓。采用該芯片硬件接口簡單、價格適中,所以被廣泛使用。圖5-4為該芯片引腳圖,圖5-5

40、 為該芯片應用電路。圖中電容C1、C2、C3、C4、C5均為1.0uF/16V。圖5-4 MAX232引腳 【相關知識】57圖7-5 MAX232應用電路二、RS-485總線標準 1RS-485接口介紹 RS-485收發(fā)器采用平衡發(fā)送和差分接收,因此具有抑制共模干擾的能力,加上接收器具有高的靈敏度,能檢測低達200mV的電壓,故傳輸信號能在千米以外得到恢復。使用RS-485總線,一對雙絞線就能實現(xiàn)多站聯(lián)網,構成分布式系統(tǒng),設備簡單、價格低廉、能進行長距離通信的優(yōu)點使其得到了廣泛的應用?!鞠嚓P知識】58 RS-485支持半雙工或全雙工模式。組網時通常采用終端匹配的總線型結構,采用一條總線將各個節(jié)

41、點串接起來,表5-2為一些常見芯片可聯(lián)接的節(jié)點數(shù)。表5-2 常見芯片聯(lián)接節(jié)點數(shù)節(jié)點數(shù)型 號32SN75176,SN75276,SN75179,SN75180,MAX485,MAX488,MAX49064SN75LBC184128MAX487,MAX1487256MAX1482,MAX1483,MAX3080MAX3089 RS-485接口可連接成半雙工和全雙工兩種通信方式。半雙工通信的芯片有SN75176、SN75276、SN75LBC184、MAX485、MAX 1487、MAX3082、MAX1483等;全雙工通信的芯片有SN75179、SN75180、MAX488MAX491、MAX14

42、82等。通常采用半雙工方式組網應用?!鞠嚓P知識】59 2RS-485芯片介紹 圖5-6為MAX485芯片引腳圖,各引腳功能如下: (1)RO:接收器輸出。AB+0.2V時,RO=“1”;AB0.2V,RO=“0” (2):接收器輸出使能。=“0”時,允許接收器輸出;=“1”時,禁止接收器輸出,RO為高阻。 (3)DE:驅動器輸出使能。DE=“1”時,允許驅動器工作;DE=“0”時,驅動器被禁止,輸出端A、B為高阻。 (4)DI:驅動器輸入。DI=“1”時,A輸出高電平,B輸出低電平;DI=“0”時,A輸出低電平,B輸出高電平。 (5)GND:地。 (6)A:接收器同相輸入和驅動器同相輸出。 (

43、7)B:接收器反相輸入和驅動器反相輸出。 (8)VCC:5V電源。 【相關知識】60圖5-6 MAX485芯片引腳圖 3RS-485芯片應用介紹 圖5-7為典型半雙工RS-485通信網絡。圖中各驅動器分時使用傳輸線(不發(fā)送數(shù)據的驅動器應被禁止)。網絡上可掛32個站。傳輸線通常采用雙絞線,可以較大程度抑制共模干擾。在傳輸線的末端接120的電阻進行阻抗匹配,消除由于不匹配在線路上產生的信號反射。 在實際應用中,為減少誤碼率,通信距離越遠,通信數(shù)率應取低一些。RS-485規(guī)定:通信距離為120m時,最大通信速率為1Mbps;若通信距離為1.2km,則最大通信速率為100kbps。 【相關知識】61

44、RS-485與PC機間可采用RS232/485接口卡。RS-485芯片與單片機聯(lián)接電路請參見相關部分內容。圖5-7 485芯片聯(lián)接電路【相關知識】62【第三部分】MCS-51單片機串行接口 MCS-51內部有一個可編程全雙工串行接口,具有UART(通用異步接收和發(fā)送器)的全部功能,通過單片機的引腳RXD(P3.0)、TXD(P3.1)同時接收、發(fā)送數(shù)據,構成雙機或多機通信系統(tǒng)?!鞠嚓P知識】一、MCS-51串行口的內部結構 MCS-51串行口的內部結構,如圖5-8所示:63圖5-8 串行口結構框圖 在圖5-8中,與MCS-51串行口有關的特殊功能寄行器為SBUF、SCON、PCON,下面對它們分

45、別討論?!鞠嚓P知識】64 1串行口數(shù)據緩沖器SBUF SBUF是一個特殊功能寄存器,有兩個在物理上獨立的接收緩沖器與發(fā)送緩沖器。發(fā)送緩沖器只能寫入不能讀出,寫入SBUF的數(shù)據存儲在發(fā)送緩沖器,用于串行發(fā)送;接收緩沖器只能讀出不能寫入。兩個緩沖器共用一個地址99H,通過對SBUF的讀、寫指令來區(qū)別是對接收緩沖器還是發(fā)送緩沖器進行操作。接收或發(fā)送數(shù)據,是通過串行口對外的兩條獨立收發(fā)信號線RXD(P3.0)、TXD(P3.1)來實現(xiàn)的。 2.串行口控制寄存器SCON SCON用來控制串行口的工作方式和狀態(tài),字節(jié)地址為98H,可以位尋址。SCON的格式如下所示: SCON(98H)SM0SMlSM2R

46、ENTB8RB8TIRI【相關知識】65各位功能說明如下:SM0、SMl:串行口工作方式選擇位,其定義如表5-3所示。SM0SM1工作方式功能說明001101010123同步移位寄存器輸入/輸出,波特率為fOSC/128位UART,波特率可變(TI溢出率/n,n=16或32)9位UART,波特率為fosc/n,n=32或64)9位UART,波特率可變(TI溢出率/n,n=16或32)表5-3 串行口工作方式設定【相關知識】66 SM2:多機通信控制位,用于方式2和方式3中。在方式2和方式3處于接收方式時,若SM2=1,表示置多機通信功能。如果接收到的第9位數(shù)據RB8為1,則將數(shù)據裝入SBUF,

47、并置RI為1,向CPU申請中斷;如果接收到的第9位數(shù)據RB8為0,則不接收數(shù)據,RI仍為0,不向CPU申請中斷。若SM2=0,不論接收到的第9位RB8為0還是為l,TI、RI都以正常方式被激活,接收到的數(shù)據裝入SBUF。在方式1,若SM2=1,則只有收到有效的停止位后,RI置1。在方式0中,SM2應為0。 REN:允許串行接收位。REN=l時,允許接收;REN=0時,禁止接收。 TB8:發(fā)送數(shù)據的第9位。在方式2和方式3中,TB8是第9位發(fā)送數(shù)據,可做奇偶校驗位。在多機通信中,可作為區(qū)別地址幀或數(shù)據幀的標識位,一般約定發(fā)送地址幀時,TB8為1,發(fā)送數(shù)據幀時,TB8為0。 RB8:接收數(shù)據的第9

48、位。在方式2和方式3中,RB8是第9位接收數(shù)據?!鞠嚓P知識】67 TI:發(fā)送中斷標志位。在方式0中,發(fā)送完8位數(shù)據后,由硬件置位;在其它方式,在發(fā)送停止位時由硬件置位。因此,TI是發(fā)送完一幀數(shù)據的標志,當TI=l時,向CPU申請串行中斷,響應中斷后,必須由軟件清除TI。 RI:接收中斷標志位。在方式0中,接收完8位數(shù)據后,由硬件置位;在其它方式中在接收停止位的中間點由硬件置位。接收完一幀數(shù)據RI=l,向CPU申請中斷,響應中斷后,必須由軟件清除RI。 3電源及波特率選擇寄存器PCON PCON主要是為CHMOS型單片機的電源控制而設置的專用寄存器,字節(jié)地址為87H。在HMOS的8051單片機中

49、,PCON只有最高位被定義,其它位都是虛設的。PCON(87H)SMODSSSSSSSSSSSSGF11GF00PPDDIDLL PCON的最高位SMOD為串行口波特率的倍增位。在方式1、2和3時,串行通信的波特率與SMOD有關。當SMOD=l時,通信波特率加倍,當SMOD=0時,波特率不變。其它各位為掉電方式控制位,在此不再贅述?!鞠嚓P知識】68二、MCS-51串行口的工作方式 MCS-51的串行口有4種工作方式,通過SCON中的SMl、SM0位來決定,如表5-4所示。 1工作方式0 在方式0下,串行口作同步移位寄存器用,其波特率固定為fOSC/l2。串行數(shù)據從RXD(P3.0)端輸入或輸出,同步移位脈沖由T

溫馨提示

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

評論

0/150

提交評論