这个东西也是我好久之前弄的,有点简陋但是能用。先看看外观...

         里边也是比较简单,有一个电源模块(其实就是一个5V的电源充电器),还有就是一个用AD9850弄的DDS模块,最后是一个89C52单片机。哦,忘了一个还有就是控制面板,用的是数码管驱动以及键盘控制芯片CH452,不错的一颗IC。

          /upfiles/201504/数码管矩阵模组原理图.pdf  用的就是CH452,I2C接口。

        说这个结构是我从中发买的,人家处理的花了我10块钱。就是一个小铁盒,自己打的孔,有些丑。

        程序也是自己写的,当然还是有参考的,但是基本能用,这里举例程序中两个比较重要的函数:

void ad9850_reset_serial()

{
    ad9850_w_clk=0;
    ad9850_fq_up=0;
    //rest信号
    ad9850_rest=0;
    ad9850_rest=1;
    ad9850_rest=0;
    //w_clk信号
    ad9850_w_clk=0;
    ad9850_w_clk=1;
    ad9850_w_clk=0;
    //fq_up信号
    ad9850_fq_up=0;
    ad9850_fq_up=1;
    ad9850_fq_up=0;
}
 
//***************************************************//
//          向ad9850中写命令与数据(串口)             //
//---------------------------------------------------//
void ad9850_wr_serial(unsigned char w0,U32 frequence)
{
    unsigned char i,w;
    long int y;
    double x;
    //计算频率的HEX值
    x=4294967295/125;//适合125M晶振
    //如果时钟频率不为180MHZ,修改该处的频率值,单位MHz  !!!
    frequence=frequence/1000000;
    frequence=frequence*x;
     y=frequence;
    //写w4数据
    w=(y>>=0);
    for(i=0;i<8;i++)
    {
        ad9850_bit_data=(w>>i)&0x01;
        ad9850_w_clk=1;
        ad9850_w_clk=0;
    }
    //写w3数据
    w=(y>>8);
    for(i=0;i<8;i++)
    {
        ad9850_bit_data=(w>>i)&0x01;
        ad9850_w_clk=1;
        ad9850_w_clk=0;
    }
    //写w2数据
    w=(y>>16);
    for(i=0;i<8;i++)
    {
        ad9850_bit_data=(w>>i)&0x01;
        ad9850_w_clk=1;
        ad9850_w_clk=0;
    }
    //写w1数据
    w=(y>>24);
    for(i=0;i<8;i++)
    {
         ad9850_bit_data=(w>>i)&0x01;
         ad9850_w_clk=1;
         ad9850_w_clk=0;
    }
    //写w0数据
    w=w0;   
    for(i=0;i<8;i++)
    {
         ad9850_bit_data=(w>>i)&0x01;
         ad9850_w_clk=1;
         ad9850_w_clk=0;
    }
    //移入始能
    ad9850_fq_up=1;
    ad9850_fq_up=0;
}
 
    这里我把程序也一起附在这里吧,仅供参考哦
 
    这个信号发生器不可能没有误差的,存在误差是正常的,之前也解释过,这里就不再重复了。偏差可以用ppm等表示。用示波器查看输出波形。
 
          我们知道,示波器的频率测试是不够准确的,所以找个频率计测试一下准确的输出频率。
        
        如果需要更多详细资料,可以联系我。
        来自:http://www.muwenyidao.com/