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

📄 df5.c

📁 这是一个产品的开发项目。用于锅炉火
💻 C
字号:
 #include <At89x55.h>
//#include <reg52.h>
#include <stdio.h>
#include <absacc.h>
#include <intrins.h>

#define ulong	unsigned long
#define uint	unsigned int
#define uchar	unsigned char

#define VOD 2000
#define ZVD 1  /*自检交流电压值下限*/
#define SETD_PI (uint xdata *)0x1e00  //led  enable
#define JDQ XBYTE[0xa000]  //377 address
#define WC_8255 XBYTE[0xef7f]
#define WD_8255 XBYTE[0xef7c]

extern void dog(void);
extern void lcd_int(void);
extern void wrfx(void);	    //lcd
extern void lcd_zl(void);   //display
extern void lcd_zs(void);   //load int

uchar nnt;
uchar zzm;	    //q 
uchar guagzu;

uchar bdata statel;
sbit  s0=statel^0;             /*频率 1:ok*/
sbit  s1=statel^1;             /*波动 1:ok*/
sbit  s2=statel^2;             /*电压 1:ok*/
sbit  s3=statel^3;             /*燃烧 1: 着火;0:灭火*/
sbit  s4=statel^4;             /*送煤 1:开启;0:关闭*/
sbit  s5=statel^5;             /*观察 1:偷看;0:不偷看*/
sbit  s6=statel^6;             /*强度 1:ok*/
sbit  s7=statel^7;             /*状态 1: 正常 0:不正常*/


sbit  P3_2=P3^2;	//Input 送煤
sbit  P3_5=P3^5;	//

bit   b_fsb;
bit   b_xj;
bit   b_timer1;


uchar data timer1;
extern uchar data zj;
uchar time_zh,time_xh;
uchar jsq1,jsq2;

uchar plus;
uchar da;
uint fr_up,fr_do,fr_sa;
uint fr_te,fr_qz;
uint ss_up,ss_do,ss_sa;
uint ss_te,ss_qz;
uint ss5;
uchar wa_up,wa_do,wa_sa;
uint vo_up,vo_do,vo_sa;
uint zv_sa;
uchar dss;
uint xdata ss[10];

/////////////////////////////////////////////

int_temer1() interrupt 3 using 1
 {
  ET1=0;
  TR1=0;
  timer1++;
  if(timer1>=47)
   {
    TR0=0;
    fr_te=(TH0*256)+TL0;
    fr_te=fr_te*2;
    TH0=0;
    TL0=0;
    TR0=1;
    b_timer1=0;
    timer1=0;
   }
  TH1=-(10000/256);
  TL1=-(10000%256);
  TR1=1;
  ET1=1;
 }

delay_y(uint i)
 {
  uint k;
  uchar j;
  for(k=0;k<i;k++)
   {
    dog();
    for(j=0;j<100;j++);
   }
 }


init()
 {
  dog();
  TMOD=0x15;
  T2CON=0x34;
  TH2=0xff;
  TL2=0xdc;
  RCAP2H=0xff;
  RCAP2L=0xdc;
  TR2=1;
  SCON=0x50;
  TH1=-(10000/256);
  TL1=-(10000%256);
  TR1=1;
  ET1=1;
  EA=1;
  P3_5=0;
  statel=0xcf;
  b_fsb=1;
  JDQ=(JDQ&0xfc)|0x01;
  dss=0;
  jsq1=0;
  jsq2=0;
  da=0;
 }

uchar wa(uint *array,uchar n)
 {
  uchar num;
  uint max,min;
  uint *p,*array_end;
  array_end=array+n;
  max=min=*array;
  for (p=array+1;p<array_end;p++)
   {
    if (*p>max) max=*p;
    else if (*p<min) min=*p;
   }
  if(min>0) num=max/min;
  return (num);
 }

 tz()
  {
   long tt1,tt2;
   uint i;
   dog();
   i=ss_te-500;
   if(i>ss_te) ss_sa=1;
   else  ss_sa=i;
   tt1=ss_qz;
   tt1*=60;
   tt1/=100;
   tt2=ss_sa;
   tt2*=40;
   tt2/=100;
   tt1+=tt2;
   ss_sa=tt1;
   ss_qz=ss_sa;
   ss[dss]=ss_sa;
   dss++;
   if(dss>9) dss=0;
   if(ss_sa<200) wa_sa=0;
   else if(ss_sa<300) wa_sa=1;
   else if(ss_sa<400) wa_sa=2;
   else wa_sa=wa(ss,10);
 /*
   i=ss5-500;
   if(i>ss5) ss5=0;
   else  ss5=i;
   ss5=ss5/2;
   if((ss_sa!=0)&&(ss5!=0))
   wa_sa=ss_sa/ss5;
 */
   tt1=fr_qz;
   tt1*=50;
   tt1/=100;
   tt2=fr_sa;
   tt2*=50;
   tt2/=100;
   tt1+=tt2;
   fr_sa=tt1;
   fr_qz=fr_sa;
  }

 input()
  {
   uchar i;
   uchar d[8];
   uint *pi;
   do
    {
     dog();
     SBUF=0xaa;
     while(TI==0);
     TI=0;
     while(RI==0);
     RI=0;
    }while((SBUF^0xbb)!=0);
     for(i=0;i<8;i++)
      {
       while(RI==0);
       RI=0;
       d[i]=SBUF;
      }
     SBUF=da;
     while(TI==0);
     TI=0;

     pi=(uint *)d;
     ss_te=*pi;
     pi++;
     ss5=*pi;
     pi++;
     zv_sa=*pi;
     pi++;
     vo_sa=*pi;

     fr_sa=fr_te;
     tz();
     if(P3_2==0) s4=0;
     else s4=1;
     if(zj==0x55)
       {
        ss_sa=6000;
        ss5=400;
        vo_sa=6000;
        s4=1;
        fr_sa=100;
       }
   }

