久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2509|回復: 0
打印 上一主題 下一主題
收起左側

Matlab串口波形刷新和數(shù)據分析m文件

[復制鏈接]
跳轉到指定樓層
樓主
ID:420572 發(fā)表于 2021-9-25 11:58 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
V7-203_Matlab串口波形刷新和數(shù)據分析m文件
  1. % ********************************************************************************************************************
  2. % ********************************************************************************************************************
  3. close all
  4. clear all

  5. %刪除所有已經打開的串口,這條很重要,防止之前運行沒有關閉串口
  6. delete(instrfindall);  

  7. %打開串口COM1,波特率115200,8位數(shù)據位,1位停止位,無奇偶校驗,無流控制
  8. s = serial('COM1', 'BaudRate', 115200, 'DataBits', 8, 'StopBits', 1, 'Parity', 'none', 'FlowControl', 'none');
  9. s.ReadAsyncMode = 'continuous';
  10. fopen(s);

  11. fig = figure(1);

  12. % ********************************************************************************************************************
  13. AxisMax =  65536;    %坐標軸最大值
  14. AxisMin = -65536;    %坐標軸最小值
  15. window_width = 800;  %窗口寬度

  16. g_Count =0;          %接收到的數(shù)據計數(shù)
  17. SOF = 0;             %同步幀標志
  18. AxisValue = 1;       %坐標值
  19. RecDataDisp = zeros(1,100000); %開辟100000個數(shù)據單元,用于存儲接收到的數(shù)據。
  20. RecData = zeros(1,100);        %開辟100個數(shù)據單元,用于數(shù)據處理。
  21. Axis = zeros(1,100000);        %開辟100000個數(shù)據單元,用于X軸。

  22. window = window_width * (-0.9); %窗口X軸起始坐標
  23. axis([window, window + window_width, AxisMin, AxisMax]); %設置窗口坐標范圍

  24. %子圖1顯示串口上傳的數(shù)據
  25. subplot(2,1,1);
  26. grid on;
  27. title('串口數(shù)據接收');
  28. xlabel('時間');
  29. ylabel('數(shù)據');

  30. %子圖2顯示波形的幅頻響應
  31. subplot(2,1,2);
  32. grid on;
  33. title( 'FFT');
  34. xlabel( '頻率');
  35. ylabel( '幅度');

  36. Fs = 100;        % 采樣率
  37. N = 50;         % 采樣點數(shù)
  38. n = 0:N-1;      % 采樣序列
  39. f = n * Fs / N; %真實的頻率

  40. % ********************************************************************************************************************

  41. while ishandle(fig)
  42.    
  43.     %設置同步信號標志, = 1表示接收到下位機發(fā)送的同步幀
  44.     SOF = 0;  
  45.    
  46.     %發(fā)送同步幀
  47.     fwrite(s, 13);
  48.    
  49.     %獲取是否有數(shù)據
  50.     bytes = get(s, 'BytesAvailable');
  51.     if bytes == 0
  52.          bytes = 1;
  53.     end
  54.    
  55.     %讀取下位機返回的所有數(shù)據
  56.     RecData = fread(s, bytes, 'uint8');
  57.    
  58.     %檢索下位機返回的數(shù)據中是否有字符$
  59.     StartData = find(RecData == 13);
  60.    
  61.     %如果檢索到$,讀取10個字節(jié)的數(shù)據,也就是5個uint16的數(shù)據
  62.     if(StartData >= 1)
  63.         RecData = fread(s, 5, 'uint16');
  64.         SOF =1;
  65.         StartData = 0;
  66.     end
  67.    
  68. %更新接收到的數(shù)據波形
  69. if(SOF == 1)
  70.         %更新數(shù)據
  71.         RecDataDisp(AxisValue) =  RecData(1);
  72.         RecDataDisp(AxisValue + 1) =  RecData(2);
  73.         RecDataDisp(AxisValue + 2) =  RecData(3);
  74.         RecDataDisp(AxisValue + 3) =  RecData(4);
  75.         RecDataDisp(AxisValue + 4) =  RecData(5);
  76.        
  77.         %更新X軸
  78.         Axis(AxisValue) = AxisValue;
  79.         Axis(AxisValue + 1) = AxisValue + 1;
  80.         Axis(AxisValue + 2) = AxisValue + 2;
  81.         Axis(AxisValue + 3) = AxisValue + 3;
  82.         Axis(AxisValue + 4) = AxisValue + 4;

  83.         %更新變量
  84.         AxisValue = AxisValue + 5;
  85.         g_Count = g_Count + 5;
  86.        
  87.         %繪制波形
  88.         subplot(2,1,1);
  89.         plot(Axis(1:AxisValue-1),  RecDataDisp(1:AxisValue-1), 'r');
  90.         window = window + 5;
  91.         axis([window, window + window_width, AxisMin, AxisMax]);
  92.         grid on;
  93.         title('串口數(shù)據接收');
  94.         xlabel('時間');
  95.         ylabel('數(shù)據');
  96.         drawnow
  97. end
  98.    
  99. if(g_Count== 50)
  100.    subplot(2,1,2);
  101.    %對原始信號做 FFT 變換
  102.    y = fft(RecDataDisp(AxisValue-50:AxisValue-1), 50);
  103.    
  104.    %求 FFT 轉換結果的模值
  105.    Mag = abs(y)*2/N;  
  106.    
  107.    %繪制幅頻相應曲線
  108.    plot(f, Mag, 'r');
  109.    grid on;
  110.    title( 'FFT');
  111.    xlabel( '頻率');
  112.    ylabel( '幅度');
  113.    g_Count = 0;
  114.    drawnow
  115. end

  116. end

  117. fclose(s);
  118. delete(s);

  119. % ********************************************************************************************************************
復制代碼


評分

參與人數(shù) 1黑幣 +30 收起 理由
admin + 30 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美不卡视频一区发布 | 91在线观看网址 | 亚洲午夜精品 | 成人久久网 | 亚洲成人福利 | 欧美a在线| 91av视频在线观看 | 成人黄色在线 | 在线国产一区二区 | 最新国产精品精品视频 | 日韩成人中文字幕 | 国产欧美精品在线 | 国产福利资源在线 | 国产精品一区二区三区在线 | 日韩中文在线视频 | gogo肉体亚洲高清在线视 | 精品乱人伦一区二区三区 | 中文字幕在线精品 | 91夜色在线观看 | 久婷婷| 中文字幕精品一区久久久久 | 午夜电影网站 | 免费成人高清在线视频 | 五月综合色啪 | 日韩免费在线视频 | 伊人网在线综合 | 做a视频 | 91在线观看 | 三级黄色网址 | 国产精品久久久久久久久久三级 | 久久久久久久久久久久久九 | 二区高清 | 国产国产精品 | 日韩和的一区二区 | 国产美女自拍视频 | 欧美视频 | 国产精品久久久久久久久免费软件 | 日本超碰| 久久99精品视频 | 色眯眯视频在线观看 | 99久久精品免费看国产高清 |