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

📄 testprog.c

📁 电除尘行业中监控界面采用ACTIVE 控件的形式
💻 C
📖 第 1 页 / 共 5 页
字号:
				ET0         = CLEAR;
				U_DRV   	= SET; 					//因为火花,关闭进一步的脉冲
				m_br_fs 	= TRUE; 						
			}
		}

//		m_vol2_old_12 = m_vol2_new;

		return;
	}

	if(m_br_fs) 	return;						//假如封锁,立即退出采样

	
	//m_pulse_count == 1 时,取其电压
	if(m_get_gzfs == 1 && m_pulse_count > 3) return;			

	//如果不是工作方式一,继续


	//==============================================================			  故意前移
	if(m_ms_count == 9 || m_ms_count == 19 )	
	{
		m_cur2_new 		=  channel(151);				//channel(2);			//电流取样	

		if(m_cur2_new  < 	0x7f0 )
		{
			if( m_get_gzfs != 1 ||(m_get_gzfs ==1 && m_pulse_count ==2))// 1或者2暂时定为2
			{
				m_cur2 = ((m_tem_cur2   + m_cur2_new/2  )*m_detel_k)>>5;	//  /32   <1>二次电流
			}
		}
		if(m_cur2 >= 0x7ff) 	m_cur2 = 0;

		if(m_cur2 >= m_get_cur2 || m_cur2 >= m_cur2_climit)
		{
			if(m_tc > 200)	m_tc -= 30;
			con_speed 	= 1;
		}
		m_cur2_09 = m_cur2_new;

		//-------------------------------------------------------判断是否出现火花//130
		if( m_cur2 > m_get_cur2/3 && m_tc_max <3800)	goto this_part;//68度
		if( m_cur2 > m_cur2_div4_3 && m_tc_max <4200 )	goto this_part;//75度
		if( m_cur2 > m_cur2_limit) 									
		{
this_part:
		   	TR0         = CLEAR;				//关闭定时器0,
			ET0         = CLEAR;
			U_DRV   	= SET; 		  			//因为火花,关闭进一步的脉冲
			m_br_fs 	= TRUE; 
		}
		if(m_ms_count == 9 )
			m_vol2_9 	=  channel(167);//channel(4);
	}

	if(m_ms_count == 13 )
	{
		m_vol2_compu = (m_vol2_5 + m_vol2_6  +m_vol2_7 + m_vol2_8 + m_vol2_9 + m_vol2_10 + m_vol2_11 + m_vol2_12)>>3;
		if( m_get_gzfs != 1 || m_get_gzfs != 4 ||(m_get_gzfs ==1 && m_pulse_count ==3)||(m_get_gzfs ==4 && m_pulse_count ==2))
		{
			//-----------------------------------------------------------
			if( m_br_open )
			{
				if(m_vol2_compu > 550)  m_vol2 = m_vol2_compu/16+2;//18 //+3
				else                    m_vol2 = m_vol2_compu/17;//19
			}
			else if(m_vol2_compu < 2000)
			{
				if(m_vol2_compu > 1170 )
					m_vol2 = (m_vol2_compu- 1170)/3 + 60 ;			//(13) 49 -    Kv 35kv-50kv小4
				else if(m_vol2_compu > 1117 )
					m_vol2 = (m_vol2_compu - 1117)/10 + 55 ;		//(13) 49 -    Kv 35kv-50kv小4
				else if(m_vol2_compu > 1046 )
					m_vol2 = (m_vol2_compu- 1046)/14 + 50 ;			//(13) 49 -    Kv 35kv-50kv小4

				else if(m_vol2_compu > 600 )
					m_vol2 = ((m_vol2_compu- 600)<<1)/45 + 30 ;		//(13) 49 -    Kv
				else	
					m_vol2 =   m_vol2_compu/20 ;					//0 - 21  Kv
			}
		}
		if( m_vol2 >= m_get_vol2 && m_dtj > 35 )//
		{
			if(m_tc > 200)	m_tc	-= 30;
				con_speed 	= 1;
			if( m_br_open)	m_count_open++;				
		}
//		if( m_tc < 1650 && m_br_fs == FALSE )
//		{
//			m_tc = 1650;
//		}
		WDTCON     |= 0x20; 							// Set RWDT, other bits unaffected    
		WDTCON     &= ~0x20; 							// Clear RWDT—watchdog reset				
	}

	if(m_ms_count == 5)		//||m_ms_count == 15 //5ms  中间部分
	{
		m_temp_vol1    = channel(199)>>4;//channel(1)>>4;			//一次电压
		m_temp_tempura = channel(135)/11;
		m_vol2_5       =   channel(167);
		return;
	}
	if(m_ms_count == 6)	   	
	{
		m_vol2_6   =   channel(167);

		if(m_dtj > m_get_dtj )
			m_dtj = m_get_dtj;

		m_cur2_new   	= 	channel(151);//channel(2);			//电流取样	
		if(m_cur2_new   < 	0x7f0)
			m_tem_cur2_6  = 	m_cur2_new/2;
	}
	if(m_ms_count == 16)	   	
	{
		m_cur2_new   	= 	channel(151);//channel(2);			//电流取样	
		if(m_cur2_new   < 	0x7f0)
			m_tem_cur2_6  = 	m_cur2_new/2;
	}
	if(m_ms_count == 7)	   	
	{
		m_vol2_7   		=   channel(167);
		m_cur2_new   	= 	channel(151);//channel(2);			//电流取样	
		if(m_cur2_new   < 	0x7f0)
			m_tem_cur2_7  = 	m_cur2_new/2 + m_tem_cur2_6;;
	}
	if(m_ms_count == 17)	   	
	{
		m_cur2_new   	= 	channel(151);//channel(2);			//电流取样	
		if(m_cur2_new   < 	0x7f0)
			m_tem_cur2_7  = 	m_cur2_new/2 + m_tem_cur2_6;
	}


	if(m_ms_count == 8 ||m_ms_count == 18)	   	//8			
	{
		m_cur2_new   	= 	channel(151);//channel(2);			//电流取样	
		if(m_cur2_new   < 	0x7f0)
			m_tem_cur2  = 	m_cur2_new/2 + m_tem_cur2_7;

		//----------------------------------	 采集一次电流值
		if(m_ms_count == 8)
		{
			m_vol2_8      =  	channel(167) ;
			m_tem_cur1 	  = 	channel(215)/4;		//channel(3);
			if(m_tem_cur1 < 0x1ff)
			{
				m_cur1 = (m_tem_cur1 * m_cur1_given_div4)/75;//91
				//--------//<2>一次电流采样
				if(m_cur1 >= m_cur1_given)				//<2>一次电流采样
				{
					m_tc 	   -= 30;					//当数据小于40的时候,不能减小40
					con_speed 	= 1;
				}
			}
		}
		return;
	}

}

