编辑: 戴静菡 | 2016-03-20 |
②对接收到的数据进行处理,由于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工具箱中的现有函数,方便地实现串行通信、数据分析处理和图形显示,大大简化系统上位机软件的编程工作量.