先確定取樣點,後把360度按取樣點分成,計算正弦值即可
#include<math.h> //注意需新增此標頭檔案,包含了求正弦值函式sin(弧度值);
//獲取不同點數的正弦波資料
//point: 一週期內的取樣點數
//maxnum: 一週期內對應DA輸出最大值
void getSinTab(uchar point,uint maxnum)
{
uchar i=0;
float x; //弧度
float jiao;//角度 分度角
jiao=360.000/point;
for(i=0;i<point;i++)
x=jiao*i; //得到角度值
x=x*0.01744; //角度轉弧度 弧度=角度*(π/180)
sin_tab[i]=(maxnum/2)*sin(x)+(maxnum/2);
}
// sin_tab[i] 為得到的正弦波資料,用於送給DA輸出。
方波用555很容易做,3腳直接輸出。出鋸齒波在方波後面接積分電路或微分電路都可以,只是波形的差異,都是鋸齒波,正弦波用文氏橋。
先確定取樣點,後把360度按取樣點分成,計算正弦值即可
#include<math.h> //注意需新增此標頭檔案,包含了求正弦值函式sin(弧度值);
//獲取不同點數的正弦波資料
//point: 一週期內的取樣點數
//maxnum: 一週期內對應DA輸出最大值
void getSinTab(uchar point,uint maxnum)
{
uchar i=0;
float x; //弧度
float jiao;//角度 分度角
jiao=360.000/point;
for(i=0;i<point;i++)
{
x=jiao*i; //得到角度值
x=x*0.01744; //角度轉弧度 弧度=角度*(π/180)
sin_tab[i]=(maxnum/2)*sin(x)+(maxnum/2);
}
}
// sin_tab[i] 為得到的正弦波資料,用於送給DA輸出。