📄 main.c
字号:
#include "include.h"
extern struct goods pre_set_goods[10]; //十个预置货物
extern unsigned int duanhaozub[32];
struct list list1;
uchar ad_tare_k;
float unit_price; //单价
float weight; //重量
float sum_price; //总价
float price; //价格
float tare; //皮重
uchar name; //商品代号
float m_tare=0;
void main()
{
float temp;
uchar key,list_num,thing_num=0,pre_num;
sys_init();
ad_tare_k=1; //上电自动采集AD初值
sum_price=0;
unit_price=0;
tare=0;
list1.buy[11].name=0xff; //将11号物品的名称设为ff作结束标志
flash_re(pre_set_goods); //读取10种预置商品
list_num=flash_read_list_num(); //读取当前清单ID
if(list_num>=100)list_num=0;
lcd_init();
uart_init();
lcd_clr();
for(;;)
{
lcd_display_face(); //显示主界面
lcd_clr_page(0,72,88);
lcd_display_yuan(32,0,unit_price); //显示单价
weight=convs_weight()-tare-m_tare; //测重量
lcd_clr_page(2,32,88);
lcd_display_float(32,2,(float)weight); //显示去皮后重量
price=unit_price*(weight); //计算价格
lcd_clr_page(4,72,88);
lcd_display_yuan(32,4,price); //显示价格在(32,4)
lcd_clr_page(6,72,88);
lcd_display_yuan(32,6,sum_price); //显示总价在(32,6)
key=scan_key(); //检测键盘
switch(key)
{
case 0x04: //如果按下4键 将当前重量设为皮重
if(tare==0)
tare=weight;
else
tare=0;
break;
case 0x05: //如果按下5键 累加总金额
sum_price+=price;
list1.sum_price+=price;
list1.buy[thing_num].name=name;
list1.buy[thing_num+1].name=0xff; //将下一个物品的名称设为ff作结束标志
list1.buy[thing_num].weight=weight;
list1.buy[thing_num].unit_price=unit_price;
thing_num++;
break;
case 0x06: //如果按下6键 累加清零
sum_price=0;break;
case 0x01: //如果按下1键 修改单价
unit_price=input_float(32,0);break;
case 0x02: //如果按下2键 选择预置商品
pre_num=get_pre_num();
unit_price=pre_set_goods[pre_num].price;
name=pre_set_goods[pre_num].name;
lcd_clr();
break;
case 0x03: //如果按下3键 修改预置单价
set_pre_price();
lcd_clr();
break;
case 0x07: //如果按下7键 结束交易 保存清单
list1.list_num=list_num;
lcd_clr();
temp=input_float(32,0); //输入销售员编号
while(temp>99) //如果店员号大于99
{
lcd_clr();
temp=input_float(32,0); //输入销售员编号
}
list1.sales=(uchar)temp;
list1.year=uc_R1302(0x8d);
list1.month=uc_R1302(0x89);
list1.day=uc_R1302(0x8b);
list1.hour=uc_R1302(0x85);
list1.minute=uc_R1302(0x83);
if(list_num%4==0)
flash_clr((uchar xdata *)(0x4c00+list_num*128)); //如果是扇区开始 清空此扇区
flash_save((struct list xdata *)(0x4c00+list_num*128),list1); //存储该清单
lcd_displa_shifoudayin(); //显示"是否打印清单?"
key=0xff;
while(key==0xff)
key=scan_key();
if(key==0x0b|key==0X0a)
print_list(list1);
flash_clr(0x8000); //清除FLASH的0x8000
flash_wr(pre_set_goods,list_num); //将预置商品数据和当前清单ID存入FLASH
thing_num=0;
list_num++;
if(list_num==100)
list_num=0;
list1.sum_price=0; //总金额数据清零
sum_price=0;
list1.buy[11].name=0xff; //将11号物品的名称设为ff作结束标志
lcd_clr();
break;
case 0x08: //如果按下8键 查看历史清单
show_list(list_num);
lcd_clr();
break;
case 0x09:
show_time();
lcd_clr();
break;
case 0x0a:
ad_tare_k=1; //采集ad初值标志
break;
case 0x00:
play(voice_yuan(0x0f,price));
play(voice_zhong(weight));
play(voice_yuan(0x10,sum_price));
break;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -