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

📄 main.c

📁 一个基于C51开发的计价秤
💻 C
📖 第 1 页 / 共 4 页
字号:
			case PLU1:numeric++;
				Beep();
				PLU_no=numeric;
				Set_INPLUT_PLU_no_Display(PLU_no);
				Load_PLU_to_LCD_Buf(PLU_no);
				Display();
				Wait_n_s(1);
				unit_price_entered=TRUE;
				state=WEIGHING;
				sales_type=PW;
				break;
			case K_TARE:
				Beep();
				Tare_Operation_When_Tare_Key_Pressed();
				break;
			case K_ZERO:
				Beep();
				Zero_Setting_When_Zero_Key_Pressed();
				break;	
			case K_CLEAR:
				Beep();
				Unit_Price=0;
				unit_price_entered=FALSE;
				state=WEIGHING;
				Set_Unit_Price_Display(Unit_Price);
				break;
			case K_MUL:
				Beep();
				if(unit_price_entered)
				{
					unit_price_entered=FALSE;
					state=NON_WEIGHING;
					if(sales_type==PW)
						sales_type=PN;
					else if(sales_type==MW)
						sales_type=MN;
					Quantity=0;
					Set_Quantity_Display(Quantity);	
				}
				break;
			case K_ADD:
				Beep();
				if(Total_Price!=0&&STA_flag||(Total_Price!=0&&Quantity!=0))
				{
					op_status=ADD;
					mode=Total_mode;
				}
				break;
			case K_SUB:
				Beep();
				if(Ver_flag==FOOKTIN&&Sold_Quantity!=0)
					mode=Print_Cancel_mode;
				break;
			case K_TOTAL:
				Beep();
				if(Sold_Quantity!=0)
				{
					op_status=SUM;
					mode=Total_mode;
				}
				break;
			case K_ON_OFF:
				Beep();
				mode=Power_down_mode;
				break;	
			case K_00:
				Beep();
				numeric='0';					
				if(state==NON_WEIGHING)
				{
					Lcd_Buf_Left_Shift(lcd1_buf,4,numeric,0);
					Lcd_Buf_Left_Shift(lcd1_buf,4,numeric,0);
					Quantity=Get_Quantity_from_display_buf();
					Set_Quantity_Display(Quantity);
				}
				else if(state==WEIGHING)
				{
					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);
					unit_price_entered=TRUE;	
					state=WEIGHING;
					sales_type=MW;
				}
				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==NON_WEIGHING)
				{
					Lcd_Buf_Left_Shift(lcd1_buf,4,numeric,0);
					Quantity=Get_Quantity_from_display_buf();
					Set_Quantity_Display(Quantity);
				}
				else if(state==WEIGHING)
				{

					Lcd_Buf_Left_Shift(lcd2_buf,5,numeric,0);
					Unit_Price=Get_Unit_Price_from_display_buf();
					Set_Unit_Price_Display(Unit_Price);
					unit_price_entered=TRUE;	
					state=WEIGHING;
					sales_type=MW;		
				}
				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_INPLUT_PLU_no_Display(PLU_no);
				Load_PLU_to_LCD_Buf(PLU_no);
				Display();
				Wait_n_s(1);
				unit_price_entered=TRUE;
				state=WEIGHING;
				sales_type=PW;
				break;
			case K_MUL:
				Beep();
				Cal_flag=~Cal_flag;
				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_INPLUT_PLU_no_Display(PLU_no);
						Load_PLU_to_LCD_Buf(PLU_no);
						Display();
						Wait_n_s(1);
						unit_price_entered=TRUE;
						state=WEIGHING;
						sales_type=PW;
					}	
				}
				break;
			}
		}
		else if(keypre[3])
		{
			switch(keypre[0])
			{
			case K_MEMORY:
				Beep();
				mode=PLU_Setup_mode;
				break;
			case K_CLOCK:
				Beep();
				mode=Time_Setup_mode;
				break;
			case K_SUB:
				Beep();
				mode=Beep_and_Light_Setup_mode;
				break;
			case K_MUL:
				Beep();
				mode=Calculator_mode;
				break;
			case K_PRINT:
				Beep();
				mode=Reports_mode;
				break;
			case K_ADD:
				Beep();
				mode=Download_mode;
				break;
			}
		}
		keydone=TRUE;
	}
}

VOID Sales()
{
	FLOAT Kg_Weight;
	ET1=0;
	state=WEIGHING;
	sales_type=PW;
	key_num=0;
	if(!unit_price_entered)
	{
		Unit_Price=0;
		Total_Price=0;
		Set_Unit_Price_Display(Unit_Price);
		Set_Total_Price_Display(Total_Price);
	}
	else
		Set_Unit_Price_Display(Unit_Price);	
	ET1=1;
	while(mode==Sales_mode)
	{
		Sales_Key_Processing();
		Monitor_Weigh_Scale();
		if(state==WEIGHING)
		{
			
			if(Maximum_Capacity_Check())
			{
				Set_OVER_On_Lcd1_Display();
				Beep();
			}	
			else
			{
				Set_Weight_Display(Weight);
				Unit_Price=Get_Unit_Price_from_display_buf();
				Kg_Weight=Weight;
				Total_Price=Kg_Weight/100*Unit_Price;
				if(Total_Price%10>4)
					Total_Price=Total_Price/10+1;
				else
					Total_Price=Total_Price/10;
			}
		}
		else if(state==NON_WEIGHING)
		{
			Quantity=Get_Quantity_from_display_buf();
			Total_Price=Unit_Price*Quantity;
		}
		if(Total_Price>9999999)
			Set_OVER_On_Lcd3_Display();
		else	
			Set_Total_Price_Display(Total_Price);
		if(half_sec)
		{
			half_sec=FALSE;
			Display();			
		}
	}	
}

/**********************************
********Print Cancel mode**********
**********************************/
VOID Print_Cancel()
{
	INT16 temp_Count;
	INT16 Temp_Sold_Quantity;
	INT16 Temp_Record_Counts;
	ET1=0;
	Timeout2_enable=TRUE;
	Timeout2=5;
	Temp_Sold_Quantity=Sold_Quantity;
	temp_Count=Temp_Sold_Quantity;
	Temp_Record_Counts=Record_Counts;
	while(temp_Count--)
	{
		if(Load_Record_to_LCD_Buf(Temp_Record_Counts--))
		{
			Cls_Icon_Buf();
			break;
		}		
	}
	Temp_Sold_Quantity--;
	temp_Count=Temp_Sold_Quantity;
	ET1=1;
	while(mode==Print_Cancel_mode)
	{
		if(Timeout2<=0)
		{
			mode=Sales_mode;
			Timeout2_enable=FALSE;
			unit_price_entered=FALSE;
		}	
		if(keyprocess)
		{
			keydone=FALSE;
			keyprocess=FALSE;
			if(!keypre[1]&&!keypre[2]&&!keypre[3])
			{
				switch(keypre[0])
				{
				case K_SUB:
					Beep();
					Timeout2=5;
					if(Temp_Sold_Quantity<1)
					{
						Temp_Sold_Quantity=Sold_Quantity;
						temp_Count=Temp_Sold_Quantity;
						Temp_Record_Counts=Record_Counts;			
					}
					while(temp_Count--)
					{
						if(Load_Record_to_LCD_Buf(Temp_Record_Counts--))
							break;		
					}
					Temp_Sold_Quantity--;
					temp_Count=Temp_Sold_Quantity;
					break;
				case K_CLEAR:
					Beep();
					Sold_Quantity--;
					Sum_Price-=Total_Price;
					Print_Cancel_Record(Temp_Record_Counts+1);
					sales_type=DELE;
					Record_Save(Temp_Record_Counts+1);
					mode=Sales_mode;
					Timeout2_enable=FALSE;
					unit_price_entered=FALSE;
					break;
				}
			}
			else if(keypre[3])
			{
				Beep();
				unit_price_entered=FALSE;
				mode=Sales_mode;
			}
			keydone=TRUE;
		}
		if(half_sec)
		{
			half_sec=FALSE;
			Display();			
		}
	}
}

/**********************************
********Total mode*****************
**********************************/
VOID Total_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();
				if(op_status==ADD)
				{
					PLU_no=numeric;
					Load_PLU_to_LCD_Buf(PLU_no);
					unit_price_entered=TRUE;
					mode=Sales_mode;
				}
				break;
			case K_SUB:
				Beep();
				if(Ver_flag==FOOKTIN&&Sold_Quantity!=0)
					mode=Print_Cancel_mode;
				break;
			case K_CLEAR:
				Beep();
				switch(op_status)
				{
				case ADD:
					mode=Sales_mode;
					unit_price_entered=FALSE;
					break;
				case SUM:
				case PAY:
					mode=Sales_mode;
					Sold_Quantity=0;
					Sum_Price=0;
					unit_price_entered=FALSE;
					break;
				}
				break;
			case K_PAYBACK:
				Beep();
				if(op_status==SUM||op_status==PAY)
					mode=Payback_mode;
				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:
				Beep();
				if(op_status==ADD)
				{
					Unit_Price=numeric;
					unit_price_entered=TRUE;
					mode=Sales_mode;
				}
				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();
				if(op_status==ADD)
				{
					PLU_no=numeric;
					Load_PLU_to_LCD_Buf(PLU_no);
					unit_price_entered=TRUE;
					mode=Sales_mode;
				}
				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(op_status==ADD&&PLU_no>=61&&PLU_no<=300)
					{
						Load_PLU_to_LCD_Buf(PLU_no);
						unit_price_entered=TRUE;
						mode=Sales_mode;
					}	
				}
				break;	
			}		
		}
		keydone=TRUE;
	}	
}

VOID Total()
{
	ET1=0;
	Set_Lcd1_Buf('t',4,1);
   	Set_Lcd1_Buf('o',3,1);

⌨️ 快捷键说明

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