【单片机毕业设计】【mcuclub-dz-004】基于单片机的RFID餐饮自助控制系统设计

 最近设计了一个项目基于单片机的RFID餐饮自助控制系统设计,与大家分享一下:

一、基本介绍

项目名:基于单片机的RFID餐饮自助的设计
项目编号:mcuclub-dz-004
单片机:STC89C52
功能简介:
1、通过三个纽扣标签识别不同菜品和单价(青椒土豆丝 12元/千克 | 木须肉 20元/kg | 鱼香肉丝 22元/kg)
2、通过称重模块测量重量(*.*kg),按下“A”键确认称重完成,则显示该菜品价格(**.*元)
3、通过“B”键按下,显示总价(**.*元),并通过语音播报总价
4、通过LCD12864显示数据

二、51实物图

单片机型号:STC89C52

板子为绿色PCB板,两层板,厚度1.2,上下覆铜接地。元器件基本上为插针式,个别降压芯片会使用贴片式。

供电接口:TYPE-C

三、51仿真图

仿真软件版本:proteus8.9

电路连线方式:网络标号连线方式

注意:部分实物元器件仿真中没有,仿真中会用其他工作原理相似的元件代替,这样可能导致实物程序和仿真程序不一样

 

 四、原理图

软件版本:AD2013

电路连线方式:网络标号连线方式

注意:原理图只是画出了模块的引脚图,而并不是模块的内部结构原理图

 

 五、PCB图

由原理图导出,封装很大一部分都是作者自己绘制,不提供封装库,只提供连接好的源文件。中间有一个项目编号,隐藏在单片机底座下,插入单片机后不会看到。

两层板,上下覆铜接地。

 

六、系统框图

本设计以STC89C52单片机为核心控制器,加上其他的模块一起组成RFID刷卡的整个系统,其中包含中控部分、输入部分和输出部分。中控部分采用了STC89C52单片机,其主要作用是获取输入部分数据,经过内部处理,控制输出部分。输入由四部分组成,第一部分是RFID刷卡模块,通过该模块检测当前用户需要购买的商品;第二部分是称重模块,通过该模块可以检测当前顾客购买该商品的重量;第三部分是独立按键,通过独立按键完成称重和语音播报;第四部分是供电电路,给整个系统进行供电。输出由两部分组成,第一部分是LCD12864显示模块,通过该模块可以显示当前总重量、当前购买的物品、总价格等;第二部分是语音播报当前购买的总价格。

 七、软件设计流程

系统的主流程图如图4-2所示;在主程序中:首先对各个模块进行初始化,随后进入while主循环,在主循环中,首先进入第一个函数按键函数,该函数主要分为两部分,第一部分为调用按键扫描函数获取按键键值,第二部分通过键值进行相应的处理操作,比如切换界面、调整温度湿度阈值等;接着进入第二个函数监测函数,该函数主要通过温湿度检测模块检测当前的环境温度和湿度;之后进入第三个函数显示函数,该函数通过不同的显示标志位显示不同的界面,包括主界面显示当前的温度和湿度值,其他界面显示温度阈值、湿度阈值等;最后进入第四个函数处理函数,该函数主要判断当前温度和湿度是否在设置的阈值之内,如果温度不在阈值内,则进行制冷或加热,并且蜂鸣器进行报警处理;如果湿度不在阈值内,则进行加湿或者除湿,蜂鸣器进行报警处理。最后,通过一个延时函数和计数公式,限制各函数扫描时间

 

八、部分程序展示

软件版本:keil5

逻辑程序和驱动程序分开,分布于main.c和其他.c文件

*******显示函数
*****/
void Display_function(void)
{
	if(flag_display == 0)
	{
		flag_xss = 0;
		switch(flag_menu)																																//显示菜品名
		{
			case 0:
				LCD12864_Display_Hanzi(1,3,"  欢迎光临");			
			break;		
			
			case 1:
				LCD12864_Display_Hanzi(1,3,"青椒土豆丝");			
			break;
			
			case 2:
				LCD12864_Display_Hanzi(1,3,"  木须肉  ");		
			break;
			
			case 3:
				LCD12864_Display_Hanzi(1,3,"  鱼香肉丝");				
			break;
			
			default:			
			break;		
		}
		memset(display_buf,' ',16);	
		sprintf(display_buf,"单价:%d元/千克",(int)flag_price);															//显示单价
		LCD12864_Display_Hanzi(2,1,display_buf);
		memset(display_buf,' ',16);
		sprintf(display_buf,"重量:%ld.%ldkg  ",weight_value/1000,(weight_value%1000)/100);	//显示重量
		LCD12864_Display_Hanzi(3,1,display_buf);
		memset(display_buf,' ',16);			
		sprintf(display_buf,"价格:%02d.%d元   ",price/10,price%10);													//显示单次价格
		LCD12864_Display_Hanzi(4,1,display_buf);
	}
	else
	{
		if(flag_xss == 0)
		{
			flag_xss = 1;
			if(price_qjtds > 0)
			{
				flag_xs++;
				memset(display_buf,' ',16);			
				sprintf(display_buf,"土豆丝:%02d.%d元   ",price_qjtds/10,price_qjtds%10);				//显示青椒土豆丝价格
				LCD12864_Display_Hanzi(flag_xs,1,display_buf);	
			}	
			if(price_mxr > 0)
			{	
				flag_xs++;			
				memset(display_buf,' ',16);			
				sprintf(display_buf,"木须肉:%02d.%d元   ",price_mxr/10,price_mxr%10);						//显示木须肉价格
				LCD12864_Display_Hanzi(flag_xs,1,display_buf);
			}
			if(price_yxrs > 0)
			{		
				flag_xs++;			
				memset(display_buf,' ',16);			
				sprintf(display_buf,"鱼香肉丝:%02d.%d元   ",price_yxrs/10,price_yxrs%10);				//显示鱼香肉丝价格
				LCD12864_Display_Hanzi(flag_xs,1,display_buf);	
			}
		}
		flag_xs = 0;
		
		memset(display_buf,' ',16);	
		sprintf(display_buf,"总价:%02d.%d元    ",total_price/10,total_price%10);							//显示总价
		LCD12864_Display_Hanzi(4,1,display_buf);
	}
}
/****
*******处理函数
*****/
void Manage_function(void)
{	
	if(flag_5s)																																						//5s后回到点餐界面
	{	
		flag_price = 0;
		flag_5s = 0;
		flag_timer_begin = 0;
		flag_menu = 0;
		flag_display = 0;
		total_price = 0; 
		price_qjtds = 0;
		price_mxr = 0;
		price_yxrs = 0;
		flag_display = 0;
		LCD12864_Clean_All();						
	}
	
	if(weight_value <= 50)
	{
		price_value = 0;
		price = 0;
	}
	else
	{
		price_value = flag_price*(weight_value/100);																				//单次价格,角	
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

单片机俱乐部--官方

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值