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

📄 main.c

📁 一个基于C51开发的计价秤
💻 C
📖 第 1 页 / 共 4 页
字号:
	Set_Lcd1_Buf('t',2,1);
	Set_Lcd1_Buf('A',1,1);
	Set_Lcd1_Buf('L',0,1);
	if(Last_day!=date.day)
	{
		Last_day=date.day;
		Sum_Price=0;
		Record_Counts=0;
		Sold_Quantity=0;
	}
	if(op_status==ADD)
	{
		Record_Counts++;
		if(Record_Counts==(MAX_RECORD-1))
			Record_Counts=0;
		Print_Record(sales_type);
		Record_Save(Record_Counts);
		Sold_Quantity++;
		if(Sold_Quantity>999)
			Sold_Quantity=999;
		else	
			Sum_Price+=Total_Price;
	}
	else if(op_status==SUM)
	{
		Cls_Icon_Buf();
		Print_Record(TOTAL);
	}	
	if(Sum_Price>9999999)
		Set_OVER_On_Lcd3_Display();
	else	
		Set_Sum_Price_Display(Sum_Price);
	Set_Sold_Quantity_Display(Sold_Quantity);
	Display();
	ET1=1;
	while(mode==Total_mode)
	{
		Total_Key_Processing();
		if(state==WEIGHING&&op_status==ADD)
		{
			Monitor_Weigh_Scale();
			if(Weight==0)
			{
				unit_price_entered=FALSE;
				mode=Sales_mode;
			}
		}	
	}
}
/**********************************
********Payback mode***************
**********************************/
VOID Payback_Key_Processing()
{
	if(keyprocess)
	{
		keydone=FALSE;
		keyprocess=FALSE;
		numeric=0;
		if(!keypre[1]&&!keypre[2]&&!keypre[3])
		{
			switch(keypre[0])
			{
			case K_PAYBACK:
				Beep();
				Money=Get_Money_from_display_buf();
				if(Money<Sum_Price)
				{
					Set_ERROR_On_Lcd2_Display();
					Display();
					Wait_n_s(2);
					Money=0;
				}
				else
					Money=Money-Sum_Price;
				Set_Money_Display(Money);		
				break;
			case K_CLEAR:
				Beep();
				op_status=PAY;
				mode=Total_mode;
				break;
			case K_00:
				Beep();
				numeric='0';
				Lcd_Buf_Left_Shift(lcd2_buf,6,numeric,0);
				Lcd_Buf_Left_Shift(lcd2_buf,6,numeric,0);
				Money=Get_Money_from_display_buf();
				Set_Money_Display(Money);
				break;
			case K_9:numeric++;
			case K_8:numeric++;
			case K_7:numeric++;
			case K_6:numeric++;
			case K_5:numeric++;
			case K_4:numeric++;
			case K_3:numeric++;
			case K_2:numeric++;
			case K_1:numeric++;
			case K_0:numeric+='0';
				Beep();
				Lcd_Buf_Left_Shift(lcd2_buf,6,numeric,0);
				Money=Get_Money_from_display_buf();
				Set_Money_Display(Money);
				break;
			}
		}
		keydone=TRUE;
	}		
}

