当前位置: 首页 > news >正文

基于单片机餐厅呼叫控制系统仿真设计

文章目录

  • 前言
  • 资料获取
  • 设计介绍
  • 设计程序
  • 具体实现截图
  • 设计获取


前言

💗博主介绍:✌全网粉丝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;}
}

具体实现截图

在这里插入图片描述
在这里插入图片描述

请添加图片描述
请添加图片描述

设计获取

文章下方名片联系我即可~

精彩专栏推荐订阅:在下方专栏👇🏻

毕业设计精品实战案例

收藏关注不迷路!!

🌟文末获取设计🌟

相关文章:

基于单片机餐厅呼叫控制系统仿真设计

文章目录 前言资料获取设计介绍设计程序具体实现截图设计获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师&#xff0c;一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等单片机设计 主要对象是咱们…...

详细分析Mysql中的定时任务(Event事件)

目录 前言1. 基本知识2. Event事件3. Demo 前言 基本的知识推荐阅读&#xff1a; 详细分析Mysql触发器的基本使用&#xff08;图文解析&#xff09;详细分析SQL Server触发器的基本知识详细分析Corn表达式&#xff08;附Demo&#xff09; 特性事件定时任务触发器触发条件基于…...

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 开发中&#xff0c;客户端通过浏览器发起请求&#xff0c;后端使用内置的 Tomcat Web 服务器处理请求&#xff0c;返回响应数据。请求和响应的过程遵循 HTTP 协议。Spring Boot 的核心 Servlet 程序是 DispatcherServlet&#x…...

LQR算法核心思想

本章以倒立摆为解决目的 什么是线性二次型控制器&#xff08;LQR&#xff09; 开环系统 即状态变量的倒数 系统的状态空间矩阵A * 系统状态变量x A状态矩阵&#xff1a;描述系统本身物理特性的一个矩阵&#xff0c;它是由系统本身的机械结构、物理结构决定的&#xff0c;无法…...

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端交互数据&#xff0c;所以研究了一下嵌入web网页这部分&#xff0c;趟了一遍雷&#xff0c;这里做下记录。 一、三方库…...

Redis string类型hash类型

string类型 类型介绍 在Redis中的所有的key都是string类型&#xff0c;而value的类型有多种。 Redis中的字符串是直接按照二进制的方式进行存储的&#xff0c;也就是不会做任何的编码转换&#xff0c;存的是什么&#xff0c;取出来的就是什么。这样一般来说&#xff0c;Redi…...

Solidity智能合约中的异常处理(error、require 和 assert)

Solidity 中的三种抛出异常方法&#xff1a;error、require 和 assert 在 Solidity 开发中&#xff0c;异常处理是确保智能合约安全性和正确性的关键步骤。Solidity 提供了三种主要方法来抛出异常&#xff1a;error、require 和 assert。本文将详细介绍这三种方法的用途、实现方…...

True NAS禁用ipv6

在 TrueNAS Scale 中&#xff0c;禁用 IPv6 的方法如下&#xff1a;12 进入 System->Advanced->Sysctl&#xff0c;设置一个 sysctl 可调整变量 net.ipv6.conf.all.disable_ipv6&#xff0c;值为 1&#xff0c;以完全禁用 IPv6。\...

笔记整理—linux进程部分(2)使用fork创建进程

为什么要创建进程&#xff0c;首先每个程序的运行都需要一个进程&#xff1b;多进程实现宏观上的并行。 fork的原理&#xff0c;是进程的分裂生长模式。如果操作系统需要一个新的进程&#xff0c;那么就会以cp的方法得到一个新的进程&#xff0c;此时老的进程是父进程&#xff…...

在Python中实现多目标优化问题(6)

在Python中实现多目标优化问题 在Python中实现多目标优化&#xff0c;除了传统的进化算法&#xff08;如NSGA-II、MOEA/D&#xff09;和一些基于机器学习的方法外&#xff0c;还有一些新的方法和技术。这些新方法通常结合了最新的研究成果&#xff0c;提供了更高效的解决方案。…...

Java EE中的编码问题及解决方案

Java EE中的编码问题及解决方案 在Java EE开发中&#xff0c;处理字符编码是确保数据正确传输和显示的重要环节。不同的编码不一致会导致乱码&#xff0c;影响用户体验。本文将总结在Java EE中可能遇到的编码问题及其解决方案。 1. 输入数据编码问题 在表单提交时&#xff0c…...

9月27日,每日信息差

第一、中国科学家团队在干细胞治疗领域取得重要突破&#xff0c;通过化学重编程技术成功制备出胰岛细胞&#xff0c;并用于移植治疗一名 1 型糖尿病患者&#xff0c;实现了临床功能性治愈。相关研究成果已发表在国际权威期刊《细胞》上。 第二、交通运输部公路局局长周荣峰在国…...

