串行通信技术实验报告.docx串行通信技术实验报告
、实验目的
了解异步串行通信原理
掌握MSP430异步串行通信模块及其编程方法
二、必做实验任务
了解MSP430G2553实验板USB转串口的通信功能,掌握串口助手的使用
拆下单片机的功能拓展板,将主板上的eZ430-FET板载仿真器的BRXD, BTXD收发信号 端口连接,通过串口调试助手即可实现串口的自发自收功能。接线如下图:
EZ-VCC SBWTCK SBWTDIO BTXD
10
8
6
4
2
9
7
5
3
1
VCC
TEST/SBWTCK RST/SBWTDIO
BRXD
思考:异步串行通信接口的收/发双方是怎样建立起通信的?
答:异步串行通信的收发双方进行通信,在硬件与软件方面都有要求。
在硬件方面需要两条线,分别从一方的发送端口到另一方的接收端口,从而实现“异 步”;
需要一个通信协议,确保通信正确;
在这个实验中由于是自发自收,因此收发两方均为pc机,所以两条线其实是同一 条线,而且由于是自发自收所以信号格式也是统一的,因此可以实现自发自收功能。
查询方式控制单片机通过板载USB转串口与PC机实现串行通信
本实验通过编程实现单片机和PC机之间的通信,信号格式为波特率9600bps,无校验, 8位数据,先低后高,1个停止位,字符串以@结尾,单片机将接收到的字符保存在RAM中, 收到@字符之后再将所储存的字符发给PC机。
连线方式如下图:
实验程序如下:
#include "" unsigned char string[]; int main( void ) {
// Stop watchdog timer to prevent time out reset WDTCTL = WDTPW + WDTHOLD;
void USCIAO_int()
{
UCA0CTL11 =UCSWRST; //swrst=l;
〃、 P1SEL|=BIT1+BIT2;
P1SEL2|=BIT1+BIT2;
〃
if (CALBCl_lMHz!=Oxff) {BCSCTL1=CALBC1_1MHZ; DCOCTL=CALDCO_1MHZ;}
〃设置控制寄存器
UCAOCTL1|=UCSSEL_2+UCRXEIE;
〃设置波特率寄存器,采用低频波特率方式
UCAOBR1=O;
UCA0BR0=104;
UCAOMCTL=UCBRS_1;
UCA0CTL1 &=~UCSWRST; //swrst=0
}
While(l)
{
unsigned int j;
for (j=O;string[j]!=,@,;j++)
{
while((IFG2&U CA0RXIFG)==0); string[j]=UCAORXBUF;
}
unsigned i=j;
for (j=O;j!=i+l;j++)
{
while((IFG2&UCA0TXIFG)==0);
UCAOTXBUF=string[j];
}
}
}
思考:如果在两个单片机之间进行串行通信,如何设计连线和编程?
答:
编程:其中一个单片机可以继续采用本实验中所用的程序,另一个单片机则编程输出一 串以@结尾的字符,之后进入接收状态,初始化及寄存器的设置部分的程序不变;
连线:, 、,控制两 个单片机同时运行程序即可完成两个单片机之间的通信。
利用PC机RS232通信接口与单片机完成串行通信
编程采用下面数据格式,完成单片机与PC机之间的字符串传送。
1)波特率9600bps,奇校验,8位数据,先低后高,1个停止位;
本实验需要用到MSP430F149,进行PC机与单片机之间的电平信号转换。
连线如下图:
实验程序如下:
include ""
unsigned char string[];
int main( void )
{
// Stop watchdog timer to prevent time out reset
WDTCTL = WDTPW + WDTHOLD;
void USCIAO_int()
{
UCA0CTL1 |=UCSWRST; //swrst=l;
〃,
P1SEL|=BIT1+BIT2;
P1SEL2|=BIT1+BIT2;
〃
if (CALBCl_lMHz!=Oxff
串行通信技术实验报告 来自淘豆网m.daumloan.com转载请标明出处.