我是卖鞋的 发表于 2016-11-7 16:31

AD9833输出正弦波,程序求教,

第一部分 main.c
#include <c8051f020.h>
#include <AD9833.h>
#include <delay.h>

        void close_dog()       //关看门狗
{
   WDTCN=0xDE;
   WDTCN=0xAD;   
}
       
           void system_clock()
{
        int i;
        OSCXCN=0x67;       //启动外部晶体振荡器                          
        for(i=0;i<256;i++) //等待振荡器启动(>1ms)
        ;
    while(OSCXCN&0x80==0)
    ;                                           //等待振荡器稳定
    OSCICN = 0x88;//选择外部振荡器作为系统时钟源并使能丢失时钟检测器
}

        void port_initialize ()          //端**叉开关设置
{
       
        XBR2=0x00;           //禁止交叉开关使能端口0,1,2,3强制为输入方式
               
}

void main()
{
   close_dog();
   system_clock();
   port_initialize ();
   delay(3);
//1000Hz对应的频率寄存器值为13422,二进制0011 0100 0110 1110
   AD9833_LoadWave(0x2100,0x746E,0x4000,0xC000,0x2000);               
   while(1);
}
......................................................................................

第二部分 AD9833.C
#include <c8051f020.h>
#include <delay.h>
sbit FSYNC1   =P2^5;   //DDS使能引脚,低电平有效
sbit SCLK9833 =P2^6;   //DDS串行时钟输入
sbit SDATA9833=P2^7;   //DDS串行数据输入

//模拟SPI总线
void AD9833_write(unsigned int DDSdata)
{
   unsigned char i ;
   unsigned int DDSdata_temp;
   DDSdata_temp=DDSdata;
   SCLK9833=1;
delay(10);
   FSYNC1=1;
   delay(10);
   FSYNC1=0;
   delay(10);
   for(i=0;i<16;i++)   
   {
   if (DDSdata_temp&0x0001)
{
    SDATA9833=1;
}
else
{
    SDATA9833=0;
}
delay(10);
SCLK9833=0;      //时钟信号下降沿数据送入I/O口
delay(10);
SCLK9833=1;
DDSdata_temp=DDSdata_temp>>1;//16位数据从低位到高位送入               
   }
   FSYNC1   =1;
}

void AD9833_LoadWave(unsigned int Contr_Reg_date, unsigned int Fre_MSBdata, unsigned

int Fre_LSBdata, unsigned int Phs_data, unsigned int Reset_data)
{
   unsigned int Fre_MSBdata_temp=Fre_MSBdata;
   unsigned int Fre_LSBdata_temp=Fre_LSBdata;
   unsigned int Contr_Reg_data_temp=Contr_Reg_date;
   unsigned int Phs_data_temp=Phs_data;
   unsigned int Reset_data_temp=Reset_data;
   AD9833_write(Contr_Reg_data_temp);
   AD9833_write(Fre_MSBdata_temp);
   AD9833_write(Fre_LSBdata_temp);
   AD9833_write(Phs_data_temp);
   AD9833_write(Reset_data_temp);
}
......................................................................................

第三部分 delay.c
#include<c8051f020.h>

void delay(unsigned int i)
{
          unsigned int j;
          for(;i>0;i--)
          for(j=125;j>0;j--)
        ;
}

我是卖鞋的 发表于 2016-11-7 16:34

这是写的让AD9833输出1khz正弦波的代码,结果芯片输出端没有信号输出,本人软件是短板,求助!

长的帅怪我落 发表于 2016-11-7 17:40

我有个9833的程序,stm32的,反正最后能输出正弦波,需要我发给你?前提是你对程序没要求,而且要自己会改,现在没空看你的程序

我是卖鞋的 发表于 2016-11-7 18:56

长的帅怪我落 发表于 2016-11-7 17:40
我有个9833的程序,stm32的,反正最后能输出正弦波,需要我发给你?前提是你对程序没要求,而且要自己会改 ...

好的,感谢

长的帅怪我落 发表于 2016-11-8 08:22

我是卖鞋的 发表于 2016-11-7 18:56
好的,感谢

那我咋发你,不能发工程,只能发代码

我是卖鞋的 发表于 2016-11-8 08:58

长的帅怪我落 发表于 2016-11-8 08:22
那我咋发你,不能发工程,只能发代码

高级模式里面有一个附件选项,可以把工程打包成rar,再上传,麻烦你了。

长的帅怪我落 发表于 2016-11-8 09:04

本帖最后由 长的帅怪我落 于 2016-11-8 09:21 编辑

我是卖鞋的 发表于 2016-11-8 08:58
高级模式里面有一个附件选项,可以把工程打包成rar,再上传,麻烦你了。
我这个程序不属于加密范围,我没事的时候搞出来的,发出来不违反公司规定


长的帅怪我落 发表于 2016-11-8 09:05

我是卖鞋的 发表于 2016-11-8 08:58
高级模式里面有一个附件选项,可以把工程打包成rar,再上传,麻烦你了。
...
公司的所以文件都是加密的,这个工程也不例外。只能这么发了,你复制下,等几分钟后我重新编辑删了

我是卖鞋的 发表于 2016-11-8 09:13

长的帅怪我落 发表于 2016-11-8 09:05
公司的所以文件都是加密的,这个工程也不例外。只能这么发了,你复制下,等几分钟后我重新编辑删了 ...

谢谢了!

我是卖鞋的 发表于 2016-11-11 18:48

长的帅怪我落 发表于 2016-11-8 09:05
公司的所以文件都是加密的,这个工程也不例外。只能这么发了,你复制下,等几分钟后我重新编辑删了 ...

额,好像没法把分数全给你一个人,结不了帖了

长的帅怪我落 发表于 2016-11-14 13:18

我是卖鞋的 发表于 2016-11-11 18:48
额,好像没法把分数全给你一个人,结不了帖了

多点几次就行了

兄小 发表于 2019-3-2 11:19

你好,你的AD9833的波形调出来了吗?能否把stm32的程序发一份给我啊,谢谢!

202059mm 发表于 2021-5-3 11:11

楼主你好,可以提供下程序不??我的AD9833也调不出波形,找不出原因了emmmm....
页: [1]
查看完整版本: AD9833输出正弦波,程序求教,