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

📄 main.c.bak

📁 AVR ATEMG128 触摸屏驱动程序 C语言
💻 BAK
📖 第 1 页 / 共 3 页
字号:
							goto XsData;
						}
					if((KEY_P15_7P[0] <= X_Zb) && (X_Zb <= KEY_P15_7P[2]) && (Y_Zb <=KEY_P15_7P[1])&&(KEY_P15_7P[3]<= Y_Zb))
						{
							a = a * 10 + 7;
							goto XsData;
						}
					if((KEY_P15_8P[0] <= X_Zb) && (X_Zb <= KEY_P15_8P[2]) && (Y_Zb <=KEY_P15_8P[1])&&(KEY_P15_8P[3]<= Y_Zb))
						{
							a = a * 10 + 8;
							goto XsData;
						}
					if((KEY_P15_9P[0] <= X_Zb) && (X_Zb <= KEY_P15_9P[2]) && (Y_Zb <=KEY_P15_9P[1])&&(KEY_P15_9P[3]<= Y_Zb))
						{
							a = a * 10 + 9;
							goto XsData;
						}
				}
				if((KEY_P15_0P[0] <= X_Zb) && (X_Zb <= KEY_P15_0P[2]) && (Y_Zb <=KEY_P15_0P[1])&&(KEY_P15_0P[3]<= Y_Zb))
					{
						a = a * 10 + 0;
						goto XsData;
					}
			}
			if((KEY_P15_cP[0] <= X_Zb) && (X_Zb <= KEY_P15_cP[2]) && (Y_Zb <=KEY_P15_cP[1])&&(KEY_P15_cP[3]<= Y_Zb))
				{
					a = a / 10 ;
					goto XsData;
				}
			if((KEY_P15_qP[0] <= X_Zb) && (X_Zb <= KEY_P15_qP[2]) && (Y_Zb <=KEY_P15_qP[1])&&(KEY_P15_qP[3]<= Y_Zb))
					*b = a;
			goto loop15;
XsData:		Return_Point();
			Move_Point(5,8);
			Clear_Data(Point_Kong,5);
			if( a != 0)
				{
					utoa(a,Point_Date,10);
					w = strnlen(Point_Date,10);
					Return_Point();
					Move_Point(5,8);
					Disp_Date(Point_Date,w);
				}
			goto loop15;
			//
