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

📄 process.c

📁 电源采样控制
💻 C
📖 第 1 页 / 共 2 页
字号:

/****************************************
  说明:公共执行过程


****************************************/
#include "at89x52.h"
#include "process.h"
#include <stdlib.h>
//
extern void c51_initialize();
extern unsigned char strComp(unsigned char* s,unsigned char* p);
unsigned char j_573,av_573,g_573;

//
void BusWrite(unsigned char value);
void Relay(unsigned char m);
void LowPower_down(bit pc_c51);
//

extern void delay(unsigned int value);
//
extern void timer0_initialize();
extern ShowOff(unsigned char index,unsigned char num);
extern void CommBand(unsigned char band);   //
extern unsigned char idata send[32];
extern unsigned char  led[5][4];
extern void  DisplayDrv(unsigned index,unsigned num);
extern unsigned char zhuan(char chr);
//key
extern unsigned char KeyDown();
extern unsigned char KeyUp();
extern unsigned char KeyPoint();
//
 bit bdata sac;
 bit bdata bij;
 bit bdata sdc;
 bit bdata jdc;
 bit bdata jac;
 bit bdata down;
 bit bdata up;
 bit bdata fpow;
 bit bdata pow;
 bit bdata s220;
 bit bdata on;
 bit bdata j40a;
 bit bdata vcr;
 bit bdata zt;
 bit bdata dvd;
unsigned char m=2;

/****************************************
                系统总电源
 ****************************************/
void system_pow(bit pc_c51)
{
                   
               
}
/*******************************************
              学生电源开关
********************************************/

void student_pow(bit pc_c51)
{
 //交流灯开或关
 j_573=j_573^0x20;
 P0=j_573;
 J_ON;
 J_OFF;
 //交流补偿开或关
 av_573=av_573^V_11;
 P0=av_573;
 AV_ON;
 AV_OFF;
 if(!pc_c51)
  {
     send[20]=128;
  }

}
/************************************
              学生电源开关    //学生稳压
*************************************/
void student_220v(bit pc_c51)
{
     //直流灯开或关
     j_573=j_573^0x10;
     P0=j_573;
     J_ON;
     J_OFF;
     if(sac)
     {
     //交流断开
     sac=~sac;
     g_573=g_573^V_13;
     P0=g_573;
     G_ON;
     G_OFF;
     //交流灯关
     j_573=j_573^0x08;
     P0=j_573;
     J_ON;
     J_OFF;
     }
     //直流开
     g_573=g_573^V_12;
     P0=g_573;
     G_ON;
     G_OFF;
     //交流开
     delay(200);
     g_573=g_573^V_13;
     P0=g_573;
     G_ON;
     G_OFF;
     //
     sdc=~sdc;
     if(!pc_c51)
     {
     send[20]=132;
     }

}

/***************************************
             教师直流电源开关
 ***************************************/

void teacher_dc(bit pc_c51)
{

 //总电源没开
 if (!pow)
 {
  return;
 }
 //此时系统处于教师交流状态
 if(jac)
 {
  jac=0;
  BusWrite(J_TAC);
 }
 //此时系统处于教师40A电流状态
 if(j40a)
 {
  j40a=0;
  BusWrite(J_A40);
 }
 //执行教师直流开关的闭合
 jdc=~jdc;
 BusWrite(J_TDC);
 //当键盘动作时向电脑发数据
 if(!pc_c51)
 {
  send[20]=130;
 }

}



/*******************************************
               教师交流电源开关
********************************************/

void teacher_ac(bit pc_c51)
{

  //总电源没开
  if (!pow)
  {
   return;
  }
  //此时系统处于教师直流状态
  if(jdc)
  {
   BusWrite(J_TDC);
   jdc=0;
  }
  //此时系统处于教师40A电流状态
  if(j40a)
  {
   j40a=0;
   BusWrite(J_A40);
  }
  //执行教师交流开关的闭合
  jac=~jac;
  BusWrite(J_TAC);
  if(!pc_c51)
  {
   send[20]=129;
  }
}

/*******************************************
               教师40A电流开关
********************************************/

void teacher_40a(bit pc_c51)
{

 //总电源没开
 if (!pow)
 {
  return;
 }
 //此时系统处于教师直流状态
 if(jdc)
 {
  BusWrite(J_TDC);
  jdc=0;
 }
 //此时系统处于教师交流状态
 if(jac)
 {
  jac=0;
  BusWrite(J_TAC);
 }
 //闭合教师40A电流
 BusWrite(J_A40);
 if(!j40a)
 {
  EA=0;
  //调压器跳到最低
 // BusWrite(J_DOWN);
  delay(1000);
 // BusWrite(J_DOWN);
  EA=1;
 }
 j40a=~j40a;
 //当键盘动作时向电脑发数据
 if(!pc_c51)
 {
  send[20]=134;
 }

}


