关于8位AD_DA转换芯片的采样率问题

关于使用Keil计算程序执行时间

  1. 打开Keil程序,进入“启动/停止调试”界面。
  2. 在需要暂停的地方设置断点(在该句程序前双击)。
  3. 在程序上方有一行工具栏:此工具栏分别代表复位、运行、停止、步进、步越、步出、运行到光标处等。

  4. 点击运行,在断点处会自动停止,在右方获取程序执行时间S1。
  5. 若再次点击运行,则会在下一次断点处停止,可获取时间S2,S2-S1即为两个断点间程序执行的时间。
  6. 若点击步进,则进入函数内部一条一条执行。
  7. 若点击步越,则不进入函数,直接把此函数法当做一条语句执行,也可获取相同的时间。

关于8位AD/DA转换芯片采样率

这里以PCF8591为例。

  • 若不显示电压,使用以下语句:
1 val=PCF8591_AD(0);
2 val=val*0.8;
3 PCF8591_DA(val);

 则计算得程序执行时间为0.01911567秒,即采样率在52左右。

  • 若要加以显示,即使用以下语句:
 1 val=PCF8591_AD(0);
 2 vo=val*0.01953*100;//经AD转换后的转换值乘以精度0.01953,再放大100倍
 3 vo=(int)(vo+0.5)>(int)vo?(int)vo+1:(int)vo;//四舍五入
 4 LCD_show(1,5,((int)vo/100)+0x30);
 5 LCD_show(1,6,'.');
 6 LCD_show(1,7,((int)vo%100/10)+0x30);
 7 LCD_show(1,8,((int)vo%10)+0x30);
 8 LCD_show(1,9,'V');
 9 LCD_show(1,11,val/100+0x30);
10 LCD_show(1,12,val%100/10+0x30);
11 LCD_show(1,13,val%10+0x30);*/
12 val=val*0.8;
13 PCF8591_DA(val);
14 vo=val*0.01953*100;//经AD转换后的转换值乘以精度0.01953,再放大100倍
15 vo=(int)(vo+0.5)>(int)vo?(int)vo+1:(int)vo;//四舍五入
16 LCD_show(2,5,((int)vo/100)+0x30);
17 LCD_show(2,6,'.');
18 LCD_show(2,7,((int)vo%100/10)+0x30);
19 LCD_show(2,8,((int)vo%10)+0x30);
20 LCD_show(2,9,'V');
21 LCD_show(2,11,val/100+0x30);
22 LCD_show(2,12,val%100/10+0x30);
23 LCD_show(2,13,val%10+0x30);

计算得程序执行总时间为0.41606988秒,即采样率为2.5左右。

【注】一般情况下,信号源使用1Hz/3V正弦波电压。

附件:https://pan.baidu.com/s/1jJv5z18

原文地址:https://www.cnblogs.com/qijunhui/p/8283862.html