串行通信技术实验报告_第1页
串行通信技术实验报告_第2页
串行通信技术实验报告_第3页
串行通信技术实验报告_第4页
串行通信技术实验报告_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、串行通信技术实验报告、 实验目的1. 了解异步串行通信原理2. 掌握 MSP430 异步串行通信模块及其编程方法二、 必做实验任务1. 了解 MSP430G2553 实验板 USB 转串口的通信功能, 掌握 串口助手的使用拆下单片机的功能拓展板, 将主板上的 eZ430-FET 板载仿 真器的 BRXD,BTXD 收发信号端口连接, 通过串口调试助手 即可实现串口的自发自收功能。接线如下图:Word 资料思考:异步串行通信接口的收/ 发双方是怎样建立起通信的?答:异步串行通信的收发双方进行通信, 在硬件与软件方 面都有要求。 在硬件方面需要两条线,分别从一方的发送端口到 另一方的接收端口,从而

2、实现“异步” ; 需要一个通信协议,确保通信正确; 在这个实验中由于是自发自收,因此收发两方均为 PC 机,所以两条线其实是同一条线,而且由于是自发自收 所以信号格式也是统一的,因此可以实现自发自收功能。2. 查询方式控制单片机通过板载 USB转串口与 PC 机实现串 行通信本实验通过编程实现单片机和 PC 机之间的通信, 信号格 式为波特率 9600bps ,无校验, 8 位数据,先低后高, 1 个 停止位,字符串以 结尾,单片机将接收到的字符保存在 RAM 中,收到 字符之后再将所储存的字符发给 PC 机。 连线方式如下图:Word 资料实验程序如下:#include io430.h un

3、signed 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 的收发引脚P1SEL|=BIT1+BIT2;P1SEL2|=BIT1+BIT2;/ 时钟 SMCLK 选择为 1.0MHzif (CALBC1_1MHz!=0xff) BCSCTL1=CALBC1_1MHZ;DCOCTL=CALDCO_1MHZ;

4、Word 资料/ 设置控制寄存器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=stringj;Word 资料

5、思考: 如果在两个单片机之间进行串行通信, 如何设计连 线和编程?答:a. 编程:其中一个单片机可以继续采用本实验中所用的程 序, 另一个单片机则编程输出一串以 结尾的字符,之后 进入接收状态,初始化及寄存器的设置部分的程序不变;b. 连线:将一个单片机的 P1.1 、P1.2 接口分别与另一个的P1.2 、P1.1 接口连接,控制两个单片机同时运行程序即 可完成两个单片机之间的通信。3. 利用 PC 机 RS232 通信接口与单片机完成串行通信 编程采用下面数据格式,完成单片机与 PC 机之间的字符串 传送。1) 波特率 9600bps ,奇校验, 8 位数据,先低后高, 1 个 停止位;本

6、实验需要用到 MSP430F149 ,进行 PC 机与单片机之 间的电平信号转换。连线如下图:Word 资料实验程序如下:#include io430.h unsigned char string; int main( void ) / Stop watchdog timer to prevent time out reset WDTCTL = WDTPW + WDTHOLD; void USCIA0_int() UCA0CTL1|=UCSWRST; /swrst=1;/ 置 P1.1 、P1.2 为 USCI_A0 的收发引脚 P1SEL|=BIT1+BIT2;Word 资料P1SEL2|=

7、BIT1+BIT2;/ 时钟 SMCLK 选择为 1.0MHzif (CALBC1_1MHz!=0xff)BCSCTL1=CALBC1_1MHZ;DCOCTL=CALDCO_1MHZ;9600,/ 设置时钟源采用 SMCLK ,1MHz ,波特率设置为 奇校验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!

8、=;j+)while(IFG2&UCA0RXIFG)=0); stringj=UCA0RXBUF;Word 资料 unsigned i=j; for (j=0;j!=i+1;j+)while(IFG2&UCA0TXIFG)=0); UCA0TXBUF=stringj;答:思考:设计单片机与 PC 机进行串行通信时,硬件设计 有哪些需要注意的事项?正确的连线; 统一的通信协议; 统一的逻辑电平;选取合适的信号输出方式,如 USB、串口、并口等三、已完成的选做实验任务2. 查询方式控制单片机通过板载 USB 转串口与 PC 机实现 串行通信2) (选做 ) 串口时钟选用外部晶振 32.768KHz

9、 本实验与 1 )的实验的差别有两点: 波特率发生器的时钟源选择外部晶振,接线上应注Word 资料意接入外部晶振 波特率的设置应随着时钟源的改变而改变,计算过程为:时钟频率和需要的波特率的比值是 32768/9600=3.413 ,采用低频波特率方式, 置 UCOS16=0 , 所以设 UCA0BR1=0 , UCA0BR0=3 ,0.41*8 3 ,所以设 UCBRS=3 。程序如下:#include io430.hunsigned char string;int main( void )/ Stop watchdog timer to prevent time out resetWDTCT

10、L = WDTPW + WDTHOLD;void USCIA0_int()UCA0CTL1|=UCSWRST; /swrst=1;/ 置 P1.1 、P1.2 为 USCI_A0 的收发引脚P1SEL|=BIT1+BIT2;P1SEL2|=BIT1+BIT2;/ 设置时钟源采用外部晶振, 32768Hz ,波特率设置为 9600 ,无校验UCA0CTL1|=UCSSEL_1+UCRXEIE;Word 资料/ 设置波特率寄存器,采用低频波特率方式 UCA0BR1=0;UCA0BR0=3;UCA0MCTL=UCBRS_3;UCA0CTL1&=UCSWRST; /swrst=0 While(1)un

11、signed 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;Word 资料3. 利用 PC 机 RS232 通信接口与单片机完成串行通信2) ( 选做 ) 波特率 115200bps ,偶校验, 8 位数据,先低 后高, 2 个停止位。本实验与 1)中实验的差别主要在时钟源以及寄存器设置 上: 选用时钟 SMCLK ; 相应的波特率设置随之改变,计算过

12、程:时钟频率和需要的波特率的比值是 12000000/115200=104.17 ,采用过采样波特率方式,置 UCOS16=1 ,因为 104.17/16=6.51 所以设 UCA0BR1=0 , UCA0BR0=6 , 0. 51*16 8 ,所以设UCBRF=8 。 USCI_A0 串口寄存器中,设置偶校验, 2 个停止位 程序如下:#include io430.hunsigned char string;int main( void )/ Stop watchdog timer to prevent time out resetWDTCTL = WDTPW + WDTHOLD;void

13、USCIA0_int()/swrst=1;UCA0CTL1|=UCSWRST;Word 资料/ 置 P1.1 、P1.2 为 USCI_A0 的收发引脚P1SEL|=BIT1+BIT2;P1SEL2|=BIT1+BIT2;/ 时钟 SMCLK 选择为 12.0MHzif (CALBC1_12MHz!=0xff)BCSCTL1=CALBC1_12MHZ;DCOCTL=CALDCO_12MHZ;/ 设置时钟源采用 SMCLK , 12MHz ,波特率设置为 115200 ,偶校验 ,2 个停止位UCA0CTL0|=UCPEN+UCPAR+UCSPB;UCA0CTL1|=UCSSEL_2+UCRXE

14、IE;/ 设置波特率寄存器,采用过采样波特率方式UCA0BR1=0;UCA0BR0=6;UCA0MCTL=UCBRF_8+UCBRS_0+UCOS16;UCA0CTL1&=UCSWRST; /swrst=0While(1)unsigned int j;for (j=0;stringj!=;j+)Word 资料 while(IFG2&UCA0RXIFG)=0);stringj=UCA0RXBUF;unsigned i=j;for (j=0;j!=i+1;j+)while(IFG2&UCA0TXIFG)=0);UCA0TXBUF=stringj;4. (选做)中断方式控制串行通信的收发 编程:采用

15、中断方式接收和发送完成任务 2 的内容 1) 串口时钟选用 SMCLK=1.0MHz2) (选做 ) 串口时钟选用外部晶振 32.768KHz 答: 与实验 2 相比,本实验的不同在于: 采用中断方式; 寄存器相关设置不同;1)程序如下:#include io430.h#include in430.hvoid USCIA0_init( );Word 资料void Clock_int();unsigned char string; unsigned int j,i;int main( void ) WDTCTL = WDTPW + WDTHOLD;Clock_int(); / 时钟初始化USCI

16、A0_init( ); / 串口初始化IE2 |=UCA0RXIE; / 开串口接收中断允许 _EINT(); / 开总中断 while(1);#pragma vector=USCIAB0RX_VECTOR_interruptvoid UCA0RX_isr( ) stringj=UCA0RXBUF; / 将接收到的数据存至存储 器j+;if (stringj=)IE2 &= UCA0RXIE; / 关闭串口 0 接收中断允许 IE2|=UCA0TXIE;i=j;#pragma vector=USCIAB0TX_VECTORWord 资料interrupt void UCA0TX_isr() U

17、CA0TXBUF=stringj;/ 将接收到的数据存至存储器 j+;if (j=i)IE2&= UCA0TXIE; / 关闭串口发送中断允许void USCIA0_init( ) UCA0CTL1 |= UCSWRST; /swrst=1/ 置 P1.1P1.2 为 USCI_A0 的收/ 发引脚P1SEL |= BIT1+BIT2;P1SEL2 |= BIT1+BIT2;/ 时钟选择 SMCLK, 不论数据对均收UCA0CTL1|= UCSSEL_2+UCRXEIE ;/ 设置波特率寄存器UCA0BR1=0;UCA0BR0=104;UCA0MCTL=UCBRS_1;UCA0CTL1 &=U

18、CSWRST ; /swrst=0void Clock_int()BCSCTL1=CALBC1_1MHZ;DCOCTL=CALDCO_1MHZ;Word 资料2)程序如下:#include io430.h#include in430.hvoid USCIA0_init( );unsigned char string; unsigned int j,i;int main( void ) WDTCTL = WDTPW + WDTHOLD;USCIA0_init( ); / 串口初始化IE2 |=UCA0RXIE; / 开串口接收中断允许 _EINT(); / 开总中断 while(1);#prag

19、ma vector=USCIAB0RX_VECTOR_interrupt void UCA0RX_isr( ) stringj=UCA0RXBUF; / 将接收到的数据存至存储 器j+;if (stringj=)IE2 &= UCA0RXIE; / 关闭串口 0 接收中断允许 IE2|=UCA0TXIE;Word 资料i=j;#pragma vector=USCIAB0TX_VECTOR_interrupt void UCA0TX_isr() UCA0TXBUF=stringj;/ 将接收到的数据存至存储器 j+;if (j=i) IE2&= UCA0TXIE; / 关闭串口发送中断允许voi

20、d USCIA0_init( ) UCA0CTL1|=UCSWRST; /swrst=1;/ 置 P1.1 、P1.2 为 USCI_A0 的收发引脚P1SEL|=BIT1+BIT2;P1SEL2|=BIT1+BIT2;/ 设置时钟源采用外部晶振, 32768Hz ,波特率设置为9600 ,无校验UCA0CTL1|=UCSSEL_1+UCRXEIE;/ 设置波特率寄存器,采用低频波特率方式UCA0BR1=0;UCA0BR0=3;UCA0MCTL=UCBRS_3;UCA0CTL1&=UCSWRST; /swrst=0Word 资料2-1#include io430.h unsigned char

21、 string;int main( void )/ Stop watchdog timer to prevent time out resetWDTCTL = WDTPW + WDTHOLD;UCA0CTL1|=UCSWRST; /swrst=1;/ 置 P1.1 、P1.2 为 USCI_A0 的收发引脚P1SEL|=BIT1+BIT2;P1SEL2|=BIT1+BIT2;/ 时钟 SMCLK 选择为 1.0MHzBCSCTL1=CALBC1_1MHZ;DCOCTL=CALDCO_1MHZ;/ 设置控制寄存器UCA0CTL1|=UCSSEL_2+UCRXEIE;/ 设置波特率寄存器,采用低频

22、波特率方式 UCA0BR1=0;UCA0BR0=104;UCA0MCTL=UCBRS_1;UCA0CTL1&=UCSWRST; /swrst=0Word 资料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;2-2#include io430.h unsigned char string;int main( void

23、 )/ Stop watchdog timer to prevent time out resetWord 资料WDTCTL = WDTPW + WDTHOLD;/USCI_A0 初始化 UCA0CTL1|=UCSWRST; /swrst=1;/ 置 P1.1 、P1.2 为 USCI_A0 的收发引脚 P1SEL|=BIT1+BIT2;P1SEL2|=BIT1+BIT2;/ 设置时钟源采用外部晶振, 32768Hz ,波特率设置为 9600 , 无校验UCA0CTL1|=UCSSEL_1+UCRXEIE;/ 设置波特率寄存器,采用低频波特率方式 UCA0BR1=0;UCA0BR0=3;UCA

24、0MCTL=UCBRS_3;UCA0CTL1&=UCSWRST; /swrst=0/ 初始化结束 while(1) unsigned int j;for (j=0;stringj!=;j+) while(IFG2&UCA0RXIFG)=0); stringj=UCA0RXBUF;Word 资料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

25、to prevent time out resetWDTCTL = WDTPW + WDTHOLD;UCA0CTL1|=UCSWRST; /swrst=1;/ 置 P1.1 、P1.2 为 USCI_A0 的收发引脚P1SEL|=BIT1+BIT2;P1SEL2|=BIT1+BIT2;/ 时钟 SMCLK 选择为 1.0MHzBCSCTL1=CALBC1_1MHZ;Word 资料 DCOCTL=CALDCO_1MHZ;9600 ,奇/ 设置时钟源采用 SMCLK ,1MHz ,波特率设置为 校验UCA0CTL0|=UCPEN; UCA0CTL1|=UCSSEL_2+UCRXEIE;/ 设置波特率寄存器,采用低频波特率方式 UCA0BR1=0;UCA0BR0=104; UCA0MCTL=UCBRS_1;UCA0CTL1&=UCSWRST; /swrst=0while(1) u

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论