什么是 Angular 开发中的 Dumb components

Dumb components&#xff0c;在 Angular 开发中也被称为 Presentational components&#xff0c;它们的主要职责是通过展示数据和触发事件&#xff0c;把业务逻辑和 UI 表现分离开来。Dumb components 只通过 Input() 接收数据&#xff0c;Output() 向外发送事件&#xff0c;不…...

Docker 进入容器运行命令的详细指南

Docker 进入容器运行命令的详细指南 Docker 是一个开源的容器化平台&#xff0c;广泛应用于开发和生产环境中。它允许开发者打包应用程序及其依赖项到容器中&#xff0c;并能够在不同的平台上快速部署和运行。容器通常是独立且隔离的&#xff0c;但在开发、调试或维护过程中&a…...

如何禁止非真实用户的ip访问网站服务器

为了禁止非真实用户的IP访问网站服务器&#xff0c;可以采用多种技术手段和策略。以下是一些常用的方法&#xff1a; 1. 使用IP黑名单和白名单 黑名单&#xff1a;定期更新和维护一个IP黑名单&#xff0c;阻止已知的恶意IP地址或数据中心IP访问网站。白名单&#xff1a;对于特…...

探索SpringBoot:学科竞赛管理项目开发

2 相关技术简介 2.1Java技术 Java是一种非常常用的编程语言&#xff0c;在全球编程语言排行版上总是前三。在方兴未艾的计算机技术发展历程中&#xff0c;Java的身影无处不在&#xff0c;并且拥有旺盛的生命力。Java的跨平台能力十分强大&#xff0c;只需一次编译&#xff0c;任…...

ultralytics yolo v8 示例:加载官方模型进行推理

Ultralytics YOLO 是计算机视觉和 ML 领域专业人士的高效工具。 安装 ultralytics 库&#xff1a; pip install ultralytics 实现代码如下&#xff1a; import cv2 from ultralytics import YOLO# 加载预训练的 YOLOv8n 模型 ckpt_dir "./ckpt/" # 模型缓存地址…...

【中间件学习】Nginx快速入门(为了配置一个项目)

-----------------------------本文章借鉴遇见狂神说--------------------------- 一、一个产品出现瓶颈&#xff1f;&#xff1f; 在一个产品刚刚上线的时候&#xff0c;并发量小&#xff0c;用户使用的少&#xff0c;所以在低并发的情况下&#xff0c;一个jar包启动应该就够…...

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…...

ubuntu搭建nfs服务centos挂载访问

在Ubuntu上设置NFS服务器 在Ubuntu上&#xff0c;你可以使用apt包管理器来安装NFS服务器。打开终端并运行&#xff1a; sudo apt update sudo apt install nfs-kernel-server创建共享目录 创建一个目录用于共享&#xff0c;例如/shared&#xff1a; sudo mkdir /shared sud…...

.Net框架,除了EF还有很多很多......

文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...

Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例

使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件&#xff0c;常用于在两个集合之间进行数据转移&#xff0c;如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model&#xff1a;绑定右侧列表的值&…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序

一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...

AI编程--插件对比分析:CodeRider、GitHub Copilot及其他

AI编程插件对比分析&#xff1a;CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展&#xff0c;AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者&#xff0c;分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...

UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)

UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中&#xff0c;UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化&#xf…...

Python Ovito统计金刚石结构数量

大家好,我是小马老师。 本文介绍python ovito方法统计金刚石结构的方法。 Ovito Identify diamond structure命令可以识别和统计金刚石结构,但是无法直接输出结构的变化情况。 本文使用python调用ovito包的方法,可以持续统计各步的金刚石结构,具体代码如下: from ovito…...

Mysql8 忘记密码重置,以及问题解决

1.使用免密登录 找到配置MySQL文件&#xff0c;我的文件路径是/etc/mysql/my.cnf&#xff0c;有的人的是/etc/mysql/mysql.cnf 在里最后加入 skip-grant-tables重启MySQL服务 service mysql restartShutting down MySQL… SUCCESS! Starting MySQL… SUCCESS! 重启成功 2.登…...

GO协程(Goroutine)问题总结

在使用Go语言来编写代码时&#xff0c;遇到的一些问题总结一下 [参考文档]&#xff1a;https://www.topgoer.com/%E5%B9%B6%E5%8F%91%E7%BC%96%E7%A8%8B/goroutine.html 1. main()函数默认的Goroutine 场景再现&#xff1a; 今天在看到这个教程的时候&#xff0c;在自己的电…...