用DAC0832作正弦波发生器,生成正弦波,怎么选取数字值?计算正弦波大小?

数字转模拟,生产正弦波,数字的值怎么选取呢?
还有,生成的正弦波大小怎么确定呢,有什么公式吗?

如下是可能正常生存正弦波的程序,但不知道怎么选数字值。及怎么计算正弦波大小。
请指教。谢谢!!

#include <reg51.h>
#include<absacc.h>

unsigned int code Num[128]={64,67,70,73,76,79,82,85,88,91,94,96,99,102,104,106,
109,111,113,115,117,118,120,121,123,124,125,126,126,
127,127,127,127,127,127,127,126,126,125,124,123,121,
120,118,117,115,113,111,109,106,104,102,99,96,94,91,
88,85,82,79,76,73,70,67,64,60,57,54,51,48,45,42,39,
36,33,31,28,25,23,21,18,16,14,12,10,9,7,6,4,3,2,1,
1,};

void main()
{
unsigned int i;
while(1)
{
for(i=0;i<128;i++)
{
P0=Num; //使用DAC0832,进行数转模
}

}
}

DA生成的信号是离散的。假设生成一个Y=Asin(2*pi*f*t)的正弦波,AD的数据端口给了256个数字,0~255.假设0~127表示X轴上方的电压值,其余的表示下方。则得到数据端口的数值的具体量。VALUE=127sin(2*pi*f*t)+127.追问

这些离散的数值怎么选取呢?有什么规律吗?

追答

选取的数值越多,正弦波的失真度越小。比如你只选取2个数,出来的就是方波。你要是选取256个数,那么失真度就较小。你们学校没有实验器材么,我记得我们大一的时候就做这个实验了。

参考资料:myself

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-05-23
可以通过控制波表中数值的大小来控制0832输出波形的幅度 但这样做比较麻烦 推荐另一种简单方法如下:
再选一片低频高精度的DA 用单片机控制它输出一个直流电平 将该电平通如0832的基准电压引脚 这样你的波表就保持固定 最好把DA整个范围用满(0-255) 这样单片机控制直流DA的输出电压也就对应了最终正弦波的幅值
相似回答