|
for( i=0;i<cycle;i++)
{
D[ i]=(u16)((Um*sin(( 1.0*i/(cycle-1))*2*PI)+Um)*4095/3.3);
}
在這里sin(( 1.0*i/(cycle-1))*2*PI)你可以理解成sin(x)(x >= 0 且 x <=2派,當(dāng)i= 0時(shí),x= 0;當(dāng)i= cycle - 1時(shí), x = 2派,x隨著i的增大而增大),cycle就是sin(x)的周期,也可以說(shuō)是寬度,cycle越大,正弦波的過(guò)零點(diǎn)距離越大。
在這里(Um*sin(( 1.0*i/(cycle-1))*2*PI)+Um)你可以理解成A * sin(x) +A,A就是正弦波的幅度也就是最大值,A*sin(x)+ A,就是將正弦波函數(shù)的向上挪移A個(gè)單位,這樣就將正弦波中的負(fù)數(shù)值變?yōu)檎龜?shù)值,最大值變成2A,最小值變?yōu)?.
最后那個(gè)*4095/3.3,就是個(gè)模數(shù)轉(zhuǎn)換,將模擬量轉(zhuǎn)換成數(shù)字量,4095是12位的DAC。
這個(gè)函數(shù)一般用作模數(shù)轉(zhuǎn)換或者LCD畫(huà)圖像。
|
評(píng)分
-
查看全部評(píng)分
|