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派,當i= 0時,x= 0;當i= cycle - 1時, x = 2派,x隨著i的增大而增大),cycle就是sin(x)的周期,也可以說是寬度,cycle越大,正弦波的過零點距離越大。
在這里(Um*sin(( 1.0*i/(cycle-1))*2*PI)+Um)你可以理解成A * sin(x) +A,A就是正弦波的幅度也就是最大值,A*sin(x)+ A,就是將正弦波函數的向上挪移A個單位,這樣就將正弦波中的負數值變為正數值,最大值變成2A,最小值變為0.
最后那個*4095/3.3,就是個模數轉換,將模擬量轉換成數字量,4095是12位的DAC。
這個函數一般用作模數轉換或者LCD畫圖像。
|