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

📄 ex2202.c

📁 文件包含电路图和程序,主处理器为PIC18F452,此电路和程序已经在实际应用中使用。
💻 C
字号:
#include	"p18f452.h"
#include    "standard.h"
//#include    "port_init.c"

void port_init(void);
void adinit(void);
unsigned int adc_data(void);

char start_sw (void);
char sen_c,bt;
void  adinit(void)
{
	ADCON0=0x41;		
	ADCON1=0Xc0;		
	PIR1bits.ADIF=0;		
	PORTAbits.RA0=1;
	PORTAbits.RA1=1;
   INTCONbits.GIE=1;
   INTCONbits.PEIE=1;
}

unsigned int adc_data(void)
{
    unsigned int data_a;
    ADCON0bits.GO=1; 
    while(PIR1bits.ADIF==0);
    PIR1bits.ADIF=0;
    data_a=ADRESH*0X0100;
    data_a=data_a+ADRESL;
    return(data_a);
}

void  delay(int count)
{
   int cc,tt;
   for(cc=0;cc<=count;cc++)
      { for(tt=0;tt<=400;tt++);}//100
}

 void start (void)
 {
	char t;
	for(t=0;t<=4;t++)
	{
	LED_R =1;
	LED_Y =1;
	LED_G =1;

    delay(10);
	LED_R =0;
	LED_Y =0;
	LED_G =0;
	
    delay(10);
    }
 } 

unsigned int AD_CHECK(int hl)
{
   unsigned	int vdata=0,ddata=0;
   char coun=0;
   if(hl==1)
   {
      ADchannels=P5V_CH;
      adinit();
      for(coun=0;coun<3;coun++)
        {
            vdata= adc_data();
            ddata=ddata+vdata;
            delay(1);
        }
       ddata=ddata/3;
//      LED_R=0;
       return(ddata);
    }
   if(hl==2)
   {
      ADCON0=0X49;
      adinit();
      for(coun=0;coun<3;coun++)
        {
            vdata=adc_data();
            ddata=ddata+vdata;
            delay(1);
        }
       ddata=ddata/3;
       return(ddata);
    }

}

unsigned int TR_CHECK (char hs)
{
   if(hs==1)
   {
      if(TR1_CH==1)//&(TR2_CH==0))
      return(1);
      return(0);
   }
   if(hs==2)
   {
      if((TR1_CH==1)&(TR2_CH==1))
      return(1);
      return(0);
   }
   if(hs==3)
   {
      if(TR2_CH==1)//(TR1_CH==0)&)
      return(1);
      return(0);
   }
}

unsigned int RL_CHECK (int ss)
{
  if(ss==0)
  {
   if(FM_L==1)
   return(1);
   return(0);
  }
  if(ss==1)
  {
   if(FM_R==1)
   return(1);
   return(0);
   }
}
int func_c (void)
{
    unsigned int ad;
    C8_T=on;
    TEMP=off;
    LP_O=1; 
    delay(100);
    SW50=on;

    SW51=on;
    SW52=on;
    delay(100);
    POWER=on;
    start_sw();
    delay(50);
    SW50=off;  //
    SW54=on;
    SW51=off;
    SW52=off;
        delay(1);
    SW54=on;
    delay(150);
    ad=TR_CHECK(1);
    if(ad==0)
     {
        PORTC=0X00;
        return(0);
     }
    delay(100);
    start_sw();
    SW51=on;        //加湿暖房
    delay(100);
    SW51=off;
    delay(150);
    ad=TR_CHECK(2);
    if(ad==0)
     {
        PORTC=0X00;
        return(0);
     }
    ad=RL_CHECK(0);
    if(ad==0)
     {
        PORTC=0X00;
        return(0);
     }
    start_sw();
    SW52=on;   //加湿暖房 弱
    delay(100);
    SW52=off;
    delay(100);
    ad=TR_CHECK(3);
    if(ad==0)
     {
        PORTC=0X00;
        return(0);
     }
    ad=RL_CHECK(1);
    if(ad==0)
     {
        PORTC=0X00;
        return(0);
     }

   start_sw();
   delay(10);
EX1=0;   //倒转开关
   delay(50);
EX1=1;
   delay(1);
//   start_sw();

   SW53=on;       //计时

   delay(20);

   SW53=off;
   delay(200);


   start_sw(); 
   SW53=on;
   delay(400);  //   >4s
   SW53=off;
   fEW450=1;

   //start_sw();   //  给水检查 < ew-450检查
   fEW450=0;
   delay(1000);
//                                                            //
/*
   start_sw();   //  给水检测 满水解除  < ew-450检查
   delay(100);
   C8_T=on;

   start_sw();   //   湿度异常设定
   delay(100);
   C8_T=off;

   start_sw();   //   湿度异常解除
   delay(100);

   start_sw();   
   LP_O=1;       //   照度L检查
   delay(50);
//   ad=AD_CHECK(3);
//   if((ad<0x0200)&(ad>0x03ff))
//   {
//        PORTC=0X00;
//        return(0);
//   } 
   delay(50);
    */                                                          ///
   start_sw();
   LP_O=0;
   delay(50);

   delay(50);
   TEMP=on;  //热控管断线
 
   //start_sw();
    LED_R=1;
    LED_G=1;
    LED_Y=1;
    ad=AD_CHECK(1);  //5V 检查
   if((ad<0x01eb)|(ad>0x0215))
   {
        PORTC=0X00;
        return(0);
   }
   ad=AD_CHECK(2);   //24V 检查  
   if((ad<0x02ef)|(ad>0x0378))
   {
 
        PORTC=0X00;
        return(0);
   } 
   start_sw();
   POWER=off;
   SW54=off;
   delay(400);
   ad=AD_CHECK(1);   //5V 检查
   if(ad>0x00cc)
   {

        PORTC=0X00;
        return(0);
   }

   ad=AD_CHECK(2);   //24V 检查  
   if(ad>0x0200)
   {
       LED_Y=0;
       LED_G=0;
       LED_R=0;
        PORTC=0X00;
        return(0);
   }  
  LP_O=1;
  C8_T=on;
  return(1); 
}

char start_sw (void)
{
	char bl,bj;
	bj=1;
	while(bj==1)
	{
		LED_Y=bl;
		bl=~bl;
        if(LIMIT==1)
        return(0);
		if(START==0)
		{
			delay(10);
			if(START==0)
				bj=0;
		}

		delay(15);
	}
	while(START==0);
    LED_Y=on;
	return(1);
}

void main(void)
{

    int ss;
    char st;
    port_init();
    adinit();
    start();
//	ADCON0=0x41;   //c1
    adc_data();
    BUZZ=on;
 //  INTCONbits.GIE=1;
 //  INTCONbits.PEIE=1;
    while(1)
	{
       while(LIMIT!=0)
       delay(10);
       delay(100);
       st=start_sw();
       if(st==1)
      {
       LED_Y=on;
       LED_G=off;
       LED_R=off;
       ss=func_c();
       if(ss==1)
		{
			LED_G=off;
			LED_R=on;
			LED_Y=on;
		}
		if(ss==0)
		{   
			POWER=off;
			LED_G=on;
			LED_R=off;
			LED_Y=on;
			BUZZ=off;
			delay(100);
			BUZZ=on;
		}
       }
		while(LIMIT==0)
		delay(10);
	}				
					
}

⌨️ 快捷键说明

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