串行通信技術實驗報告_第1頁
串行通信技術實驗報告_第2頁
串行通信技術實驗報告_第3頁
串行通信技術實驗報告_第4頁
串行通信技術實驗報告_第5頁
已閱讀5頁,還剩7頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、串行通信技術實驗報告姓名 學號 實驗班號 實驗機位號 50一、 實驗目的1. 了解異步串行通信原理2. 掌握MSP430異步串行通信模塊及其編程方法二、 必做實驗任務1.了解MSP430G2553實驗板USB轉串口的通信功能,掌握串口助手的使用拆下單片機的功能拓展板,將主板上的eZ430-FET板載仿真器的BRXD,BTXD收發(fā)信號端口連接,通過串口調(diào)試助手即可實現(xiàn)串口的自發(fā)自收功能。接線如下圖:思考:異步串行通信接口的收/發(fā)雙方是怎樣建立起通信的?答:異步串行通信的收發(fā)雙方進行通信,在硬件與軟件方面都有要求。1 在硬件方面需要兩條線,分別從一方的發(fā)送端口到另一方的接收端口,從而實現(xiàn)“異步”;

2、2 需要一個通信協(xié)議,確保通信正確;3 在這個實驗中由于是自發(fā)自收,因此收發(fā)兩方均為PC機,所以兩條線其實是同一條線,而且由于是自發(fā)自收所以信號格式也是統(tǒng)一的,因此可以實現(xiàn)自發(fā)自收功能。2.查詢方式控制單片機通過板載USB轉串口與PC機實現(xiàn)串行通信本實驗通過編程實現(xiàn)單片機和PC機之間的通信,信號格式為波特率9600bps,無校驗,8位數(shù)據(jù),先低后高,1個停止位,字符串以結尾,單片機將接收到的字符保存在RAM中,收到字符之后再將所儲存的字符發(fā)給PC機。連線方式如下圖:實驗程序如下:#include io430.hunsigned char string;int main( void )/ Sto

3、p watchdog timer to prevent time out reset WDTCTL = WDTPW + WDTHOLD;void USCIA0_int()UCA0CTL1|=UCSWRST; /swrst=1;/置P1.1、P1.2為USCI_A0的收發(fā)引腳P1SEL|=BIT1+BIT2;P1SEL2|=BIT1+BIT2; /時鐘SMCLK選擇為1.0MHzif (CALBC1_1MHz!=0xff)BCSCTL1=CALBC1_1MHZ;DCOCTL=CALDCO_1MHZ;/設置控制寄存器UCA0CTL1|=UCSSEL_2+UCRXEIE;/設置波特率寄存器,采用低頻

4、波特率方式UCA0BR1=0;UCA0BR0=104;UCA0MCTL=UCBRS_1;UCA0CTL1&=UCSWRST; /swrst=0While(1) unsigned int j; for (j=0;stringj!=;j+) while(IFG2&UCA0RXIFG)=0); stringj=UCA0RXBUF; unsigned i=j; for (j=0;j!=i+1;j+) while(IFG2&UCA0TXIFG)=0); UCA0TXBUF=stringj; 思考:如果在兩個單片機之間進行串行通信,如何設計連線和編程? 答:a. 編程:其中一個單片機可以繼續(xù)采用本實驗中所

5、用的程序,另一個單片機則編程輸出一串以結尾的字符,之后進入接收狀態(tài),初始化及寄存器的設置部分的程序不變;b. 連線:將一個單片機的P1.1、P1.2接口分別與另一個的P1.2、P1.1接口連接,控制兩個單片機同時運行程序即可完成兩個單片機之間的通信。3.利用PC機RS232通信接口與單片機完成串行通信編程采用下面數(shù)據(jù)格式,完成單片機與PC機之間的字符串傳送。 1) 波特率9600bps,奇校驗,8位數(shù)據(jù),先低后高,1個停止位;本實驗需要用到MSP430F149,進行PC機與單片機之間的電平信號轉換。連線如下圖:實驗程序如下:#include io430.hunsigned char strin

6、g;int main( void )/ Stop watchdog timer to prevent time out resetWDTCTL = WDTPW + WDTHOLD;void USCIA0_int()UCA0CTL1|=UCSWRST; /swrst=1;/置P1.1、P1.2為USCI_A0的收發(fā)引腳P1SEL|=BIT1+BIT2;P1SEL2|=BIT1+BIT2; /時鐘SMCLK選擇為1.0MHzif (CALBC1_1MHz!=0xff)BCSCTL1=CALBC1_1MHZ;DCOCTL=CALDCO_1MHZ;/設置時鐘源采用SMCLK,1MHz,波特率設置為96

7、00,奇校驗UCA0CTL0|=UCPEN;UCA0CTL1|=UCSSEL_2+UCRXEIE;/設置波特率寄存器,采用低頻波特率方式UCA0BR1=0;UCA0BR0=104;UCA0MCTL=UCBRS_1;UCA0CTL1&=UCSWRST; /swrst=0While(1) unsigned int j; for (j=0;stringj!=;j+) while(IFG2&UCA0RXIFG)=0); stringj=UCA0RXBUF; unsigned i=j; for (j=0;j!=i+1;j+) while(IFG2&UCA0TXIFG)=0); UCA0TXBUF=str

8、ingj; 思考:設計單片機與PC機進行串行通信時,硬件設計有哪些需要注意的事項?答:1 正確的連線;2 統(tǒng)一的通信協(xié)議;3 統(tǒng)一的邏輯電平;4 選取合適的信號輸出方式,如USB、串口、并口等3、 已完成的選做實驗任務2. 查詢方式控制單片機通過板載USB轉串口與PC機實現(xiàn)串行通信 2) (選做) 串口時鐘選用外部晶振32.768KHz 本實驗與1)的實驗的差別有兩點:1 波特率發(fā)生器的時鐘源選擇外部晶振,接線上應注意接入外部晶振2 波特率的設置應隨著時鐘源的改變而改變,計算過程為:時鐘頻率和需要的波特率的比值是32768/9600=3.413,采用低頻波特率方式,置UCOS16=0,所以設U

9、CA0BR1=0,UCA0BR0=3,0.41*83,所以設UCBRS=3。程序如下:#include io430.hunsigned char string;int main( void )/ Stop watchdog timer to prevent time out resetWDTCTL = WDTPW + WDTHOLD;void USCIA0_int()UCA0CTL1|=UCSWRST; /swrst=1;/置P1.1、P1.2為USCI_A0的收發(fā)引腳P1SEL|=BIT1+BIT2;P1SEL2|=BIT1+BIT2;/設置時鐘源采用外部晶振,32768Hz,波特率設置為9

10、600,無校驗UCA0CTL1|=UCSSEL_1+UCRXEIE;/設置波特率寄存器,采用低頻波特率方式UCA0BR1=0;UCA0BR0=3;UCA0MCTL=UCBRS_3;UCA0CTL1&=UCSWRST; /swrst=0While(1) unsigned int j; for (j=0;stringj!=;j+) while(IFG2&UCA0RXIFG)=0); stringj=UCA0RXBUF; unsigned i=j; for (j=0;j!=i+1;j+) while(IFG2&UCA0TXIFG)=0); UCA0TXBUF=stringj; 3. 利用PC機RS2

11、32通信接口與單片機完成串行通信2) (選做) 波特率bps,偶校驗,8位數(shù)據(jù),先低后高,2個停止位。 本實驗與1)中實驗的差別主要在時鐘源以及寄存器設置上:1 選用時鐘SMCLK;2 相應的波特率設置隨之改變,計算過程:時鐘頻率和需要的波特率的比值是/=104.17,采用過采樣波特率方式,置UCOS16=1,因為104.17/16=6.51所以設UCA0BR1=0,UCA0BR0=6,0.51*168,所以設UCBRF=8。3 USCI_A0串口寄存器中,設置偶校驗,2個停止位程序如下:#include io430.hunsigned char string;int main( void )

12、/ Stop watchdog timer to prevent time out resetWDTCTL = WDTPW + WDTHOLD;void USCIA0_int()UCA0CTL1|=UCSWRST; /swrst=1;/置P1.1、P1.2為USCI_A0的收發(fā)引腳P1SEL|=BIT1+BIT2;P1SEL2|=BIT1+BIT2; /時鐘SMCLK選擇為12.0MHzif (CALBC1_12MHz!=0xff)BCSCTL1=CALBC1_12MHZ;DCOCTL=CALDCO_12MHZ;/設置時鐘源采用SMCLK,12MHz,波特率設置為,偶校驗,2個停止位UCA0C

13、TL0|=UCPEN+UCPAR+UCSPB;UCA0CTL1|=UCSSEL_2+UCRXEIE;/設置波特率寄存器,采用過采樣波特率方式UCA0BR1=0;UCA0BR0=6;UCA0MCTL=UCBRF_8+UCBRS_0+UCOS16;UCA0CTL1&=UCSWRST; /swrst=0While(1) unsigned int j; for (j=0;stringj!=;j+) while(IFG2&UCA0RXIFG)=0); stringj=UCA0RXBUF; unsigned i=j; for (j=0;j!=i+1;j+) while(IFG2&UCA0TXIFG)=0)

14、; UCA0TXBUF=stringj; 4. (選做)中斷方式控制串行通信的收發(fā) 編程:采用中斷方式接收和發(fā)送完成任務2的內(nèi)容。 1) 串口時鐘選用 SMCLK=1.0MHz 2) (選做) 串口時鐘選用外部晶振32.768KHz 答:與實驗2相比,本實驗的不同在于:1 采用中斷方式;2 寄存器相關設置不同;1) 程序如下: #include io430.h #include in430.h void USCIA0_init( ); void Clock_int(); unsigned char string; unsigned int j,i; int main( void ) WDTCT

15、L = WDTPW + WDTHOLD; Clock_int(); /時鐘初始化 USCIA0_init( ); /串口初始化 IE2 |=UCA0RXIE; /開串口接收中斷允許 _EINT(); /開總中斷 while(1); #pragma vector=USCIAB0RX_VECTOR _interrupt void UCA0RX_isr( ) stringj=UCA0RXBUF; /將接收到的數(shù)據(jù)存至存儲器 j+; if (stringj=) IE2 &= UCA0RXIE; /關閉串口0接收中斷允許 IE2|=UCA0TXIE; i=j; #pragma vector=USCIAB

16、0TX_VECTOR _interrupt void UCA0TX_isr() UCA0TXBUF=stringj;/將接收到的數(shù)據(jù)存至存儲器 j+; if (j=i)IE2&= UCA0TXIE; /關閉串口發(fā)送中斷允許 void USCIA0_init( ) UCA0CTL1 |= UCSWRST; /swrst=1 /置P1.1P1.2為USCI_A0的收/發(fā)引腳 P1SEL |= BIT1+BIT2; P1SEL2 |= BIT1+BIT2; /時鐘選擇SMCLK, 不論數(shù)據(jù)對均收 UCA0CTL1|= UCSSEL_2+UCRXEIE ; /設置波特率寄存器 UCA0BR1=0; U

17、CA0BR0=104; UCA0MCTL=UCBRS_1; UCA0CTL1 &=UCSWRST ; /swrst=0 void Clock_int() BCSCTL1=CALBC1_1MHZ; DCOCTL=CALDCO_1MHZ;2) 程序如下: #include io430.h #include in430.h void USCIA0_init( ); unsigned char string; unsigned int j,i; int main( void ) WDTCTL = WDTPW + WDTHOLD; USCIA0_init( ); /串口初始化 IE2 |=UCA0RXI

18、E; /開串口接收中斷允許 _EINT(); /開總中斷 while(1); #pragma vector=USCIAB0RX_VECTOR _interrupt void UCA0RX_isr( ) stringj=UCA0RXBUF; /將接收到的數(shù)據(jù)存至存儲器 j+; if (stringj=) IE2 &= UCA0RXIE; /關閉串口0接收中斷允許 IE2|=UCA0TXIE; i=j; #pragma vector=USCIAB0TX_VECTOR _interrupt void UCA0TX_isr() UCA0TXBUF=stringj;/將接收到的數(shù)據(jù)存至存儲器 j+; i

19、f (j=i) IE2&= UCA0TXIE; /關閉串口發(fā)送中斷允許 void USCIA0_init( ) UCA0CTL1|=UCSWRST; /swrst=1;/置P1.1、P1.2為USCI_A0的收發(fā)引腳P1SEL|=BIT1+BIT2;P1SEL2|=BIT1+BIT2;/設置時鐘源采用外部晶振,32768Hz,波特率設置為9600,無校驗UCA0CTL1|=UCSSEL_1+UCRXEIE;/設置波特率寄存器,采用低頻波特率方式UCA0BR1=0;UCA0BR0=3;UCA0MCTL=UCBRS_3;UCA0CTL1&=UCSWRST; /swrst=0 2-1#include

20、 io430.hunsigned char string;int main( void )/ Stop watchdog timer to prevent time out resetWDTCTL = WDTPW + WDTHOLD;UCA0CTL1|=UCSWRST; /swrst=1;/置P1.1、P1.2為USCI_A0的收發(fā)引腳P1SEL|=BIT1+BIT2;P1SEL2|=BIT1+BIT2; /時鐘SMCLK選擇為1.0MHzBCSCTL1=CALBC1_1MHZ;DCOCTL=CALDCO_1MHZ;/設置控制寄存器UCA0CTL1|=UCSSEL_2+UCRXEIE;/設置波

21、特率寄存器,采用低頻波特率方式UCA0BR1=0;UCA0BR0=104;UCA0MCTL=UCBRS_1;UCA0CTL1&=UCSWRST; /swrst=0while(1) unsigned int j; for (j=0;stringj!=;j+) while(IFG2&UCA0RXIFG)=0); stringj=UCA0RXBUF; unsigned i=j; for (j=0;j!=i+1;j+) while(IFG2&UCA0TXIFG)=0); UCA0TXBUF=stringj; 2-2#include io430.hunsigned char string;int mai

22、n( void )/ Stop watchdog timer to prevent time out resetWDTCTL = WDTPW + WDTHOLD;/USCI_A0初始化UCA0CTL1|=UCSWRST; /swrst=1;/置P1.1、P1.2為USCI_A0的收發(fā)引腳P1SEL|=BIT1+BIT2;P1SEL2|=BIT1+BIT2;/設置時鐘源采用外部晶振,32768Hz,波特率設置為9600,無校驗UCA0CTL1|=UCSSEL_1+UCRXEIE;/設置波特率寄存器,采用低頻波特率方式UCA0BR1=0;UCA0BR0=3;UCA0MCTL=UCBRS_3;UCA

23、0CTL1&=UCSWRST; /swrst=0/初始化結束while(1) unsigned int j; for (j=0;stringj!=;j+) while(IFG2&UCA0RXIFG)=0); stringj=UCA0RXBUF; unsigned i=j; for (j=0;j!=i+1;j+) while(IFG2&UCA0TXIFG)=0); UCA0TXBUF=stringj; ;3-1#include io430.hunsigned char string;int main( void )/ Stop watchdog timer to prevent time out

24、 resetWDTCTL = WDTPW + WDTHOLD;UCA0CTL1|=UCSWRST; /swrst=1;/置P1.1、P1.2為USCI_A0的收發(fā)引腳P1SEL|=BIT1+BIT2;P1SEL2|=BIT1+BIT2; /時鐘SMCLK選擇為1.0MHzBCSCTL1=CALBC1_1MHZ;DCOCTL=CALDCO_1MHZ;/設置時鐘源采用SMCLK,1MHz,波特率設置為9600,奇校驗UCA0CTL0|=UCPEN;UCA0CTL1|=UCSSEL_2+UCRXEIE;/設置波特率寄存器,采用低頻波特率方式UCA0BR1=0;UCA0BR0=104;UCA0MCTL=UCBRS_1;UCA0CTL1&=UCSWRST; /swrst=0while(1

溫馨提示

  • 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

提交評論