VOID Payback()
{
	ET1=0;
	Set_Lcd1_Buf(0,4,1);
	Set_Lcd1_Buf(0,3,1);
	Set_Lcd1_Buf('P',2,1);
	Set_Lcd1_Buf('A',1,1);
	Set_Lcd1_Buf('y',0,1);
	Money=0;
	Set_Money_Display(Money);
	Set_Sum_Price_Display(Sum_Price);
	ET1=1;
	while(mode==Payback_mode)
	{
		Payback_Key_Processing();
		if(half_sec)
		{
			half_sec=FALSE;
			Display();			
		}	
	}
}
/**********************************
********PLU Setup mode*************
**********************************/ 
VOID PLU_Setup_Key_Processing()
{
	if(keyprocess)
	{
		keydone=FALSE;
		keyprocess=FALSE;
		numeric=0;
		if(!keypre[1]&&!keypre[2]&&!keypre[3])
		{
			switch(keypre[0])
			{
			case PLU30:numeric++;
			case PLU29:numeric++;
			case PLU28:numeric++;
			case PLU27:numeric++;
			case PLU26:numeric++;
			case PLU25:numeric++;
			case PLU24:numeric++;
			case PLU23:numeric++;
			case PLU22:numeric++;
			case PLU21:numeric++;
			case PLU20:numeric++;
			case PLU19:numeric++;
			case PLU18:numeric++;
			case PLU17:numeric++;
			case PLU16:numeric++;
			case PLU15:numeric++;
			case PLU14:numeric++;
			case PLU13:numeric++;
			case PLU12:numeric++;
			case PLU11:numeric++;
			case PLU10:numeric++;
			case PLU9:numeric++;
			case PLU8:numeric++;
			case PLU7:numeric++;
			case PLU6:numeric++;
			case PLU5:numeric++;
			case PLU4:numeric++;
			case PLU3:numeric++;
			case PLU2:numeric++;
			case PLU1:numeric++;
				Beep();
				PLU_no=numeric;
				Set_PLU_no_Display(PLU_no);
				Load_PLU_to_LCD_Buf(PLU_no);
				state=PLU_EDIT;
				break;
			case K_ENTER:
				Beep();
				Save_PLU_Setup_form_Disp_Buf(PLU_no);
				state=PLU_SAVE;
				point2_on=TRUE;
				break;
			case K_CLEAR:
				Beep();
				Unit_Price=0;
				Set_Unit_Price_Display(Unit_Price);
				state=PLU_EDIT;
				break;
			case K_ADD:
				Beep();
				++PLU_no;
				if(PLU_no>300)
					PLU_no=1;
				Set_PLU_no_Display(PLU_no);
				Load_PLU_to_LCD_Buf(PLU_no);
				state=PLU_EDIT;
				break;
			case K_SUB:
				Beep();
				--PLU_no;
				if(PLU_no<1)
					PLU_no=300;
				Set_PLU_no_Display(PLU_no);
				Load_PLU_to_LCD_Buf(PLU_no);
				state=PLU_EDIT;
				break;
			case K_00:
				Beep();
				if(state==PLU_EDIT)
				{
					numeric='0';		
					Lcd_Buf_Left_Shift(lcd2_buf,5,numeric,0);
					Lcd_Buf_Left_Shift(lcd2_buf,5,numeric,0);
					Unit_Price=Get_Unit_Price_from_display_buf();
					Set_Unit_Price_Display(Unit_Price);
				}
				break;	
			case K_9:numeric++;
			case K_8:numeric++;
			case K_7:numeric++;
			case K_6:numeric++;
			case K_5:numeric++;
			case K_4:numeric++;
			case K_3:numeric++;
			case K_2:numeric++;
			case K_1:numeric++;
			case K_0:numeric+='0';
				Beep();
				if(state==PLU_EDIT)
				{
					Lcd_Buf_Left_Shift(lcd2_buf,5,numeric,0);
					Unit_Price=Get_Unit_Price_from_display_buf();
					Set_Unit_Price_Display(Unit_Price);
				}	
				break;
			}
		}
		else if(keypre[1]&&!keypre[2]&&!keypre[3])//[SHIFT]+[PLU]
		{
			numeric=30;
			switch(keypre[0])
			{
			case PLU30:numeric++;
			case PLU29:numeric++;
			case PLU28:numeric++;
			case PLU27:numeric++;
			case PLU26:numeric++;
			case PLU25:numeric++;
			case PLU24:numeric++;
			case PLU23:numeric++;
			case PLU22:numeric++;
			case PLU21:numeric++;
			case PLU20:numeric++;
			case PLU19:numeric++;
			case PLU18:numeric++;
			case PLU17:numeric++;
			case PLU16:numeric++;
			case PLU15:numeric++;
			case PLU14:numeric++;
			case PLU13:numeric++;
			case PLU12:numeric++;
			case PLU11:numeric++;
			case PLU10:numeric++;
			case PLU9:numeric++;
			case PLU8:numeric++;
			case PLU7:numeric++;
			case PLU6:numeric++;
			case PLU5:numeric++;
			case PLU4:numeric++;
			case PLU3:numeric++;
			case PLU2:numeric++;
			case PLU1:numeric++;
				Beep();
				PLU_no=numeric;
				Set_PLU_no_Display(PLU_no);
				Load_PLU_to_LCD_Buf(PLU_no);
				state=PLU_EDIT;
				break;	
			}	
		}
		else if(!keypre[1]&&keypre[2]&&!keypre[3])//[MEM]+[NUM]
		{
			switch(keypre[0])
			{
			case K_9:numeric++;
			case K_8:numeric++;
			case K_7:numeric++;
			case K_6:numeric++;
			case K_5:numeric++;
			case K_4:numeric++;
			case K_3:numeric++;
			case K_2:numeric++;
			case K_1:numeric++;
			case K_0:
				Beep();
				if(!memory_key_hold)
				{
					memory_key_hold=TRUE;
					key_num=0;
				}
				if(memory_key_hold)
				{
					keybuf[key_num]=numeric;
					key_num++;
				}
				if(key_num==3)
				{
					key_num=0;
					PLU_no=keybuf[0]*100+keybuf[1]*10+keybuf[2];
					if(PLU_no>=61&&PLU_no<=300)
					{
						Set_PLU_no_Display(PLU_no);
						Load_PLU_to_LCD_Buf(PLU_no);
						state=PLU_EDIT;
					}	
				}
				break;		
			}
		}
		else if(keypre[3])
		{
			Beep();
			unit_price_entered=FALSE;
			mode=Sales_mode;
		}
		keydone=TRUE;
	}
}