over:		Flag_Rec = OFF;
}
//************OPEN_ONE MIN************************
void Open_One_Min(void)
{
	TCCR0 = _BV(CS02) | _BV(CS01) | _BV(CS00);
	TCNT0 = 0;
	TIMSK = _BV(TOIE0);
}
//************CLOSE ONE MIN**************
void Close_One_Min(void)
{
	TCCR0 = 0;
	TCNT0 = 0;
	TIMSK = 0;
}
//************ONE TIME OVER**************
static uchar Flag_ONE = OFF;
static uint	Count = 0;
static uint GS=0;
SIGNAL( SIG_OVERFLOW0 )
{
	if( ++Count < 1688 )
	{
		GS ++;
		if( GS > 280)
		{
			GS = 0;
			Send_byte(0X2A);
		}
	}
	else
	{
		Flag_ONE = ON;
		Count = 0;
	}
}
//*********FIX Second 计算器***********************
SIGNAL( SIG_OVERFLOW2 )
{
	if( JINYU < Fix_Time)
	{
		if( ++GS_1S > 28 )
		{
			GS_1S = 0;
			JINYU ++;	
			DD ++;		
			AAA1 ++;
		}	
	}
	else
	{
		JINYU = 0;
		Flag_1S = ON;
	}
}
//*******Time 2*************************
void Open_Fix_Second()
{
	TCCR2 = _BV(CS22) | _BV(CS20);
	TCNT2 = 0;
	TIMSK = _BV(TOIE2);
	JINYU = 0;
	Flag_1S = OFF;
}
//*********************************
void Close_Fix_Second()
{
	TCCR2 = 0;
	TCNT2 = 0;
	TIMSK = 0;
	JINYU = 0;
	Flag_1S = OFF;
}
//*********************************
//*********FIX MIN 计算器***********************
static uchar JINYU1 = 0;
static uchar GG=0;
SIGNAL( SIG_OVERFLOW1 )
{
	if( JINYU1 < Fix_Time)
	{
		if( ++GS_1M > 10 )
		{
			GS_1M = 0;
			JINYU1 ++;
			GG ++;			
		}
		TCNT1 = 0x573F; 	
	}
	else
	{
		JINYU1 = 0;
		Flag_1M = ON;
	}
}
//*******Time 1*************************
void Open_Fix_Min()
{
	TCCR1B = _BV(CS12) | _BV(CS10);
	TCNT1 = 0x573F;				//6S中断一次
	TIMSK = _BV(TOIE1);	
	Flag_1M = OFF;
}
//****************************************
void Close_Fix_Min()
{
	TCCR1B = 0;
	TCNT1 = 0;
	TIMSK &= ~_BV(TOIE1);
	Flag_1M = OFF;
}
//********显示压力*********
void Disp_Press(uchar a,uchar b )
{
	uchar i;
	for(i=0;i<8;i++)
	{
		Press_Mid[i] = PRESS_RX[4+i];
	}
	Press_Data = strtod(Press_Mid,0);
		WWW = Press_Data * 10;
		WWW = WWW / 10;
		WWW1 = 0;
	//	utoa( WWW,Point_Date,10);
	if( Press_Data<1 )
	{
		Press_Data *= 1000;
		WWW1 = Press_Data;
		Return_Point();
		Move_Point(a,b+6 );
		Disp_Date(Point_Kong,2);
		Send_byte(0x6d);
		Send_byte(0x54);		
	}
	else
	{
		Return_Point();
		Move_Point(a,b+6);
		Disp_Date(Point_Kong,2);
		Send_byte(0x20);
		Send_byte(0x54);
	}
	dtostrf(Press_Data,4,2,Point_Date);
	i = 4;
	Return_Point();
	Move_Point(a,b);
	Disp_Date(Point_Kong,i);
	Return_Point();
	Move_Point(a,b);
	Disp_Date(Point_Date,i);
}
//*******************************************
void Write_Flow(uchar *p,uchar len)
{
	Sc16_Tx_A_OPEN;
	Fa_A( p,len);
}
//***********写流量 Rat***********
void Write_Flow_Rat(void)
{
	uchar a;
	Flow_Ret = ( Fix_Flow * 64000)/100;
	utoa(Flow_Ret,Flow_MID,10);
	a = strnlen(Flow_MID,10);
	Sc16_Tx_A_OPEN;
	Sc16_Tx_A_byte('A');
	Fa_A( Flow_MID,a);
	Fa_A( W_Enter,1 );
}
//***********写流量 Rat=0*********
void Write_Flow_Rat_0(void)
{
	uchar a;
	Flow_Ret = 0;
	utoa(Flow_Ret,Flow_MID,10);
	a = strnlen(Flow_MID,10);
	Sc16_Tx_A_OPEN;
	Sc16_Tx_A_byte('A');
	Fa_A( Flow_MID,a);
	Fa_A( W_Enter,1 );
}

