【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路抢答器仿真结果

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2024年第七届亚洲能源与电气工程会议 (ACEEE 2024)

2024年第七届亚洲能源与电气工程会议 (ACEEE 2024)将于2024年7月20-22日在中国成都举行。本次会议由电子科技大学主办&#xff0c;电子科技大学机械与电气工程学院承办。ACEEE 2024旨在为推动能源与电气工程领域科学研究的发展&#xff0c;增进各国学者之间的学术交流&#xff…

备战蓝桥杯---数据结构与STL应用(进阶1)

让我们先来看一看map的基础应用吧&#xff1a; 下面是实现代码&#xff1a; #include<bits/stdc.h> using namespace std; typedef map<int,multiset<int> > line; map<int,multiset<int> >mx; map<int,multiset<int> >my; int n,m…

《Docker技术革命:从虚拟机到容器化,全面解析Docker的原理与应用-上篇》

文章目录 Docker为什么会出现总结 Docker的思想Docker历史总结 Docker能干嘛虚拟机技术虚拟机技术的缺点 容器化技术Docker和虚拟机技术的区别 Docker概念Docker的基本组成镜像&#xff08;image)容器&#xff08;container&#xff09;仓科&#xff08;repository&#xff09;…

Vulnhub靶机:hackme2-DHCP

一、介绍 运行环境&#xff1a;Virtualbox(攻击机)和VMware(靶机) 攻击机&#xff1a;kali&#xff08;192.168.56.106&#xff09; 靶机&#xff1a;hackme2-DHCP&#xff08;192.168.56.107&#xff09; 目标&#xff1a;获取靶机root权限和flag 靶机下载地址&#xff1…

【lesson31】MySQL视图

文章目录 视图介绍基本使用创建视图案例删除视图 视图规则和限制 视图介绍 视图是一个虚拟表&#xff0c;其内容由查询定义。同真实的表一样&#xff0c;视图包含一系列带有名称的列和行数据。视图的数据变化会影响到基表&#xff0c;基表的数据变化也会影响到视图。 基本使用…

GitLab16.8配置webhooks、Jenkins2.4配置GitLab插件实现持续集成、配置宝塔面板实现持续部署(其三)

看本篇文章的前提是已经部署完GItlab和Jenkins服务器&#xff0c;已经可以手动构建成功&#xff0c;并且经过了很多次实践&#xff0c;对这两款软件基本熟悉。 建议大家按以下顺序看 前端自动化&#xff08;其一&#xff09;部署gitlab 前端自动化&#xff08;其二&#xff0…

百无聊赖之JavaEE从入门到放弃(十四)异常

目录 一.异常机制 二.异常分类 三.异常的处理方式 1.捕获异常(try-catch-finally) 2.声明异常&#xff08;throws 子句&#xff09; 四.try-with-resource 五.自定义异常 六.IDEA 调试 debug 一.异常机制 工作中&#xff0c;程序遇到的情况不可能完美。比如&#xff1a…

Zabbix数据库分离与邮件报警

基础环境&#xff1a;要有zabbix服务端与被监控端实验目标&#xff1a;源数据库与服务端存放在一台服务器上&#xff0c;分离后源数据库单独在一台服务器上&#xff0c;zabbix服务端上不再有数据库。环境拓扑图&#xff1a; 实验步骤&#xff1a; 1.在8.7服务器上安装相同版本…

单片机驱动多个ds18b20

目录 1设计内容 2ds18b20介绍 2.1传感器引脚及原理图 2.2寄存器配置 3程序实现 3.1配置初始化 3.2配置寄存器 3.3ROM读取 3.4温度读取 1设计内容 通过51单片机&#xff0c;读取总线上挂载的多个ds18b20的温度信息。 如下图&#xff0c;成功读取到3路温度数据。 2ds18…

MD5算法:高效安全的数据完整性保障

摘要&#xff1a;在数字世界中&#xff0c;确保数据完整性和安全性至关重要。消息摘要算法就是一种用于实现这一目标的常用技术。其中&#xff0c;Message Digest Algorithm 5&#xff08;MD5&#xff09;算法因其高效性和安全性而受到广泛关注。本文将详细介绍MD5算法的优缺点…

