基于单片机餐厅呼叫控制系统仿真设计
文章目录
- 前言
- 资料获取
- 设计介绍
- 设计程序
- 具体实现截图
- 设计获取
前言
💗博主介绍:✌全网粉丝10W+,CSDN特邀作者、博客专家、CSDN新星计划导师,一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等单片机设计 主要对象是咱们电子相关专业的大学生,希望您们都共创辉煌!✌💗
👇🏻 精彩专栏 推荐订阅👇🏻
单片机设计精品实战案例✅
感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人
资料获取
文章底部名片,详细资料联系我。
设计介绍
基于单片机的餐厅呼叫控制系统仿真设计是一个综合性的工程,旨在通过融合单片机技术、呼叫控制原理以及系统仿真等多个领域的专业知识,提升餐厅的运营效率和顾客体验。以下是对该设计的一个详细介绍:
一、系统概述
基于单片机的餐厅呼叫控制系统主要由单片机作为控制核心,配合按键模块、显示模块、提示模块等硬件组件,实现呼叫请求的发起、接收、处理与反馈。顾客通过按键模块发起呼叫请求,单片机接收到请求后,通过显示模块展示呼叫信息,并利用提示模块通知服务员。服务员根据提示及时处理呼叫请求,从而完成整个呼叫服务流程。
设计程序
/****************************************************************************
******餐厅呼叫系统,数码管显示,无线遥控呼叫:1号房间0101、0102、0000********
****************************************************************************/
//头文件
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
#define WEI P2 //定义P2口和P0口
#define DUAN P0
//各无线模块输出定义引脚
sbit R1_01=P1^0;
sbit R1_02=P1^1;
sbit R1_00=P1^2;
sbit R2_01=P1^3;
sbit R2_02=P1^4;
sbit R2_00=P1^5;
sbit R3_01=P1^6;
sbit R3_02=P1^7;
sbit R3_00=P3^1;
//应答按键
sbit yingda=P3^7;
//蜂鸣器
sbit buzz =P3^6;
//数码管显示数组
uchar code tab_duan[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff}; //0-9共阳显示码
uchar code tab_wei[]={0x7f,0xdf,0xf7,0xfd};//数码管位选
uchar bdata tab[4];
uchar h,sec;//定义全局变量
uchar flag1,flag2,flag3,flag4;void display(); //声明显示函数
/****************************************************************************
******函数名称:delay(uint x)**********************************************
******作用:延时x ms函数*****************************************************
****************************************************************************/
void delay(uint x)
{uint i,j;for(i=0;i<x;i++)for(j=0;j<110;j++);
}
/****************************************************************************
******函数名称:KEY()******************************************************
******作用:扫描按键*********************************************************
****************************************************************************/
void KEY()
{if(R1_01==1) //当1餐桌1号请求1时{tab[1]=1; //请求编号置1flag1=1; //餐桌号置1while(R1_01) display(); //按键释放} if(R1_02==1) //一号餐桌有请求2时{tab[1]=2; //请求编号置2flag1=1; //餐桌号置1while(R1_02) display(); //按键释放} if(R1_00==1) //一号餐桌无请求时{tab[1]=0; //请求编号置0flag1=0; //餐桌编号置0while(R1_00) display(); //按键释放} if(R2_01==1) //当二号餐桌... ... 同上{tab[2]=1;flag2=1;while(R2_01) display();} if(R2_02==1){tab[2]=2;flag2=1;while(R2_02) display(); }if(R2_00==1){tab[2]=0;flag2=0;while(R2_00) display();} if(R3_01==1){tab[3]=1;flag3=1;while(R3_01) display(); }if(R3_02==1){tab[3]=2;flag3=1;while(R3_02) display(); }if(R3_00==1){tab[3]=0;flag3=0;while(R3_00) display();} if(yingda==0) //应答按键按下时,清零各餐桌呼叫{tab[1]=0; //餐桌请求清零flag1=0; //餐桌号清零tab[2]=0;flag2=0;tab[3]=0;flag3=0;while(!yingda) display(); //按键释放}
}
/****************************************************************************
******函数名称:display()**************************************************
******作用:根据呼叫状态显示不同状态*****************************************
****************************************************************************/
void display()
{WEI=tab_wei[0]; //打开第一位DUAN=tab_duan[0]; //送入第一位显示数据delay(1); //延时1msDUAN=tab_duan[10]; //清屏WEI=tab_wei[2]; //打开第二位DUAN=tab_duan[0]; //送入第二位数据delay(1); //延时1msDUAN=tab_duan[10]; //清屏 以下同理if(sec==1) //循环显示变量为1时{if(flag1==1) //如果一号餐桌有请求{ //显示一号餐桌的请求编号WEI=tab_wei[1];DUAN=tab_duan[flag1];delay(1);DUAN=tab_duan[10];WEI=tab_wei[3];DUAN=tab_duan[tab[1]];delay(1);DUAN=tab_duan[10]; } else //如果一号餐桌没有请求sec=2; //循环显示变量直接赋值为2,用于显示下个餐桌的请求}if(sec==2) //循环显示变量为2{if(flag2==1) //2号餐桌是否有请求{ //显示2号餐桌的请求WEI=tab_wei[1];DUAN=tab_duan[flag2+1];delay(1);DUAN=tab_duan[10];WEI=tab_wei[3];DUAN=tab_duan[tab[2]];delay(1);DUAN=tab_duan[10]; }else //没有请求sec=3; //循环显示变量直接赋值3,用于显示下个餐桌的请求}if(sec==3){if(flag3==1){WEI=tab_wei[1];DUAN=tab_duan[flag3+2];delay(1);DUAN=tab_duan[10];WEI=tab_wei[3];DUAN=tab_duan[tab[3]];delay(1);DUAN=tab_duan[10]; }elsesec=1;}if(flag1==0&&flag2==0&&flag3==0) //没有呼叫时,数码管显示0000{WEI=tab_wei[1];DUAN=tab_duan[0];delay(1);DUAN=tab_duan[10];WEI=tab_wei[3];DUAN=tab_duan[0];delay(1);DUAN=tab_duan[10];}
}
/****************************************************************************
******函数名称:init()*****************************************************
******作用:定时的初始化函数*************************************************
****************************************************************************/
void init()
{TMOD=0x01; //工作方式TH0=0x3c; //赋初值TL0=0xb0;EA=1; //打开中断总开关ET0=1; //打开中断允许开关TR0=1; //打开定时器开关
}
/****************************************************************************
******函数名称:main()*****************************************************
******作用:程序的入口,每个工程文件中都要有一个main函数*********************
****************************************************************************/
void main()
{init(); //调用初始化函数R1_01=0;R1_02=0;R1_00=0;R2_01=0;R2_02=0;R2_00=0;R3_01=0;R3_02=0;R3_00=0; //将各无线模块输入引脚置低电平,用来采集高电平信号while(1) //进入循环{KEY(); //调用按键函数display(); //调用显示函数}
}
/****************************************************************************
******函数名称:time0()******************************************************
******作用:定时器T0的服务函数,定时器中断进入时需要完成的任务***************
****************************************************************************/
void time0() interrupt 1
{uchar m;TH0=0x3c;TL0=0xb0; //重新赋初值m++;if(m%5==0&&(tab[1]!=0||tab[2]!=0||tab[3]!=0))buzz=!buzz; //有呼叫时蜂鸣器闪烁else if(tab[1]==0&&tab[2]==0&&tab[3]==0)buzz=1; //无呼叫时关闭蜂鸣器if(m==40) {m=0;sec++;if(sec==4)sec=1;}
}
具体实现截图
设计获取
文章下方名片联系我即可~
精彩专栏推荐订阅:在下方专栏👇🏻
毕业设计精品实战案例
收藏关注不迷路!!
🌟文末获取设计🌟
相关文章:
基于单片机餐厅呼叫控制系统仿真设计
文章目录 前言资料获取设计介绍设计程序具体实现截图设计获取 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师,一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等单片机设计 主要对象是咱们…...
详细分析Mysql中的定时任务(Event事件)
目录 前言1. 基本知识2. Event事件3. Demo 前言 基本的知识推荐阅读: 详细分析Mysql触发器的基本使用(图文解析)详细分析SQL Server触发器的基本知识详细分析Corn表达式(附Demo) 特性事件定时任务触发器触发条件基于…...
SpinalHDL之语义(Semantic)(三)
本文作为SpinalHDL学习笔记第七十一篇,介绍SpinalHDL的规则(Rules)。 目录: 1.简介(Introduction) 2.并⾏性(Concurrency) 3.以最后赋值为准(Last valid assignment wins) 4.Scala下的信号和寄存器的内在联系(Signal and register interactions with Scala)(OOP引⽤+函数…...
SpringBoot 请求和响应
1. Spring Boot 请求与响应概述 在 Spring Boot 开发中,客户端通过浏览器发起请求,后端使用内置的 Tomcat Web 服务器处理请求,返回响应数据。请求和响应的过程遵循 HTTP 协议。Spring Boot 的核心 Servlet 程序是 DispatcherServlet&#x…...
LQR算法核心思想
本章以倒立摆为解决目的 什么是线性二次型控制器(LQR) 开环系统 即状态变量的倒数 系统的状态空间矩阵A * 系统状态变量x A状态矩阵:描述系统本身物理特性的一个矩阵,它是由系统本身的机械结构、物理结构决定的,无法…...
AI大模型之旅-最强开源文生图工具Stable Diffusion WebUI 教程
1.1克隆 Automatic1111 的 GitHub 仓库 在你想安装 Web UI 的文件夹路径下执行 git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui 这将会克隆整个仓库到本地。 这里会默认访问 https://huggingface.co/ 下载 因此需要魔法 1.2 进入仓库目录 cd stable-di…...
WinForm程序嵌入Web网页
文章目录 前言一、三方库或控件的选择测试二、Microsoft Edge WebView2安装、使用步骤1.安装2.使用 前言 由于此项目需要winform客户端嵌入web网页并于JAVA端交互数据,所以研究了一下嵌入web网页这部分,趟了一遍雷,这里做下记录。 一、三方库…...
Redis string类型hash类型
string类型 类型介绍 在Redis中的所有的key都是string类型,而value的类型有多种。 Redis中的字符串是直接按照二进制的方式进行存储的,也就是不会做任何的编码转换,存的是什么,取出来的就是什么。这样一般来说,Redi…...
Solidity智能合约中的异常处理(error、require 和 assert)
Solidity 中的三种抛出异常方法:error、require 和 assert 在 Solidity 开发中,异常处理是确保智能合约安全性和正确性的关键步骤。Solidity 提供了三种主要方法来抛出异常:error、require 和 assert。本文将详细介绍这三种方法的用途、实现方…...
True NAS禁用ipv6
在 TrueNAS Scale 中,禁用 IPv6 的方法如下:12 进入 System->Advanced->Sysctl,设置一个 sysctl 可调整变量 net.ipv6.conf.all.disable_ipv6,值为 1,以完全禁用 IPv6。\...
笔记整理—linux进程部分(2)使用fork创建进程
为什么要创建进程,首先每个程序的运行都需要一个进程;多进程实现宏观上的并行。 fork的原理,是进程的分裂生长模式。如果操作系统需要一个新的进程,那么就会以cp的方法得到一个新的进程,此时老的进程是父进程ÿ…...
在Python中实现多目标优化问题(6)
在Python中实现多目标优化问题 在Python中实现多目标优化,除了传统的进化算法(如NSGA-II、MOEA/D)和一些基于机器学习的方法外,还有一些新的方法和技术。这些新方法通常结合了最新的研究成果,提供了更高效的解决方案。…...
Java EE中的编码问题及解决方案
Java EE中的编码问题及解决方案 在Java EE开发中,处理字符编码是确保数据正确传输和显示的重要环节。不同的编码不一致会导致乱码,影响用户体验。本文将总结在Java EE中可能遇到的编码问题及其解决方案。 1. 输入数据编码问题 在表单提交时,…...
9月27日,每日信息差
第一、中国科学家团队在干细胞治疗领域取得重要突破,通过化学重编程技术成功制备出胰岛细胞,并用于移植治疗一名 1 型糖尿病患者,实现了临床功能性治愈。相关研究成果已发表在国际权威期刊《细胞》上。 第二、交通运输部公路局局长周荣峰在国…...
什么是 Angular 开发中的 Dumb components
Dumb components,在 Angular 开发中也被称为 Presentational components,它们的主要职责是通过展示数据和触发事件,把业务逻辑和 UI 表现分离开来。Dumb components 只通过 Input() 接收数据,Output() 向外发送事件,不…...
Docker 进入容器运行命令的详细指南
Docker 进入容器运行命令的详细指南 Docker 是一个开源的容器化平台,广泛应用于开发和生产环境中。它允许开发者打包应用程序及其依赖项到容器中,并能够在不同的平台上快速部署和运行。容器通常是独立且隔离的,但在开发、调试或维护过程中&a…...
如何禁止非真实用户的ip访问网站服务器
为了禁止非真实用户的IP访问网站服务器,可以采用多种技术手段和策略。以下是一些常用的方法: 1. 使用IP黑名单和白名单 黑名单:定期更新和维护一个IP黑名单,阻止已知的恶意IP地址或数据中心IP访问网站。白名单:对于特…...
探索SpringBoot:学科竞赛管理项目开发
2 相关技术简介 2.1Java技术 Java是一种非常常用的编程语言,在全球编程语言排行版上总是前三。在方兴未艾的计算机技术发展历程中,Java的身影无处不在,并且拥有旺盛的生命力。Java的跨平台能力十分强大,只需一次编译,任…...
ultralytics yolo v8 示例:加载官方模型进行推理
Ultralytics YOLO 是计算机视觉和 ML 领域专业人士的高效工具。 安装 ultralytics 库: pip install ultralytics 实现代码如下: import cv2 from ultralytics import YOLO# 加载预训练的 YOLOv8n 模型 ckpt_dir "./ckpt/" # 模型缓存地址…...
【中间件学习】Nginx快速入门(为了配置一个项目)
-----------------------------本文章借鉴遇见狂神说--------------------------- 一、一个产品出现瓶颈?? 在一个产品刚刚上线的时候,并发量小,用户使用的少,所以在低并发的情况下,一个jar包启动应该就够…...
鸿蒙harmonyos next flutter通信之MethodChannel获取设备信息
本文将通过MethodChannel获取设备信息,以此来演练MethodChannel用法。 建立channel flutter代码: MethodChannel methodChannel MethodChannel("com.xmg.test"); ohos代码: private channel: MethodChannel | null nullthis.c…...
【笔记】原子结构的近代理论
近代原子结构理论的建立是从氢原子光谱得到启示的。 一、氢原子光谱与波尔理论 1.氢原子光谱 在装有两个电极的真空玻璃管内通入极少量高纯氢气,通高压电使之放电,管中发出的光束通过分光棱镜,得到分立的谱线,称为线状光谱。 发…...
【python】循环中断:break 和 continue
目录: while 循环的基础语法while 循环的基础案例while 循环的嵌套应用while 循环的嵌套案例for 循环的基础语法for 循环的嵌套应用循环中断:break 和 continue综合案例 学习目标: 掌握使用 continue 和 break 关键字控制循环 思考&#…...
WIFI密码默认显示
文章目录 需求分析遇到问题问题原因解决方案 需求 在进入设置,点击某一个wifi,连接wifi 界面,显示密码默认选中状态,效果如下 分析 在 WiFi密码被输入法挡住 中我们已经分析了整个流程,布局文件和控制中心。 结局系统设置WIFI连…...
Emiya 家今天的饭C++
题目: 样例解释: 【样例 1 解释】 由于在这个样例中,对于每组 i,j,Emiya 都最多只会做一道菜,因此我们直接通过给出烹饪方法、主要食材的编号来描述一道菜。 符合要求的方案包括: 做一道用烹饪方法 1、主要…...
Mybatis缓存机制(图文并茂!)
目录 一级缓存 需求我们在一个测试中通过ID两次查询Monster表中的信息。 二级缓存 案例分许(和上述一样的需求) EhCache第三方缓存 在了解缓存机制之前,我们要先了解什么是缓存: 缓存是一种高速存储器,用于暂时存储访问频繁的数据&…...
Git 工作区、暂存区和版本库
Git 工作区、暂存区和版本库 Git 是一个强大的版本控制系统,它帮助开发者管理代码历史,协作开发,以及跟踪和合并更改。为了更好地理解 Git 的工作流程,我们需要了解 Git 中的三个核心概念:工作区(Workspac…...
SSH 远程连接到 Linux 服务器上的 SQLite
通过 SSH 远程连接到 Linux 服务器上的 SQLite 数据库文件的流程,可以分为以下几个步骤: 通过 SSH 连接到远程 Linux 服务器。在远程服务器上执行 SQLite 命令行工具,操作数据库文件。在本地使用工具,通过 SSH 隧道间接访问远程的…...
使用ElasticSearch-dump工具进行ES数据迁移、备份
elasticsearch-dump基本使用 该工具基于第三方Elasticdump工具来实现,仓库地址:https://github.com/elasticsearch-dump/elasticsearch-dump/tree/master,用于更加快捷方便的将Elasticsearch不同集群的数据进行索引备份和还原。 一、安装 …...
SpringMVC源码-SpringMVC源码请求执行流程及重点方法doDispatch讲解
一、开始请求 在浏览器访问http://localhost:8080/spring_mymvc/userlist这个接口,是个get请求。 FrameworkServlet类的service方法会被请求到: 调用路径如下: service:945, FrameworkServlet (org.springframework.web.servlet) service:764, HttpSer…...
建网站做seo/白帽seo
题目要求 将位置m的链接列表反转到n。 用一次通过遍历。 注意:1≤m≤n≤列表长度。 解题思路 有了反转链表的基础 解答leetcode 206. Reverse Linked List (翻转一个链表) 【剑指offer】 面试题24 翻转链表我们很容易对一个链表进行翻转的操作,那么如…...
phpwind做的网站/广告投放
手机CPU天梯图3月版在上一期的“手机CPU怎么看好坏 手机CPU天梯图2019年2月最新版”中,我们为大家聊了如何去判断一看处理器性能,大致最核心的主要是架构、主频、核心、基带、功耗等方面,今天就不再介绍一些参数部分了。以下是手机CPU天梯图2…...
凡总创业网站/百度快照入口官网
/*** 根据日期获取当天是周几* param datetime 日期* return 周几*/public static String dateToWeek(String datetime) {SimpleDateFormat sdf new SimpleDateFormat("yyyy-MM-dd");String[] weekDays {"星期日", "星期一", "星期二&quo…...
网站底部导航菜单/windows优化大师是什么
一、问题描述 多项目启动,tomcat报错内存溢出“PermGen space” 二、原理 tomcat启动的时候出现这种错误一般是项目引用了太多的jar包,或者反射生成了太多的类,或者有太多的常量池,导致非堆内存中永久保存区域不够。这种情况可以…...
网站信息化建设总结/首页关键词怎么排名靠前
IE8在默认情况下是使用标准模式(Standard Mode)来显示网页。 如果网页代码还没有标准化, 在IE8下可能会显示不正常。 这时候可以让用户使用兼容模式(Compatibility View) 来浏览网页。 所谓的兼容模式其实就是使用IE7的显示引擎。 IE8 上有个…...
洛阳高新区做网站公司/公司官网怎么制作
项目 App 的冷启动速度实在太慢了。下面把优化的手段大概总结一下,要说明一点的是,每个项目结构都不一样,实质优化的内容也不一样,但是可以说优化的思路是一样的。Application 优化onCreate 放置的 sdk 或者 单利初始化的东西一定…...