📄 main.c
字号:
Set_Lcd2_Buf('0',1,1);
Set_Lcd2_Buf('n',0,1);
}
else
{
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;
}
if(half_sec)
{
half_sec=FALSE;
Display();
}
}
}
/**********************************
********Calculator mode************
**********************************/
VOID Calculator()
{
INT8 data i,pos;
FLOAT temp;
BYTE ch,Char_buf[7]={0,'L','U','C','L','A','C'};
BYTE number[7];
ET1=0;
pos=0;
lastop=0;
Last_value=0;
Current_value=0;
for(i=0;i<7;i++)
number[i]=0;
for(i=0;i<5;i++)
Set_Lcd1_Buf(Char_buf[i+1],i,1);
Cls_Icon_Buf();
Set_Lcd2_Buf(0,0,7);
Set_Lcd3_Buf(0,1,6);
Set_Lcd2_Buf('0',1,1);
Set_Lcd3_Buf('0',0,1);
ET1=1;
while(mode==Calculator_mode)
{
if(keyprocess)
{
keydone=FALSE;
keyprocess=FALSE;
numeric=0;
if(!keypre[1]&&!keypre[2]&&!keypre[3])
{
if(keypre[0]==K_ADD||keypre[0]==K_SUB||keypre[0]==K_MUL||keypre[0]==K_DIV||keypre[0]==K_ENTER)
{
Beep();
if(pos!=0)
{
temp=atof(number);
if(lastop==0)
Last_value=temp;
else
Current_value=temp;
}
pos=0;
if(lastop!=0)
Calculator_Operate(lastop);
if(keypre[0]!=K_ENTER)
lastop=keypre[0];
else
lastop=0;
}
switch(keypre[0])
{
case K_CLEAR:
Beep();
pos=0;
lastop=0;
Last_value=0;
Current_value=0;
Set_Lcd2_Buf(0,0,7);
Set_Lcd3_Buf(0,1,6);
Set_Lcd2_Buf('0',1,1);
Set_Lcd3_Buf('0',0,1);
for(i=0;i<7;i++)
number[i]=0;
break;
case K_00:
Beep();
numeric='0';
if(pos<7&&pos!=0)
{
if(pos<6||point2_on)
{
Lcd_Buf_Left_Shift(lcd2_buf,6,numeric,1);
number[pos++]=numeric;
}
if(point2_on)
point2_pos++;
}
if(pos<7&&pos!=0)
{
if(pos<6||point2_on)
{
Lcd_Buf_Left_Shift(lcd2_buf,6,numeric,1);
number[pos++]=numeric;
}
if(point2_on)
point2_pos++;
}
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(pos<7)
{
if(pos==0)
{
if(lastop==0)
{
Last_value=0;
Current_value=0;
Set_Lcd3_Buf(0,1,6);
Set_Lcd3_Buf('0',0,1);
}
Set_Lcd2_Buf(0,0,7);
lcd2_buf[1]=numeric;
for(i=0;i<7;i++)
number[i]=0;
if(point2_on||numeric!='0')
number[pos++]=numeric;
}
else if(pos!=0)
{
if(pos<6||point2_on)
{
Lcd_Buf_Left_Shift(lcd2_buf,6,numeric,1);
number[pos++]=numeric;
}
if(point2_on)
point2_pos++;
}
}
break;
}
}
else if(keypre[1])
{
Beep();
if(!point2_on)
{
point2_on=TRUE;
point2_pos=1;
if(pos==0)
{
number[pos++]='0';
number[pos++]='.';
}
else
number[pos++]='.';
}
}
else if(keypre[3])
{
Beep();
mode=Sales_mode;
}
keydone=TRUE;
}
if(half_sec)
{
half_sec=FALSE;
for(i=0;i<5;i++)
Set_Lcd1_Buf(Char_buf[i+1],i,1);
ch=Char_buf[6];
for(i=6;i>0;i--)
Char_buf[i]=Char_buf[i-1];
Char_buf[0]=ch;
Display();
}
}
}
/**********************************
********Reports mode***************
**********************************/
VOID Reports_Key_Processing()
{
if(keyprocess)
{
keydone=FALSE;
keyprocess=FALSE;
numeric=0;
if(!keypre[1]&&!keypre[2]&&!keypre[3])
{
switch(keypre[0])
{
case K_ADD:
Beep();
switch(menu_item)
{
case MENU_1:menu_item++;Set_Lcd3_Buf(0,0,7);break;
case MENU_1_1:menu_item++;Set_Lcd3_Buf(0,0,7);break;
case MENU_1_2:menu_item++;Set_Lcd3_Buf(0,0,7);break;
case MENU_1_2_1:menu_item++;Set_Lcd3_Buf(0,0,7);break;
case MENU_1_2_2:break;
case MENU_1_2_2_0:break;
case MENU_1_3:menu_item++;Set_Lcd3_Buf(0,0,7);break;
case MENU_1_4:break;
case MENU_2:menu_item++;Set_Lcd3_Buf(0,0,7);break;
case MENU_2_1:menu_item++;Set_Lcd3_Buf(0,0,7);break;
case MENU_2_2:menu_item++;Set_Lcd3_Buf(0,0,7);break;
case MENU_2_2_1:menu_item++;Set_Lcd3_Buf(0,0,7);break;
case MENU_2_2_2:break;
case MENU_2_2_2_0:break;
case MENU_2_3:break;
case MENU_3:break;
case MENU_3_1:menu_item++;Set_Lcd3_Buf(0,0,7);break;
case MENU_3_2:menu_item++;Set_Lcd3_Buf(0,0,7);break;
case MENU_3_2_1:menu_item++;Set_Lcd3_Buf(0,0,7);break;
case MENU_3_2_2:break;
case MENU_3_2_2_0:break;
case MENU_3_3:break;
}
break;
case K_SUB:
Beep();
menu_item--;
if(menu_item%10==0)
menu_item++;
else
Set_Lcd3_Buf(0,0,7);
break;
case K_ENTER:
Beep();
if(menu_item==MENU_1||menu_item==MENU_2||menu_item==MENU_3||menu_item==MENU_1_2||menu_item==MENU_2_2||menu_item==MENU_3_2||menu_item==MENU_1_2_2||menu_item==MENU_2_2_2||menu_item==MENU_3_2_2)
menu_item=menu_item*10+1;
else
{
switch(menu_item)
{
case MENU_1_1:
ET1=0;
report_type=TOTAL_ALL_MONEY;
Set_Total_Price_Display(Report_Total());
ET1=1;
break;
case MENU_1_2_1:
ET1=0;
report_type=TOTAL_ALL_PLU_MONEY;
Set_Total_Price_Display(Report_Total());
ET1=1;
break;
case MENU_1_2_2_0:
ET1=0;
PLU_no=Get_PLU_no_from_display_buf();
if(PLU_no==0)
{
Set_Lcd3_Buf(0,0,7);
ET1=1;
break;
}
report_type=TOTAL_SEL_PLU_MONEY;
Set_Total_Price_Display(Report_Total());
ET1=1;
break;
case MENU_1_3:
ET1=0;
report_type=TOTAL_ALL_MANUL_MONEY;
Set_Total_Price_Display(Report_Total());
ET1=1;
break;
case MENU_1_4:
ET1=0;
report_type=TOTAL_ALL_NUMBER_MONEY;
Set_Total_Price_Display(Report_Total());
ET1=1;
break;
case MENU_2_1:
ET1=0;
report_type=TOTAL_ALL_WEIGHT;
Set_Total_Weight_Display(Report_Total());
ET1=1;
break;
case MENU_2_2_1:
ET1=0;
report_type=TOTAL_ALL_PLU_WEIGHT;
Set_Total_Weight_Display(Report_Total());
ET1=1;
break;
case MENU_2_2_2_0:
ET1=0;
PLU_no=Get_PLU_no_from_display_buf();
if(PLU_no==0)
{
Set_Lcd3_Buf(0,0,7);
ET1=1;
break;
}
report_type=TOTAL_SEL_PLU_WEIGHT;
Set_Total_Weight_Display(Report_Total());
ET1=1;
break;
case MENU_2_3:
ET1=0;
report_type=TOTAL_ALL_MANUL_WEIGHT;
Set_Total_Weight_Display(Report_Total());
ET1=1;
break;
case MENU_3_1:
ET1=0;
report_type=TOTAL_ALL_NUMBER;
Set_Total_Number_Display(Report_Total());
ET1=1;
break;
case MENU_3_2_1:
ET1=0;
report_type=TOTAL_ALL_PLU_NUMBER;
Set_Total_Number_Display(Report_Total());
ET1=1;
break;
case MENU_3_2_2_0:
ET1=0;
PLU_no=Get_PLU_no_from_display_buf();
if(PLU_no==0)
{
Set_Lcd3_Buf(0,0,7);
ET1=1;
break;
}
report_type=TOTAL_SEL_PLU_NUMBER;
Set_Total_Number_Display(Report_Total());
ET1=1;
break;
case MENU_3_3:
ET1=0;
report_type=TOTAL_ALL_MANUL_NUMBER;
Set_Total_Number_Display(Report_Total());
ET1=1;
break;
}
}
break;
case K_CLEAR:
Beep();
Set_Lcd3_Buf(0,0,7);
menu_item=MENU_1;
report_type=0;
PLU_no=0;
break;
case K_00:
Beep();
numeric='0';
if(menu_item==MENU_1_2_2_0||menu_item==MENU_2_2_2_0||menu_item==MENU_3_2_2_0)
{
Lcd_Buf_Left_Shift(lcd2_buf,2,numeric,0);
Lcd_Buf_Left_Shift(lcd2_buf,2,numeric,0);
PLU_no=Get_PLU_no_from_display_buf();
}
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(menu_item==MENU_1_2_2_0||menu_item==MENU_2_2_2_0||menu_item==MENU_3_2_2_0)
{
Lcd_Buf_Left_Shift(lcd2_buf,2,numeric,0);
PLU_no=Get_PLU_no_from_display_buf();
}
break;
}
}
else if(keypre[1])
{
if(keypre[0]==K_SUB)
{
Beep();
if(menu_item>10)
{
menu_item=menu_item/10;
Set_Lcd3_Buf(0,0,7);
PLU_no=0;
}
}
}
else if(keypre[3])
{
Beep();
mode=Sales_mode;
}
keydone=TRUE;
}
}
VOID Reports()
{
INT8 data i;
BYTE ch,Char_buf[7]={0,'t','r','o','P','E','r'};
ET1=0;
PLU_no=0;
report_type=0;
menu_item=MENU_1;
Cls_Icon_Buf();
Set_Lcd3_Buf(0,0,7);
for(i=0;i<5;i++)
Set_Lcd1_Buf(Char_buf[i+1],i,1);
ET1=1;
while(mode==Reports_mode)
{
Reports_Key_Processing();
switch(menu_item)
{
case MENU_1:
Set_TOTAL_P_On_Lcd2_Display();
break;
case MENU_1_1:
Set_TOTAL_On_Lcd2_Display();
break;
case MENU_1_2:
Set_PLUS_On_Lcd2_Display();
break;
case MENU_1_2_1:
Set_TOTAL_On_Lcd2_Display();
break;
case MENU_1_2_2:
Set_SEL_PLU_On_Lcd2_Display();
break;
case MENU_1_2_2_0:
Set_SEL_PLU_no_Display(PLU_no);
break;
case MENU_1_3:
Set_INPUT_PRICE_On_Lcd2_Display();
break;
case MENU_1_4:
Set_QUANTITY_On_Lcd2_Display();
break;
case MENU_2:
Set_TOTAL_U_On_Lcd2_Display();
break;
case MENU_2_1:
Set_TOTAL_On_Lcd2_Display();
break;
case MENU_2_2:
Set_PLUS_On_Lcd2_Display();
break;
case MENU_2_2_1:
Set_TOTAL_On_Lcd2_Display();
break;
case MENU_2_2_2:
Set_SEL_PLU_On_Lcd2_Display();
break;
case MENU_2_2_2_0:
Set_SEL_PLU_no_Display(PLU_no);
break;
case MENU_2_3:
Set_INPUT_PRICE_On_Lcd2_Display();
break;
case MENU_3:
Set_TOTAL_N_On_Lcd2_Display();
break;
case MENU_3_1:
Set_TOTAL_On_Lcd2_Display();
break;
case MENU_3_2:
Set_PLUS_On_Lcd2_Display();
break;
case MENU_3_2_1:
Set_TOTAL_On_Lcd2_Display();
break;
case MENU_3_2_2:
Set_SEL_PLU_On_Lcd2_Display();
break;
case MENU_3_2_2_0:
Set_SEL_PLU_no_Display(PLU_no);
break;
case MENU_3_3:
Set_INPUT_PRICE_On_Lcd2_Display();
break;
}
if(half_sec)
{
half_sec=FALSE;
for(i=0;i<5;i++)
Set_Lcd1_Buf(Char_buf[i+1],i,1);
ch=Char_buf[6];
for(i=6;i>0;i--)
Char_buf[i]=Char_buf[i-1];
Char_buf[0]=ch;
Display();
}
}
}
/**********************************
********Download mode**************
**********************************/
VOID Download()
{
INT16 data i;
Set_Lcd1_Buf(0,4,1);
Set_Lcd1_Buf('L',3,1);
Set_Lcd1_Buf('o',2,1);
Set_Lcd1_Buf('A',1,1);
Set_Lcd1_Buf('d',0,1);
Set_Lcd2_Buf(0,3,4);
Set_Lcd2_Buf('P',2,1);
Set_Lcd2_Buf('L',1,1);
Set_Lcd2_Buf('U',0,1);
Set_Lcd3_Buf(0,0,7);
Cls_Icon_Buf();
point3_pos=0;
Display();
if(Package_Header_Check())
{
ET0=0;
ET1=0;
for(i=1;i<=300;i++)
{
Receive_PLU_Data_from_PC();
Set_INPLUT_PLU_no_Display(i);
Display();
PLU_Save(i);
}
ET1=1;
ET0=1;
if(Package_EOF_Check())
{
Set_Lcd2_Buf(0,6,1);
Set_Lcd2_Buf('5',5,1);
Set_Lcd2_Buf('U',4,1);
Set_Lcd2_Buf('C',3,1);
Set_Lcd2_Buf('C',2,1);
Set_Lcd2_Buf('E',1,1);
Set_Lcd2_Buf('5',0,1);
Display();
Beep();
Wait_n_s(2);
mode=Power_down_mode;
}
else
{
Set_RS232_On_Lcd1_Display();
Display();
Wait_n_s(2);
unit_price_entered=FALSE;
mode=Sales_mode;
}
}
else
{
Set_RS232_On_Lcd1_Display();
Display();
Wait_n_s(2);
unit_price_entered=FALSE;
mode=Sales_mode;
}
}
/*********************************************/
// Author: henny
// Date: 2006/6/1
// Error Message:
// 1.init0: initial zero error
// 2.Err1: no stable
// 3.Over: over maximum capacity
// 4.rs232: communicate error
// 5.Adc: adc data error
// 6.EEP: eeprom data error
// 6.NOEEP: no eeprom
// 7.NOCAL: no calibrated
/*********************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -