在单片机 C 编程中我们可能会遇到无法使用 sin 和 cos 库函数的困扰,于是来跟大家分享采用查表法写 sin、cos 函数的算法。附,由于 sin 库函数原型需要进行浮点运算,我们也可采用此查表法函数来提升程序的执行效率。
以采样点数为 256 个为例, sin 函数的弧度值(0~2π)查表法实现代码如下:
#define TAB_N 256 //定义查表的点数
#define PI 3.1415926535897932384626433832795028841971 //定义圆周率值
float SIN_TAB[TAB_N/4+1]={ //初始化1/4的sin表(256点)
0.0000,0.0245,0.0491,0.0735,0.0980,0.1224,0.1467,0.1710,
0.1951,0.2191,0.2430,0.2667,0.2903,0.3137,0.3369,0.3599,
0.3827,0.4052,0.4276,0.4496,0.4714,0.4929,0.5141,0.5350,
0.5556,0.5758,0.5957,0.6152,0.6344,0.6532,0.6716,0.6895,
0.7071,0.7242,0.7410,0.7572,0.7730,0.7883,0.8032,0.8176,
0.8315,0.8449,0.8577,0.8701,0.8819,0.8932,0.9040,0.9142,
0.9239,0.9330,0.9415,0.9495,0.9569,0.9638,0.9700,0.9757,
0.9808,0.9853,0.9892,0.9925,0.9952,0.9973,0.9988,0.9997,