//--------------------------------------------------------------------------------------------------
/*******************************************************/
void Freq_Adjust(long value_Freq)
{
unsigned int i;
long f;
unsigned char L4,L3,L2,L1,L0;
FQ_UD=0;
f="value"_Freq*86;
L0=0x28;
L4= f&0x000000ff;
L3=(f>>8)&0x000000ff;
L2=(f>>16)&0x000000ff;
L1=(f>>24)&0x000000ff;
CON_word[0]=L0;
CON_word[4]=L4;
CON_word[3]=L3;
CON_word[2]=L2;
CON_word[1]=L1;
FQ_UD=0;
W_CLK=0;
//delay(0);
_nop_(); _nop_(); _nop_(); _nop_(); _nop_();
CON_word[0]=CON_word[0]&0xFC; //置工作方式选择位为00
for(i=0;i<5;i++)
{
FESET="1";
W_CLK=0;
data_OUT=CON_word[i]; //送控制字
// delay(0);
_nop_(); _nop_(); _nop_(); _nop_();_nop_();
FESET="0";
W_CLK=1; //上升延
//delay(0);
_nop_(); _nop_(); _nop_();_nop_();_nop_();
}
FQ_UD=1;
}
//-------------------------------------------------------------------------------
// 函数名称:main
// 用户主函数
// 函数功能:主函数
//-------------------------------------------------------------------------------
main()
{
BEGAIN:
LCD_Initial();
P2=0XF0;
GotoXY(0,0);
Print("Please Input :");
GotoXY(0,1);
Print(" ");
m=0;
k=0;
l=0;
//q=5;
FQ_UD=0;
Freq_Adjust(50000);
while(1)
{
while(1)
{
m="keynum"();
if(m>=0&&m<=9||m==15||m==14)
{
z="m";
Delay1ms(150);
break;
}
}
if(m>=0&&m<=9)
{
l++;
}
if(z==14)
{
goto BEGAIN;
}
if(z==15)
{
GotoXY(0,1);
Print(&TempBuffer[0]);
GotoXY(9,1);
Print("OK!!");
Delay1ms(1000);
break;
}
if(l==1)
{k=z;}
if(l==2)
{
k="k"*10+z;
}
if(l==3)
{
k="k"*10+z;
}
if(l==4)
{
k="k"*10+z;
}
if(l==5)
{
k="k"*10+z;
}
if(l==6)
{
k="k"*10+z;
}
if(l==7)
{
k="k"*10+z;
}
if(l==8)
{
k="k"*10+z;
}
if(l>8||k>25000000)
{
GotoXY(0,1);
Print(" ERROR!! ");
Delay1ms(500);
goto BEGAIN;
}
IntToStr(k,&TempBuffer[0],0);
GotoXY(0,1);
Print(&TempBuffer[0]);
P2=0XF0;
Delay1ms(150);
}
FQ_UD=0;
Freq_Adjust(k);
while(1)
{
GotoXY(0,0);
Print("THE PL DISPLAY");
IntToStr(k,&TempBuffer[0],0);
GotoXY(0,1);
Print(&TempBuffer[0]);
m="keynum"();
if(m==10)
{ Delay1ms(300) ;
if(k>=30000000){k=30000000;}
else{ k="k"+1000;}
}
if(m==11)
{Delay1ms(300) ;
if(k<=0){k=0;}
else{k=k-1000;}
}
if(m==14)
{
goto BEGAIN;
}
}
}
AD9850内含可编程DDS系统和高速比较器,能实现全数字编程控制的频率合
成。可编程DDS系统的核心是相位累加器,它由一个加法器和一个N位相位寄
存器组成,N一般为24~32。每来一个外部参考时钟,相位寄存器便以步长M
递加。相位寄存器的输出与相位控制字相加后可输入到正弦查询表地址上。正
弦查询表包含一个正弦波周期的数字幅度信息,每一个地址对应正弦波中0°~3
60°范围的一个相位点。