Matlab环境下PC与单片机的串行通信及数据处理

[09-12 17:52:37]   来源:http://www.88dzw.com  单片机学习   阅读:8668

文章摘要:本通信系统中规定的字符格式为:每一帧的数据占10位——1位起始位,8位数据位,1位停止位,无奇偶校验位。中间的8位数据位即为有效的通信传输字节。双方的波特率设置为115.2kb/s,以较高速度进行通信。同时,为了增强通信的可靠性、减少通信的误码率,在通信过程中约定了双方的软件握手方法。为了不致使通信过于复杂,提高通信速度,可以直接将握手信号0xFF嵌入到数据包中。软件握手协议规定如下:PC机发送符合握手信号0xFF给单片机,PIC单片机接收到的上位机数据若为握手信号0xFF,则回送两次A/D采样数据包,并将握手信号0xFF嵌入到数据包作为第一个数据,两次发送数据的时间间隔为5ms;单片机接收到

Matlab环境下PC与单片机的串行通信及数据处理,标签:单片机开发,单片机原理,单片机教程,http://www.88dzw.com

本通信系统中规定的字符格式为:每一帧的数据占10位——1位起始位,8位数据位,1位停止位,无奇偶校验位。中间的8位数据位即为有效的通信传输字节。双方的波特率设置为115.2kb/s,以较高速度进行通信。同时,为了增强通信的可靠性、减少通信的误码率,在通信过程中约定了双方的软件握手方法。为了不致使通信过于复杂,提高通信速度,可以直接将握手信号0xFF嵌入到数据包中。软件握手协议规定如下:PC机发送符合握手信号0xFF给单片机,PIC单片机接收到的上位机数据若为握手信号0xFF,则回送两次A/D采样数据包,并将握手信号0xFF嵌入到数据包作为第一个数据,两次发送数据的时间间隔为5ms;单片机接收到的上位机数据若不是握手信号,则继续等待。若PC机接收到的数据包的第1个字节不是0xFF,则屏弃该数据包;若是,则表示握手成功,经校验正确后将该数据包直接存储接收,并从中分解有效的A/D采样数据信息。

PIC16F876端串行通信的C语言程序流程如图3所示,相应的主要通信源代码如下:

//串口相关寄存器的初始化子程序

void sci_initial(){

SPBRG=0C0A; //设置通信波特率为115.2kb/s

TXSTA=0X04; //选择异步高速通信模式

RCSTA=0x80; //串行口使能,接收数据长度为8位,无奇偶校验

TRISC6=0; //RC6引脚设置为输出方式

TRISC7=1; //PC7引脚设置为输入方式

}

//串口接收和发送数据子程序

void sci_com(){

while(!RCIF); //查询接收中断标志位,等待上位机发送的串口数据

rec_data[0]=RCREG;//接收串口数据

if(rec_data[0]==0xFF){

send_data[0]=rec_data[0]; //在第1组数据中嵌入回送握手数据0xFF

for(j=0;j<33;j++){

TXREG=send_data[j]; //发送第1组32字节的A/D

转换数据,包含握手信号0xFF为33个字节数据

while(!TXIF); //查询发送标志位,等待数据发送完毕再进行下一次数据发送

}

delay_ms(5); //PIC单片机定时5ms发送第2组A/D转换数据

send1_data[0]=rec_data[0]; //在第2组数据中嵌入回送握手数据0xFF

for(j=0;j<33;j++){

TXREG=send1_data[j];//发送第2组32个字节A/D转换数据及握手信号数据

While(!TXIF); //查询发送标志位,等待数据发送完毕再进行下一次数据发送

}

}

}

3 Matlab环境下PC机与单片机的通信

在Matlab6.0中新增的设备控制工具条(Instrument control toolbox)用来负责上、下位机之间的通信。该设备控制工具箱的特色如下:

①支持基于串行接口(RS-232、RS-422、RS-485)、GPIB总线(IEEE2488、HPIB标准)、VISA总线的通信;

②通信数据支持二进制和文本(ASCII)两种方式,文本方式支持SCPI(Standard Commands for Programmable Instruments)语言;

上一页  [1] [2] [3] [4] [5]  下一页


Tag:单片机学习单片机开发,单片机原理,单片机教程单片机学习
分类导航
最新更新
热门排行