【单片机毕业设计】【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

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

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

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

五、系统框图

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

六、软件设计流程

七、部分程序展示
软件版本: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);                                                                                //单次价格,角    
    }
}

 

http://资料点击该链接到官网下载:www.mcubee.comicon-default.png?t=N7T8http://资料点击该链接到官网下载:www.mcubee.com 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

毕业季站主

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

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

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

打赏作者

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

抵扣说明:

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

余额充值