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

[09-12 16:23:57]   来源:http://www.88dzw.com  单片机学习   阅读:8135

文章摘要:②修改instrcallback(obj,event)回调函数,对所发生的串口通信事件进行处理。 Matlab缺省的回调函数instrcallback(obj,event)存在于instrcallback.m文件中。该文件实际上是一个有待于用户修改的程序模块。其中只有一些最基本的程序代码,能够显示导致串口中断发生的是哪一类事件,中断事件所发生的时间以及导致事件发生的对象名等信息(修改回调函数文件时,注意要取消文件中相应信息后的分号,才能够在Matlab的命令窗口(command window)中将这些信息显示出来)。中断发生后的通信事件处理以及通信数据的分析处理任务,需要用户自行添

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

②修改instrcallback(obj,event)回调函数,对所发生的串口通信事件进行处理。

       Matlab缺省的回调函数instrcallback(obj,event)存在于instrcallback.m文件中。该文件实际上是一个有待于用户修改的程序模块。其中只有一些最基本的程序代码,能够显示导致串口中断发生的是哪一类事件,中断事件所发生的时间以及导致事件发生的对象名等信息(修改回调函数文件时,注意要取消文件中相应信息后的分号,才能够在Matlab的命令窗口(command window)中将这些信息显示出来)。中断发生后的通信事件处理以及通信数据的分析处理任务,需要用户自行添加相应的服务程序代码。

       Matlab安装目标下有两个instrcallback.m文件,我们只需要修改@instrument目录下的instrcallback.m文件即可。当然,在修改instrcallback.m文件之前,最好对其做一个备份。另外,需要注意的是:程序调试过程中如果再次修改了该回调函数,要重新启动Matlab配置该文件,才能使得新的回调函数文件生效。

       修改后的instrcallback.m文件见网站www.88dzw.com。该修改后的回调函数能够完成如下任务:

 ①实时接收单片机实时5ms发送的33个串行通信数据,其中包括1个握手信号和32个A/D转换数据(这些数据是PIC单片机系统采集到的传感器信号,每个数据占1字节),并存储在out数组中;

 ②对接收到的数据进行处理,由于PIC单片机的A/D转换值为10位,占2字节,而单片机每次只能传送1个字节的数据,故将收到的每两个通信数据整合成为1个真实的A/D转换数据,共16个A/D转换数据,并存储在Dataout数组中;

③将接收到的串口数据存储到serialdata.txt文件中,将整合后的单片机A/D转换数据存储到一个以中断事件发生的时间为文件名的txt文件中;

④根据A/D转换数据,利用Matlab求其最大值、最小值和平均值,并利用FIR滤波器对传感器信号A/D转换值作FIR滤波处理,得到窗格为5的滑动滤波平均值;

 ⑤利用Matlab中的plot()函数实时绘制单片机采集到的传感器信号的原始波形图和FIR滤波后波形图,如图5所示,可以看到经过FIR滤波后的传感器动态信号值较为稳定,精度大幅提高。

       实验证明,基于Matlab中断方式的PC机与单片机的实时串行通信稳定可靠,处理数据方便,编程简单,开发效率大大提高。

4.结论 

       本文介绍的基于Matlab环境下PC机与PIC单片机串行通信的实现方法,利用Matlab的Instrument Control Tollbox的serial类及instrcallback()回调函数,实现基于事件驱动的实时中断通信。使开发人员可以充分利用Matlab工具箱中的现有函数,方便地实现串行通信、数据分析处理和图形显示,大大简化系统上位机软件的编程工作量。


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


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