⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 鱼探仪.c

📁 温度采集显示与PID控制
💻 C
📖 第 1 页 / 共 2 页
字号:
#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 + -