display.c

来自「一个基于C51开发的计价秤」· C语言 代码 · 共 1,047 行 · 第 1/2 页

C
1,047
字号
	Set_Lcd3_Buf('r',0,1);
}

VOID Set_Ver_no_Display(WORD temp)
{
	lcd1_buf[0]=(temp&0xf)+'0';
	lcd1_buf[1]=(temp>>4&0xf)+'0';
	lcd1_buf[2]=(temp>>8&0xf)+'0';
	lcd1_buf[3]=(temp>>12)&0xf;
	lcd1_buf[4]=0;
	if(lcd1_buf[3]!=0)
		lcd1_buf[3]+='0';
	point1_on=TRUE;
	point1_pos=2;	
}

VOID Set_Cal_counts_Display(BYTE temp)
{
	lcd1_buf[0]=temp%10+'0';
	lcd1_buf[1]=temp/10;
	if(lcd1_buf[1]!=0)
		lcd1_buf[1]+='0';	
	lcd1_buf[4]='C';
	lcd1_buf[3]='A';
	lcd1_buf[2]='L';
	point1_on=TRUE;
	point1_pos=2;
}

VOID Set_PLU_no_Display(WORD temp)
{
	INT8 data i;
	WORD divisor=10000;
	BOOL zero_disp_off_flag=FALSE;
	for(i=4;i>=0;i--)
	{
		lcd1_buf[i]=temp/divisor;
		temp=temp-lcd1_buf[i]*divisor;
		divisor=divisor/10;
		if(lcd1_buf[i]!=0)
			zero_disp_off_flag=TRUE;
		if(zero_disp_off_flag)
			lcd1_buf[i]+='0';
		else if(i==0)
			lcd1_buf[i]+='0';		
	}
	if(lcd1_buf[2]!=0)
		lcd1_buf[3]='d';
	else if(lcd1_buf[1]!=0)
		lcd1_buf[2]='d';
	else
		lcd1_buf[1]='d';			
	point1_on=FALSE;	
}

VOID Set_SEL_PLU_no_Display(WORD temp)
{
	INT8 data i;
	WORD divisor=1000;
	BOOL zero_disp_off_flag=FALSE;
	for(i=3;i>=0;i--)
	{
		lcd2_buf[i]=temp/divisor;
		temp=temp-lcd2_buf[i]*divisor;
		divisor=divisor/10;
		if(lcd2_buf[i]!=0)
			zero_disp_off_flag=TRUE;
		if(zero_disp_off_flag)
			lcd2_buf[i]+='0';
		else if(i==0)
			lcd2_buf[i]+='0';		
	}
	if(lcd2_buf[2]!=0)
		lcd2_buf[3]='d';
	else if(lcd2_buf[1]!=0)
		lcd2_buf[2]='d';
	else
		lcd2_buf[1]='d';	
}

VOID Set_INPLUT_PLU_no_Display(WORD temp)
{
	INT8 data i;
	DWORD divisor=1000000;
	BOOL zero_disp_off_flag=FALSE;
	for(i=6;i>=0;i--)
	{
		lcd3_buf[i]=temp/divisor;
		temp=temp-lcd3_buf[i]*divisor;
		divisor=divisor/10;
		if(lcd3_buf[i]!=0)
			zero_disp_off_flag=TRUE;
		if(zero_disp_off_flag)
			lcd3_buf[i]+='0';
		else if(i==0)
			lcd3_buf[i]+='0';		
	}
	if(lcd3_buf[2]!=0)
		lcd3_buf[3]='d';
	else if(lcd3_buf[1]!=0)
		lcd3_buf[2]='d';
	else
		lcd3_buf[1]='d';
	point3_on=FALSE;	
}

VOID Set_Weight_Display(WORD temp)
{
	INT8 data i;
	WORD divisor=10000;
	BOOL zero_disp_off_flag=FALSE;
	for(i=4;i>=0;i--)
	{
		lcd1_buf[i]=temp/divisor;
		temp=temp-lcd1_buf[i]*divisor;
		divisor=divisor/10;
		if(lcd1_buf[i]!=0)
			zero_disp_off_flag=TRUE;
		if(zero_disp_off_flag)
			lcd1_buf[i]+='0';
		else if(i<4&&KG_flag)
			lcd1_buf[i]+='0';
		else if(!KG_flag&&i==0)
			lcd1_buf[i]+='0';	
	}
	if(KG_flag)
	{
		point1_on=TRUE;
		point1_pos=3;
	}
	else
		point1_on=FALSE;
	if(NEG_flag)
		Set_NEG_Icon();
	else
		Cls_NEG_Icon();				
}

VOID Set_Quantity_Display(WORD temp)
{
	INT8 data i;
	WORD divisor=10000;
	BOOL zero_disp_off_flag=FALSE;
	for(i=4;i>=0;i--)
	{
		lcd1_buf[i]=temp/divisor;
		temp=temp-lcd1_buf[i]*divisor;
		divisor=divisor/10;
		if(lcd1_buf[i]!=0)
			zero_disp_off_flag=TRUE;
		if(zero_disp_off_flag)
			lcd1_buf[i]+='0';
		else if(i==0)
			lcd1_buf[i]+='0';	
	}
	point1_on=FALSE;		
}

VOID Set_Cal_Weight_Display(WORD temp)
{
	INT8 data i;
	DWORD divisor=1000000;
	BOOL zero_disp_off_flag=FALSE;
	for(i=6;i>=0;i--)
	{
		lcd2_buf[i]=temp/divisor;
		temp=temp-lcd2_buf[i]*divisor;
		divisor=divisor/10;
		if(lcd2_buf[i]!=0)
			zero_disp_off_flag=TRUE;
		if(zero_disp_off_flag)
			lcd2_buf[i]+='0';
		else if(i<4&&KG_flag)
			lcd2_buf[i]+='0';
		else if(!KG_flag&&i==0)
			lcd2_buf[i]+='0';	
	}
	point2_on=TRUE;
	point2_pos=3;	
}

VOID Set_Sold_Quantity_Display(WORD temp)
{
	INT8 data i;
	WORD divisor=100;
	BOOL zero_disp_off_flag=FALSE;
	for(i=2;i>=0;i--)
	{
		lcd2_buf[i]=temp/divisor;
		temp=temp-lcd2_buf[i]*divisor;
		divisor=divisor/10;;
		if(lcd2_buf[i]!=0)
			zero_disp_off_flag=TRUE;
		if(zero_disp_off_flag)
			lcd2_buf[i]+='0';
		else if(i==0)
			lcd2_buf[i]+='0';		
	}
	Set_Lcd2_Buf('N',6,1);
	Set_Lcd2_Buf('0',5,1);
	Set_Lcd2_Buf(0,4,1);
	Set_Lcd2_Buf(0,3,1);
	point2_on=TRUE;
	point2_pos=5;	
}

VOID Set_Money_Display(DWORD temp)
{
	INT8 data i;
	DWORD divisor=1000000;
	BOOL zero_disp_off_flag=FALSE;
	for(i=6;i>=0;i--)
	{
		lcd2_buf[i]=temp/divisor;
		temp=temp-lcd2_buf[i]*divisor;
		divisor=divisor/10;	
		if(lcd2_buf[i]!=0)
			zero_disp_off_flag=TRUE;
		if(zero_disp_off_flag)
			lcd2_buf[i]+='0';
		else if(i<3)
			lcd2_buf[i]+='0';	
	}
	point2_on=TRUE;
	point2_pos=2;		
}

VOID Set_Unit_Price_Display(DWORD temp)
{
	INT8 data i;
	DWORD divisor=1000000;
	BOOL zero_disp_off_flag=FALSE;
	for(i=6;i>=0;i--)
	{
		lcd2_buf[i]=temp/divisor;
		temp=temp-lcd2_buf[i]*divisor;
		divisor=divisor/10;
		if(lcd2_buf[i]!=0)
			zero_disp_off_flag=TRUE;
		if(zero_disp_off_flag)
			lcd2_buf[i]+='0';
		else if(i<3)
			lcd2_buf[i]+='0';	
	}
	point2_on=TRUE;
	point2_pos=2;		
}

VOID Set_Sum_Price_Display(DWORD temp)
{
	INT8 data i;
	DWORD divisor=1000000;
	BOOL zero_disp_off_flag=FALSE;
	for(i=6;i>=0;i--)
	{
		lcd3_buf[i]=temp/divisor;
		temp=temp-lcd3_buf[i]*divisor;
		divisor=divisor/10;
		if(lcd3_buf[i]!=0)
			zero_disp_off_flag=TRUE;
		if(zero_disp_off_flag)
			lcd3_buf[i]+='0';
		else if(i<3)
			lcd3_buf[i]+='0';	
	}
	point3_on=TRUE;
	point3_pos=2;		
}

VOID Set_One_count_Display(BYTE temp)
{
	INT8 data i;
	BYTE divisor=100;
	BOOL zero_disp_off_flag=FALSE;
	for(i=2;i>=0;i--)
	{
		lcd3_buf[i]=temp/divisor;
		temp=temp-lcd3_buf[i]*divisor;
		divisor=divisor/10;	
		if(lcd3_buf[i]!=0)
			zero_disp_off_flag=TRUE;
		if(zero_disp_off_flag)
			lcd3_buf[i]+='0';
		else if(i==0)
			lcd3_buf[i]+='0';
	}
	point3_on=FALSE;		
}

VOID Set_Total_Price_Display(DWORD temp)
{
	INT8 data i;
	DWORD divisor=1000000;
	BOOL zero_disp_off_flag=FALSE;
	for(i=6;i>=0;i--)
	{
		lcd3_buf[i]=temp/divisor;
		temp=temp-lcd3_buf[i]*divisor;
		divisor=divisor/10;
		if(lcd3_buf[i]!=0)
			zero_disp_off_flag=TRUE;
		if(zero_disp_off_flag)
			lcd3_buf[i]+='0';
		else if(i<3)
			lcd3_buf[i]+='0';
	}
	point3_on=TRUE;
	point3_pos=2;		
}

VOID Set_Total_Weight_Display(DWORD temp)
{
	INT8 data i;
	DWORD divisor=1000000;
	BOOL zero_disp_off_flag=FALSE;
	for(i=6;i>=0;i--)
	{
		lcd3_buf[i]=temp/divisor;
		temp=temp-lcd3_buf[i]*divisor;
		divisor=divisor/10;
		if(lcd3_buf[i]!=0)
			zero_disp_off_flag=TRUE;
		if(zero_disp_off_flag)
			lcd3_buf[i]+='0';
		else if(i<4)
			lcd3_buf[i]+='0';
	}
	point3_on=TRUE;
	point3_pos=3;		
}

VOID Set_Total_Number_Display(DWORD temp)
{
	INT8 data i;
	DWORD divisor=1000000;
	BOOL zero_disp_off_flag=FALSE;
	for(i=6;i>=0;i--)
	{
		lcd3_buf[i]=temp/divisor;
		temp=temp-lcd3_buf[i]*divisor;
		divisor=divisor/10;
		if(lcd3_buf[i]!=0)
			zero_disp_off_flag=TRUE;
		if(zero_disp_off_flag)
			lcd3_buf[i]+='0';
		else if(i==0)
			lcd3_buf[i]+='0';
	}
	point3_on=FALSE;		
}

VOID Clock_Display_Update()
{
	lcd2_buf[0]=time.sec%10+'0';
	lcd2_buf[1]=time.sec/10+'0';
	lcd2_buf[2]=time.min%10+'0';
	lcd2_buf[3]=time.min/10+'0';
	lcd2_buf[4]=time.hour%10+'0';
	lcd2_buf[5]=time.hour/10+'0';
	point2_on=TRUE;
	point2_pos=0;
	lcd3_buf[0]=date.day%10+'0';
	lcd3_buf[1]=date.day/10+'0';
	lcd3_buf[2]=date.month%10+'0';
	lcd3_buf[3]=date.month/10+'0';
	lcd3_buf[4]=date.year%10+'0';
	lcd3_buf[5]=date.year/10+'0';
	point3_on=TRUE;
	point3_pos=0;
}

VOID Lcd_Buf_Left_Shift(BYTE *lcd_buf,BYTE n,BYTE num,BYTE pos)
{
	INT8 data i;
	for(i=n;i>pos;i--)
		lcd_buf[i]=lcd_buf[i-1];
	lcd_buf[pos]=num;
}

VOID Set_Calcul_Result_Display(BYTE *pt)
{
	INT8 data i;
	Set_Lcd3_Buf(0,0,7);
	for(i=0;i<9;i++)
	{
		if(*pt=='.')
		{
			point3_on=TRUE;
			point3_pos=0;				
		}
		else if(*pt=='-')
		{
			lcd3_buf[0]='-';
			i++;
		}
		else if(*pt==' ')
		{
			lcd3_buf[0]=0;
			i++;
		}			
		else if(*pt!=0)
		{
			Lcd_Buf_Left_Shift(lcd3_buf,6,*pt,0);
			if(point3_on)
				point3_pos++;
		}
		else
			break;		
		pt++;
	}
	if(point3_pos==0)
		point3_on=FALSE;
}

VOID Display_RAM_Update()
{
	INT8 data i;
	for(i=0;i<5;i++)
	{
		if(lcd1_buf[i]==0x00)
			LCD_RAM[i]=0x00;
		else
			LCD_RAM[i]=Get_Lcd_Segment(lcd1_buf[i]);
		if((i==point1_pos)&&point1_on)
			LCD_RAM[i]|=SEG_DP;
	}
	LCD_RAM[5]=icon_buf;
	for(i=0;i<7;i++)
	{
		if(lcd2_buf[i]==0x00)
			LCD_RAM[i+6]=0x00;
		else	
			LCD_RAM[i+6]=Get_Lcd_Segment(lcd2_buf[i]);
		if((i==point2_pos)&&point2_on)
			LCD_RAM[i+6]|=SEG_DP;
	}
	for(i=0;i<7;i++)
	{
		if(lcd3_buf[i]==0x00)
			LCD_RAM[i+13]=0x00;
		else	
			LCD_RAM[i+13]=Get_Lcd_Segment(lcd3_buf[i]);
		if((i==point3_pos)&&point3_on)
			LCD_RAM[i+13]|=SEG_DP;
	}	
}

VOID Display()
{
	/*INT8 data i;
	printf("Weight:");
	if((icon_buf&NEG_ICON)==NEG_ICON)
		printf("-");
	for(i=4;i>=0;i--)
	{
		if(lcd1_buf[i]!=0)
			printf("%c",lcd1_buf[i]);
		if((i==point1_pos)&&point1_on)
			printf(".");
	}
	printf("kg\n");
	printf("Unit_Price:");
	for(i=6;i>=0;i--)
	{
		if(lcd2_buf[i]!=0)
			printf("%c",lcd2_buf[i]);
		if((i==point2_pos)&&point2_on)
			printf(".");
	}
	printf("$\n");
	printf("Total_Price:");
	for(i=6;i>=0;i--)
	{
		if(lcd3_buf[i]!=0)
			printf("%c",lcd3_buf[i]);
		if((i==point3_pos)&&point3_on)
			printf(".");
	}
	printf("$\n");*/
	Display_RAM_Update();
	LCD_Display(0,0,LCD_RAM,20);
	LCD_Display(1,0,LCD_RAM,20);	
}

VOID Full_Display()
{
	INT8 data i;
	for(i=0;i<20;i++)
		LCD_RAM[i]=0xff;	
	LCD_Display(0,0,LCD_RAM,20);
	LCD_Display(1,0,LCD_RAM,20);
}

VOID Clock_Off_Display(BYTE *pt,BYTE pos,BYTE cnt)
{
	INT8 data i;
	for(i=0;i<cnt;i++)
	{
		*(pt+pos)=0x00;
		if((pos==6||pos==13)&&(i==0))
			*(pt+pos)|=SEG_DP;	
		pt++;
	}
}

VOID Clock_Display()
{
	Display_RAM_Update();
	if(!colon)
	{
		switch(state)
		{
		case EDIT_YEAR:Clock_Off_Display(LCD_RAM,17,2);break;
		case EDIT_MONTH:Clock_Off_Display(LCD_RAM,15,2);break;
		case EDIT_DAY:Clock_Off_Display(LCD_RAM,13,2);break;
		case EDIT_HOUR:Clock_Off_Display(LCD_RAM,10,2);break;
		case EDIT_MINUTE:Clock_Off_Display(LCD_RAM,8,2);break;
		case EDIT_SECOND:Clock_Off_Display(LCD_RAM,6,2);break;
		}
	}
	LCD_Display(0,0,LCD_RAM,20);
	LCD_Display(1,0,LCD_RAM,20);
}

⌨️ 快捷键说明

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