#define PointLine 3 #define PointMax 512 #define PI 3.141592654f float sinData[PointLine][PointMax] = {0};
void get_sin_tab(unsigned int point, unsigned int maxnum) { ?? ?unsigned int i = 0, j = 0, k = 0; ?? ?float hd = 0.0f; //弧度 ?? ?float fz = 0.0f; //峰值 ?? ?float tem = 0; ?? ?j = point / 2; //水平线位置,单片机没有负电压,水平线为点值数量的一半 ?? ?hd = PI / j; ? //π/2内每一个点对应的弧度值 ?? ?k = maxnum / 2;//最大值一半 ?? ?for(i=0;i<point;i++) ?? ?{ ?? ??? ?fz = k * sin(hd * i) + k; //i=0时sin(0)=0 起始点为最大值一半,也就是起始点是水平线位置 ?弧度值为π/2内每个点对应的弧度值 ?? ??? ?tem = fz * 1.0f; //通过系数可以调整输出有效值大小 ?? ??? ?sinData[0][i] = tem; ?? ?} ?? ?for(i=0;i<point;i++) ?? ?{ ?? ??? ?fz = k * sin(hd * i) + k; //i=0时sin(0)=0 起始点为最大值一半,也就是起始点是水平线位置 ?弧度值为π/2内每个点对应的弧度值 ?? ??? ?tem = fz * 1.0f + 1000; //通过系数可以调整输出有效值大小 ?? ??? ?sinData[1][i] = tem; ?? ?} ?? ?for(i=0;i<point;i++) ?? ?{ ?? ??? ?fz = k * sin(hd * i) + k; //i=0时sin(0)=0 起始点为最大值一半,也就是起始点是水平线位置 ?弧度值为π/2内每个点对应的弧度值 ?? ??? ?tem = fz * 1.0f + 2000; //通过系数可以调整输出有效值大小 ?? ??? ?sinData[2][i] = tem; ?? ?} }
|