中易网

我想用51单片机产生一个1khz的正弦波,程序应该怎么写,下图的程序怎样看出它的幅值与频率

答案:2  悬赏:70  
解决时间 2021-01-13 21:22
  • 提问者网友:焚苦与心
  • 2021-01-13 07:41
我想用51单片机产生一个1khz的正弦波,程序应该怎么写,下图的程序怎样看出它的幅值与频率
最佳答案
  • 二级知识专家网友:青灯有味
  • 2021-01-13 08:30
根据DAC0832 = sin[j];可知,数组值直接赋给了DAC,数组中,最大值为127,最小值为0,这就是幅值 0~127。如果要电压幅值,这与电路有关。设数据255(0xFF)对应输出5V,数据0对应输出0V,则0~127对应的电压幅值为0~2.5V。
频率决定于delay()的延时量,这个又与单片机的时钟有关,所以看你的程序是确这不了的。
另外:
===============================
(1)SIN[ ]数组的值 可以用EXCEL简单地算出。如图,A2开始以0,1,2,3,4....向下填充直到359,在B2输入公式(如图),公式向下复制,直到B360。算出的值就是上面数组SIN[]的值。这个更精确。

(2)然后
for(j=0;j<360;j++){
DAC0832 = sin[j];
delay();
}
可得正弦波输出。但频率用delay()不精确,只能设试确定。
(3)可以用定时中断。中断时间为1/(360*1000)秒。每次中断程序中:
DAC0832 = sin[j++];
if(j==360)j=0;
这就可得1000Hz的正弦波。
全部回答
  • 1楼网友:白昼之月
  • 2021-01-13 08:50
我暂时保留我的看法!
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息