m0_71039500 2022-05-22 01:37 采纳率: 66.7%
浏览 34
已结题

用matlab运行PCF8591的AD转换实验

可以帮忙解释一下下面这些代码分别表示什么函数和什么意思嘛?

%% 采集数据并绘图
% data = zeros(1, 1000);
data = [];
num = 1;
led_state = 1;
%% 采集数据并绘图,根据采集值改变PWM占空比
pic = plot(nan);
xlim([0 1000]);
ylim([0 3.3]);
xlabel('Points');
ylabel('Voltage');
grid on;

while 1   
      if(num <= 1000)      
      data(num) = readRegister(PCF8591, hex2dec('40'));
%         writePWMDutyCycle(mypi, 16, data(num) / 255);       
       num = num + 1;              
       set(pic, 'YData', data*3.3/255, 'Marker', 'o');       
       drawnow;    
else        
        num = 1;       
        data = [];       
        writeLED(mypi, 'led0', led_state);                
         set(pic, 'YData', data*3.3/255, 'Marker', 'o');        
         drawnow;   
 end        
         led_state = ~led_state;
 end

  • 写回答

1条回答 默认 最新

  • 树下等苹果 2022-05-22 09:09
    关注

    注释如下:

    %% 采集数据并绘图
    % data = zeros(1, 1000);         %生成一个1*1000的全0矩阵
    data = [];                       %data为一个数组
    num = 1;
    led_state = 1;
    %% 采集数据并绘图,根据采集值改变PWM占空比
    x=0:1:1000;
    y=2*x;
    pic = plot(x,y);                 %画一个空白图
    xlim([0 1000]);                  %设置图的横坐标范围:0-1000
    ylim([0 3.3]);                   %设置图的纵坐标范围:0-3.3
    xlabel('Points');                %横坐标轴名称Points
    ylabel('Voltage');               %纵坐标轴名称Voltage
    grid on;                         %图中添加网格
     
    while 1                          %死循环
          if(num <= 1000)            %如果num<=1000,
          data(num) = readRegister(PCF8591, hex2dec('40'));     %读入寄存器64的值并传给data数组。readRegister:从PCF8591设备上的寄存器返回数据作为标量,hex2dec将十六进制数字的文本表示形式转换为十进制数字。
    %         writePWMDutyCycle(mypi, 16, data(num) / 255);     %在  mypi的16引脚设置占空比为data(num) / 255   
           num = num + 1;              
           set(pic, 'YData', data*3.3/255, 'Marker', 'o');      %设置图片中纵轴数据为data*3.3/255,数据标记点为圆圈
           drawnow;                                             %刷新屏幕
    else        
            num = 1;       
            data = [];       
            writeLED(mypi, 'led0', led_state);                  %向mypi的led0写入状态led_state,也就是设置led为高或低电平
             set(pic, 'YData', data*3.3/255, 'Marker', 'o');        
             drawnow;   
     end        
             led_state = ~led_state;                            %led电平状态取反,1变0.0变1
     end
     
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 5月30日
  • 已采纳回答 5月22日
  • 修改了问题 5月22日
  • 创建了问题 5月22日

悬赏问题

  • ¥50 buildozer打包kivy app失败
  • ¥30 在vs2022里运行python代码
  • ¥15 不同尺寸货物如何寻找合适的包装箱型谱
  • ¥15 求解 yolo算法问题
  • ¥15 虚拟机打包apk出现错误
  • ¥15 用visual studi code完成html页面
  • ¥15 聚类分析或者python进行数据分析
  • ¥15 三菱伺服电机按启动按钮有使能但不动作
  • ¥15 js,页面2返回页面1时定位进入的设备
  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复