//***********写流量  P************
void Write_Flow_P(void)
{
	uchar a;
	utoa(Fix_P,W_PD_MID,10);
	a = strnlen(W_PD_MID,10);
	Sc16_Tx_A_OPEN;
	Fa_A( W_P_21,5);
	Fa_A( W_PD_MID,a);
	Fa_A( W_Enter,1 );

}
//***********写流量  D************
void Write_Flow_D(void)
{
	uchar a;
	utoa(Fix_D,W_PD_MID,10);
	a = strnlen(W_PD_MID,10);
	Sc16_Tx_A_OPEN;
	Fa_A( W_D_22,5);
	Fa_A( W_PD_MID,a);
	Fa_A( W_Enter,1 );

}
//***********读*流量***********************
void Read_Flow( uchar len )
{
	Sc16_Rx_A_OPEN;
	Flag_ReA = OFF;
	Flag_Gf= 0;
	Re_PA = 0;
	DelayMs(300);	
	//while( Re_PA < len );
	//Flag_ReA = ON;
	if( Re_PA > len )
	{
		Flag_Gf = 1;
		Flag_ReA = ON;
	}
	else
	{
		Flag_Gf = 0;
	}
}
//********显示 流量******************
void Disp_Flow(uchar a,uchar b)
{
	uchar i;
	Sc16_Tx_A_OPEN;
	Fa_A( W_RBS,2);
	Read_Flow(40);
	if( Flag_Gf == 1 )
	{
		for(i=0;i<7;i++)
		{
			Flow_MID[i] = Re_Sc16A[26+i];//[18+i];
		}
		//********************
		Return_Point();
		Move_Point(a,b+8 );
		//Disp_Date(Point_Kong,2);
		Send_byte(0x53);
		Send_byte(0x43);
		Send_byte(0x43);
		Send_byte(0x4d);		
		//********************
		Return_Point();
		Move_Point(a,b);
		Disp_Date(Point_Kong,7);
		Return_Point();
		Move_Point(a,b);
		Disp_Date(Flow_MID,7);
	}
}
//*******************************************
void Write_Value(uchar *p,uchar len )
{
	Sc16_Tx_B_OPEN;
	Fa_B( p,len);
}
//*******************************************
void Read_Value(uchar len )
{
	Sc16_Tx_B_OPEN;
	Re_PB = 0;
	while( Re_PB < len );
	Sc16_Tx_B_OPEN;	
}
//********写 Plump 的设置点******************
void Write_Plump_SetPoint(void)
{
	Valve =(float) Fix_Press/1000;//加/1000
	Valve = 1+(log10( Valve * 10000));
	Valve *= 10;
	dtostrf(Valve,4,1,Point_Date);
//	Write_Value(Plump_Open,2);	
//	DelayMs(600);
	Write_Value(Plump_Set_Point,2);
	Write_Value(Point_Date,4);
	Write_Value(Plump_End,1);
}
//*************开阀**************************
void Write_Plump_SetPoint_1(void)
{
	Valve = 1;
	dtostrf(Valve,4,1,Point_Date);
	Write_Value(Plump_Set_Point,2);
	Write_Value(Point_Date,4);
	Write_Value(Plump_End,1);
}
//*************关阀******************************
void Write_Plump_SetPoint_8(void)
{
	Valve = 80;
	dtostrf(Valve,4,1,Point_Date);
//	Write_Value(Plump_Open,2);	
//	DelayMs(600);
	Write_Value(Plump_Set_Point,2);
	Write_Value(Point_Date,4);
	Write_Value(Plump_End,1);
}
//*******************************************
void Write_Plum_P(void)
{
	Valve =Fix_18_P;
	dtostrf(Valve,4,1,Point_Date);
	Write_Value(Plump_P,1);
	Write_Value(Point_Date,4);
	Write_Value(Plump_End,1);
}
//*******************************************
void Write_Plum_P90(void)
{
	Valve =90;
	dtostrf(Valve,4,1,Point_Date);
	Write_Value(Plump_P,1);
	Write_Value(Point_Date,4);
	Write_Value(Plump_End,1);
}
//*******************************************
void Write_Plum_D(void)
{
	Valve = Fix_18_D;
	dtostrf(Valve,4,1,Point_Date);
	Write_Value(Plump_D,1);
	Write_Value(Point_Date,4);
	Write_Value(Plump_End,1);
}
//*******开电源************************************

void Open_Power(void)
{
	sbi(PORTF,PF0);
}
//*******关电源************************************
void Close_Power(void)
{
	cbi( PORTF,PF0);
}
//*******************************************
void Open_Window(void)
{
	sbi(PORTF,PF1);
}
//*******************************************
void Close_Window(void)
{
	cbi( PORTF,PF1);
}
//*******************************************
uchar Flag_Time3= OFF;
SIGNAL( SIG_OVERFLOW3 )
{
	TCNT3 = 0xE3DF;	
	Flag_Time3 = ON;

}
//*******************************************
void Open_Time3(void)
{
	TCCR3B = _BV(CS12) | _BV(CS10);
	TCNT3 = 0xC7BF;				//2S中断一次
	ETIMSK = _BV(TOIE3);	
	Flag_Time3 = OFF;
}
//*******************************************
void Close_Time3(void)
{
	TCCR3B = 0;
	TCNT3 = 0;
	ETIMSK = 0;
	Flag_Time3 = OFF;
}
//*******************************************
void GONGF(void)
{
	sei();
	Close_Power();
	Close_Window();
	Write_Flow_Rat_0();
	DelayMs(6);
	Write_Plump_SetPoint_1();
	DelayMs(6);
}
//********主程序***********************************
int		main()
{
			int W1;
			uint16_t Buff=0;
			uchar a;		
			uchar bb=0;			
//****************************************
			MCUCR = 0xc0;
			Uart0_Init();
			Uart1_Init();
			Sc16_Init();
			LCD_Init();
			DDRF = 0XFF;
			PORTF = 0;						
//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&			
			sei();				
			Write_Flow(W_One,5);				//定义 Flow is A;
			Close_Window();
			cli();
//*****STEP-1*****************************
			eeprom_busy_wait();
			W1 = eeprom_read_word(10);
			eeprom_busy_wait();
			if(W1 != 1)
			{
				eeprom_busy_wait();
				eeprom_write_word(10,1);
				eeprom_busy_wait();
				//%%%%%%%%%%屏6%%%%%%%%%%%%%%%%%%%
				eeprom_write_word(20,45);				//Fix_Flow
				eeprom_busy_wait();
				eeprom_write_word(22,388);				//Fix_Press
				eeprom_busy_wait();
				eeprom_write_word(24,20);				//Fix_Time

				//%%%%%%%%%%%屏17&&&&&&&&&&&&&&%%%
				eeprom_busy_wait();
				eeprom_write_word(30,200);				//Fix_P
				eeprom_busy_wait();
				eeprom_write_word(32,500);				//Fix_D
				eeprom_busy_wait();

				//%%%%%%%%%%%%屏18&&&&&&&&&&&&&&&&
				eeprom_write_word(40,100);				//Fix_18_Press
				eeprom_busy_wait();
				eeprom_write_word(42,12);				//Fix_18_P
				eeprom_busy_wait();
				eeprom_write_word(44,5);				//Fix_18_D
				eeprom_busy_wait();
				//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
				sei();
				goto Pin_2;
			}
			cli();	
			Disp_Pin(1);
			//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
			eeprom_busy_wait();
			Fix_Flow = eeprom_read_word(20);
			eeprom_busy_wait();
			Fix_Press = eeprom_read_word(22);
			eeprom_busy_wait();
			Fix_Time = eeprom_read_word(24);
			eeprom_busy_wait();
			Fix_P = eeprom_read_word(30);
			eeprom_busy_wait();
			Fix_D = eeprom_read_word(32);
			eeprom_busy_wait();
			Fix_18_Press = eeprom_read_word(40);
			eeprom_busy_wait();
			Fix_18_P = eeprom_read_word(42);
			eeprom_busy_wait();
			Fix_18_D = eeprom_read_word(44);
			Read_Eeprom();
STAR:		ratio_x = (float)(touch_rightbottom_x - touch_lefttop_x)  / 320;
			ratio_y = (float)(touch_rightbottom_y - touch_lefttop_y)  / 240;
			Key_Wz();
			DelayMs(6000);		
//*************STEP-2**********************
Pin_4:		Disp_Pin(4);
			sei();
			Close_Power();
			Close_Window();
			RxLen = 0;			
			Flag_Rec = OFF;
loop1:		while( Flag_Rec == OFF);
			RxLen = 0;			
			Flag_Rec = OFF;
			Asc_Dig();	
			if((KEY_LEFT_P[0] <= X_Zb) && (X_Zb <= KEY_LEFT_P[2]) && (Y_Zb <=KEY_LEFT_P[1])&&(KEY_LEFT_P[3]<= Y_Zb))
				goto Pin_16;
			if((KEY_RIGH_P[0] <= X_Zb) && (X_Zb <= KEY_RIGH_P[2]) && (Y_Zb <=KEY_RIGH_P[1])&&(KEY_RIGH_P[3]<= Y_Zb))
				{
					cli();
					eeprom_busy_wait();
					eeprom_write_word(20,Fix_Flow);				//Fix_Flow
					eeprom_busy_wait();
					eeprom_write_word(22,Fix_Press);				//Fix_Press
					eeprom_busy_wait();
					eeprom_write_word(24,Fix_Time);				//Fix_Time
					//
					eeprom_busy_wait();
					eeprom_write_word(30,Fix_P);				//Fix_P
					eeprom_busy_wait();
					eeprom_write_word(32,Fix_D);				//Fix_D
					eeprom_busy_wait();
					//
					eeprom_write_word(40,Fix_18_Press);				//Fix_18_Press
					eeprom_busy_wait();
					eeprom_write_word(42,Fix_18_P);				//Fix_18_P
					eeprom_busy_wait();
					eeprom_write_word(44,Fix_18_D);				//Fix_18_D
					eeprom_busy_wait();
					eeprom_busy_wait();
					DelayMs(60);
					eeprom_busy_wait();
					sei();
					goto Pin_5;
				}
			goto loop1;
//*************STEP-3***********************
Pin_16:		Disp_Pin(16);
			RxLen = 0;
loop2:		Flag_Rec = OFF;
			while(Flag_Rec == OFF);
			Asc_Dig();
			if((KEY_P16_1P[0] <= X_Zb) && (X_Zb <= KEY_P16_1P[2]) && (Y_Zb <=KEY_P16_1P[1])&&(KEY_P16_1P[3]<= Y_Zb))
				goto Pin_2;
			if((KEY_P16_2P[0] <= X_Zb) && (X_Zb <= KEY_P16_2P[2]) && (Y_Zb <=KEY_P16_2P[1])&&(KEY_P16_2P[3]<= Y_Zb))
				goto Pin_6;
			if((KEY_P16_3P[0] <= X_Zb) && (X_Zb <= KEY_P16_3P[2]) && (Y_Zb <=KEY_P16_3P[1])&&(KEY_P16_3P[3]<= Y_Zb))
				goto Pin_17;
			if((KEY_LEFT_P[0] <= X_Zb) && (X_Zb <= KEY_LEFT_P[2]) && (Y_Zb <=KEY_LEFT_P[1])&&(KEY_LEFT_P[3]<= Y_Zb))
				goto Pin_4;
			goto loop2;		
	//***************************
Pin_2:		Disp_Pin(2);
			Flag_Rec = OFF;
			RxLen = 0;
			while( Flag_Rec == OFF );			
			Asc_Dig();			
			touch_lefttop_x = X_Zb;
			touch_lefttop_y = Y_Zb;
			Flag_Rec = OFF;
			Disp_Pin(3);
			while( Flag_Rec == OFF );			
			Asc_Dig();
			touch_rightbottom_x = X_Zb;
			touch_rightbottom_y = Y_Zb;			
//********EEprom write******
			cli();
			Disp_Pin(1);
			eeprom_busy_wait();
			eeprom_write_word(0,touch_lefttop_x);
			eeprom_busy_wait();
			eeprom_write_word(2,touch_lefttop_y);
			eeprom_busy_wait();
			eeprom_write_word(4,touch_rightbottom_x);
			eeprom_busy_wait();
			eeprom_write_word(6,touch_rightbottom_y);
			eeprom_busy_wait();	
			DelayMs(60);			
			eeprom_busy_wait();
			goto STAR;
//**************************
Pin_5:		Disp_Pin(20);
			Flag_Rec = ON;
			RxLen = 0;			
			Write_Flow_Rat_0();
			Write_Plum_P();
			Write_Plum_D();
			Open_Window();
			Open_Time3();
Brush5:		PRESS_Write(PRESS_TX,6);
			asm("nop");			
			if( Flag_ZD == ON)
			{
				Flag_ZD = OFF;
				Disp_Press(7,12);
				if( WWW > 750)
					{
						Close_Time3();
						goto Pin_14;
					}
			}					
loop5:		Flag_Rec = OFF;
			RxLen = 0;
			while(Flag_Rec == OFF)	
			{
				if(Flag_Time3 == ON)
					{
						Flag_Time3 = OFF;
						goto Brush5;
					}
			}			
			Asc_Dig();
			if((KEY_LEFT_P[0] <= X_Zb) && (X_Zb <= KEY_LEFT_P[2]) && (Y_Zb <=KEY_LEFT_P[1])&&(KEY_LEFT_P[3]<= Y_Zb))
				{
					Close_Time3();

⌨️ 快捷键说明

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