基于单片机的波形发生器设计,C语言程序,有个很小的问题,求解决 10

这是用51单片机做的波形发生器,C语言实现,因为要求频率可调,所以设了一个延时函数dump()。对三角波和方波等都可以拿这个函数实现频率调节,不知道为什么正弦波不可以,请... 这是用51单片机做的波形发生器,C语言实现,因为要求频率可调,所以设了一个延时函数dump()。对三角波和方波等都可以拿这个函数实现频率调节,不知道为什么正弦波不可以,请教大神帮我看一下正弦波函数有什么错误,怎么改。
void juchi() //锯齿波函数
{ uchar i;
for(i=0;i<255;i++)
{DAC0832=i;
dump(10+p);} //延时实现频率可调,p是变量
i=0x00; }

void zhengxian()
{
for(i=0;i<256;i++)
{DAC0832=sin[i];//查表取值
dump(2+p);
}
i=0;
}

这个正弦波的函数要怎么改一下实现频率调节啊,我觉得跟锯齿波那个写得一样啊,为什么前一个可调后一个不可以
这是截图,像方波、三角波和锯齿波的频率可以调节,正弦波的不管我调大还是调小波形都不变
展开
 我来答
a451993547
2014-02-21 · TA获得超过1593个赞
知道小有建树答主
回答量:595
采纳率:100%
帮助的人:709万
展开全部
void juchi() //锯齿波函数
{ uchar i;
for(i=0;i<255;i++)
{DAC0832=i;
dump(10+p);} //延时实现频率可调,p是变量
i=0x00; }

void zhengxian()
{
for(i=0;i<256;i++)//i没有声明 上面那个程序都有uchar i; uchar类型的最大值也只有255
{DAC0832=sin[i];//查表取值
dump(2+p);
}
i=0;
}

//最简单的方法就是复制juchi这个函数
//把DAC0832=i;改成DAC832=sin[i];就能看到效果了
void zhengxian() //正弦波函数
{ uchar i;
for(i=0;i<255;i++)
{DAC0832=sin[i];
dump(10+p);} //延时实现频率可调,p是变量
i=0x00; }
追问
依然没有变化呀。。我还写了三角波和方波,这些都可以,就正弦的不行。。
chopin504
2014-02-21 · 超过26用户采纳过TA的回答
知道答主
回答量:90
采纳率:0%
帮助的人:63.9万
展开全部
void zhengxian()
{
for(i=0;i<256;i++)
{DAC0832=sin[i];//查表取值
dump(2+p);
}
i=0;
}

这个函数你写的有问题吧,第一 没有 i 变量的声明,第二 如果 i 是uchar的 那么它永远都小于256的,没病不死人,程序这东西是不会撒谎的,仔细点就好了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
施西贝虎
2014-02-21 · TA获得超过414个赞
知道小有建树答主
回答量:331
采纳率:100%
帮助的人:186万
展开全部
锯齿波是从0到255的一个线性周期函数,每次跳转的时候波形达到最大值了,真是正值;
而正弦波在0到255之间的取值不是这样的,有正负之分,它是0-pi之间是正值,你考虑把i设置在该范围或0-pi/2范围内试试,步长取0.01,当然i不能是整行了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
暴秋颖g3
2014-02-21 · 超过14用户采纳过TA的回答
知道答主
回答量:69
采纳率:0%
帮助的人:31.7万
展开全部
for循环里sin[i] 就算你查表取值 还是在变
DAC0832在一次for 循环里至少该是固定的值吧
DAC0832=sin【p】
就你现在那函数输出时什么样的波形
更多追问追答
追问
现在的输出是正弦波 只是频率不能变大也不能变小
追答
void zhengxian()
{
uchar i,j;
for(i=0;i<256;i++)
{
for(j=0;j<20;j++)//改变20的取值===此为再延时每一次的脉冲
{

DAC0832=sin[i];//查表取值
dump(2+p);
}
}
i=0x00;
}
试试
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
5922771321
2014-02-21 · TA获得超过1438个赞
知道小有建树答主
回答量:1410
采纳率:100%
帮助的人:372万
展开全部
可能是你的正弦波已经达到最大,不能往大了!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式