双屏联动系统在展厅设计中的互动类型与效果

随着各项多媒体技术的快速发展&#xff0c;让展厅中的各类展项得到技术升级&#xff0c;其中作为电子设备中最基础的显示技术&#xff0c;不仅优化了内容的展示质量&#xff0c;还实现了更具互动性的创新技术&#xff0c;如双屏联动系统就是当前展厅设计中最常见的技术类型之一…

TS项目实战一:流淌的字符动画界面

使用ts实现虚拟世界&#xff0c;创建ts项目&#xff0c;并编写ts代码&#xff0c;使用tsc编译后直接加载到html界面&#xff0c;实现类似黑客帝国中的流淌的代码界面的效果。 源码下载地址&#xff1a;点击下载 讲解视频 TS实战项目一&#xff1a;数字流界面项目创建 TS实战项…

Airflow原理浅析

⭐️ airflow基本原理 Apache Airflow 是一个开源的工作流自动化工具&#xff0c;它用于调度和管理复杂的数据工作流。Airflow 的原理基于有向无环图&#xff08;DAG&#xff09;的概念&#xff0c;它通过编写和组织任务的有向图来描述工作流程。 以下是 Apache Airflow 的一…

解决ModuleNotFoundError: No module named ‘pysqlite2‘

目录 一、问题描述 二、问题分析 三、解决方法 四、参考文章 一、问题描述&#xff1a; 新建conda编译环境。安装Jupyter后打不开&#xff0c;报错&#xff1a; 二、问题分析&#xff1a; 缺少sqlite3动态链接库 三、解决方法&#xff1a; SQLite Download Page 下载…

go语言socket编程

1.互联网分层模型 过程分析&#xff1a; 2.Socket图解 Socket是应用层与TCP/IP协议族通信的中间软件抽象层。在设计模式中&#xff0c;Socket其实就是一个门面模式&#xff0c;它把复杂的TCP/IP协议族隐藏在Socket后面&#xff0c;对用户来说只需要调用Socket规定的相关函数&a…

幻兽帕鲁服务器游戏怎么升级版本?

幻兽帕鲁服务器游戏怎么升级版本&#xff1f;自建幻兽帕鲁服务器进入Palworld游戏提示“您正尝试加入的比赛正在运行不兼容的游戏版本&#xff0c;请尝试升级游戏版本”什么原因&#xff1f;这是由于你的客户端和幻兽帕鲁服务器版本不匹配&#xff0c;如何解决&#xff1f;更新…

数学建模-多目标规划

例&#xff1a;求下列函数最大值 Matlab 程序&#xff1a; 若分开求解&#xff0c;即分别求出第一个函数和第二个函数的最大值&#xff0c;我们试一下。 第一个函数最大值&#xff08;我们先求最小值&#xff09; c[3 -2];A[2,3;2,1];b[18;10];Aeq[];beq[];vlb[0;0];vub[];[…

redis设计与实践的总结

Redis是一款高性能的Key-Value存储系统&#xff0c;它可以用作缓存、消息队列、计数器、排行榜等多种应用场景。在实际应用中&#xff0c;如何设计和使用Redis是非常关键的。本文将介绍Redis的设计原则和最佳实践&#xff0c;帮助您更好地利用Redis提高应用性能和可靠性。 ###…

kuboard-spray 导入离线资源包

下载镜像 # 1. 在一台可以联网的机器上执行 docker pull registry.cn-shanghai.aliyuncs.com/kuboard-spray/kuboard-spray-resource:spray-v2.18.0a-8_k8s-v1.23.9_v1.16-amd64 docker save registry.cn-shanghai.aliyuncs.com/kuboard-spray/kuboard-spray-resource:spray-v…

hbuilderx uniapp运行到真机控制台显示手机端调试基座版本号1.0.0,调用uni.share提示打包时未添加share模块

记录一个困扰了几天的一个蠢问题&#xff0c;发现真相的我又气又笑。 由于刚开始接触uniapp 移动端开发&#xff0c;有个需求需要使用uni.share API&#xff0c;但是我运行项目老提示打包时没配置share模块 我确实没在manifest内配置。网上搜了一些资料&#xff0c;但是我看官…