找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

帖子
查看: 6458|回復(fù): 2
打印 上一主題 下一主題
收起左側(cè)

51單片機(jī)的AD9851并行驅(qū)動(dòng)程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:72705 發(fā)表于 2015-1-24 14:23 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
程序可以正常運(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);}
};
}


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩

相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:807238 發(fā)表于 2020-8-15 17:25 | 只看該作者
請(qǐng)問(wèn),電路圖該怎么連接呀?
回復(fù)

使用道具 舉報(bào)

板凳
ID:1037535 發(fā)表于 2022-7-13 14:34 | 只看該作者
除了 p1.0到p1.2三個(gè)口,是不是還要占用7個(gè)I/O口?
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表