89c52+DAC0832产生正弦波
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
89c52+DAC0832产生正弦波
悬赏分:20 - 解决时间:2009-7-26 15:59
采用查表方式输出50hz的正弦波,采用定时器2的16位自动重装方式,程序如下:
#include
#define uint unsigned int
sbit dac_WR=P2^0;//dac0832的wr端
unsigned char i;
uint code SIN_Table_C[]={
0x11,
0xB,
0x6, //C相滞后120°,为通过P1口输出,还加DAC0832后进行DA转换0x3,
0x1,
0x0,
0x0,
0x1,
0x4,
0x8,
0xD,
0x13,
0x1A,
0x22,
0x2B,
0x35,
0x3F,
0x4B,
0x56,
0x62,
0x6F,
0x7B,
0x88,
0x94,
0xA1,
0xAD,
0xB8,
0xC3,
0xCD,
0xD7,
0xE0,
0xE8,
0xEE,
0xF4,
0xF9,
0xFC,
0xFE,
0xFF,
0xFF,
0xFE,
0xFB,
0xF7,
0xF2,
0xEC,
0xE5,
0xDD,
0xD4,
0xCA,
0xBF,
0xB4,
0xA9,
0x9D,
0x90,
0x84,
0x77,
0x6B,
0x5E,
0x52,
0x47,
0x3C,
0x32,
0x28,
0x1F,
0x17
};
void Timer2_Init()
{
T2CON=0x00;
TH2=(65536-312)/256;
TL2=(65536-312)%256;
RCAP2H=(65536-312)/256;
RCAP2L=(65536-312)%256; //稳定在50Hz左右EA=1;
ET2=1;
TR2=1;
}
void Timer2_ISR() interrupt 5
{
TF2=0;//清除中断标志位
dac_WR=0;
P0=SIN_Table_C[i];
dac_WR=1;
i++;
if(i==64)
i=0;
}
void main()
{
while(1);
}
为什么示波器没有输出呢?是不是DAC0832接线有问题?
问题补充:
谢谢“摘一把青梅煮酒”,我加的1K的电阻就是起放大作用的
请“摘一把青梅煮酒”看一下这张图。当时我提问的时候这个问题没有传上图片。谢谢了哈!
/question/106734547.html
提问者:deng_ys - 助理二级最佳答案
2 脚直接接地
另外你那个示波器是仿真的吧
怎么只有一个信号线进去
没有电势差怎么会有波形?
直接iout出来接一个电阻(9脚的反馈可以不接)
然后接上RC滤