VOID PLU_Setup()
{
	ET1=0;
	key_num=0;
	PLU_no=1;
	Set_PLU_no_Display(PLU_no);
	Load_PLU_to_LCD_Buf(PLU_no);
	Cls_Icon_Buf();
	Set_Lcd3_Buf(0,0,7);
	state=PLU_EDIT;
	ET1=1;
	while(mode==PLU_Setup_mode)
	{
		PLU_Setup_Key_Processing();
		if(half_sec)
		{
			if(state==PLU_EDIT)
			{
				point2_on=~point2_on;
			}
			half_sec=FALSE;
			Display();			
		}	
	}
}
/**********************************
********Time Setup mode************
**********************************/
VOID Time_Setup_Key_Processing()
{
	if(keyprocess)
	{
		keydone=FALSE;
		keyprocess=FALSE;
		numeric=0;
		if(!keypre[1]&&!keypre[2]&&!keypre[3])
		{
			switch(keypre[0])
			{
			case K_ENTER:
				Beep();
				if(Clock_Set_Save())
				{
					Clock_Display_Update();
					state++;
					if(state>EDIT_SECOND)
						state=EDIT_YEAR;
					high_digit=TRUE;
				}	
				break;
			case K_CLEAR:
				Beep();
				switch(state)
				{
				case EDIT_YEAR:lcd3_buf[5]='0';lcd3_buf[4]='0';break;
				case EDIT_MONTH:lcd3_buf[3]='0';lcd3_buf[2]='0';break;
				case EDIT_DAY:lcd3_buf[1]='0';lcd3_buf[0]='0';break;
				case EDIT_HOUR:lcd2_buf[5]='0';lcd2_buf[4]='0';break;
				case EDIT_MINUTE:lcd2_buf[3]='0';lcd2_buf[2]='0';break;
				case EDIT_SECOND:lcd2_buf[1]='0';lcd2_buf[0]='0';break;
				}
				break;
			case K_9:numeric++;
			case K_8:numeric++;
			case K_7:numeric++;
			case K_6:numeric++;
			case K_5:numeric++;
			case K_4:numeric++;
			case K_3:numeric++;
			case K_2:numeric++;
			case K_1:numeric++;
			case K_0:numeric+='0';
				Beep();
				if(high_digit)
				{
					high_digit=FALSE;
					switch(state)
					{
					case EDIT_YEAR:lcd3_buf[5]=numeric;break;
					case EDIT_MONTH:lcd3_buf[3]=numeric;break;
					case EDIT_DAY:lcd3_buf[1]=numeric;break;
					case EDIT_HOUR:lcd2_buf[5]=numeric;break;
					case EDIT_MINUTE:lcd2_buf[3]=numeric;break;
					case EDIT_SECOND:lcd2_buf[1]=numeric;break;
					}
				}
				else
				{
					high_digit=TRUE;
					switch(state)
					{
					case EDIT_YEAR:lcd3_buf[4]=numeric;break;
					case EDIT_MONTH:lcd3_buf[2]=numeric;break;
					case EDIT_DAY:lcd3_buf[0]=numeric;break;
					case EDIT_HOUR:lcd2_buf[4]=numeric;break;
					case EDIT_MINUTE:lcd2_buf[2]=numeric;break;
					case EDIT_SECOND:lcd2_buf[0]=numeric;break;
					}
				}
				break;
			}
		}
		else if(keypre[3])
		{
			Beep();
			mode=Sales_mode;
		}
		keydone=TRUE;
	}
}

VOID Time_Setup()
{
	ET1=0;
	high_digit=TRUE;
	state=EDIT_YEAR;
	Cls_Icon_Buf();
	Set_Lcd1_Buf('C',4,1);
	Set_Lcd1_Buf('L',3,1);
	Set_Lcd1_Buf('0',2,1);
	Set_Lcd1_Buf('C',1,1);
	Set_Lcd1_Buf('H',0,1);
	Clock_Display_Update();
	ET1=1;
	while(mode==Time_Setup_mode)
	{
		Time_Setup_Key_Processing();
		if(half_sec)
		{
			half_sec=FALSE;
			Clock_Display();			
		}
	}
}
/**********************************
********Beep_and_Light mode************
**********************************/
VOID Beep_and_Light_Setup_Key_Processing()
{
	BYTE Option_buf;
	if(keyprocess)
	{
		keydone=FALSE;
		keyprocess=FALSE;
		if(!keypre[1]&&!keypre[2]&&!keypre[3])
		{
			switch(keypre[0])
			{
			case K_ENTER:
				switch(state)
				{
				case SET_BEEP:
					Beep_on=~Beep_on;
					if(Beep_on)
					{
						Read_Option_Param(&Option_buf);
						Option_buf|=0x01;
					}
					else
					{	
						Read_Option_Param(&Option_buf);
						Option_buf&=0xfe;
					}
					break;
				case SET_LIGHT:
					Light_on=~Light_on;
					if(Light_on)
					{
						Read_Option_Param(&Option_buf);
						Option_buf|=0x10;
						LIGHT=FALSE;
					}
					else
					{	
						Read_Option_Param(&Option_buf);
						Option_buf&=0xef;
						LIGHT=TRUE;
					}
					break;
				}
				Beep();
				Save_Option_Param(&Option_buf);
				break;
			case K_ADD:
				Beep();
				//if(Ver_flag==FOOKTIN)
					state=SET_LIGHT;
				break;
			case K_SUB:
				Beep();
				//if(Ver_flag==FOOKTIN)
					state=SET_BEEP;
				break;
			}
		}
		else if(keypre[3])
		{
			Beep();
			mode=Sales_mode;
		}
		keydone=TRUE;
	}
}

VOID Beep_and_Light_Setup()
{
	ET1=0;
	state=SET_BEEP;
	Cls_Icon_Buf();
	Set_Lcd3_Buf(0,0,7);
	ET1=1;
	while(mode==Beep_and_Light_Setup_mode)
	{
		Beep_and_Light_Setup_Key_Processing();
		switch(state)
		{
		case SET_BEEP:	
			Set_Lcd1_Buf(0,4,1);
			Set_Lcd1_Buf('b',3,1);
			Set_Lcd1_Buf('E',2,1);
			Set_Lcd1_Buf('E',1,1);
			Set_Lcd1_Buf('P',0,1);
			if(Beep_on)
			{
				Set_BEEP_Icon();
				Set_Lcd2_Buf(0,2,5);
				Set_Lcd2_Buf('0',1,1);
				Set_Lcd2_Buf('n',0,1);	
			}
			else
			{
				Cls_BEEP_Icon();
				Set_Lcd2_Buf(0,3,4);
				Set_Lcd2_Buf('0',2,1);
				Set_Lcd2_Buf('F',1,1);
				Set_Lcd2_Buf('F',0,1);
			}
			break;
		case SET_LIGHT:
			Set_Lcd1_Buf('L',4,1);
			Set_Lcd1_Buf('1',3,1);
			Set_Lcd1_Buf('9',2,1);
			Set_Lcd1_Buf('h',1,1);
			Set_Lcd1_Buf('t',0,1);
			if(Light_on)
			{
				Set_Lcd2_Buf(0,2,5);

⌨️ 快捷键说明

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