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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2575|回復: 0
收起左側

Matlab串口波形刷新和數據分析m文件

[復制鏈接]
ID:420572 發表于 2021-9-25 11:58 | 顯示全部樓層 |閱讀模式
V7-203_Matlab串口波形刷新和數據分析m文件
  1. % ********************************************************************************************************************
  2. % ********************************************************************************************************************
  3. close all
  4. clear all

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

  7. %打開串口COM1,波特率115200,8位數據位,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;          %接收到的數據計數
  17. SOF = 0;             %同步幀標志
  18. AxisValue = 1;       %坐標值
  19. RecDataDisp = zeros(1,100000); %開辟100000個數據單元,用于存儲接收到的數據。
  20. RecData = zeros(1,100);        %開辟100個數據單元,用于數據處理。
  21. Axis = zeros(1,100000);        %開辟100000個數據單元,用于X軸。

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

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

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

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

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

  41. while ishandle(fig)
  42.    
  43.     %設置同步信號標志, = 1表示接收到下位機發送的同步幀
  44.     SOF = 0;  
  45.    
  46.     %發送同步幀
  47.     fwrite(s, 13);
  48.    
  49.     %獲取是否有數據
  50.     bytes = get(s, 'BytesAvailable');
  51.     if bytes == 0
  52.          bytes = 1;
  53.     end
  54.    
  55.     %讀取下位機返回的所有數據
  56.     RecData = fread(s, bytes, 'uint8');
  57.    
  58.     %檢索下位機返回的數據中是否有字符$
  59.     StartData = find(RecData == 13);
  60.    
  61.     %如果檢索到$,讀取10個字節的數據,也就是5個uint16的數據
  62.     if(StartData >= 1)
  63.         RecData = fread(s, 5, 'uint16');
  64.         SOF =1;
  65.         StartData = 0;
  66.     end
  67.    
  68. %更新接收到的數據波形
  69. if(SOF == 1)
  70.         %更新數據
  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('串口數據接收');
  94.         xlabel('時間');
  95.         ylabel('數據');
  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. % ********************************************************************************************************************
復制代碼


評分

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

查看全部評分

回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久成人精品视频 | 日韩一区二区三区四区五区六区 | 一级黄色毛片子 | 亚洲欧美日韩精品久久亚洲区 | 国产精品久久 | 精品欧美一区二区在线观看 | 中文字幕人成乱码在线观看 | 日本久久精品 | 一区欧美| 亚洲午夜精品久久久久久app | 亚洲精品aⅴ | 精品1区2区 | 亚洲成人av | 色吧综合网 | 欧美日韩第一页 | 国产精品一区二区欧美 | 色网站在线免费观看 | 国产一区二区三区高清 | 国产免费一区二区 | 国产欧美一区二区三区在线看 | 天堂中文av | 另类 综合 日韩 欧美 亚洲 | 欧美一二精品 | 亚洲国产精品久久久 | 一级免费看片 | 羞羞视频网页 | 中文精品一区二区 | 羞羞色在线观看 | 亚洲精品一区二区 | 一区二区三区亚洲精品国 | 一级黄色片免费在线观看 | 超碰欧美 | 一区二区三区视频在线 | 在线成人 | av手机免费在线观看 | 亚洲国产精品91 | 精品国产18久久久久久二百 | 久草网址 | 精品在线99 | 欧美午夜精品久久久久免费视 | 国产福利91精品 |