请高手帮忙看下这个电路
我是用AD9834做个信号发生器,13 14 15脚分别接MCU的P3.0 P3.1 P3.3,其他相应的功能引脚用控制寄存器控制。电路图和程序如下:http://cache.amobbs.com/bbs_upload782111/files_42/ourdev_655130QIT8TY.jpg
(原文件名:改进后的电路.jpg)
#include<reg52.h>
sbit FSYNC = P3^3;
sbit SDATA = P3^0 ;
sbit SCLK= P3^1;
#define uchar unsigned char
#define uintunsigned int
#define ulong unsigned long
void Send_Con(uint Con_word);
void Send_Freq(uint Freq_word);
void delay(uint delay_word);
void main()
{
ulong data1,data2;
uint LSB_D,MSB_D;
SCLK=1;
FSYNC=1;
data1=0x12F7;
data2=data1;
LSB_D=(data1%0x4000)+0x4000;
MSB_D=(data2/0x4000)+0x4000;
Send_Con(0x2100);
delay(9);
Send_Freq(LSB_D);
Send_Freq(MSB_D);
Send_Con(0x2000);
delay(9);
}
void Send_Con(uint Con_word)
{
uchar i;
FSYNC=0; //低电平使数据有效
for(i=0;i<16;i++) //传输16位控制字
{
if(Con_word&0x8000)
SDATA=1;
else SDATA=0;
SCLK=0;
delay(5);
SCLK=1;
Con_word=Con_word<<1; //控制字左移一位,准备下一次 //产生下降沿,传输SDATA
}
FSYNC=1;
//高电平,无效
}
/*****************************************************
发送频率字
*****************************************************/
void Send_Freq(uint Freq_word)
{
uchar i;
FSYNC=0; //低电平使数据有效
for(i=0;i<16;i++) //传输16位频率字
{
if(Freq_word&0x8000)
SDATA=1;
else SDATA=0; //最高位不变,最高位赋给SDATA
//控制字左移一位,准备下一次
SCLK=0;
delay(5); //产生下降沿,传输SDATA
SCLK=1;
Freq_word=Freq_word<<1;
}
FSYNC=1;
//高电平,无效
}
void delay(uint delay_word)
{
uchar i;
for(i=0;i<delay_word;i++)
;
}
结果就是出不了波形,求高手指导! 补充一下,我用的单片机是SST89E58RDA
页:
[1]