转载请注明作者:东北师范大学 黄兆伟
嗯~整个项目在MATLAB上做了大概四天,从对MATLAB的串口操作一无所知到现在做出一个小的7通道的16位无符号(有符号)整型串口示波器,接触到了很多MATLAB高大上的玩法,而且网上用matlab来做波形显示的参考资料不多,希望。将源代码发出来,供大家参考,废话不多说,马上上代码~代码分为四个文件,其中MATLAB串口代码三个,一层楼一个~首先是串口配置函数。接下来的每层楼都更新一个函数,并配上标注~
协会开论坛不容易,大家用了的话~能回帖的尽量回个贴~
close all; clear all; clc; hold on %这一句经测试是必要的,没有这句的话~波形显示的句柄好像无法调用 global t; global x; global m; global ii; global data; %数据缓冲矩阵 data = [0]; t = [0]; %显示的时候为x轴变量,本质是采样点数 m = ones(7,1); %m为数据存储矩阵,每一行为一个通道,从串口打开到结束,每一行的数据都存放于这个矩阵,接收到波形后可以进行数据分析、拟合 x = -100; %x轴起始坐标 ii = 1; %也是一个类似起始位的东西 h1 = plot(1,'b','MarkerSize',20); %通道1的颜色与线粗,h1为句柄,以下同 h2 = plot(0,'g','MarkerSize',20); h3 = plot(0,'r','MarkerSize',20); h4 = plot(0,'c','MarkerSize',20); h5 = plot(0,'m','MarkerSize',20); h6 = plot(0,'y','MarkerSize',20); h7 = plot(0,'k','MarkerSize',20); H = [h1;h2;h3;h4;h5;h6;h7]; %所有通道句柄的入口矩阵,方便回调函数传参 title('Matlab Scope——东北师范大学电磁翼'); %本开源代码由东北师范大学——电磁翼小组(2016年4月17日)编写 legend('ch1','ch2','ch3','ch4','ch5','ch6','ch7',2); %在左上角标注通道 %grid on; xlabel('采样点数'); %标注X轴 ylabel('数值大小'); %标注Y轴 s = serial('COM18'); %选择串口~ s.BaudRate = 9600; %选择波特率 s.DataBits = 8; %设置数据位数 s.StopBits = 1; %设置停止位 set(s,'Parity', 'none','FlowControl','none'); %无校验位,无流控制 s.ReadAsyncMode = 'continuous'; %异步接收模式为连续 s.BytesAvailableFcnMode = 'byte'; %回调函数模式为字节 s.BytesAvailableFcnCount = 20; %每接收到20个字节,触发中断,调用回调函数,0xff,0xa5,0x5a(0x5b) 三位帧头+七位数据 s.BytesAvailableFcn = {@callback_16bit,H}; %回调函数地址,以及相应波形显示通道句柄 try fopen(s); %打开串口 catch err fprintf('串口打开失败。\n'); end fprintf('串口打开成功\n');