【51单片机系列】应用设计——8路抢答器的设计

51单片机应用——8路抢答器设计

文章设计文件及代码:资源链接。

文章目录

  • 要求:
  • 设计思路
  • 软件设计
  • 仿真结果

要求:

(1) 按下”开始“按键后才开始抢答,且抢答允许指示灯亮;

(2)按下“开始”键后如果有人抢答,则抢答指示灯灭,7段数码管显示抢答着编号。

设计思路

P3.0端口连接“开始”按键;P3.6端口连接一个LED,指示抢答允许;P0口接7段数码管,显示抢答者编号;P2口接8个独立式按键,依次编号为1~8;P1口接抢答者指示灯,当P2口的某一个独立按键按下后,对应的抢答者指示灯亮。

proteus设计原理电路图如下:

8路抢答器原理电路图

软件设计

代码清单:

/*实现功能:8路抢答器设计。(1) 按下”开始“按键后才开始抢答,且抢答允许指示灯亮;(2)按下“开始”键后如果有人抢答,则抢答指示灯灭,7段数码管显示抢答者编号。P3.0端口连接“开始”按键;P3.6端口连接一个LED,指示抢答允许;P0口接7段数码管,显示抢答者编号;P2口接8个独立式按键,依次编号为1~8;P1口接抢答者指示灯,当P2口的某一个独立按键按下后,对应的抢答者指示灯亮;[2024-01-31] zoya
*/#include <reg51.h>
#include <intrins.h>typedef unsigned char uchar;#define GPIO_SMG	P0  // 数码管
#define GPIO_LED	P1  // 抢答者指示灯
#define GPIO_BTN	P2  // 抢答者按键unsigned char code smg[]={0x00, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71, 0x00};sbit START_BTN=P3^0;
sbit START=P3^2;
sbit START_LED=P3^6;
bit enStart=0;uchar tmp;
uchar dispNum;void delay(uchar c)
{uchar i,j;for(;c>0;c--){for(i=0;i<142;i++)for(j=0;j<2;j++);}
}void digProc(void)
{switch(tmp){case 0xfe: dispNum=1; break;case 0xfd: dispNum=2; break;case 0xfb: dispNum=3; break;case 0xf7: dispNum=4; break;case 0xef: dispNum=5; break;case 0xdf: dispNum=6; break;case 0xbf: dispNum=7; break;case 0x7f: dispNum=8; break;default: dispNum=0; break;}}void main()
{EA=1;EX0=1;IT0=1;tmp=0xff;while(1){if(0==START_BTN)  // 开始按键按下{delay(10);  // 开始按键消抖if(0==START_BTN){START_LED=0;  // 点亮开始指示灯enStart=1;  // 指示可以开始抢答,当有抢答按键按下触发中断处理服务tmp=0xff;  // 初始化}}digProc();  // 处理数码管显示的数据GPIO_LED=tmp;  // 抢答指示灯按照抢答按键设置哪个灯亮GPIO_SMG=smg[dispNum];  // 数码管显示哪个抢答按键被按下}
}void Int0() interrupt 0
{if(enStart){enStart=0;  // 有抢答,再按其它抢答键无效EX0=0;delay(10);EX0=1;tmp=GPIO_BTN;START_LED=1;  // 有抢答,熄灭开始指示灯}
}

仿真结果

从结果可以看到:

  • 当没有按下开始按键时,按抢答按键是没有任何作用的;
  • 当按下开始按键后,按抢答按键,对应的指示灯会亮,且数码管中显示对应的编号,这时再按其他抢答键也是没有任何作用,即不会出现两个人都抢答的结果;
  • 当再次按开始按键,按键指示灯和数码管会恢复的系统运行的初始状态。

8路抢答器仿真结果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/666860.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

聚道云软件连接器助力餐饮企业实现数字化管理

客户介绍 某餐饮有限责任公司是一家历史悠久、口碑良好的连锁餐饮公司。公司总部位于北京市&#xff0c;拥有多家门店&#xff0c;覆盖了北京市内的各个区域。每家门店都以独特的装修风格和优雅的环境为顾客营造温馨舒适的用餐氛围。作为一家知名的连锁餐饮公司&#xff0c;在…

过好“苏州年”!沉浸式名城非遗文化体验展 2月10日正式启幕

擦亮非遗文化底色&#xff0c;绘就历史文化名城金名片 天工开画卷&#xff0c;苏作见匠心&#xff0c;在2024龙年到来之际&#xff0c;“匠海拾遗-沉浸式名城非遗文化体验展” 将于2月10日在江苏省省级文物保护单位——江苏按察使署旧址内举办。此次非物质文化遗产&#xff08;…

记录Git无法连接Github(443报错)的一种可能——代理问题

参考文章&#xff1a; Git安装配置与使用&#xff08;超级详细&#xff09;_git配置-CSDN博客 github代理报错_valueerror: unable to determine socks version from-CSDN博客 速通 如果在使用 git 时遇到了这样的报错&#xff1a; OpenSSL SSL_connect: SSL_ERROR_SYSCAL…

机器学习周报第二十八周 PINNs2

文章目录 week28 PINNs2摘要Abstract一、Lipschitz条件二、文献阅读1. 题目数据驱动的偏微分方程2. 连续时间模型3. 离散时间模型4.结论 三、CLSTM1. 任务要求2. 实验结果3. 实验代码3.1模型构建3.2训练过程代码 小结参考文献 week28 PINNs2 摘要 本文主要讨论PINN。本文简要…

机器学习 | 解析聚类算法在数据检测中的应用

目录 初识聚类算法 聚类算法实现流程 模型评估 算法优化 特征降维 探究用户对物品类别的喜好细分(实操) 初识聚类算法 聚类算法是一种无监督学习方法&#xff0c;用于将数据集中的对象按照相似性分组。它旨在发现数据中的内在结构和模式&#xff0c;将具有相似特征的数据…

MySQL进阶之锁(行锁,间隙锁,临键锁)

行级锁 介绍 行级锁&#xff0c;每次操作锁住对应的行数据。锁定粒度最小&#xff0c;发生锁冲突的概率最低&#xff0c;并发度最高。应用在 InnoDB存储引擎中。 InnoDB的数据是基于索引组织的&#xff0c;行锁是通过对索引上的索引项加锁来实现的&#xff0c;而不是对记录加…

Linux——权限管理

1、ACL权限 在普通权限中&#xff0c;用户对文件只有三种身份&#xff0c;就是属主、属组和其他人&#xff1b;每种用户身份拥有读&#xff08;read&#xff09;、写&#xff08;write&#xff09;和执行&#xff08;execute&#xff09;三种权限。但是在实际工作中&#xff0…

uniapp使用u-popup组件弹窗出现页面还可滑动

*1、问题所在&#xff1a; 弹窗遮罩层出现了页面依旧可以上下滑动 2、要求: 为了用户更好交互体验&#xff0c;弹窗出现后应禁止页面往下滑动 3、实现思路&#xff1a; 在弹窗盒子外层添加个阻止触摸冒泡事件&#xff0c;使用touchmove.stop.prevent 4、代码如下&#xff…

Django学习记录01

1.项目结构 djangoProject02 ├── manage.py 【项目的管理&#xff0c;启动项目、创建app、数据管理】【不要动】【常常用】 └── jangoProject02 ├── __init__.py ├── settings.py 【项目配置】 【常常修改】 ├── urls.py …

软件IIC读取MPU6050

软件IIC读取MPU6050 最终现象一、GY-521 MPU6050三维角度传感器简介二、程序分析1、mpu6050.c2、MPU6050_reg.h 最终现象 一、GY-521 MPU6050三维角度传感器简介 一共八个引脚&#xff0c;一般只用到四个&#xff0c;其余的我也没有试过。 VCC、GND分别接5V电源和地&#xff1b…

如何用ETL工具实现API调用

一、API调用的好处 API调用有很多好处&#xff0c;下面列举了几个主要的优势&#xff1a; 模块化和可重用性&#xff1a;API调用使得软件开发过程更加模块化和可用。通过将功能封装在API中&#xff0c;可以将其用作独立的模块&#xff0c;并在不同的应用程序或系统中进行重复使…

父类之王“Object”类和内部类

&#x1f468;‍&#x1f4bb;作者简介&#xff1a;&#x1f468;&#x1f3fb;‍&#x1f393;告别&#xff0c;今天 &#x1f4d4;高质量专栏 &#xff1a;☕java趣味之旅 欢迎&#x1f64f;点赞&#x1f5e3;️评论&#x1f4e5;收藏&#x1f493;关注 &#x1f496;衷心的希…

NLP深入学习:《A Survey of Large Language Models》详细学习(一)

文章目录 1. 前言2. 摘要部分3. 引言部分4. Overview 部分4.1 LLMs 背景4.2 GPT 系列模型的技术演变 5. 参考 1. 前言 最近正在读这边 LLM 论文的综述&#xff0c;鉴于读得费劲&#xff0c;如果将整个论文读完再来写会比较费劲。当前采取的策略是部分内容走读记录&#xff0c;…

3 编辑器(Vim)

1.完成 vimtutor。备注&#xff1a;它在一个 80x24&#xff08;80 列&#xff0c;24 行&#xff09; 终端窗口看起来效果最好。 2.下载我们提供的 vimrc&#xff0c;然后把它保存到 ~/.vimrc。 通读这个注释详细的文件 &#xff08;用 Vim!&#xff09;&#xff0c; 然后观察 …

ref和reactive, toRefs的使用

看尤雨溪说&#xff1a;为什么Vue3 中应该使用 Ref 而不是 Reactive&#xff1f; toRefs import { ref, toRefs } from vue;// 定义一个响应式对象 const state ref({count: 0,name: Vue });// 使用toRefs转换为响应式引用对象 const reactiveState toRefs(state);// 现在你…

深入理解TCP网络协议(3)

目录 1.前言 2.流量控制 2.阻塞控制 3.延时应答 4.捎带应答 5.面向字节流 6.缓冲区 7.粘包问题 8.TCP异常情况 9.小结 1.前言 在前面的博客中,我们重点介绍了TCP协议的一些属性,有连接属性的三次握手和四次挥手,还有保证数据安全的重传机制和确认应答,还有为了提高效率…

vue3 之 组合式API—watch函数

watch函数 作用&#xff1a;侦听一个或者多个数据的变化&#xff0c;数据变化时执行回调函数 两个额外参数&#xff1a; 1.immediate&#xff08;立即执行&#xff09;2.deep&#xff08;深度侦听&#xff09; 场景&#xff1a;比如选择不同的内容请求后端不同数据时 如下图 …

重写Sylar基于协程的服务器(4、协程调度模块的设计)

重写Sylar基于协程的服务器&#xff08;4、协程调度模块的设计&#xff09; 重写Sylar基于协程的服务器系列&#xff1a; 重写Sylar基于协程的服务器&#xff08;0、搭建开发环境以及项目框架 || 下载编译简化版Sylar&#xff09; 重写Sylar基于协程的服务器&#xff08;1、日…

华为机考入门python3--(8)牛客8-合并表记录

分类&#xff1a;字典排序 知识点&#xff1a; 将输入转成int的列表 my_list list(map(int, input().strip().split( ))) 将列表转为元组 tuple(my_list) 访问元素为元组的列表 for first, second, third in my_list: 对字典进行排序 sorted(my_dict.items())…

负载均衡下的webshell上传+nginx解析漏洞

负载均衡下的webshell上传 一&#xff0c;负载均衡下webshell上传的四大难点 难点一&#xff1a;需要在每一台节点的相同位置上传相同内容的webshell 我们需要在每一台节点的相同位置都上传相同内容的 WebShell一旦有一台机器上没有&#xff0c;那么在请求轮到这台机器上的时…