AD9851的C语言程序分析和总结_第1页
AD9851的C语言程序分析和总结_第2页
AD9851的C语言程序分析和总结_第3页
AD9851的C语言程序分析和总结_第4页
AD9851的C语言程序分析和总结_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

51单片机控制DDS芯片AD9851的源程序

注意:用并行接口方式!!!

定义单片机与DDS芯片的连接

DDSDATABITPO.O

DDSWCLKBITP0.1

DDS_FQUDBITP0.2

==================定义DDS控制数据的存放地址========

DDS.DATAODATA40H

DDS_DATA1DATA41H

DDS_DATA2DATA42H

DDS.DATA3DATA43H

DDSDATA4DATA44H

;==============送数据到DDS芯片(串行控制方式)==========

SEND_DDS_DATA:MOVR1Z#DDS_DATA4;从川4的最低位开始送出数据

;一直到W0的最低位结束

MOVRO,#05H;设总共要送出的字节为5X8

CLRDDS.FQUD;置低

LOOP_SEND_W:MOVA,@R1;把数据由缓冲区送给A准备输出

CLRC;清零

SEND_1_BIT:MOVR2,#08H;循环8次,每次送出一个字节

LOOP_SEND:CLRDDS_WCLK

RRCA;左移

MOVDDS_DATA,C;送出•位数据至ijDDS

NOP

SETBDDSWCLK

NOP

;判断是否送完这一位的个字节

DJNZR2ZLOOP_SEND8

DECRI

DJNZRO,LOOP_SEND_W;判断是否送完5位

SETBDDS_FQUD

NOP

CLRDDS_FQUD

RET

;==================送数据至I]DDS芯片子程序结束=========

当然单单给9851送数很简单,我们同样可以由键盘给定十进制的频率来控制输出

单片机用总线接口方案:

MOVX@DPTR,W0

MOVX@DPTRZW1

MOVX@DPTR,W2

MOVX@DPTRZW3

MOVX@DPTRZW4

SETBFQ_UD

CLRFQ_UD

其中WO高5bit为相位控制字,低3bit为功能控制,建议一•股测试用0或1既可。其

中Wl-W4为频率控制字,不要为0,也不要太大。比如测试可以发4byte的“23

sbitFQ_UD=Pl人0;

unsignedcharxdata*pByteD;

unsignedcharxdata*pBytel;

unsignedcharxdata*pByte2;

unsignedcharxdata*pByte3;

unsignedcharxdata*pByte4;

voidwr5byte(unsignedchard0,dl,d2,d3,d4)

*pByteO=dO;

*pBytel=dl;

*pByte2=d2;

*pByte3=d3;

*pByte4=d4;

FQ_UD=1;

FQ_UD=0;

}

main()

{

pByteO=OxfOff;

pByte1=OxfOff;

pByte2=OxfOff;

pByte3=OxfOff;

pByte4=OxfOff;

RESET=1;

RESET=0;

wr5byte(l,l,l,l,l);

//wr5byte(04,lzl,l);

while(l);

}

//DDS测试程序

#include<reg5Lh>〃头文件

〃定义AD9851与98C51的接口

sbitW_CLK=P3A0;

sbitFQ_UD=P3A1;

sbitRESET=P3A2;

/***频率算法公式*****/

是输出的频率****〃*x*****32位控制字为:Fm=(f*OxFFFFFFFF)/内部时钟*******/

unsignedlongintFm=0x0003a411;〃实验时候自己设了lKHz结果很精确。外时钟用信号了生器3MH

Z!!

unsignedchardatatab[]={0x01,0x00,0x00,0x00,0x00};//(WO)(W4W3W2Wl)高---低)注意

顺序!

〃延时程序

voiddelay(unsignedinti)

(

while(i--);

}

//分32位数据分解为4个字节存于tab口数组的后四个单元.tab[O]为相位和频率的设置单元

voidchang(unsignedlongintt)

unsignedchar*i;

i=&t;

tab[l]=(char)*i;

tab[2]=(char)*(i+l);

tab[3]=(char)*(i+2);

tab[4]=(char)*(i+3);

}

/***主程序*****/

voidmain(void)

{unsignedchari;FQ_UD=O;delay(l);

W_CLK=O;delay(l);

RESET=l;delay⑴;〃上电先更位一次

RESET=O;delay(l);

chang(Fm);〃分离•四字节程序

for(i=

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论