您的位置:首页技术文栏单片机C51
内容搜索:
阅读内容
背景:#EDF0F5 #FAFBE6 #FFF2E2 #FDE6E0 #F3FFE1 #DAFAF3 #EAEAEF 默认  

单片机控制AD9850的数字信号发生器C51程序

[日期:2008-08-16 ] [来源:net 作者:佚名] [字体: (投递新闻)

单片机控制AD9850的数字信号发生器C51程序

//-----------------------函数声明,变量定义------------------------------
#include <reg51.h>
#include <intrins.h>
#include<ABSACC.H>        
//-----------------------定义管脚----------------------------------------
#define  data_OUT P1
sbit FQ_UD=P3^0;          //AD9850信号更新申请 
sbit W_CLK=P3^1;          //写控制字时钟
unsigned char CON_word[5]; 
//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      
//--------------------------------------------------------------------------------------------------
// 函数名称: 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(0);
     CON_word[0]=CON_word[0]&0xFC; //置工作方式选择位为00
     for(i=0;i<5;i++)
     {
     data_OUT=CON_word[i];      //送控制字 
     W_CLK=0;
     delay(0);
     W_CLK=1;                   //上升延
     delay(0);
     }
     FQ_UD=1;               //上升延要求AD9850改变输出

//--------------------------------------------------------------------------------------------------
// 函数名称:main
// 用户主函数
// 函数功能:主函数
//--------------------------------------------------------------------------------------------------
void main()
     {
     FQ_UD=0;
     WRITE_AD9850();
     }

阅读:
录入:petta

推荐 】 【 打印
本文评论
      全部评论
发表评论


点评: 字数
姓名:
站长推荐