Matlab环境下PC与单片机的串行通信及数据处理
发布时间:2008/5/27 0:00:00 访问次数:526
摘要:结合单片机和matlab两者的优点,基于事件驱动的中断通信机制,提出一种matlab环境下pc机与单片机实时串行通信及数据处理的方法;完成单片机数据采集系统与pc机的rs-232/rs-485串行通信及其通信数据的分析处理、文件存储、fir滤波及图形显示;简化系统开发流程,提高开发效率。该方法已成功应用于一个pic16f876单片机应用系统实例之中。
关键词:pic16f876 matlab 串口通信 rs-232 事件驱动 回调函数
引言
matlab是由美国mathworks公司开发的面向理论分析研究、工程计算数据处理和缓图的一套具有强大功能的软件系统。其中matlab语言是一种以矩阵为基本运算单元的解释执行的高级语言,编程简例,只要几条语句就能实现诸如fft变换、fir/iir滤波等数据分析处理,易于掌握。从matlab6.0版本开始,mathworks公司在软件中增加了设备控制箱(instrument control toolbox),提供了对rs-232/rs-485通信标准的串口通信的正式支持。利用该工具箱的serial类及instrcallback()回调函数,能可靠地进行实时串地通信。为此,笔者充分结合单片机和matlab的优点,基于事件驱动的中断通信机制,提出了一种matlab环境下pc机与单片机实时串行通信的数据处理方法,极大地简化开发流程,提高了系统开发效率。另外,与目前普遍采用的基于matlab查询方式下的非实时串行通信技术相比,这种方法的实用性也大大增强了。
1 系统总体设计简介
下面以mircochip公司的pic16f876单片机为下位机,pc机为上位机组成的实时数据采集处理系统为例,介绍基于matlab环境下pc机与单片机串行通信的实时数据处理方法的实现。数据采集系统的结构框图如图1所示。pc机串口与单片机usart口通过max232电平转换芯片相连,系统工作时,matlab通过调用设备控制工具箱中的serial类及相关函数。来创建串口设备对象,得到设备的文件句柄,从而以操作文件的方式实现对pc机串行口的读写操作。因而pc机可以通过matlab向串行口发送特殊指令,pic单片机应用系统对此作出相应的反应,将a/d采样数据通过串行口回送给pc机。此时,matlab通过中断的方式,实时接收单片机发送的数据,并完成对数据的分析处理、文件存储、fir滤波及图形显示。
2 pic16f876与pc机串行通信接口的设计
2.1 pic16f876单片机串行通信接口的硬件设计
pic16f876微处理器芯片内部集成了一个串行通信(sci)模块。该模块是一个通用的同步/异步收发(usart)通信接口。
图2
pic16f876的sci通信接口有两个外部引脚——rc6/tx(sci发送输出引脚)和rc7/rx(sci接收输入引脚),引脚的信号电平为ttl类型;而pc机串口的异步串行通信基于rs232标准。两者通信信号的逻辑电平不一致,必须进行信号电平转换。为此,在电路中选用maxim公司的max232芯片,以实现ttl电平与rs-232电平的双向转换。rs-232通信距离一般以不超过12m为宜,在工业控制现场很受限制。为保证硬件设计的兼容性和易扩展性,能够应用于不同场合,考虑到实际应用的需要,在硬件电路中还可选用一个max491芯片,添加了一个rs-485通信接口。
如图2所示,实际使用过程中,系统可以根据需要,灵活使用不同的通信标准,十分方便。当pic单片机sci通信接口引脚直接通过max232芯片与pc机串口相连时,系统采用rs-232的通信标准;当pic单片机sci通信接口口引脚与max489芯片的di、ro引脚相连时,系统采用rs-485的通信标准。另外,还可通过pic单片机控制max489芯片的de、re引脚,随时使能或屏蔽掉max489的数据接收和数据发送功能。
2.2 pic16f876与pc机串行通信接口的软件设计
本通信系统中规定的字符格式为:每一帧的数据占10位——1位起始位,8位数据位,1位停止位,无奇偶校验位。中间的8位数据位即为有效的通信传输字节。双方的波特率设置为115.2kb/s,以较高速度进行通信。同时,为了增强通信的可靠性、减少通信的误码率,在通信过程中约定了双方的软件握手方法。为了不致使通信过于复杂,提高通信速度,可以直接将握手信号0xff嵌入到数据包中。软件握手协议规定如下:pc机发送符合
摘要:结合单片机和matlab两者的优点,基于事件驱动的中断通信机制,提出一种matlab环境下pc机与单片机实时串行通信及数据处理的方法;完成单片机数据采集系统与pc机的rs-232/rs-485串行通信及其通信数据的分析处理、文件存储、fir滤波及图形显示;简化系统开发流程,提高开发效率。该方法已成功应用于一个pic16f876单片机应用系统实例之中。
关键词:pic16f876 matlab 串口通信 rs-232 事件驱动 回调函数
引言
matlab是由美国mathworks公司开发的面向理论分析研究、工程计算数据处理和缓图的一套具有强大功能的软件系统。其中matlab语言是一种以矩阵为基本运算单元的解释执行的高级语言,编程简例,只要几条语句就能实现诸如fft变换、fir/iir滤波等数据分析处理,易于掌握。从matlab6.0版本开始,mathworks公司在软件中增加了设备控制箱(instrument control toolbox),提供了对rs-232/rs-485通信标准的串口通信的正式支持。利用该工具箱的serial类及instrcallback()回调函数,能可靠地进行实时串地通信。为此,笔者充分结合单片机和matlab的优点,基于事件驱动的中断通信机制,提出了一种matlab环境下pc机与单片机实时串行通信的数据处理方法,极大地简化开发流程,提高了系统开发效率。另外,与目前普遍采用的基于matlab查询方式下的非实时串行通信技术相比,这种方法的实用性也大大增强了。
1 系统总体设计简介
下面以mircochip公司的pic16f876单片机为下位机,pc机为上位机组成的实时数据采集处理系统为例,介绍基于matlab环境下pc机与单片机串行通信的实时数据处理方法的实现。数据采集系统的结构框图如图1所示。pc机串口与单片机usart口通过max232电平转换芯片相连,系统工作时,matlab通过调用设备控制工具箱中的serial类及相关函数。来创建串口设备对象,得到设备的文件句柄,从而以操作文件的方式实现对pc机串行口的读写操作。因而pc机可以通过matlab向串行口发送特殊指令,pic单片机应用系统对此作出相应的反应,将a/d采样数据通过串行口回送给pc机。此时,matlab通过中断的方式,实时接收单片机发送的数据,并完成对数据的分析处理、文件存储、fir滤波及图形显示。
2 pic16f876与pc机串行通信接口的设计
2.1 pic16f876单片机串行通信接口的硬件设计
pic16f876微处理器芯片内部集成了一个串行通信(sci)模块。该模块是一个通用的同步/异步收发(usart)通信接口。
图2
pic16f876的sci通信接口有两个外部引脚——rc6/tx(sci发送输出引脚)和rc7/rx(sci接收输入引脚),引脚的信号电平为ttl类型;而pc机串口的异步串行通信基于rs232标准。两者通信信号的逻辑电平不一致,必须进行信号电平转换。为此,在电路中选用maxim公司的max232芯片,以实现ttl电平与rs-232电平的双向转换。rs-232通信距离一般以不超过12m为宜,在工业控制现场很受限制。为保证硬件设计的兼容性和易扩展性,能够应用于不同场合,考虑到实际应用的需要,在硬件电路中还可选用一个max491芯片,添加了一个rs-485通信接口。
如图2所示,实际使用过程中,系统可以根据需要,灵活使用不同的通信标准,十分方便。当pic单片机sci通信接口引脚直接通过max232芯片与pc机串口相连时,系统采用rs-232的通信标准;当pic单片机sci通信接口口引脚与max489芯片的di、ro引脚相连时,系统采用rs-485的通信标准。另外,还可通过pic单片机控制max489芯片的de、re引脚,随时使能或屏蔽掉max489的数据接收和数据发送功能。
2.2 pic16f876与pc机串行通信接口的软件设计
本通信系统中规定的字符格式为:每一帧的数据占10位——1位起始位,8位数据位,1位停止位,无奇偶校验位。中间的8位数据位即为有效的通信传输字节。双方的波特率设置为115.2kb/s,以较高速度进行通信。同时,为了增强通信的可靠性、减少通信的误码率,在通信过程中约定了双方的软件握手方法。为了不致使通信过于复杂,提高通信速度,可以直接将握手信号0xff嵌入到数据包中。软件握手协议规定如下:pc机发送符合