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

📄 初始化.c

📁 温度采集显示与PID控制
💻 C
字号:
#include"w77e58.h"
#include"intrins.h"

#define uchar unsigned char
#define uint unsigned int

#define pl 0x02
#define gl 0x04
#define kg 0x06
#define sd 0x08
#define zb 0x0a
#define stch 0x0c
#define zy 0x0e
#define ac 0x10
#define bc 0x12
#define xdart 0x0000
#define ddb 0xffff
#define gs 0x14//干涉
#define px 0x16//频率修正
#define ko 0x18//扩大

sbit l1=P1^4;//发射频率锁定
sbit l2=P1^3;//接收锁定
sbit l3=P1^2;//增益stc锁定
sbit fstd=P1^5;//发射探头检测
sbit plsx=P1^6; //锁相环检测
//************************************//
//初始化函数
//*************************************//
void cusiha();
void plsucu();
void tongxin();
void datey(uint p);

 extern void tongxin_txdr();

extern int Read_Temperature(void);

extern bit i2c_write(uchar address,uint fb);

extern uint i2c_read(uchar address);
//extern bit i2c_write(uchar address,char fb);
extern int data wd;//温度缓存
extern uchar data sanwdbz;//上传有无温度传感器0=无,0x01=有    
extern uchar data e2prom;//24c02 0=无,0x01=有   
extern uchar data fasepl;//发射频率缓存
extern uchar data fasegl;//发射功率缓存
extern uchar data fasekg;//发射开关00-01
extern uchar data caijisendu;//采集深度缓存
extern uchar data zaibao;//消除杂波
extern uchar data stc;//stc等级1-8级
extern uchar data zenyi;//增益1-9级
extern uchar data zenyia;
extern uchar data accd;
extern uchar data bccd;
extern uchar data fstde;//发射探头 0=无,0x01=有
extern uchar data ram;//w24257  0=无,0x01=有   
extern uchar data plsxe;// 锁相环    0=无,0x01=有   
extern bit wdcgaq;//温度传感器正确标志0=正?
//extern bit i2c_write(uchar address,uint fb);
//extern void tongxin_txd();
extern uchar data kod;
extern uchar data ganse;
extern int data plxz;
//uint data ram_error;
extern void clp_dog();
extern void tongxin_txd(bit ewu);
void cusiha()//第一次读取各参数初始化
 {
  unsigned char xdata * dda;
  unsigned char dgh;
  //uint df;
uchar i;
  
   l1=0;
   l2=0;
   l3=0;
   datey(10);
   P2=200;
   l1=1;datey(10);
   l1=0;
   P2=143;
   l2=1;datey(10);l2=0;
   P2=128;
   l3=1;datey(10);l3=0;
   wd=Read_Temperature();
   if(wdcgaq)
       sanwdbz=0x00;
     else sanwdbz=0x01;
     clp_dog();
     if(i2c_read(0x00)==0x3030)
         {
        
          e2prom=0x01;//24c02 Ok
          fasepl=i2c_read(pl);//,发射频率
          fasegl=i2c_read(gl);//功率
          clp_dog();
          fasekg=i2c_read(kg);//开关
          caijisendu=i2c_read(sd);//深度 
          zaibao=i2c_read(zb);//杂波
          clp_dog();
          stc=i2c_read(stch);//stc
          zenyi=i2c_read(zy);//增益 
          accd=i2c_read(ac);//扫描频率50k
          clp_dog();
          bccd=i2c_read(bc);//200k
          kod=i2c_read(ko);
          ganse=i2c_read(gs);
          plxz=i2c_read(px);
                   }
     else 
          {
          
 
      for(i=0;i<=4;i++)
  	{
      while(i2c_write(0x00,0x3030))
      	{
      	tongxin_txd(0);
          break;
      	}
      	}
           e2prom=0x00;
           fasepl=0x00;//,发射频率
           fasegl=0x00;//功率
           fasekg=0x00;//开关
           caijisendu=0x00;//深度 
           zaibao=0x00;//杂波
           stc=0x00;//stc
           zenyi=0x00;//增益 
           accd=0x00;//扫描频率50k
           bccd=0x00;//200k
           kod=0x00;
           ganse=0x00;
           plxz=0x00;
           }
     if(fstd)//发射探头检测
         fstde=0x00;
     else fstde=0x01;
    if(plsx)//锁相环检测
     plsxe=0x01;
    else plsxe=0x00;
    
     for(dda=xdart;dda<ddb;dda++)//内存w24257检测
        {
          *dda=0x80;//先写入0x80
          clp_dog();
         }
         clp_dog(); 
     for(dda=xdart;dda<ddb;dda++)
               {
               clp_dog();
                dgh=*dda;
                if(dgh!=0x80)
                   {
                //    ram_error=df;
                  ram=0x00;
                    break;
                    }
             ram=0x01;
              }
tongxin_txdr();
  }

 
void tongxin()//通信协议初始化
 {
    
     T2CON=0x00;
     TMOD=0x22;
     SCON=0x40;
     PCON=0x80;
     TH1=0xfb;
     TL1=0xfb;
     TH0=0xae;
     TL0=0xae;
     CKCON=0xd2;
     PMR=0x60;
     PT0=1;
     EA=1;    
     TR1=1;
      
}  

void datey(uint p)
{
   uint i;
for(i=0;i<=p;i++)
    _nop_();
}

void plsucu()//频率和增益输出,stc
 {
   
    int jsple;//接收频率缓存

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -