51单片机实现数码管显示

news/2024/11/15 10:02:39/文章来源:https://www.cnblogs.com/helloyi/p/18537217

51单片机实现数码管显示

本次的实现效果方式采用模拟进行,芯片为AT89C51,开发软件为keil5,proteus

上代码

代码如下:

#include <reg51.h>void delay(unsigned int i);//延时函数unsigned int i=0;void main() {unsigned char button=0,flag=0;unsigned char digitCodes[] = {0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0xbf};P0 = 0xff; // 初始化P0口为高电平,准备读取按键状态P1 = digitCodes[8]; // 初始显示空格while (1) {if(flag==0)//如果没有其他的选手按下{button = P0; // 第一次读取按键状态delay(1200); // 延时消抖button = P0; // 第二次读取按键状态if (button != 0xff) { // 如果有按键被按下for (i = 0; i < 8; i++) {if((button & (1 << i)) == 0){//检测是那一个按键按下,进行位比较P1 = digitCodes[i]; // 显示对应的数字flag=1;}}}}}
}void delay(unsigned int i) {unsigned int k;for (k = 0; k < i; k++);
}

效果展示

keil5开发界面
在这里插入图片描述
proteus界面:
在这里插入图片描述

介绍

一、系统概述
8路抢答器系统是一个用于竞赛或活动中的抢答环节的设备,能够准确、快速地判断哪位参赛者最先按下抢答按钮,并在数码管上显示该参赛者的编号。系统由输入电路、优先判断电路、编码与显示电路以及控制电路等组成。
二、硬件设计

  1. 输入电路设计:使用八个按钮作为八路输入,每个按钮连接到一个数字电路输入端。当参赛者按下按钮时,输入电路会检测到这个信号。
  2. 优先判断电路设计:设计一个优先编码器,用于检测并判断最先按下按钮的输入信号。优先编码器能够处理多个同时输入的信号,并输出最先到达信号的编码。
  3. 编码与显示电路设计:使用编码器对优先级信号进行编码,然后通过译码器解码并显示在数码管上。这样,观众和主持人都可以清晰地看到哪个参赛者最先抢答。
  4. 控制电路设计:设计一个控制电路,用于接收控制开关的信号,并根据信号控制抢答环节的启动、结束以及必要的控制操作。
    三、程序设计
    程序设计:程序主要实现以下功能:
    1.检测并判断最先按下抢答按钮的选手编号。
    2.将选手编号显示在数码管上。
    3.控制抢答环节的启动和重新开始。
    四、仿真过程
    1 仿真软件选择:选用适合数字电路仿真的软件,本次实训选择Proteus进行仿真设计。
    2 搭建仿真电路:在Proteus中搭建与数字电路设计相对应的仿真电路,包括输入电路、优先编码电路、锁存与显示电路以及控制电路(数码管,AT89C51芯片,电阻,按键,电容,晶振)。
    3 设置仿真参数:根据设计需求,设置仿真参数,如输入信号的波形、频率等。
    4运行仿真并观察结果:启动仿真,观察数码管的结果,选手是否抢答,按下是否能正确显示

5 Proteus模拟图片:
在这里插入图片描述
六、仿真结果分析
通过仿真,我们验证了8路抢答器系统的功能和性能。仿真结果表明,系统能够准确、快速地检测并显示最先按下抢答按钮的选手编号。同时,系统还具备复位按钮,当按下复位按钮KEY1时能重新开始新一轮的竞答。

  1. 仿真运行界面(等待抢答)
    在这里插入图片描述

  2. 选手1号进行抢答:
    在这里插入图片描述

七、优化与改进
根据仿真结果,我们对8路抢答器系统进行了优化和改进。例如,优化了优先编码电路的设计,提高了判断速度和准确性;改进了显示电路的设计,增强了显示效果和可读性;简化了控制电路的设计,将代码进行缩减。

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

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

相关文章

Linux系统下Makefile,出现make: Nothing to be done for ex19.c.的解决办法

如图所示,在做练习19时出现“make: Nothing to be done for ex19.c.”的错误解决方法:如图所示,先make clean,再make 原因:若文件没有改动,.o文件也没有改动,则Linux认为,我不需要对所有的文件做任何事情。 参考资料:https://blog.csdn.net/gwzz1228/article/details/…

2024-2025-1-《计算机基础与程序设计》20241313刘鸣宇

作业信息 这个作业属于哪个课程 <班级的链接>(如2024-2025-1-计算机基础与程序设计) 这个作业要求在哪里 <作业要求的链接>(如2024-2025-1计算机基础与程序设计第一周作业) 这个作业的目标 <写上具体方面> 作业正文 ... 本博客链接 教材学习内容总结 《计算…

基于Java+SpringBoot心理测评心理测试系统功能实现十

技术点:SpringBoot+SpringDataJPA+Mysql+Freemaker+Bootstrap+JS+CSS+HTML 部分系统功能角色信息控制器Controller、用户信息控制器Controller、咨询师信息详情控制器Controller、心理测试信息控制器Controller、回顾心理测试试卷信息控制器Controller 免费学习:猿来入此免费…

实验三c

任务一 实验代码 button.hpp1 #pragma once2 3 #include <iostream>4 #include <string>5 6 using std::string;7 using std::cout;8 9 // 按钮类 10 class Button { 11 public: 12 Button(const string &text); 13 string get_label() const; 14 …

基于Java+SpringBoot心理测评心理测试系统功能实现九

技术点:SpringBoot+SpringDataJPA+Mysql+Freemaker+Bootstrap+JS+CSS+HTML 三、部分系统功能咨询师信息控制器Controller、公告信息控制器Controller、试卷测试信息详情控制器Controller、试题类型信息控制器Controller、试题信息控制器Controller 免费下载:猿来入此一、前言…

氧化铝

趋势还没完 至少还有3-5

多校A层冲刺NOIP2024模拟赛20

你叫什么名字?简评:新拉的💩,热乎的。 星际联邦 简要题意 两个点\(i,j(1\le i<j\le n,n\le 10^5)\)之间连边的代价是\(a_j-a_i(\forall i\in [1,n],-300000\le a_i\le 300000)\),求最小生成树。 赛时经历 先打了一个假的(其实是不完整)贪心,然后过掉了小样例,被大…

分析 Linux 内核创建一个新进程的过程

张晓攀+原创作品转载请注明出处+《Linux内核分析》MOOC课程https://mooc.study.163.com/course/1000029000 实验六——分析Linux内核创建一个新进程的过程 一、实验过程 1.将github上的menu项目克隆下来 git clone https://github.com/mengning/menu.git2.进入内核系统 更新tes…

Python 入门-1

1. Python安装python命令解释器官网地址:http://www.python.org版本:python3.xcustomize install,自定义安装 【英/ˈkʌstəmaɪz/】安装位置查看: Win +R —》cmd -》where python配置环境变量作用:帮助系统能够自动找到相应包的路径手动配置环境变量 右键此电脑 -》…

STL的状态字

什么叫状态字:如表:BR CC1 CC0 OV OS OR STA RLO /FC写:通常在官方手册上: -表示不进行读写, x表示对应位可以写入0/12个状态 1/0表示对应位的确定状态 *表示读取官方对于各个位的解释:首次检查位:状态字的0位称作首次检查位,如果/FC 位的信号状态为“0”,则表示伴随着…

P4156 论战捆竹竿 题解

论战捆竹竿 题意:给定字符串 \(s\),计数 "串 \(t\) 的长度" 可能的种数有多少种,使得 \(t\) 能被 \(s\) 作为印章印出来,且 \(|t|\le w\)。\(n=|s|\le 5\times 10^5\),\(n\le w\le 10^{18}\)。 第一步: 求出 \(s\) 的周期 \(\{a_1\sim a_m\}\),包含 \(n\)(\(…