89c52+DAC0832产生正弦波

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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滤

相关文档
最新文档