打印

AD9851,求高人指教,不知是软件还是硬件问题

[复制链接]
1008|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wlf464842650|  楼主 | 2012-7-11 18:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include<reg51.h> //头文件

#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long int
#define AD9851_DATA P1
//定义AD9851和51接口 8
sbit W_CLK=P2^4;
sbit FQ_UD=P2^3;
sbit RESET=P2^2;
double Fm=0;
uchar tab[]={0x01,0x00,0x0,0x00,0x00};
//tab[0]为相位和频率设置单元,此处初始相位设置为零,开倍频30M*6=180M系

void delay(uint i)
{
    while(i--);
}
void delay_long(uint x)
{
    uint y,z;
    for(y=0;y<1000;y++)
    {
        for(z=0;z<x;z++) ;
    }
}
//分32位数据分解为4个字节存于tab[]数组的后四个单元,tab[0]为相位和频率的

void change(double f)
{
    ulong num;
    Fm=1073741824/45.0f*f;      //误差40000000H,整
    num=(ulong)Fm;
    tab[1]=(char)(num>>24);
    tab[2]=(char)(num>>16)&0xff;
    tab[3]=(char)(num>>8)&0xff;
    tab[4]=(char)num&0xff;
}
void init()
{
    FQ_UD=0;
    delay(1);
    W_CLK=0;
    delay(1);
    RESET=1;
    delay(10);
    RESET=0;
    delay(1);
}
void write_data(double frq)
{
    uchar i;
    change(frq);
    for(i=0;i<5;i++)
    {
        W_CLK=0;
        delay(1);  
        P1=tab;
        W_CLK=1;
    }
    FQ_UD=1;
    delay(1);
    FQ_UD=0;
    delay(1);
}
void main()
{
    init(); //ad9851初始化
    write_data(0.001);
//此处为频率设置,当前频率为(double类型)10MHz。如有误差,自己加补偿。
     while(1);
}

相关帖子

沙发
wlf464842650|  楼主 | 2012-7-11 18:33 | 只看该作者
[img][/img]

使用特权

评论回复
板凳
wlf464842650|  楼主 | 2012-7-11 18:36 | 只看该作者

使用特权

评论回复
地板
wlf464842650|  楼主 | 2012-7-11 18:37 | 只看该作者

使用特权

评论回复
5
wlf464842650|  楼主 | 2012-7-11 23:33 | 只看该作者
求大虾

使用特权

评论回复
6
wlf464842650|  楼主 | 2012-7-12 11:51 | 只看该作者

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

25

帖子

0

粉丝