📄 generator.c
字号:
#include<aduc841.h>
#include<main.h>
#include<240128.h>
#include<stdoi.h>
#include<9954.h>
#include<keyboard.h>
#include<D:\Keil\C51\ISD51\ADuc841\ISD51.H>
#include<math.h>
#define A1k 13421.772796875
#define bnoise 200
#define maxfrq 35000.0
#define medfrq 10694.0
unsigned char keycode;
unsigned int idata frq0,frq1,frq,pos;
unsigned int idata span,center;
unsigned int max;
unsigned char gx,gy;
unsigned char bw=10;
unsigned char pos1=60;
bit mark=1;
bit mask=1;
bit cont=0;
volatile unsigned int xdata spc[4096] ;
volatile unsigned char xdata dis[250] ;
//volatile unsigned int xdata dad[4096] _at_ 0x2500;
unsigned int code ampf[]={15683,16000,15983,15000,14700,14000,13500,13400,13300,13300,13200,13200,
13100,13100,13100,13100,13000,12900,12883,13083,13183,13383,13483,13683,
13883,14083,14283,14583,14783,14983,15283,15083,15383,15383,15683,15783
};
void delay(unsigned int dly);
void nsweep();
void sweep();
void daout();
void menu(bit mode);
void popup(unsigned x1,unsigned char y1,unsigned char x2,unsigned char y2);
void select(unsigned char idata x1,unsigned char idata y1,unsigned char idata x2,unsigned char idata y2,bit setclr);
void refresh();
void gridlinear(unsigned char idata xstart,unsigned char idata ystart,unsigned char idata xend,unsigned char idata yend,unsigned char idata xnum,unsigned char idata ynum);
void tsweep();
void smooth();
void dist();
main()
{
unsigned char tmp;
unsigned char sel,sels1;
EWAIT=3;
EA=1;
SCON=0x52;
T3CON=0x84;
T3FD=23;
gx=1;
gy=1;
frq0=1000;
frq1=35000;
span=300;
center=20000;
initUart();
initkey();
initlcd();
lcdclear('a',0,1,0);
DDS_Ini();
menu(1);
displaychar("Ready.",1,0);
popup(30,30,215,62);
displaychar("'R' to analyze.",5,6);
while(!readkey(&tmp));
lcdclear('g',0.18,1,0);
lcdclear('t',0.18,1,0);
CFG841=0xcd;
ADCCON1=0x98;
ADCCON2=0x00;
DACCON=0x7f;;
while(1)
{
ISDcheck();
if(readkey(&keycode))
{
/*
if(keycode==key1)
{
lcdclear('t',0,1,0);
displaychar("Input:",3,0 );
frq=scanf('i',7,3);
ddsSetFTW0((unsigned long)frq*A1k);
}
if(keycode==key3)
{
lcdclear('t',0,1,0);
displaychar("Input AMP:",3,0 );
ddsSetASF(scanf('i',11,3));
}
if(keycode==key5)
{
frq=frq+1;
ddsSetFTW0((unsigned long)frq*A1k);
displayint(frq,5,3);
}
if(keycode==key6)
{
frq=frq-1;
ddsSetFTW0((unsigned long)frq*A1k);
displayint(frq,5,3);
}
*/
if (keycode==key6)
{
mark=0;
if (pos1>240) pos1=240;
pos1=pos1+5;
displaychar("Freq: KHz Amp:- dBm",3,0);
displayint(frq0+((frq1-frq0)/240.0)*(pos1),3,5);
displayfloat((-1)*(((float)spc[(unsigned int)(pos1*(frq1-frq0)/bw/240.0)]*(-0.000000493174)*spc[(unsigned int)(pos1*(frq1-frq0)/bw/240.0)])+spc[(unsigned int)(pos1*(frq1-frq0)/bw/240.0)]*0.0081-43.184),3,20);
gx=1;
gy=1;
lcdclear('g',0,1,0);
refresh();
line(pos1,40,pos1+1,127,3);
}
if (keycode==key5)
{
mark=0;
if (pos1<5) pos1=5;
pos1=pos1-5;
displaychar("Freq: KHz Amp:- dBm",3,0);
displayint(frq0+((frq1-frq0)/240.0)*(pos1),3,5);
displayfloat((-1)*(((float)spc[(unsigned int)(pos1*(frq1-frq0)/bw/240.0)]*(-0.000000493174)*spc[(unsigned int)(pos1*(frq1-frq0)/bw/240.0)])+spc[(unsigned int)(pos1*(frq1-frq0)/bw/240.0)]*0.0081-43.184),3,20);
gx=1;
gy=1;
lcdclear('g',0,1,0);
refresh();
line(pos1,40,pos1+1,127,3);
}
if (keycode==key2)
{
mark=0;
if (pos1>240) pos1=239;
pos1=pos1+1;
displaychar("Freq: KHz Amp:- dBm",3,0);
displayint(frq0+((frq1-frq0)/240.0)*(pos1),3,5);
displayfloat((-1)*(((float)spc[(unsigned int)(pos1*(frq1-frq0)/bw/240.0)]*(-0.000000493174)*spc[(unsigned int)(pos1*(frq1-frq0)/bw/240.0)])+spc[(unsigned int)(pos1*(frq1-frq0)/bw/240.0)]*0.0081-43.184),3,20);
gx=1;
gy=1;
lcdclear('g',0,1,0);
refresh();
line(pos1,40,pos1+1,127,3);
}
if (keycode==key1)
{
mark=0;
if (pos1<5) pos1=5;
pos1=pos1-1;
displaychar("Freq: KHz Amp:- dBm",3,0);
displayint(frq0+((frq1-frq0)/240.0)*(pos1),3,5);
displayfloat((-1)*(((float)spc[(unsigned int)(pos1*(frq1-frq0)/bw/240.0)]*(-0.000000493174)*spc[(unsigned int)(pos1*(frq1-frq0)/bw/240.0)])+spc[(unsigned int)(pos1*(frq1-frq0)/bw/240.0)]*0.0081-43.184),3,20);
gx=1;
gy=1;
lcdclear('g',0,1,0);
refresh();
line(pos1,40,pos1+1,127,3);
}
if(keycode==key8)
{
nsweep();
}
if(keycode==key12)
{
daout();
}
/*
if(keycode==key13)
{
tsweep();
}
*/
if (keycode==key4)
{
lcdclear('t',0,1,0);
sel=0;
menu(1);
popup(25,19,92,84);
while(1)
{
lcdclear('t',0,1,0);
displaychar("Options",1,0);
displaychar("Setup",3,5);
displaychar("Sweep",5,4);
displaychar("Grid",6,4);
displaychar("Meas",7,4);
if (mask) displaychar(".",1,28);
displayint((unsigned char)cont,9,5);
select(27,40+sel*8,88,48+sel*8,1);
while(!readkey(&keycode));
if (keycode==key10)
{
select(27,40+sel*8,88,48+sel*8,0);
sel--;
if (sel>250) sel=2;
select(27,40+sel*8,88,48+sel*8,1);
}
if (keycode==key13)
{
mask=~mask;
}
if (keycode==key14)
{
cont=~cont;
}
if (keycode==key9)
{
select(27,40+sel*8,88,48+sel*8,0);
sel++;
if (sel>2) sel=0;
select(27,40+sel*8,88,48+sel*8,1);
}
if (keycode==key15)
{
lcdclear('a',0,1,0);
refresh();
displaychar("Completed",1,0);
break;
}
if (keycode==key16)
{
select(27,40+sel*8,88,48+sel*8,0);
delay(60000);
delay(60000);
select(27,40+sel*8,88,48+sel*8,1);
delay(60000);
delay(60000);
select(27,40+sel*8,88,48+sel*8,0);
delay(60000);
delay(60000);
select(27,40+sel*8,88,48+sel*8,1);
popup(92,30+sel*8,159,80+sel*8);
sels1=0;
while(1)
{
if(sel==0) //sweep
{
displaychar("Start",5,12);
displaychar("End",6,12);
displaychar("Center",7,12);
displaychar("Span",8,12);
displaychar("BW/Avg",9,12);
select(94,40+sels1*8,155,48+sels1*8,1);
while(!readkey(&keycode));
if (keycode==key10)
{
select(94,40+sels1*8,155,48+sels1*8,0);
sels1--;
if (sels1>250) sels1=4;
select(94,40+sels1*8,155,48+sels1*8,1);
}
if (keycode==key9)
{
select(94,40+sels1*8,155,48+sels1*8,0);
sels1++;
if (sels1>4) sels1=0;
select(94,40+sels1*8,155,48+sels1*8,1);
}
if (keycode==key15)
{
lcdclear('a',0,1,0);
refresh();
displaychar("Options",1,0);
popup(25,19,92,84);
break;
}
if (keycode==key16)
{
select(94,40+sels1*8,155,48+sels1*8,0);
delay(60000);
delay(60000);
select(94,40+sels1*8,155,48+sels1*8,1);
delay(60000);
delay(60000);
select(94,40+sels1*8,155,48+sels1*8,0);
delay(60000);
delay(60000);
select(94,40+sels1*8,155,48+sels1*8,1);
if (sels1==0)
{
displaychar(" K",5,12);
frq0=scanfu('i',12,5);
}
if (sels1==1)
{
displaychar(" K",6,12);
frq1=scanfu('i',12,6);
}
if (sels1==2)
{
displaychar(" K",7,12);
center=scanfu('i',12,7);
frq0=center-span/2;
frq1=center+span/2;
}
if (sels1==3)
{
displaychar(" K",8,12);
span=scanfu('i',12,8);
frq0=center-span/2;
frq1=center+span/2;
}
if (sels1==4)
{
displaychar(" K",9,12);
bw=scanfu('i',12,9);
}
lcdclear('a',0,1,0);
for(tmp=0;tmp<240;tmp++) dis[tmp]=0;
refresh();
displaychar("Options",1,0);
popup(25,19,92,84);
break;
}
}
if(sel==1) //grid
{
displaychar("ON",6,12);
displaychar("OFF",7,12);
select(94,48+sels1*8,155,56+sels1*8,1);
while(!readkey(&keycode));
if (keycode==key10)
{
select(94,48+sels1*8,155,56+sels1*8,0);
sels1--;
if (sels1>250) sels1=1;
select(94,48+sels1*8,155,56+sels1*8,1);
}
if (keycode==key9)
{
select(94,48+sels1*8,155,56+sels1*8,0);
sels1++;
if (sels1>1) sels1=0;
select(94,48+sels1*8,155,56+sels1*8,1);
}
if (keycode==key15)
{
lcdclear('a',0,1,0);
refresh();
displaychar("Options",1,0);
popup(25,19,92,84);
break;
}
if (keycode==key16)
{
select(94,48+sels1*8,155,56+sels1*8,0);
delay(60000);
delay(60000);
select(94,48+sels1*8,155,56+sels1*8,1);
delay(60000);
delay(60000);
select(94,48+sels1*8,155,56+sels1*8,0);
delay(60000);
delay(60000);
select(94,48+sels1*8,155,56+sels1*8,1);
if (sels1==0)
{
gx=8;
gy=9;
}
if (sels1==1)
{
gx=1;
gy=1;
}
lcdclear('a',0,1,0);
refresh();
displaychar("Options",1,0);
popup(25,19,92,84);
break;
}
}
if(sel==2) //Adjust
{
displaychar("Perform a measurement?",1,0);
displaychar("YES",7,12);
displaychar("NO",8,12);
select(94,56+sels1*8,155,64+sels1*8,1);
while(!readkey(&keycode));
if (keycode==key10)
{
select(94,56+sels1*8,155,64+sels1*8,0);
sels1--;
if (sels1>250) sels1=1;
select(94,56+sels1*8,155,64+sels1*8,1);
}
if (keycode==key9)
{
select(94,56+sels1*8,155,64+sels1*8,0);
sels1++;
if (sels1>1) sels1=0;
select(94,56+sels1*8,155,64+sels1*8,1);
}
if (keycode==key15)
{
lcdclear('a',0,1,0);
refresh();
displaychar("Options",1,0);
popup(25,19,92,84);
break;
}
if (keycode==key16)
{
select(94,56+sels1*8,155,64+sels1*8,0);
delay(60000);
delay(60000);
select(94,56+sels1*8,155,64+sels1*8,1);
delay(60000);
delay(60000);
select(94,56+sels1*8,155,64+sels1*8,0);
delay(60000);
delay(60000);
select(94,56+sels1*8,155,64+sels1*8,1);
if (sels1==0)
{
lcdclear('a',0,1,0);
gridlinear(0,32,240,128,gx,gy);
menu(1);
dist();
while(!readkey(&keycode));
}
for(tmp=0;tmp<240;tmp++) dis[tmp]=0;
lcdclear('a',0,1,0);
gridlinear(0,32,240,128,gx,gy);
menu(1);
displaychar("Options",1,0);
popup(25,19,92,84);
ADCCON2=0x00;
break;
}
}
}
}
}
}
}
}
}
/*
void sweep()
{
unsigned char idata tmp;
unsigned int key;
lcdclear('t',0,1,0);
displaychar("Delta frq(Hz):",9,0);
key=scanf('i',3,10);
ddsSetSwpP((unsigned long)key*A1k/1000.0,1);
ddsSetSwpN((unsigned long)key*A1k/1000.0,1);
lcdclear('t',0,1,0);
displaychar("end frq(kHz):",9,0);
ddsSetFTW1((unsigned long)scanf('i',3,10)*A1k);
lcdclear('t',0,1,0);
displaychar("st frq(kHz):",9,0);
ddsSetFTW0((unsigned long)scanf('i',3,10)*A1k);
ddsSetCFR1(0x02200046);
displaychar("Sleeping target...",4,0);
displaychar("Target has slept.",5,0);
while(!readkey(&tmp))
{
P3_4=1;
delay(40);
P3_4=0;
}
}
*/
void delay(unsigned int dly)
{
while(--dly);
}
/*
void tsweep()
{
unsigned char tmp;
unsigned int tmp1;
unsigned int amp=16283;
while(1)
{
if(readkey(&tmp))
{
if(tmp==key5)
{
if(frq0<1000) frq0=1000;
frq0=frq0-100;
ddsSetFTW0((unsigned long)frq0*A1k);
displayint(frq0,5,5);
}
if(tmp==key6)
{
frq0=frq0+100;
ddsSetFTW0((unsigned long)frq0*A1k);
displayint(frq0,5,5);
}
if(tmp==key1)
{
if(frq0<1000) frq0=1000;
frq0=frq0-5;
ddsSetFTW0((unsigned long)frq0*A1k);
displayint(frq0,5,5);
}
if(tmp==key2)
{
frq0=frq0+5;
ddsSetFTW0((unsigned long)frq0*A1k);
displayint(frq0,5,5);
}
if(tmp==key9)
{
if(amp<100) amp=100;
amp=amp-100;
ddsSetASF(amp);
displayint(amp,6,5);
}
if(tmp==key10)
{
if(amp>16283) amp=16283;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -