📄 xinhao.c
字号:
//float abc=23.858257297405;//fosc=40.004480*4.5;
//float abc=29.826472471; //fosc=23.999750*6;
float abc=2.8636145307; //fosc=25.000000*6; 除10
ulong ku;
abc=abc*frequence;
ku=(ulong)(abc);
FRE1_D=(uchar)((ku>>24)&0x000000ff);
FRE1_C=(uchar)((ku>>16)&0x000000ff);
FRE1_B=(uchar)((ku>>8)&0x000000ff);
FRE1_A=(uchar)(ku&0x000000ff);
//MODE=0x01;
}
void AD9851_FSK(ulong f1,ulong f2)
{
float bc=2.8636145307; //fosc=25.000000*6; 除10
ulong aku;
bc=bc*f1;
aku=(ulong)(bc);
FRE1_D=(uchar)((aku>>24)&0x000000ff);
FRE1_C=(uchar)((aku>>16)&0x000000ff);
FRE1_B=(uchar)((aku>>8)&0x000000ff);
FRE1_A=(uchar)(aku&0x000000ff);
bc=2.8636145307; //fosc=25.000000*6; 除10
bc=bc*f2;
aku=(ulong)(bc);
FRE2_D=(uchar)((aku>>24)&0x000000ff);
FRE2_C=(uchar)((aku>>16)&0x000000ff);
FRE2_B=(uchar)((aku>>8)&0x000000ff);
FRE2_A=(uchar)(aku&0x000000ff);
MODE=4;
}
/*********参数输入显示程序**********/
void Input_Dis(void)
{
EA=0;
if(Step>10)
{ Chars_dis("=====================");
Dis_line(5);
Chars_dis(" Now you are setting:");
Dis_line(6);
if(Step==11)
Chars_dis("1.Freq: ");
else if(Step==12)
Chars_dis("2.Ampl: ");
else if(Step==21||Step==41)
Chars_dis("1.F_C : ");
else if(Step==31)
Chars_dis("1.F_L : ");
else if(Step==42||Step==32)
Chars_dis("2.A_C : ");
else if(Step==22)
Chars_dis("2. Ma : ");
else if(Step==33)
Chars_dis("3.F_C : ");
//else if(Step==34)
// Chars_dis("4.FSK : ");
if(Point==0)
{
Datas_dis((Input_Temp/10),8,17,18);
Dis_line(7);
}
if(Point==1)
{
if((Input_Temp%10)==0)
{
Datas_dis((Input_Temp/10),8,17,17);
Dis_line(7);
}
if((Input_Temp%10)>0)
{
Datas_dis(Input_Temp,8,17,16);
Dis_line(7);
}
}
}
EA=1;
}
/************************************************/
/*********键值输入程序*************/
void int1(void) interrupt 2
{
uchar Key_Temp=0,m_Key=0;
uchar i;
EA=0; //防止其他中断进入
Key_Temp=KEY; //读取键值
Delay(12000); //软件去抖动
m_Key=KEY;
if(Key_Temp==m_Key)
{
i=Key_Temp;
if((Step==2)&&(Key_Temp==11)) //AM调制深度
{
DEEP-=10;
DA0832=2*DEEP;
i=0;
MODE=1;
}
if((Step==2)&&(Key_Temp==12))
{DEEP+=10;
DA0832=2*DEEP;
i=0;
MODE=1;
}
if((Step==1)&&(Key_Temp==13)) //sin 步进
{
FREQ1+=1000;
AD9851_DDS(FREQ1);
MODE=1;
i=0;
}
if((Step==1)&&(Key_Temp==14))
{FREQ1-=1000;
AD9851_DDS(FREQ1);
MODE=1;
i=0;
}
if(i<10)
{
if(Step>10)
{
if(Point==0)
Input_Temp=Input_Temp*10+i*10;
if(Point==1)
Input_Temp=Input_Temp+i;
}
if(Step<10&&i>0&&i<7)
{
Step=Step*10;
Step=Step+i;
if(Step==1)
{
FREQ1=1000000;
AMP1=3000;
C_V=AMP1;
MODE=1;
AD9851_DDS(FREQ1);
//AD600_WR(AMP1);
//信号选择
MD_SIN=0;
}
else if(Step==2)
{
FREQ1=10000000;
AD9851_DDS(FREQ1);
DA0832=200;
MODE=1;
AMP1=1200;
C_V=AMP1;
//AD600_WR(AMP1);
FREQ2=100000;
DDS(FREQ2);
AMP2=2000;
// AMPL_WR(AMP2);
DEEP=100;
//对信号的选择
XSK_AM=1;
MD_SIN=1;
}
else if(Step==3)
{
FREQ1=2000000;
FREQ2=1000000;
FSK=500;
AMP1=3000;
// C_V=AMP1;
//AD600_WR(AMP1);
AD9851_FSK(FREQ1,FREQ2);
//对信号的选择
MD_SIN=0;
MODE=4;
}
else if(Step==4)
{
FREQ1=1000000;
if(ten_five)
{
AD9851_DDS(FREQ1-50000);
FIVE_TEN=1;
}
else
{
AD9851_DDS(FREQ1-100000);
FIVE_TEN=0;
}
MODE=0x02;
AMP1=3000;
C_V=AMP1;
//AD600_WR(AMP1);
//信号选择
MD_SIN=0;
}
else if(Step==43)
{
if(ten_five==1)
ten_five=0;
else
ten_five=1;
if(ten_five==1)
{
// AD9851_DDS(FREQ1-50000);
//CTR=0x03;
FIVE_TEN=1;
}
else
{
// AD9851_DDS(FREQ1-100000);
//CTR=0x03;
FIVE_TEN=0;
}
MODE=0x02;
Step=4;
}
else if(Step==5) //PSK
{
FREQ1=1000000;
// AD9851_DDS(FREQ1);
MODE=0x05;
AMP1=3000;
C_V=AMP1;
// DA0832=20;
PSK_ASK=0;
DDS(10000);
//XSK_AM=0;
MD_SIN=0;
}
else if(Step==6) //ASK
{
FREQ1=1000000;
AD9851_DDS(FREQ1);
MODE=0x03;
AMP1=3000;
C_V=AMP1;
// AD600_WR(AMP1);
PSK_ASK=1;
//信号选择
XSK_AM=0;
MD_SIN=1;
}
Clear_Dian(0);
}
}
if(i==10) //小数点
{
Point=1;
}
if(i==11&&(Step==11||Step==21||Step==31||Step==33||Step==41)) //*1K
{
Input_Temp=Input_Temp*1000;
}
if(i==12&&(Step==11||Step==21||Step==31||Step==33||Step==41)) //*1M
{
Input_Temp=Input_Temp*1000000;
}
if(i==15) //CLEAR
{
if(Step>10)
{
if(Point==0)
Input_Temp=(Input_Temp-Input_Temp%100)/10;
if(Point==1)
{
if(Input_Temp%10==0)
Point=0;
if(Input_Temp%10>0)
Input_Temp=Input_Temp-Input_Temp%10;
}
}
}
if(i==16) //ESC
{
Point=0;
Input_Temp=0;
Step=Step/10;
Clear_Dian(0);
}
if(i==17) //ENTER
{
Point=0;
if(Step==11||Step==21)
{
FREQ1=Input_Temp;
AD9851_DDS(FREQ1);
MODE=1;
}
if(Step==31)
{
FREQ1=Input_Temp;
AD9851_FSK(FREQ1,FREQ2);
}
if(Step==41)
{
FREQ1=Input_Temp;
if(ten_five==1)
AD9851_DDS(FREQ1-50000);
if(ten_five==0)
AD9851_DDS(FREQ1-100000);
MODE=0x02;
}
if(Step==43)
{if(ten_five==0)
{FIVE_TEN=1;
ten_five=1;
}
else if(ten_five==1)
{FIVE_TEN=0;
ten_five=1;
}
}
if(Step==12||Step==32||Step==42)
{
AMP1=(uint)(Input_Temp/10);
C_V=AMP1;
//AD600_WR(AMP1);
}
if(Step==22)
{
DEEP=(uchar)(Input_Temp/10);
//OFFSET_WR(DEEP);
AMP2=DEEP*20;
//AMPL_WR(AMP2);
}
if(Step==33)
{
FREQ2=Input_Temp;
AD9851_FSK(FREQ1,FREQ2);
}
//if(Step==34)
// {
// FSK=Input_Temp;
// AD9851_FSK(FREQ1,FREQ2,(FSK<<1));
//
// }
Clear_Dian(0);
if(Step>10)
Step=Step/10;
Input_Temp=0;
}
}
EA=1; //开启中断
}
/***********************************************/
/************主函数部分************/
void main(void)
{
Delay(1000);
P1=0x00;
ET_SIX=0;
Init_Int();
Init_Dian(6);
Clear_Dian(0);
Clear_Dian(1);
Init_Dian(6);
Clear_Dian(0);
Clear_Dian(1);
while(1)
{
if(Step==0)
{
Manu0_Dis();
if(Step!=0)
{
Clear_Dian(0);
}
}
if(Step==1||Step==11||Step==12)
{
Manu1_Dis();
}
if(Step==2||Step==21||Step==22)
{
Manu2_Dis();
}
if(Step==3||Step==31||Step==32||Step==33||Step==34)
{
Manu3_Dis();
}
if(Step==4||Step==41||Step==42||Step==43)
{
Manu4_Dis();
}
if(Step==5)
{
Manu5_Dis();
}
if(Step==6)
{
Manu6_Dis();
}
if(Step>6)
{
Input_Dis();
// if(Step<7)
//{
//Clear_Dian(0);
// }
}
// if(Step>0&&Step<7)
//AGC();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -