#include <STC12C5A.H>
#include "lcd.h"
#include "AD9851.h"
#define key1 P20
#define key2 P21
#define key3 P22
unsigned char code dis[]={"Voltage="};
unsigned char code danwei1[]={"mV "};
unsigned char code dis1[]={"FQ="};
unsigned char code danwei2[]={"MHz "};
unsigned char code dua[10]={0+0x30,1+0x30,2+0x30,3+0x30,4+0x30,5+0x30,6+0x30,7+0x30,8+0x30,9+0x30};
long int r=1;
double fq=1000000;
unsigned int KeyValue,Voltage,rec=0;
void init1()
{
SCON=0X50; //设置为工作方式1
TMOD=0X20; //设置计数器工作方式2
PCON=0X80; //波特率加倍
TH1=0Xf3; //计数器初始值设置,注意波特率是4800的
TL1=0Xf3;
ES=1; //打开接收中断
EA=1; //打开总中断
TR1=1; //打开计数器
}
void send(unsigned int da)
{
SBUF=da;
while(!TI);
TI=0;
}
void getkey()
{
uint t,i;
if(key1==0)
{
delayms(60000);
if(key1==0)
{
r=r+1;
fq=r*1000000;
}
}
if(key2==0)
{
delayms(60000);
if(key2==0)
{
r=r-1;
fq=r*1000000;
}
}
if(key3==0)
{
delayms(60000);
if(key3==0)
{
for(t=0;t<10;t++)
{
for(i=0;i<40;i++)
{
ad9851_wr_parrel(0x01,fq);
delayms(10000);
if(fq==41000000)
{
fq=1000000;
}
fq=fq+500000;
}
}
}
}
if(r==50) r=1;
}
//***************************************************//
// 测试程序1000Hz //
//---------------------------------------------------//
void main()
{
uchar i;
P2M1=0X00;
P2M0=0X00;
LcdInit();
init1();
ad9851_reset();
ad9851_wr_parrel(0x01,1000000);
LcdWriteCom(0x00+0x80);
for(i=0;i<8;i++)
{
LcdWriteData(dis[i]);
}
LcdWriteCom(0x08+0x80);
LcdWriteData(dua[rec%10000/1000]);
LcdWriteCom(0x09+0x80);
LcdWriteData(dua[rec%1000/100]);
LcdWriteCom(0x0a+0x80);
LcdWriteData(dua[rec%100/10]);
LcdWriteCom(0x0b+0x80);
LcdWriteData(dua[rec%10]);
LcdWriteCom(0x0c+0x80);
for(i=0;i<3;i++)
{
LcdWriteData(danwei1[i]);
}
LcdWriteCom(0x40+0x80);
for(i=0;i<3;i++)
{
LcdWriteData(dis1[i]);
}
LcdWriteCom(0x43+0x80);
LcdWriteData(dua[r%100/10]);
LcdWriteCom(0x44+0x80);
LcdWriteData(dua[r%10]);
LcdWriteCom(0x45+0x80);
for(i=0;i<3;i++)
{
LcdWriteData(danwei2[i]);
}
//---------------------------------------------------//
//并行写1000Hz程序
//0X01为开六备频
//ad9851_wr_parrel(0x00,1000);
//0X00为不开六备频
//---------------------------------------------------//
while(1)
{
ad9851_wr_parrel(0x01,fq);
getkey();
LcdWriteCom(0x00+0x80);
for(i=0;i<8;i++)
{
LcdWriteData(dis[i]);
}
LcdWriteCom(0x08+0x80);
LcdWriteData(dua[rec%10000/1000]);
LcdWriteCom(0x09+0x80);
LcdWriteData(dua[rec%1000/100]);
LcdWriteCom(0x0a+0x80);
LcdWriteData(dua[rec%100/10]);
LcdWriteCom(0x0b+0x80);
LcdWriteData(dua[rec%10]);
LcdWriteCom(0x0c+0x80);
for(i=0;i<3;i++)
{
LcdWriteData(danwei1[i]);
}
LcdWriteCom(0x40+0x80);
for(i=0;i<3;i++)
{
LcdWriteData(dis1[i]);
}
LcdWriteCom(0x43+0x80);
LcdWriteData(dua[r%100/10]);
LcdWriteCom(0x44+0x80);
LcdWriteData(dua[r%10]);
LcdWriteCom(0x45+0x80);
for(i=0;i<3;i++)
{
LcdWriteData(danwei2[i]);
}
send(r*2);
}
}
void ti() interrupt 4
{
EA=0;
if(RI)
{
RI=0;
rec=SBUF;
}
EA=1;
}