標(biāo)題: 51單片機(jī)的AD9851并行驅(qū)動(dòng)程序 [打印本頁(yè)]

作者: huxiao    時(shí)間: 2015-1-24 14:23
標(biāo)題: 51單片機(jī)的AD9851并行驅(qū)動(dòng)程序
程序可以正常運(yùn)行,大家可以拿去用了,呵呵
#include "reg52.h"
/****************51并行驅(qū)動(dòng)****************/
sbit     clk    =P1^0;
sbit     fq_ud =P1^1;
sbit     rst    =P1^2;
#define     dat    P3
sbit     key1  =P1^4;
sbit     key2  =P1^5;
sbit     key3  =P1^6;
sbit     key4  =P1^7;
unsigned char phase_word=0x00;    //相位控制字,使用低5位
unsigned char power_down=0x00;    //低功耗模式
unsigned char mult=0x01;          //6倍頻是否打開(kāi)
unsigned char ww[5]={0x09,0x0E,0x38,0xE3,0x8E};
unsigned long freq,set_value;
void delay_us(unsigned int i)       //delay     
    {
       while(i--);
    }
//AD9851初始化,在此之前請(qǐng)確認(rèn)D0,D1和D2的電平狀態(tài)
void init_dds(void)
{   
     rst=1;     //高電平復(fù)位
delay_us(10000);   //延時(shí)10mS
rst=0;
delay_us(10000);   //延時(shí)10mS
}

//往AD9851寫(xiě)數(shù)據(jù)
void write_dds(unsigned long dds)
{
unsigned char i;
      
ww[4]=dds&0xFF;              //頻率字最低字節(jié)
ww[3]=(dds>>8)&0xFF;
ww[2]=(dds>>16)&0xFF;
ww[1]=dds>>24;              //頻率字最高字節(jié)
     ww[0]= (phase_word<<3)|| power_down<<2 || mult; //控制字

fq_ud=0;                    //FQ_UD置低
clk=0;                      //CLK置低
for(i=0;i<5;i++)            //送入5個(gè)字節(jié)的控制字
{
   dat=ww[i];
   delay_us(2);
   clk=1;
   delay_us(2);
   clk=0;
   delay_us(2);
}
     fq_ud=1;   //使能信號(hào)
delay_us(3);
fq_ud=0;
}
//寫(xiě)入頻率
void write_freq(unsigned long freq)
{
unsigned long dds;
if(freq<=1000)                            dds=23.861*freq;   // 23.861             freq<=1K        
if((freq>1000)&&(freq<=10000))            dds=23.8615*freq; //  23.8615         1K<freq<=10K
if((freq>10000)&&(freq<=100000))          dds=23.8616*freq;  //  23.8616        10K<freq<=100K        
if((freq>100000)&&(freq<=35000000))       dds=23.8617*freq; //  23.8617       100K<freq<=35M
if((freq>35000000)&&(freq<=40000000))     dds=23.8619*freq; //  23.8619        35M<freq<=40M
write_dds(dds);
}
main()
{
init_dds();
while(1)
{
if(key1==0) {delay_us(10000);write_freq(0);while(!key3);write_freq(32768);}
if(key2==0) {delay_us(10000);write_freq(0);while(!key4);write_freq(11059200);}
if(key3==0) {delay_us(10000);write_freq(0);while(!key2);write_freq(40000000);}
if(key4==0) {delay_us(10000);write_freq(0);while(!key1);write_freq(45000000);}
};
}



作者: 835841281    時(shí)間: 2020-8-15 17:25
請(qǐng)問(wèn),電路圖該怎么連接呀?
作者: hunt9090    時(shí)間: 2022-7-13 14:34
除了 p1.0到p1.2三個(gè)口,是不是還要占用7個(gè)I/O口?




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1