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

📄 fun.bak

📁 2008年山东省大学生电子设计大赛 c题 多功能电子计价秤 单片机用的 c8051f005
💻 BAK
字号:
#include "include.h"

struct goods pre_set_goods[10];	//十个预置货物

/*------------------------------
显示预置值清单 10个 分3页
按下相应按键返回预置单价
--------------------------------*/
uchar get_pre_num()
{
	uchar i,x=0,key;
	for(;;)
	{	
		key=0xff;
		lcd_clr();
		for(i=0;i<4;i++)
		{
			lcd_display_one_num(0,i*2,i+x);
			lcd_display_uint(16,i*2,(uint)pre_set_goods[i+x].name);
			lcd_display_float(48,i*2,pre_set_goods[i+x].price);
		}
		
		while(key==0xff)
			key=scan_key();
		if(key==0x0f&x<6)							
		{
			x++;
		}
		else if(key==0x0e&x>0)						
		{
			x--;
		}
		else if(key<=10)
		{
			lcd_clr();
			return key;
		}
	 }
}

/*------------------------------
显示预置值清单 10个 分3页
按下相应按键修改预置单价
--------------------------------*/
void set_pre_price()
{
	uchar list_num;
	uchar i,x=0,key;
	for(;;)
	{	
		key=0xff;
		lcd_clr();
		for(i=0;i<4;i++)
		{
			lcd_display_one_num(0,i*2,i+x);
			lcd_display_uint(16,i*2,(uint)pre_set_goods[i+x].name);
			lcd_display_float(48,i*2,pre_set_goods[i+x].price);
		}
		
		while(key==0xff)
			key=scan_key();
		if(key==0x0f&x<6)							
		{
			x++;
		}
		else if(key==0x0e&x>0)						
		{
			x--;
		}
		else if(key<=10)
		{	
			lcd_clr();
			pre_set_goods[key].name=(uchar)input_float(0,0);
			pre_set_goods[key].price=input_float(0,2);
		}
		else if(key==0x0b)
		{
			list_num=flash_read_list_num();
			flash_clr(0x8000);								//清除FLASH的0x8000
			flash_wr(pre_set_goods,list_num);				//将数据存入FLASH
			break;
		}
	 }

}


/*-----------------------------------
查看历史清单
list_num:当前清单ID
-------------------------------------*/
uchar show_list(uchar list_num)
{
	uchar key=0xff;
	struct list code *add;
	if(list_num==0)
		list_num=99;
	else list_num--;
	lcd_display_list_head();
	for(;;)
	{
		key=0xff;
		add=(struct list code *)(0x4c00+list_num*128);
		lcd_display_time(16,0,add->year);
		lcd_display_time(48,0,add->month);
		lcd_display_time(80,0,add->day);
		lcd_display_time(0,2,add->hour);
		lcd_display_time(32,2,add->minute);
		lcd_clr_page(4,40,56);
		lcd_display_uint(32,4,(uint)(add->sales));
		lcd_clr_page(6,32,120);
		lcd_display_float(32,6,add->sum_price);
		lcd_display_uint(80,4,(uint)(add->list_num));				//清单编号 测试用
		lcd_display_uint(80,6,list_num);							//正确清单编号 测试用
		while(key==0xff)
			key=scan_key();
		if(key==0x0f)					//切换下张清单				
		{
			if(list_num==99)
				list_num=0;
			else list_num++;
		}
		else if(key==0x0e)				//切换上张清单		
		{
			if(list_num==0)
				list_num=99;
			else list_num--;
		}
		else if(key==0x0c)				//退出清单查看
		{
			lcd_clr();
			return 0;
		}
		else if(key==0xd)				//查看清单明细
		{		
			show_thing(add->buy);
			lcd_display_list_head();
		}
	}
}

uchar show_thing(struct thing buy[])
{	
	uchar key;
	uchar thing_num=0;
	lcd_display_thing();
	for(;;)
	{
		key=0xff;
		lcd_display_uint(32,0,(uint)(buy[thing_num].name));
		lcd_display_float(32,2,buy[thing_num].unit_price);
		lcd_display_float(32,4,buy[thing_num].weight);
		lcd_display_float(32,6,buy[thing_num].unit_price*buy[thing_num].weight);
		while(key==0xff)
			key=scan_key();
		if(key==0x0f)					//切换下一货物				
		{
			if(thing_num==11&buy[0].name!=0xff)
				thing_num=0;
			else if(buy[thing_num+1].name!=0xff)
		 		thing_num++;
		}
		else if(key==0x0e)				//切换上一货物		
		{
			if(thing_num==0&buy[11].name!=0xff)
				thing_num=11;
			else if(buy[thing_num-1].name!=0xff)
				thing_num--;
		}
		else if(key==0x0c)				//退出清单查看
		{
			lcd_clr();
			return 0;
		}
	}
}

void print_list(struct list list1)
{
	uchar i;
	TI=1;
	printf("\x18\x1c\x26 ");		//清除打印机缓存 进入中文模式
	TI=1;
//	printf("%buabc%bu\n",list1.year+2000,list1.minute);
	printf("%.2d年%d月%d日\n ",(int)list1.year,(int)list1.month,(int)list1.day);
	TI=1;
	printf("%.2d时%d分\n ",(int)list1.hour,(int)list1.minute);
	TI=1;
	printf("总额:%.2f元\n ",list1.sum_price);
	TI=1;
	printf("%d号销售员\n ",(int)list1.sales);

	for(i=0;(list1.buy[i].name!=0xff)&(i<12);i++)
	{	
		TI=1;
		printf("\x1c\x2e --------------\n ");
		TI=1;
		printf("\x1c\x26商品编号:%d\n ",(int)list1.buy[i].name);
		TI=1;
		printf("单价:%.2f元\n ",list1.buy[i].unit_price);
		TI=1;
		printf("重量:%.3fKg\n ",list1.buy[i].weight);
		TI=1;
		printf("金额:%.2f\n ",(list1.buy[i].unit_price)*(list1.buy[i].weight));
	}
	TI=1;
	printf("\x1c\x2e --------------\n ");

}

⌨️ 快捷键说明

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