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 + -
显示快捷键?