关于8位AD_DA转换芯片的采样率问题
关于使用Keil计算程序执行时间
- 打开Keil程序,进入“启动/停止调试”界面。
- 在需要暂停的地方设置断点(在该句程序前双击)。
- 在程序上方有一行工具栏:此工具栏分别代表复位、运行、停止、步进、步越、步出、运行到光标处等。
- 点击运行,在断点处会自动停止,在右方获取程序执行时间S1。
- 若再次点击运行,则会在下一次断点处停止,可获取时间S2,S2-S1即为两个断点间程序执行的时间。
- 若点击步进,则进入函数内部一条一条执行。
- 若点击步越,则不进入函数,直接把此函数法当做一条语句执行,也可获取相同的时间。
关于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
作者:祁俊辉
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。