/*******************************************
          风机电源开关,此物理电源无有
********************************************/
void flow_pow(bit pc_c51)
{

  //总电源没开
  if (!pow)
  {
    return;
  }
  //执行风机电源的闭合
  fpow=~fpow;
  BusWrite(J_FJ);
  //当键盘动作时向电脑发数据
  if(!pc_c51)
  {
   send[20]=133;
  }
}


/*******************************************
          低压调节升
********************************************/

void LowPower_up(bit pc_c51)
{
  unsigned int i,j;
  unsigned char KV;
  //总电源没开
  if (!pow) return;
  EA=0;
  //关断所有继电器
  j_573=j_573&0xfc;
  P0=j_573;
  J_ON;
  J_OFF;
  av_573=av_573&0x8F;
  P0=av_573;
  AV_ON;
  AV_OFF;
  g_573=g_573&0x01;
  P0=g_573;
  G_ON;
  G_OFF;
  //
  led[0][0]=0xbf;
  led[0][1]=0xbf;
  led[0][2]=0xbf;
  led[0][2]=0xbf;
  DisplayDrv(1,3);
  //交流低压缓冲区清零
  for(i=0;i<4;i++)
  {
     led[1][i]=0xc0;
  }
  if(m>=8)
  {
    unsigned n;
    n=m;
    n=n/10;
    led[1][0]=zhuan(m%10);
    led[1][1]=zhuan(n);
  }
  else
  {
    led[1][0]=zhuan(m);
  }
  //响应一次按键操作,显示指示
  // led[1][0]=zhuan(m);
  DisplayDrv(2,3);

 L1: for(i=0;i<2;i++)
     {
        for(j=0;j<20000;j++)
        {
           if(KeyDown()==1)
           {
             KV=KeyPoint();//得到健值
             while(0==KeyUp());
             if(KV!=0xB7)
             {
               if(KV==0x77)
               {
                  LowPower_down(0);
                  return;
               }
               continue;
             }
             if(m<30)
             {
               if(m>=8)
               {
                  unsigned n;
                  m+=2;
                  n=m;
                  n=n/10;
                  led[1][0]=zhuan(m%10);
                  led[1][1]=zhuan(n);
                }
                else
                {
                   m+=2;
                   led[1][0]=zhuan(m);
                 }
                 DisplayDrv(2,3);
                     //
                 goto L1;
              }
          }
        }

     }
     Relay(m);
     delay(200);
     g_573=g_573^V_13;
     P0=g_573;
     G_ON;
     G_OFF;

  EA=1;

  //当键盘动作时向电脑发数据
  if(!pc_c51)
  {
   send[20]=140;
  }
}
/*****************************
        低压调节降
*******************************/

void LowPower_down(bit pc_c51)
{
  unsigned int i,j;
  unsigned char KV,n;
  //总电源没开
  if (!pow) return;
  if(m<=2) return ;
  EA=0;
  //关断所有继电器
  j_573=j_573&0xfc;
  P0=j_573;
  J_ON;
  J_OFF;
  av_573=av_573&0x8F;
  P0=av_573;
  AV_ON;
  AV_OFF;
  g_573=g_573&0x01;
  P0=g_573;
  G_ON;
  G_OFF;
  //
  led[0][0]=0xbf;
  led[0][1]=0xbf;
  led[0][2]=0xbf;
  led[0][2]=0xbf;
  DisplayDrv(1,3);
  //交流低压缓冲区清零
  for(i=0;i<4;i++)
  {
     led[1][i]=0xc0;
  }
  n=m;
  n=n/10;
  led[1][0]=zhuan(m%10);
  led[1][1]=zhuan(n);
  //响应一次按键操作,显示指示
  DisplayDrv(2,3);

 L1: for(i=0;i<2;i++)
     {
        for(j=0;j<20000;j++)
        {
           if(KeyDown()==1)
           {
             KV=KeyPoint();//得到健值
             while(0==KeyUp());
             if(KV!=0x77)
             {
               if(KV==0xB7)
               {
                  LowPower_up(0);
                  return;
               }
               continue;
             }
             if(m>2)
             {
               m-=2;
               n=m;
               n=n/10;
               led[1][0]=zhuan(m%10);
               led[1][1]=zhuan(n);
               DisplayDrv(2,3);
               goto L1;
              }

           }

⌨️ 快捷键说明

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