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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2541|回復: 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 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 视频一区 国产精品 | 亚洲天堂999 | 欧美一区二区三区 | 极品国产视频 | 久久伊人精品 | 国产精品123区 | 日韩免费高清视频 | 日韩欧美视频在线 | 成人国产精品久久 | 99精品亚洲国产精品久久不卡 | 色婷婷精品国产一区二区三区 | 国产高清精品一区二区三区 | 欧美成视频 | 欧美成年人视频在线观看 | 精品国产99| 国产综合网站 | 涩涩视频网站在线观看 | 久草新在线 | 91精品久久 | 中午字幕在线观看 | 自拍偷拍一区二区三区 | 精品欧美一区二区在线观看欧美熟 | 九九热在线视频观看这里只有精品 | 99这里只有精品视频 | 黄色三级毛片 | 国产精品国色综合久久 | 亚洲国产欧美在线人成 | 久久九 | 欧美精品一区二区三区四区五区 | 精品欧美乱码久久久久久 | 91精品一区二区三区久久久久久 | 国产成人在线一区 | 午夜激情国产 | 成人精品一区亚洲午夜久久久 | 日韩精品在线视频免费观看 | 国产精品国产三级国产aⅴ中文 | 久久精品av | 日韩一区在线播放 | 免费观看一级特黄欧美大片 | 国产精品视频久久 | 免费99精品国产自在在线 |