uchar zhm()
 {
  long lcc;
  uint av,cc,dd;
  uchar fb,ssb;
  av=(fr_up-fr_do)/2;
  cc=av-fr_do;
  if(cc==0) cc=1;
  if(fr_sa<=fr_do) fb=0;
  else if(fr_sa<fr_up)
   {
    if(fr_sa<av)
     {
      dd=(av-fr_sa)*100/cc;
      fb=100-dd;
     }
    else if(fr_sa==av) fb=100;
    else
     {
      dd=(fr_sa-av)*100/cc;
      fb=dd;
     }
   }
  else fb=0;
  if(ss_sa<=ss_do) ssb=0;
  else if(ss_sa<6000)
   {
    av=6000-ss_do;
    if(av==0) av=1;
    lcc=(ss_sa-ss_do);
	lcc*=100;
    dd=lcc/av;
    ssb=dd;
   }
  else ssb=100;
  cc=fb;
  dd=ssb;
  av=cc*40/100+dd*60/100;
  return av;
 }


comp()
 {
  static uchar nn;
  dog();

  if(s3==1)
   {
    if(ss_sa>ss_do) s6=1;
    else s6=0;
   }
  else
   {
    if(ss_sa>ss_up) s6=1;
    else s6=0;
   }
  if(vo_sa>VOD)
   {
    s2=1;
    nn=0;
   }
  else
   {
    nn++;
    if(nn>3)
     {
      nn--;
      s2=0;
     }
   }
  if((fr_sa>fr_do)&&(fr_sa<fr_up))  s0=1;
  else s0=0;
  //if((wa_sa>=wa_do)&&(wa_sa<wa_up))   s1=1;
  if(wa_sa>=wa_do) s1=1;
  else s1=0;
  if((s0==1)&(s1==1)&(s6==1)) b_fsb=1;
  else  b_fsb=0;
  if(s2==1)
   {
    if(s4==1)
     {
      if(b_fsb==1)
       {
        jsq1++;
        if(jsq1>(time_zh*2))
         {
          jsq1=0;
          s3=1;
          s5=0;
          s7=1;

         }
       }
      else
       {
        jsq2++;
        if(jsq2>(time_xh*4))
         {
          jsq2=0;
          s3=0;
          s5=0;
          s7=1;
          guagzu=5;
         }
       }
     }
    else
     {
      if(b_fsb==1)
       {
        s3=0;
        s5=1;
        s7=1;
        guagzu=10;
       }
      else
       {
        s3=0;
        s5=0;
        s7=1;
        guagzu=5;
       }
     }
   }
  else
   {
    s3=0;
    s5=0;
    s7=0;
    guagzu=0;
   }
  zzm=zhm();
 }

output()
 {
  uchar i;
  if(zj==0x55)
   {
    JDQ=0x01;
    da=31;
   }
  else
   {
    if(s3==1) i=0x01;
    else  i=0x03;
    JDQ=i;
    if(s3==1)
     {
      if(ss_sa<500) da=5;
      else if(ss_sa<1000) da=10;
      else if(ss_sa<3000) da=15;
      else if(ss_sa<5000) da=25;
      else da=31;
     }
    else  da=0;
   }

 }

/*
 diss(long ii)
 {
  uchar *pi;
  uchar *pd;
  uchar i;
  uchar d[3];
  dog();
  pi=d;
  i=ii/100000;
  *pi=i;
  *pi=*pi<<4;
  i=ii/10000%10;
  *pi=*pi+i;
  pi++;
  i=ii/1000%10;
  *pi=i;
  *pi=*pi<<4;
  i=ii/100%10;
  *pi=*pi+i;
  pi++;
  i=ii/10%10;
  *pi=i;
  *pi=*pi<<4;
  i=ii%10;
  *pi=*pi+i;
  pi=&WD_8255;
  pd=&d[2];
  for(i=0;i<3;i++)
   {
    *pi=*pd;
    pi++;
    pd--;
   }
 }
*/

/*
 zc()
  {
   diss(ss_sa);
   delay_y(2000);
   diss(ss_up);
   delay_y(2000);
   diss(fr_sa);
   delay_y(2000);
   diss(wa_sa);
   delay_y(2000);
   diss(statel);
   delay_y(2000);
   diss(vo_sa);
   delay_y(2000);
   diss(da);
   delay_y(2000);
  }
  */

s485()
 {
  delay_y(500);
 }


void main()
 {
  uchar ww;
  lcd_zs();/*读上下限值*/
  init();
  lcd_int();
  wrfx();
  WC_8255=0x80;
  while(1)
     {
      s485();
      input();
      comp();
      output();
	  nnt++;
	  if(nnt>2)
	   {
	    ww=wa_sa;
		wa_sa=zzm;
        lcd_zl();
		wa_sa=ww;
		nnt=0;
	   }
    /* zc(); */
     }
 }

⌨️ 快捷键说明

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