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

news2024/10/7 12:18:38

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.coloradmin.cn/o/1423497.html

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

相关文章

空间域:空间组学的耶路撒冷

文章目录 环境配置与数据SquidpySpaGCN将基因表达和组织学整合到一个图上基因表达数据质控与预处理SpaGCN的超参优化空间域 参考文献 空间组学不能没有空间域&#xff0c;就如同蛋白质不能没有结构域。 摘要&#xff1a; 空间域是反映细胞在基因表达方面的相似性以及空间邻近性…

vulnhub靶场之Matrix-Breakout 2 Morpheus

一.环境搭建 1.靶场描述 This is the second in the Matrix-Breakout series, subtitled Morpheus:1. It’s themed as a throwback to the first Matrix movie. You play Trinity, trying to investigate a computer on the Nebuchadnezzar that Cypher has locked everyone…

微信小程序如何实现实时显示输入内容

如下所示&#xff0c;在许多场景中需要实时显示用户输入&#xff0c;具体实现见下文。 .wxml <input type"text" placeholder"请输入{{item.value}}(必填)" style"width:80%;" bindinput"get_required_value" data-info"{{it…

HarmonyOS应用开发者基础认证考试答案

HarmonyOS应用开发者基础认证考试答案 一、判断题 1.Ability是系统调度应用的最小单元&#xff0c;是能够完成一个独立功能的组件。一个应用可以包含一个或多个Ability。 正确(True) 2.所有使用Component修饰的自定义组件都支持onPageShow&#xff0c;onBackPress和onPageHide…

linux -- 中断管理 -- softirq机制

softirq的起始 do_IRQ();--> irq_enter(); //HARDIRQ部分的开始 更新系统中的一些统计量 标识出HARDIRQ上下文--> generic_irq_handler(); --> irq_exit(); //softirq部分的起始irq_exit /** Exit an interrupt context. Process softirqs if needed and possibl…

MOS栅极驱动和运放所需注意的关键参数

FD6288Q_&#xff08;JSMSEMI(杰盛微)&#xff09;FD6288Q中文资料_价格_PDF手册-立创电子商城 (szlcsc.com) MOS栅极驱动芯片&#xff1a; 自举电路&#xff1a; 电容的两个重要参数&#xff1a; ESR&#xff08;等效串联电阻&#xff09;和ESL&#xff08;等效串联电感&…

基于javaEE的社区食堂管理-计算机毕业设计源码48691

摘 要 随着餐饮业强劲发展的趋势&#xff0c;企业对食堂的管理也更加严格。面对材料成本的提高&#xff0c;人才资源匮乏&#xff0c;租金成本提高等问题&#xff0c;企业如何改善食堂管理系统将成为挑战。 一个高效便捷的食堂管理系统&#xff0c;能为食堂管理者带来极大的便利…

【HarmonyOS应用开发】ArkUI 开发框架-进阶篇-管理组件状态(九)

管理组件状态 一、概述 在应用中&#xff0c;界面通常都是动态的。下图所示&#xff0c;在子目标列表中&#xff0c;当用户点击目标一&#xff0c;目标一会呈现展开状态&#xff0c;再次点击目标一&#xff0c;目标一呈现收起状态。界面会根据不同的状态展示不一样的效果。 Ar…

XUbuntu22.04之如何创建、切换多个工作区(二百零九)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

1.31总结

为什么和以前标题不一样了呢&#xff0c;是因为今天我感觉学到的东西太少了&#xff0c;很难按专题发&#xff0c;索性就直接写个总结水一篇好了 第一题&#xff1a;遍历问题 题解&#xff1a;真的纯思维题目&#xff0c;真的没啥&#xff0c;可说的&#xff0c;中序遍历取决于…

双目模组 - IMSEE SDK的配置实践:含Opencv的详细编译配置

IMSEE 的环境要求: CMake(3.0以上)(需要支持vs2019) Visual Studio 2019 opencv3.3.1 IMSEE-SDK 官网参考: Windows 源码安装 — IMSEE SDK 1.4.2 文档 (imsee-sdk-docs.readthedocs.io) 【案】按照IMSEE的建议进行安装: 1 Windows 安装: 1.1 环境准备: 1.1.1 CMake:in…

时序数据库 Tdengine 执行命令能够查看执行的sql语句

curl是 访问6041端口&#xff0c;在windows系统里没有linux里的curl命令&#xff0c;需要用别的工具实现。我在cmd里是访问6030端口 第一步 在安装是时序数据库的服务器上也就是数据库服务端 进入命令窗口 执行 taos 第二步 执行 show queries\G;

nop-entropy可逆计算入门(1)

第1步&#xff1a;从大佬的gitee&#xff1a;https://gitee.com/canonical-entropy/nop-entropy下载源码&#xff0c;进行本地编译&#xff0c;具体编译看项目下的readme,想偷懒的可以下载我编译后的jar&#xff0c;放到自己的maven仓库 https://pan.baidu.com/s/15qANnrCh5RV…

这都2024年了 你还要多久才能领悟 ArrayBlockingQueue 源码

这都2024年了 你还要多久才能领悟 ArrayBlockingQueue 源码 文章目录 这都2024年了 你还要多久才能领悟 ArrayBlockingQueue 源码阻塞队列简介阻塞队列的历史阻塞队列的思想 ArrayBlockingQueue 常见方法及测试ArrayBlockingQueue 源码分析整体设计初始化阻塞式获取和新增元素非…

python数据类型-列表

1 python中列表的定义 python中列表是一种有序和可更改的集合&#xff0c;允许重复的成员&#xff0c;列表中的元素之间数据类型可以不同&#xff08;元素之间数据类型可以不相同&#xff0c;这一点和其它的面向对象的开发语言有很大的不同&#xff0c;如C#、Java&#xff09;…

大创项目推荐 题目:基于深度学习卷积神经网络的花卉识别 - 深度学习 机器视觉

文章目录 0 前言1 项目背景2 花卉识别的基本原理3 算法实现3.1 预处理3.2 特征提取和选择3.3 分类器设计和决策3.4 卷积神经网络基本原理 4 算法实现4.1 花卉图像数据4.2 模块组成 5 项目执行结果6 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 基…

Unity_Visual Effect Graph

Unity_Visual Effect Graph Unity可视化特效渲染虽不及Unreal Engine,然也还是吊打一众其他引擎的,粗浅整理一波吧,需要深入研究的点实在是太多了。 按照常规包管理方式安装Visual Effect Graph插件: 安装之后,示例文件夹中自带资源,拖入场景即可: 场景只是资源的显…

如何搭建一个成功的家装预约咨询小程序

微信小程序是一种在微信平台上运行的应用程序&#xff0c;为企业提供了一个快速、便捷的方式与用户进行交互和服务。开通微信家装预约咨询小程序店铺&#xff0c;可以帮助家装企业更好地与用户进行沟通和服务&#xff0c;提升用户体验和便捷度。下面我们就来详细介绍一下开通微…

(自用)learnOpenGL学习总结-高级OpenGL-几何着色器

在顶点着色器和片段着色器中间还有一个几何着色器。 几何着色器的输入是一个图元的一组顶点&#xff0c;在几何着色器中进行任意变换之后再给片段着色器&#xff0c;可以变成完全不一样的图元、可以生成更多的顶点。 #version 330 core layout (points) in; layout (line_str…

R高级绘图 | P1 | 带边缘分布散点图 | 代码注释 + 结果解读

新系列 —— R高级绘图&#xff0c;准备整理所有曾经绘制过的图图和未来需要的图图们的代码&#xff01;预计这个系列会囊括所有常见图形&#xff0c;只提供高级绘图代码&#xff0c;基础绘图主要在 R语言绘图 系列中进行介绍&#xff0c;这个系列咱们主打&#xff1a;需要XX图…