串行通信技术实验报告姓名学号实验班号实验机位号50实验目的了解异步串行通信原理掌握MSP430异步串行通信模块及其编程方法必做实验任务,掌握串口助手的使用拆下单片机的功能拓展板,将主板上的eZ430-FET板载仿真器的BRXD,BTXD收发信号端口连接,通过串口调试助手即可实现串口的自发自收功能。接线如下图:思考:异步串行通信接口的收/发双方是怎样建立起通信的?答:异步串行通信的收发双方进行通信,在硬件与软件方面都有要求。在硬件方面需要两条线,分别从一方的发送端口到另一方的接收端口,从而实现“异步”;需要一个通信协议,确保通信正确;在这个实验中由于是自发自收,因此收发两方均为PC机,所以两条线其实是同一条线,而且由于是自发自收所以信号格式也是统一的,因此能够实现自发自收功能。本实验通过编程实现单片机和PC机之间的通信,信号格式为波特率9600bps,无校验,8位数据,先低后高,1个停止位,字符串以@结尾,单片机将接收到的字符保存在RAM中,收到@字符之后再将所储存的字符发给PC机。连线方式如下图:实验程序如下:#include""unsignedcharstring[];intmain(void){//StopwatchdogtimertopreventtimeoutresetWDTCTL=WDTPW+WDTHOLD;voidUSCIA0_int(){UCA0CTL1|=UCSWRST;//swrst=1;//、P1SEL|=BIT1+BIT2;P1SEL2|=BIT1+BIT2;//if(CALBC1_1MHz!=0xff){BCSCTL1=CALBC1_1MHZ;DCOCTL=CALDCO_1MHZ;}//设置控制寄存器UCA0CTL1|=UCSSEL_2+UCRXEIE;//设置波特率寄存器,采用低频波特率方式UCA0BR1=0;UCA0BR0=104;UCA0MCTL=UCBRS_1;UCA0CTL1&=~UCSWRST;//swrst=0}While(1){unsignedintj;for(j=0;string[j]!='@';j++){while((IFG2&UCA0RXIFG)==0);string[j]=UCA0RXBUF;}unsignedi=j;for(j=0;j!=i+1;j++){while((IFG2&UCA0TXIFG)==0);UCA0TXBUF=string[j];}}}思考:如果在两个单片机之间进行串行通信,如何设计连线和编程?答:编程:其中一个单片机能够继续采用本实验中所用的程序,另一个单片机则编程输出一串以@结尾的字符,之后进入接收状态,初始化及寄存器的设置部分的程序不变;连线:、、,控制两个单片机同时运行程序即可完成两个单片机之间的通信。编程采用下面数据格式,完成单片机与PC机之间的字符串传送。波特率9600bps,奇校验,8位数据,先低后高,1个停止位;本实验需要用到MSP430F149,进行PC机与单片机之间的电平信号转换。连线如下图:实验程序如下:#include""unsignedcharstring[];intmain(void){//StopwatchdogtimertopreventtimeoutresetWDTCTL=WDTPW+WDTHOLD;voidUSCIA0_int(){UCA0CTL1|=UCSWRST;//swrst=1;//、P1SEL|=BIT1+BIT2;P1SEL2|=BIT1+BIT2;//if(CALBC1_1MHz!=0xff){BCSCTL1=CALBC1_1MHZ;DCOCTL=CALDCO_1MHZ;}//设置时钟源采用SMCLK,1MHz,波特率设置为9600,奇校验UCA0CTL0|=UCPEN;UCA0CTL1|=UCSSEL_2+UCRXEIE;//设置波特率寄存器,采用低频波特率方式UCA0BR1=0;UCA0BR0=104;UCA0MCTL=UCBRS_1;UCA0CTL1&=~UCSWRST;//swrst=0}While(1){unsignedintj;for(j=0;string[j]!='@';j++){while((IFG2&UCA0RXIFG)==0);string[j]=UCA0RXBUF;}unsignedi=j;for(j=0;j!=i+1;j++){while((IFG2&UCA0TXIFG)==0);UCA0TXBUF=string[j];}}}思考:设计单片机与PC机进行串行通信时,硬件设计有哪些需要注意的事项?答:正确的连线;统一的通信协议;统一的逻辑电平;选取合适的信号输出方式,如USB、串口、并口等已完成的选做实验任务查询方式控制单片机通过板载USB转串口与PC机实现串行通信(选做)本实验与1)的实
串行通信技术实验报告 来自淘豆网m.daumloan.com转载请标明出处.