转载请注明作者:东北师范大学 黄兆伟
嗯~整个项目在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');
我要赚赏金
