C语言中如何描绘正弦曲线?

来源:百度知道 编辑:UC知道 时间:2024/06/24 17:28:04
是这样的,我在做单片机的一个程序,需要把正弦曲线显示在LCD上,道理其实很简单,就是一个一个的描点然后再把这些点连接起来就行了,但是这些点怎么取?我首先取正弦曲线开始的位置(x,y),然后x++,y=sin(z)可以吗?x轴很好确定,只要让x++来每次自增1就行了,那么y值怎么确定呢?希望知道的朋友帮忙一下,谢谢!

NO!思路和方法那是完全的不对啊,对于普通的8位单片机来说,都是不带硬件除法器的,而且更不支持浮点运算,所有这些都将需要软件来完成,除非你用的是高端的32位处理器,比如STM32的或者是DSP之类的,才可以从理论上计算得到正弦,方法是采用多项式进行数值计算,你可以参考一下《数值分析》中关于正弦的求解算法

但是对于常规的单片机,采用最好的方法是查表,事实上这种求解正弦的方法早就被采用了,采用查表和插值的方法,可以完全的避免浮点和除法计算,这才是你需要采用的思路

单片机完全无法承受正弦的运算……

查表法 如果嫌表太大 可以查表加插值

#include <iostream>

using namespace std;

void main()
{
const double PI = 3.1615926;
bool point[80][10] = {false};
int period, swing;
//cout << "Input the period [1-9]:";
//cin >> period;
//cout << "Input the swing [1-9]:";
//cin >> swing;
period = 80;
swing = 5;
int y = 0;
for (int i = 0; i < 80; i ++)
{
y = -(int)(swing * sin((2 * PI) * (i % period)/(p