void main(void)
{  
	unsigned char xdata i,z;
	unsigned char xdata * ptr;
	unsigned char xdata * bufptr;
	U_DRV = SET;
	U_STA = SET;								//-----正逻辑
	U_STO = SET;//CLEAR;
	CS_AD0 = SET;
	init_sys();

	U_BJ       = CLEAR;							//铃响,提示开机
	shortdelay(1000);
	U_BJ       = SET;
	shortdelay(800);
	U_BJ       = CLEAR;							//铃响,提示开机
	shortdelay(1000);
	U_BJ       = SET;

   	EX0 	= CLEAR;
	PX0 	= SET;
	IE0 	= CLEAR;
	ET0     = CLEAR;
	ET1     = CLEAR;
   	PX0 	= SET;
	EAI 	= CLEAR;
    EA  	= SET;
	m_br_u2 = CLEAR;
	m_br_fs = CLEAR;


	icbase0    = 0;								//all kinds of flags
	icbase1    = 0;
	icbase2    = 0;
	m_dtj      = 0;								//dao tong jiao is zero at first

	m_br_jkyk  = TRUE;							//初始化为遥控状态
	i    = 0;


	fnLCMInit();
	fnLCMInit();
	fnLCMInit();
init:
	EA  = SET;

	cls();
	clszf();
	cls();
	clszf();
	cls();
	clszf();
	fnLCMInit();
	cls();
	clszf();


	if(RI_0)	
	{
		i = SBUF0;
		RI_0 = 0;
	}

	ES 	= CLEAR;								//首先必须关闭通信功能

	DE_S = CLEAR;
	m_r_in  	= 0;							//本字节,用于记录串行数据的接收
	while(1)
   	{
	 	U_DRV = SET;
		U_STA = SET;    						//-----正逻辑
		U_STO = SET;//CLEAR;

		//==============================================================
		if(m_get_ykfs == 2)
			m_br_dcs = TRUE;
		else if(m_get_ykfs == 1)
			m_br_dcs = FALSE;

		P2DDRH = 0x5f;              //attention please!  change later!
		P2DDRL = 0xf5;				//
		P2     = 0x7f;				//P2.5 = 1
		//===============================================================
		if(scan_jp(0,0)) break;
	 	printf_hz(2, 4,"YGK-03电除");
	 	printf_hz(12, 4,"尘高压电源控制器");
		if(scan_jp(0,0)) break;
	 	printf_hz(7, 6,"正");
	 	printf_hz(9, 6,"耀");

	 	printf_hz(3, 6,"浙江");
	 	printf_hz(11, 6,"环保科技");
	 	printf_hz(19, 6,"有限公司");
	 	printf_hz(9, 2,"               ");
		if(scan_jp(0,0)) break;
		shortdelay(1000);
		shortdelay(2000);
		if(scan_jp(0,0)) break;
		shortdelay(4000);
		if(scan_jp(0,0)) break;
		shortdelay(4000);
		if(scan_jp(0,0)) break;

	 	printf_hz(9, 2,"欢");
		shortdelay(4000);
		if(scan_jp(0,0)) break;
		shortdelay(4000);
		if(scan_jp(0,0)) break;

		printf_hz(12, 2,"迎");
		shortdelay(4000);
		if(scan_jp(0,0)) break;
		shortdelay(4000);
		if(scan_jp(0,0)) break;


	 	printf_hz(3, 6,"                        ");
	 	printf_hz(8, 6,"TEL:0573-6511147");

		printf_hz(15, 2,"使");
		shortdelay(4000);
		if(scan_jp(0,0)) break;
		shortdelay(4000);
		if(scan_jp(0,0)) break;
			
	 	printf_hz(18, 2,"用");
		shortdelay(4000);
		if(scan_jp(0,0)) break;
		if(scan_jp(0,0)) break;
		shortdelay(4000);
		if(scan_jp(0,0)) break;
		shortdelay(2000);
		if(scan_jp(0,0)) break;
		shortdelay(2000);

		ES  	= CLEAR;
		EX0 	= SET;
		ET0 	= CLEAR;
		ET1 	= CLEAR;

	
		m_br_u2 = SET;
		m_br_fs = SET;
		TR0     = CLEAR;
	 	U_DRV 	= SET;
		shortdelay(4000);

		if(m_temp_data < 150)						m_temp = 100;	
        if(m_temp_data > 150 && m_temp_data < 250 )	m_temp = 200;	 			
		if(m_temp_data > 250 && m_temp_data < 350 )	m_temp = 300;				
		if(m_temp_data > 350 && m_temp_data < 450 )	m_temp = 400;				
		if(m_temp_data > 450 && m_temp_data < 550 )	m_temp = 500;				
		if(m_temp_data > 550 && m_temp_data < 650 )	m_temp = 600;				
		if(m_temp_data > 650 && m_temp_data < 750 )	m_temp = 700;				
		if(m_temp_data > 750 && m_temp_data < 850 )	m_temp = 800;				
		if(m_temp_data > 850 && m_temp_data < 950 )	m_temp = 900;				
		if(m_temp_data > 950 && m_temp_data <1050 )	m_temp = 1000;				
		if(m_temp_data >1050 && m_temp_data <1150 )	m_temp = 1100;				
		if(m_temp_data >1150 && m_temp_data <1250 )	m_temp = 1200;				
		if(m_temp_data >1250 && m_temp_data <1350 )	m_temp = 1300;				
		if(m_temp_data >1350 && m_temp_data <1450 )	m_temp = 1400;				
		if(m_temp_data >1450 && m_temp_data <1550 )	m_temp = 1500;				
		if(m_temp_data >1550 && m_temp_data <1650 )	m_temp = 1600;				
		if(m_temp_data >1650 && m_temp_data <1750 )	m_temp = 1700;				
		if(m_temp_data >1750 && m_temp_data <1850 )	m_temp = 1800;				
		if(m_temp_data >1850 && m_temp_data <1950 )	m_temp = 1900;				
		if(m_temp_data >1950  )						m_temp = 2000;		
	
		EX0 	= CLEAR;
		m_br_u2 = CLEAR;
		m_br_fs = CLEAR;
		ET0 	= CLEAR;
		ET1 	= CLEAR;

		if(m_temp != m_get_cur2)
		{
			display_zf(22,4,3, m_temp,0);
			display_zf(22,5,3, m_get_cur2,0);

			cls();
			clszf();
		 	printf_hz(4, 2,"二次电流设置错误");
			while(1){};
		}
		if( m_set_o36 > 40 || m_set_o72 > 40 || m_set_o109 > 40 )
		{
			cls();
			clszf();
		 	printf_hz(4, 2,"灵敏度设置错误");
			while(1){};
		}
//		ES  	= SET;
		goto begin_s;
	};

	while(1)
	{
		if(jp_code == 0x09 || jp_code == 0x0b ) goto later_use;
		goto init;
later_use:		
		cls();
		U_DRV  = SET;										//shut down the pwm pulse
		if(jp_code == 0x09)									//参数设置键
		{
config:
            cls();
			clszf();
 			printf_hz(1, 0,"设置:");
		 	printf_hz(6, 2,"1: 参  设置");
			printf_hz(11, 2,"数");
		 	printf_hz(6, 3,"2: 工作方式选择");
		 	printf_hz(6, 4,"3: 二次电流设置  ");			//22,6
		 	printf_hz(6, 5,"4: 远控方式");					//22,6
			printf_hz(6, 6,"5: 灵敏度设置");
			printf_hz(6, 7,"6: 波特率设置");

			cur_pos(8,1);
			while(1)				//
			{
   				scan_jp(8,0);
				if(jp_code == 0x31) break;
				if(jp_code == 0x32) break;
				if(jp_code == 0x33) break;
				if(jp_code == 0x34) break;
				if(jp_code == 0x35) break;
				if(jp_code == 0x36) break;
				if(jp_code == 0x08 || jp_code == 0x0D) goto init;
			}

			if(jp_code == 0x35)
			{
				cls();
		 		printf_hz(0, 1,"灵敏度设置(1-30)");			//22,6
			 	printf_hz(2, 3,"(  0 -  72) 1:      ( 5-13)");
			 	printf_hz(2, 4,"( 72 - 109) 2:      ( 8-17)");
			 	printf_hz(2, 5,"(109 - 160) 3:      (10-19)");
				display_zf(16,3,2,m_set_o36, 1);
				display_zf(16,4,2,m_set_o72, 1);
				display_zf(16,5,2,m_set_o109,1);
lmdsz:
				fnPR12(LC_DIS_SW | 0x0f);		// 显示开关设置
   				cur_pos(18,1);
				while(1)
				{
	   				scan_jp(18,0);					
					if(jp_code>0x30 && jp_code <0x34) break;
					if(jp_code == 0x08)         break;
					if(jp_code == 0x0d)         break;
					write_zf(18,0,0x20);
				}
				write_zf(18,0,0x20);
				if(jp_code == 0x31)
				{
					cur_pos(16,7);
					printf_hz(16,3,"   ");
					serinput(16,3,tem_buf);

					if(tem_buf[1] <0x30)	
						m_get_o36 = (tem_buf[0]-0x30);
					else 
						m_get_o36 = (tem_buf[0]-0x30)*10+(tem_buf[1]-0x30);	//get the input vol2 value
					if(m_get_o36 !=0)
					{
						rmw(m_get_o36,0,0x48d,1);
					}
				}
				else if(jp_code == 0x32)
				{
					cur_pos(16,9);
					printf_hz(16,4,"   ");
					serinput(16,4,tem_buf);
					if(tem_buf[1] <0x30)	
						m_get_o72 = (tem_buf[0]-0x30);
					else 
						m_get_o72 = (tem_buf[0]-0x30)*10+(tem_buf[1]-0x30);	//get the input vol2 value
					if(m_get_o72!=0)
					{
						//write down the modification
						rmw(m_get_o72,0,0x48e,1);
					}
				}
				else if(jp_code == 0x33)
				{
					cur_pos(16,11);
					printf_hz(16,5,"   ");
					serinput(16,5,tem_buf);
					if(tem_buf[1] <0x30)	
						m_get_o109 = (tem_buf[0]-0x30);
					else 
						m_get_o109 = (tem_buf[0]-0x30)*10+(tem_buf[1]-0x30);	//get the input vol2 value
					if(m_get_o109!=0)
					{
						//write down the modification
						rmw(m_get_o109,0,0x48f,1);
					}
				}
				else if(jp_code == 0x08||jp_code == 0x0d)
				{
					m_get_o36  = m_set_o36 * 20;
					m_get_o72  = m_set_o72 * 20;
					m_get_o109 = m_set_o109 * 20;
					fnPR12(LC_DIS_SW | 0x0c);				// 显示开关设置
					goto config;
				}
				goto lmdsz;
			}

			if(jp_code == 0x36)
			{
				cls();
				printf_hz(0,0,"波特率设置:");
				printf_hz(10,1,"1:  2400");
				printf_hz(10,2,"2:  4800");
				printf_hz(10,3,"3:  9600");
				printf_hz(10,4,"4: 19200");
				printf_hz(10,5,"5: 38400");
				printf_hz(10,6,"6: 57600");
			 	printf_hz(4, 7,"当前波特率:");
				m_get_btl = m_set_btl;
                 if(m_get_btl == 65224 )
					printf_hz(16,7, "2400");
				else if(m_get_btl == 65378 )
					printf_hz(16,7, "4800");
				else if(m_get_btl == 65458 )
					printf_hz(16,7, "9600");
				else if(m_get_btl == 65497 )
					printf_hz(16,7, "19200");
				else if(m_get_btl == 65517 )
					printf_hz(16,7, "38400");
				else if(m_get_btl == 65523 )
					printf_hz(16,7, "57600");


				cur_pos(13,3);
				while(1)
				{
	   				scan_jp(13,0);
					if(jp_code > 0x30&&jp_code<0x37) break;
					if(jp_code == 0x08) goto config;

⌨️ 快捷键说明

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