⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ad9851.c

📁 AD9851:本程序实现了用51单片机串行控制AD9851的DDS芯片输出频率可变的正弦波信号.
💻 C
字号:
/*
 *	Copyright (C) 2007, 华中科技大学电气与电子科技创新中心
 *	All Rights Reserved.
 *	
 *	文件名:		AD9851.c
 *	文件描述:	AD9851驱动程序文件
 *			
 *	当前版本:	1.1
 *	作者:		
 *	完成日期:	2007年7月25日
 *	
*/
#include"AD9851\AD9851.h"
#include<intrins.h>

/***************************************
说明:	初始化AD9851,写入空数据进行初始化
*****************************************/
void AD9851_Initial(void)
{
	CLK=0;
	_nop_();
	LOAD=0;
	AD9851_Delay(2);
	CLK=1;
	AD9851_Delay(2);
	CLK=0;
	AD9851_Delay(5);
	LOAD=1;
	AD9851_Delay(2);
	LOAD=0;	
}
/***************************************
说明:	写入频率,将要写入的频率转化成32位频率控制位;
		如写入500Hz,即调用此函数AD9851_WriteFreq(500);
****************************************/
void AD9851_WriteFreq(unsigned long f)
{
	unsigned long dds;
	dds=f*35.79139413;			 //30MHz晶振所用23.860929422做为倍乘系数
	AD9851_WriteData(dds);
}

/**************************************
说明:	串行写入数据子程序,先写入32位数据控制位,
		后写入8位其他控制位,用6倍频。
**************************************/
void AD9851_WriteData(unsigned long dds)
{
	unsigned char i;
	LOAD=0;
	CLK=0;
	for(i=0;i<40;i++)
	{
		CLK=0;
		_nop_();
		if((dds&0x00000001)||(i==32))
			DAT=1;
		else
			DAT=0;
		_nop_();
		CLK=1;
		dds=dds>>1;
	}
	LOAD=1;
	CLK=0;
	_nop_();
	AD9851_Delay(5);
	LOAD=0;
}

/************************************
 说明:延量50us子程序
**************************************/
void AD9851_Delay(unsigned char t)
{
	unsigned char i,j;
	for(i=0;i<t;i++)
	{
		for(j=0;j<255;j++)
		;
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -