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

📄 t_shuanglong.c

📁 PIC16F 系列制作的空调控制器 全部资料 软件硬件
💻 C
📖 第 1 页 / 共 3 页
字号:
						time_counter_main_fan_motor=0x00;
						main_fan_motor_bit=1;
						error_counter++;
					}
			}
				if(step_main_fan==0x09)
			{
				led[1]&=~main_fan_motor_testing_led_at1;
				led[1]|=main_fan_motor_6_led_at1;
				led[2]|=main_fan_motor_1_led_at2;
				led[2]|=main_fan_motor_2_led_at2;
				led[2]|=main_fan_motor_3_led_at2;
				led[2]|=main_fan_motor_4_led_at2;
				led[1]|=main_fan_motor_5_led_at1;				
				main_fan_motor_bit=1;//finish ed
				time_counter_xinfeng_motor=0x00;
				main_motor_relay=0;
				step_main_fan=0x00;
			}
			refrush_led();


			//--------------------------------------------------------------------
			//common section
			//------------------------------------------
			if((wendu_motor_bit==1)&(mode_motor_bit==1)&(xinfeng_motor_bit==1)&(main_fan_motor_bit==1)&(wendu_senser_bit==1)&(zhengfa_senser_bit==1))
			{
				if(error_counter>0x00)
				{
					led[0]&=~auto_test_pass_led_at0;
					led[0]|= auto_test_test_fail_led_at0 ;	
				}
				else
				{
					led[0]&=~auto_test_test_fail_led_at0 ;
					led[0]|=auto_test_pass_led_at0;
				}
				refrush_led();
				lock_bit=0;//quite out
				step_wendu=0x00;
				step_mode=0x00;
				step_xinfeng=0x00;
				wendu_motor_bit=0;
				mode_motor_bit=0;
				xinfeng_motor_bit=0;
				wendu_motor_testing_bit=0;
				mode_motor_testing_bit=0;
				xinfeng_motor_testing_bit=0;
				main_fan_motor_bit=0;//finish ed
				main_fan_motor_testing_bit=0;
				zhengfa_senser_bit=0;
				wendu_senser_bit=0;
				error_counter=0x00;
				dingshi_qi_bit=1;
			}	
	}
}
//***************************
//key_scan-function
//***************************
void keyscan(void)
{
	key_input();
		if(KEY_VALUE.bits.bit6==0)//100ma 150ma sel
		{
			curent_bit=0;
		}
		else
		{
			curent_bit=1;
		}
	if(KEY_VALUE.bits.bit0==0)//auto_mode_test
	{
		if(KEY_VALUE.bits.bit5==0)//Press_start_test?开始测量按键检测涵数
		{
			auto_test_process(); //Auto_test_function
		}
		led[1]|=main_fan_motor_current_sound_led_at1;	//led for hand or auto
		led[1]&=~main_fan_motor_zhengfa_sense_led_at1;	//clr led for senser
		led[1]&=~main_fan_motor_wendu_sense_led_at1;	//clr led for senser
	}
	else //hand_mode_test
	{
			unsigned data_temp=0x00;
			//-------------------------------------------
			//-----add senser test section
			//-------------------------------------------
			data_temp=ad_sampling(AD9);//温度传感器
			if((data_temp>100)&(data_temp<250))
			{
				led[1]|=main_fan_motor_wendu_sense_led_at1;
			}
			else
			{
				led[1]&=~main_fan_motor_wendu_sense_led_at1;	
			}
			data_temp=ad_sampling(AD10);//蒸发器温度传感器
			if((data_temp>100)&(data_temp<250))
			{
				led[1]|=main_fan_motor_zhengfa_sense_led_at1;
			}
			else
			{
				led[1]&=~main_fan_motor_zhengfa_sense_led_at1;	
			}
			//-----------------------------------------------	
		led[1]&=~main_fan_motor_current_sound_led_at1;
		if(KEY_VALUE.bits.bit1==0)//Press_hand_mode_motor_test?
		{
			static bit start_test=0;
			if(togle_1)
			{
			unsigned data_temp=0x00;
			led[0]=0;led[1]=0;led[2]=0;led[3]=0;
			//-------------------------------------------
			//-----add senser test section
			//-------------------------------------------
			data_temp=ad_sampling(AD9);//温度传感器
			if((data_temp>100)&(data_temp<250))
			{
				led[1]|=main_fan_motor_wendu_sense_led_at1;
			}
			else
			{
				led[1]&=~main_fan_motor_wendu_sense_led_at1;	
			}
			data_temp=ad_sampling(AD10);//蒸发器温度传感器
			if((data_temp>100)&(data_temp<250))
			{
				led[1]|=main_fan_motor_zhengfa_sense_led_at1;
			}
			else
			{
				led[1]&=~main_fan_motor_zhengfa_sense_led_at1;	
			}
			//-----------------------------------------------
				
				led[3]|=MODE_MOTOR_OPEN_LED_AT3;
				led[3]|=mode_motor_testing_led_at3;
				MODE_P=1;	  //启动模式马达 
				NOP();
				MODE_N=0;
				NOP();	
				
			}
			else
			{
			unsigned data_temp=0x00;
			led[0]=0;led[1]=0;led[2]=0;led[3]=0;
			//-------------------------------------------
			//-----add senser test section
			//-------------------------------------------
			data_temp=ad_sampling(AD9);//温度传感器
			if((data_temp>100)&(data_temp<250))
			{
				led[1]|=main_fan_motor_wendu_sense_led_at1;
			}
			else
			{
				led[1]&=~main_fan_motor_wendu_sense_led_at1;	
			}
			data_temp=ad_sampling(AD10);//蒸发器温度传感器
			if((data_temp>100)&(data_temp<250))
			{
				led[1]|=main_fan_motor_zhengfa_sense_led_at1;
			}
			else
			{
				led[1]&=~main_fan_motor_zhengfa_sense_led_at1;	
			}
			//-----------------------------------------------
				
				led[3]|=mode_motor_close_led_at3;//set close light
				led[3]|=mode_motor_testing_led_at3;
				MODE_P=0;	  //启动模式马达 
				NOP();
				MODE_N=1;
				NOP();
			}
			togle_1=!togle_1;			
			refrush_led();
			delay_500mS(2);
			start_test = measure_function(test_mode_motor_channel);
			if(start_test)         //if_success
			{
				led[3]&=~mode_motor_testing_led_at3;//clr testing light
			}
			
			else				   //if fail set led
			{
				led[3]=0;
				led[3]|=mode_motor_test_fail_led_at3;
			}
				MODE_P=0;	 //stop_motor_and_test
				NOP();
				MODE_N=0;
				NOP();	
				refrush_led();//refrush display light		
		}
		if(KEY_VALUE.bits.bit3==0)//Press_hand_mode_wendu_motor_test?
		{
			static bit start_test=0;
			if(togle_1)
			{
			unsigned data_temp=0x00;
			led[0]=0;led[1]=0;led[2]=0;led[3]=0;
			//-------------------------------------------
			//-----add senser test section
			//-------------------------------------------
			data_temp=ad_sampling(AD9);//温度传感器
			if((data_temp>100)&(data_temp<250))
			{
				led[1]|=main_fan_motor_wendu_sense_led_at1;
			}
			else
			{
				led[1]&=~main_fan_motor_wendu_sense_led_at1;	
			}
			data_temp=ad_sampling(AD10);//蒸发器温度传感器
			if((data_temp>100)&(data_temp<250))
			{
				led[1]|=main_fan_motor_zhengfa_sense_led_at1;
			}
			else
			{
				led[1]&=~main_fan_motor_zhengfa_sense_led_at1;	
			}
			//-----------------------------------------------
				led[2]|=wendu_motor_open_led_at2;
				led[2]|=wendu_motor_testing_led_at2;
				MIX_P=1;	  //启动温度马达 
				NOP();
				MIX_N=0;
				NOP();	
			}
			else
			{
			unsigned data_temp=0x00;
			led[0]=0;led[1]=0;led[2]=0;led[3]=0;
			//-------------------------------------------
			//-----add senser test section
			//-------------------------------------------
			data_temp=ad_sampling(AD9);//温度传感器
			if((data_temp>100)&(data_temp<250))
			{
				led[1]|=main_fan_motor_wendu_sense_led_at1;
			}
			else
			{
				led[1]&=~main_fan_motor_wendu_sense_led_at1;	
			}
			data_temp=ad_sampling(AD10);//蒸发器温度传感器
			if((data_temp>100)&(data_temp<250))
			{
				led[1]|=main_fan_motor_zhengfa_sense_led_at1;
			}
			else
			{
				led[1]&=~main_fan_motor_zhengfa_sense_led_at1;	
			}
			//-----------------------------------------------
				led[2]|=wendu_motor_close_led_at2;//set close light
				led[2]|=wendu_motor_testing_led_at2;
				MIX_P=0;	  //启动温度马达 
				NOP();
				MIX_N=1;
				NOP();
			}
			togle_1=!togle_1;
			refrush_led();
			start_test = measure_function(test_wendu_motor_channel);
			if(start_test)         //if_success
			{
				led[2]&=~wendu_motor_testing_led_at2;//clr testing light
			}
			
			else				   //if fail set led
			{
				led[2]=0;
				led[2]|=wendu_motor_test_fail_led_at2;
			}
				MIX_P=0;	  //stop温度马达 
				NOP();
				MIX_N=0;
				NOP();	
				refrush_led();//refrush display light
		}
		if(KEY_VALUE.bits.bit2==0)//Press_hand_mode_xinfeng_motor_test?
		{
			static bit start_test=0;
			if(togle_1)
			{
			unsigned data_temp=0x00;
			led[0]=0;led[1]=0;led[2]=0;led[3]=0;
			//-------------------------------------------
			//-----add senser test section
			//-------------------------------------------
			data_temp=ad_sampling(AD9);//温度传感器
			if((data_temp>100)&(data_temp<250))
			{
				led[1]|=main_fan_motor_wendu_sense_led_at1;
			}
			else
			{
				led[1]&=~main_fan_motor_wendu_sense_led_at1;	
			}
			data_temp=ad_sampling(AD10);//蒸发器温度传感器
			if((data_temp>100)&(data_temp<250))
			{
				led[1]|=main_fan_motor_zhengfa_sense_led_at1;
			}
			else
			{
				led[1]&=~main_fan_motor_zhengfa_sense_led_at1;	
			}
			//-----------------------------------------------
				led[3]|=xinfeng_motor_open_led_at3;
				led[3]|=xinfeng_motor_testing_led_at3;
				RF_P=1;	  //启动新风马达 
				NOP();
				RF_N=0;
				NOP();	
			}
			else
			{
			unsigned data_temp=0x00;
			led[0]=0;led[1]=0;led[2]=0;led[3]=0;
			//-------------------------------------------
			//-----add senser test section
			//-------------------------------------------
			data_temp=ad_sampling(AD9);//温度传感器
			if((data_temp>100)&(data_temp<250))
			{
				led[1]|=main_fan_motor_wendu_sense_led_at1;
			}
			else
			{
				led[1]&=~main_fan_motor_wendu_sense_led_at1;	
			}
			data_temp=ad_sampling(AD10);//蒸发器温度传感器
			if((data_temp>100)&(data_temp<250))
			{
				led[1]|=main_fan_motor_zhengfa_sense_led_at1;
			}
			else
			{
				led[1]&=~main_fan_motor_zhengfa_sense_led_at1;	
			}
			//-----------------------------------------------
				led[3]|=xinfeng_motor_close_led_at3;//set close light
				led[3]|=xinfeng_motor_testing_led_at3;
				RF_P=0;	  //启动新风马达 
				NOP();
				RF_N=1;
				NOP();
			}
			togle_1=!togle_1;
			refrush_led();
			start_test = measure_function(test_xinfeng_motor_channel);
			if(start_test)         //if_success
			{
				led[3]&=~xinfeng_motor_testing_led_at3;//clr testing light
			}
			else				   //if fail set led
			{
				led[3]=0;
				led[3]|=xinfeng_motor_test_fail_led_at3;
			}
				RF_P=0;	  //关闭新风马达 
				NOP();
				RF_N=0;
				NOP();	
				refrush_led();//refrush display light
		}
		if(KEY_VALUE.bits.bit4==0)//Press_hand_mode_main_fan_motor_test?
		{
			static bit start_test=0;
			
			if(blo_step_counter>5)blo_step_counter=0x00;//主电机测试一共六挡超过六复位为零
				
				led[2]=0x00;
				led[1]=0x00;
				if(blo_step_counter==0x00)
					{
						led[2]|=main_fan_motor_1_led_at2;			
					}
				else if(blo_step_counter==0x01)
					{
						led[2]|=main_fan_motor_2_led_at2;	
					}
				else if(blo_step_counter==0x02)
					{
						led[2]|=main_fan_motor_3_led_at2;	
					}
				else if(blo_step_counter==0x03)
					{
						led[2]|=main_fan_motor_4_led_at2;		
					}
				else if(blo_step_counter==0x04)
					{
						led[1]|=main_fan_motor_5_led_at1;		
					}
				else if(blo_step_counter==0x05)
					{
						led[1]|=main_fan_motor_6_led_at1;	
					}
				
				CCPR1L=PWM[blo_step_counter];//主风扇测试涵数计数器
				led[1]|=main_fan_motor_testing_led_at1;
				main_motor_relay=1;//turn on power of main fan
				refrush_led();
				delay_500mS(10);//give time for main fan runing
				start_test = measure_function(test_main_fan_motor_channel);
				led[1]&=~main_fan_motor_testing_led_at1;
				blo_step_counter++;					
				if(start_test)         //if_success
			{
				;
			}			
			else				   //if fail set led
			{
				led[2]=0;
				led[1]=0;
				led[1]|=main_fan_motor_test_fail_led_at1;
			}
				main_motor_relay=0;//turn off power of main fan
				refrush_led();//refrush display light
		}
	}
}
void diingshiqi(void)//dingshi for beep
{
	if(dingshi_qi_bit==1)
	{
		dingshiqi++;
		if(dingshiqi>6)
		{
			led[1]&=~main_fan_motor_current_over_led_at1;	
				led[0]&=~auto_test_pass_led_at0;
					led[0]&=~auto_test_test_fail_led_at0 ;
					refrush_led();//refrush display light
					dingshi_qi_bit=0;
					dingshiqi=0x00;
		}
		delay_500mS(1);
	}
	else
	{
		dingshiqi2++;
		if(dingshiqi2>0x7ff)
		{
			dingshiqi2=0x00;
			refrush_led();//refrush display light
		}
		NOP();		
	}
}

void main()
{   
	TRISA=0xFF;
	TRISB=0xFF;
    TRISC=0x00;
	TRISD=0x80;
//	TRISE=0x07;

	PORTC=0x00;
    PORTD=0x00;
	ADCON0=0x41;
	ADCON1=0x80;
	
	CCP1CON=0X0F;	//设置PWM模式
	PR2=0XFF;	//Timer2周期(占空比总长度)
   	T2CON=0X7F;
    CCPR1L=0x00;
	
	INTCON=0x00;			/* bit7-bit0:关总中断*/
	PIR1=0X00;	            //清除所有中断
	T1CON=0X01;	//使能Timer1定时器、内部时钟*/
	
	bitset(INTCON,6);       //set PEIE bit
    bitset(INTCON,7);       //set GIE bit
	
//	KEY_VALUE.byte=0x00;
	
	refrush_led();//initial_all_led_to_off_status
	
	while(1)
	{	
		keyscan();	
		diingshiqi();		
	}

}
//***************************
//time1_interrupt_function
/***************************
void	interrupt	ISR(void)	//中断处理函数
{	
	if(TMR1IF)	//Timer1中断
	{	
		TMR1IF=0;
		TMR1H=0X3C;	//Timer1=0xC350=50000
		TMR1L=0XAF;
	}
}
*/


⌨️ 快捷键说明

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