📄 鱼探仪.c
字号:
#include<w77e58.h>
#include<intrins.h>
#include"main.h"
//#include <stdio.h>
void yasue();//数据压缩成500个数
void zdpe(); //判断最大值
void xlpe(); //判断最大斜率
uint haidewz();//海底值确定d
void yasuf();//数据压缩成250个数
sbit csd=P3^2;
void qdwer();//启动发射采集
void zdpbsa();
//*****************//
//深度
void sdset1();
void sdset2();
void sdset3();
void sdset4();
void sdset5();
void sdset6();
void sdset7();
void sdset8();
void sdset9();
void sdset10();
void sdset11();
void sdset12();
void sdset13();
void sdset14();
void sdset15();
void sdset16();
void sdset17();
void sdset18();
void sdset19();
void sdset20();
void sdset21();
void sdset22();
//********************//
void pbhd(uint f);
//*********************//
//功率
void glset1();
void glset2();
void glset3();
void glset4();
void glset5();
void glset6();
void glset7();
void glset8();
void glset9();
void glseta();
//*********************//
//main函数
//**************************************//
void plset();
void glset();
void kgset();
void zbset();
void sdset();
void zyset();
void stcset();
void ganset();
void jspl();
void kodai();
uint scsj();//判别设置参数
void wdcj();//温度采集
void sujucle();//数据处理
void sujuclf();
void yasud();
void sujuclg();
void yasus();//数据压缩成500个数
void yasuw();//数据压缩成250个数
uchar wdfu=0;
void plzusf();
void scsjq();//判别微调点参数
extern bit i2c_write(uchar address,uint fb);
//*********************************//
//ds1820
extern int Read_Temperature(void);
char xdata avb[10000];
extern uchar tongxin_rxd();//接收下传命令
extern void tongxin_txd(bit ewu);
extern void tongxin();
extern void cusiha();
extern void plsucu();
extern void plsm();
extern void stoptime2();
extern void timer2(uint r,uchar tiner);//发射功率载入
extern void qdtime2();//启动time2
static uint ak,al,az,ax,av,as,ad,ar,ay;
//extern uint i2c_read(uchar address);
void play_dog();
void clp_dog();
void off_dog();
uchar data cmb;//A/D采集点数几点压宿成一点
main()
{long i;
bit ey;
for(i=0;i<=10000;i++)
avb[i]=0x0a;
tongxin();//通信口设定
play_dog();
do
{
clp_dog();
cusiha();//读取参数,检测接口保证硬件ok
if((ram==0x00)|(e2prom==0x00)|(plsxe==0x00))
{
while(tongxin_rxd()>=0x00)
{
tongxin_txd(0);
ey=1;
clp_dog();
}
}
else ey=0;
}
while(ey);
zenyia=zenyi;
plsucu();//增益。频率。stc.设定
while(1)
{
switch(tongxin_rxd())
{
case 0x00: tongxin_txd(0);break; //空操作
case 0x01: plset(); tongxin_txd(0);break;//频率设置
case 0x02: glset(); tongxin_txd(0);break;//功率设置
case 0x03: kgset(); tongxin_txd(0);break;//开关
case 0x04: zbset(); tongxin_txd(0);break;//杂波设置
case 0x05: sdset(); tongxin_txd(0);break;//深度设置
case 0x06: zyset(); tongxin_txd(0);break;//增益设置
case 0x07: stcset();tongxin_txd(0);break; //stc设置
case 0x08: plsm(); tongxin_txd(0);break;//自动频率扫描确定探头频率
case 0x09: ganset();tongxin_txd(0);break;//干涉消除
case 0x0a: jspl(); tongxin_txd(0);break;//频率修正
case 0x0b: kodai(); tongxin_txd(0);break;//扩大倍数
case 0x0c: wdfu++;
if(wdfu>=60)
{
wdfu=0;
wdcj();
}
sukh=suk;
caijisendud=caijisendu;
plzusf();//频率和增益输出,stc,功率设定
pbhd(scsj());//判别设置参数,进入实际发射采集无海底扩大发射采集
haidisendu=0;
scsjq();//判别微调点参数
qdwer();//启动发射采集
sujucle();///海底数据处理
sujuclf();//无海底扩大数据处理压缩
tongxin_txd(0);//上传数据
break;
case 0x0d: wdfu++;
if(wdfu>=60)
{
wdfu=0;
wdcj();
}
sukh=suk;
caijisendud=caijisendu;
plzusf();//频率和增益输出,stc,功率设定
if(haidisendu<(scsj()*100))
{
haidisendu=0;
pbhd(scsj());//判别设置参数,进入实际发射采集无海底扩大发射采集
qdwer();//启动发射采集
sujucle();///海底数据处理
}
else { zdpbsa();//海底自动追踪
qdwer();//启动发射采集
sujucle();///海底数据处理
}
scsjq();//判别挡位微调点参数
sujuclg();//有海底扩大数据处理压缩
tongxin_txd(1);//上传数据
sujuclf();//无海底扩大数据处理压缩
tongxin_txd(0);//上传数据
break;
default: wdfu++;
if(wdfu>=60)
{
wdfu=0;
wdcj();
}
plzusf();//频率和增益输出,stc,功率设定
zdpbsa();//自动
caijisendud=caijisendue;
qdwer();//启动发射采集
sujucle();///海底数据处理
if(suk==0x0000)
{
sukh=0;
suk=0;
cm=cmb-1;
sujuclf();//无海底扩大数据处理压缩
tongxin_txd(0);//上传数据
}
else{
sukh=0;
suk=0;
sujuclg();//有海底扩大数据处理压缩
tongxin_txd(1);//上传数据
cm=cmb-1;
sujuclf();//无海底扩大数据处理压缩
tongxin_txd(0);//上传数据
}
}
}
}
void play_dog()
{
TA=0xaa;
TA=0x55;
WDCON=0x02;
}
void clp_dog()
{
TA=0xaa;
TA=0x55;
RWT=1;
}
void off_dog()
{
TA=0xaa;
TA=0x55;
WDCON=0x00;
}
void wdcj()//温度采集
{
wd=Read_Temperature();
if(wdcgaq)
sanwdbz=0x00;
else sanwdbz=0x01;
}
void plset()
{
uchar i;
fasepl=suk;
if(fasepl<40)
fasepl=40;
if(fasepl>220)
fasepl=220;
for(i=0;i<=4;i++)
{
while(i2c_write(pl,fasepl))
return;
}
}
void glset()
{
uchar i;
fasegl=suk;
for(i=0;i<=4;i++)
{
while(i2c_write(gl,fasegl))
return;
}
}
void kgset()
{
uchar i;
fasekg=suk;
for(i=0;i<=4;i++)
{
while(i2c_write(kg,fasekg))
return;
}
}
void zbset()
{
uchar i;
zaibao=suk;
for(i=0;i<=4;i++)
{
while(i2c_write(zb,zaibao))
return;
}
}
void sdset()
{
uchar i;
caijisendu=suk;
for(i=0;i<=4;i++)
{
while(i2c_write(sd,caijisendu))
return;
}
}
void zyset()
{
uchar i;
zenyi=suk;
for(i=0;i<=4;i++)
{
while(i2c_write(zy,zenyi))
return;
}
}
void stcset()
{
uchar i;
stc=suk;
for(i=0;i<=4;i++)
{
while(i2c_write(stch,stc))
return;
}
}
void ganset()
{
uchar i;
ganse=suk;
for(i=0;i<=4;i++)
{
while(i2c_write(gs,ganse))
return;
}
}
void jspl()
{
uchar i;
plxz=suk;
if(plxz>10)
plxz=10;
if(plxz<-5)
plxz=-5;
for(i=0;i<=4;i++)
{
while(i2c_write(px,plxz))
return;
}
}
void kodai()
{
uchar i;
kod=suk;
for(i=0;i<=4;i++)
{
while(i2c_write(ko,kod))
return;
}
}
void plzusf()
{
if(zenyi<0x08)
zenyia=zenyi;
plsucu();//频率和增益输出,stc
clp_dog();
switch(fasegl)//功率设定
{
case 0x00: glset1();break;
case 0x01: glset2();break;
case 0x02: glset3();break;
case 0x03: glset4();break;
case 0x04: glset5();break;
case 0x05: glset6();break;
case 0x06: glset7();break;
case 0x07: glset8();break;
case 0x08: glset9();break;
default: glseta();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -