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

📄 dds.c

📁 用51单片机keilc编写的DDS并行编程
💻 C
字号:
//-----------------------函数声明,变量定义-------------------------------------------------------- 
#include <reg51.h> 
#include <intrins.h> 
#include<ABSACC.H> 
//-----------------------定义管脚-------------------------------------------------------- 
#define data_OUT P0 
#define amt 0xFC;

sbit FQ_UD=P3^0; //AD9850信号更新申请 
sbit W_CLK=P2^0; //写控制字时钟 
sbit Reset=P3^2;//复位控制信号


unsigned char CON_word[5]={0x00,0xff,0xff,0x7f,0xff}; 

//Word data[7] data[6] data[5] data[4] data[3] data[2] data[1] data[0] 
//W0 Phase b  Phase b3 Phase b2 Phase b1 Phase b0 Power Down Control Control 
//W1 Freq-b31 Freq-b30 Freq-b29 Freq-b28 Freq-b27 Freq-b26 Freq-b25 Freq-b24 
//W2 Freq-b23 Freq-b22 Freq-b21 Freq-b20 Freq-b19 Freq-b18 Freq-b17 Freq-b16 
//W3 Freq-b15 Freq-b14 Freq-b13 Freq-b12 Freq-b11 Freq-b10 Freq-b9  Freq-b8 
//W4 Freq-b7  Freq-b6  Freq-b5  Freq-b4  Freq-b3  Freq-b2  Freq-b1  Freq-b0 
//-------------------------------------------------------------------------------------------------- 
// 函数名称: delay 
// 入口参数: N 
// 函数功能:延时子程序,实现(16*N+24)us的延时 
// 系统采用11.0592MHz的时钟时,延时满足要求,其它情况需要改动 
//-------------------------------------------------------------------------------------------------- 
void delay(unsigned int N) 
{ 
	int i; 
	for(i=0;i<N;i++); 
} 
//-------------------------------------------------------------------------------------------------- 
// 函数名称: WRITE_AD9850 
// 函数功能: 将控制字写入AD9850 
//-------------------------------------------------------------------------------------------------- 
void WRITE_AD9850(void) 
{ 
	unsigned char i; 
	FQ_UD=0; 
	W_CLK=0; 
	delay(10); 
	CON_word[0]=CON_word[0]&amt; //置工作方式选择位为00 
	for(i=0;i<5;i++){ 
		data_OUT=CON_word[i]; //送控制字 
		W_CLK=0; 
		delay(0); 
		W_CLK=1; //上升延 
		delay(1); 
		W_CLK=0;
		delay(0);
	} 
	delay(1); 
	FQ_UD=1; //上升延要求AD9850改变输出 
} 
//-------------------------------------------------------------------------------------------------- 
// 函数名称:main 
// 用户主函数 
// 函数功能:主函数 
//-------------------------------------------------------------------------------------------------- 
void main() 
{ 
	Reset=1;
	delay(50);
	Reset=0;
	delay(50);
	FQ_UD=0; 
	while(1){
	WRITE_AD9850();
	delay(2); 
	FQ_UD=0; 
	delay(2); 
    }
//	data_OUT=0xff;
//	while(1);
} 


⌨️ 快捷键说明

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