基于51单片机的篮球计时器Proteus仿真

文章目录

  • 一、篮球计时器
    • 1.题目要求
    • 2.思路
    • 3.仿真图
      • 3.1 未仿真时
      • 3.2 仿真开始
      • 3.3 A队进分
      • 3.4 B队进分
      • 3.5 比赛结束
    • 4.仿真程序
      • 4.1 主函数
      • 4.2 时间显示
      • 4.3 比分显示
      • 4.4 按键扫描
  • 二、总结


一、篮球计时器

1.题目要求

以51单片机为核心,设计并制作篮球计时器

基本功能如下:

设有比赛总时长(如10min)和24秒进攻时限的倒计时,允许在倒计时内进行投篮加分,分别有一分球、两分球、三分球三种进球方式。每次得分之后要有一个积分栏,要记录两队的比分。篮球比赛开始和结束要有标识,可以用led效果来表示。

2.思路

首先,画个51单片机,粗略计算了一下好像引脚不是很够用,所以这里想用74HC138来扩展IO口。
在这里插入图片描述
74HC138B 译码器可接受三位二进制加权地址输入(A0,A1,A2)并在使能时,提供8 位低电平有效、互斥的输出(Y0 到 Y7)。至于具体输出高还是低,要根据下面的真值表来看(请注意实物中的E3其实是仿真图中的E1,要看引脚编号。)不懂的小伙伴可以看下这个74HC138译码器
在这里插入图片描述
报警方式依旧选用蜂鸣器
在这里插入图片描述

显示方式,这里选用6位数码管和4位数码管分开显示。一个是显示比赛时间和进攻时间。一个是显示A队和B对的比分。
在这里插入图片描述

最后是一个LED来表示比赛开始和比赛结束,打算开始就长亮,一直到比赛结束使其闪烁或者熄灭。用开关或者按键来切换是A队还是B队,4个按键来刷新进攻时间和增加比分(一分、两分、三分)
在这里插入图片描述

3.仿真图

3.1 未仿真时

在这里插入图片描述

3.2 仿真开始

比赛总时间为10分钟,每次进攻时间为24s。24s倒计时为0,蜂鸣器会响进行提示,需要手动按下进攻时间来重置24s。
在这里插入图片描述

3.3 A队进分

A队投进3分球,记3分,当前比分3比0。
在这里插入图片描述

3.4 B队进分

B队投进2分球,记2分,当前比分3比2。
在这里插入图片描述

3.5 比赛结束

比赛时间归零,蜂鸣器长鸣,灯光熄灭。这时候比分为39比34,A队获得此次比赛的胜利。
在这里插入图片描述

4.仿真程序

4.1 主函数

//主函数
void main()
{
  Time0_init();//定时器初始化
  LED=1;//比赛开始
	while(1)
	{
	    time_display();//总时间显示和倒计时显示
	    score_display();//比分显示
	    keyscan();//按键扫描
	    speak();//警报
	}
} 

4.2 时间显示

//总时间显示和倒计时显示(六位数码管)
void time_display()
{
    uchar secshi,secge,minshi,minge,attge,attshi;
    secge=sec%10;//秒钟个位
    secshi=sec/10;//秒钟个位
    minge=min%10;//分钟个位
    minshi=min/10;//分钟十位
    attge=att%10;//倒计时个位
    attshi=att/10;//倒计时十位

    HLA=0;HLB=0;HLC=0; //第1位
    P0=table0[minshi];
    delayms(1);

    HLA=1;HLB=0;HLC=0;  //第2位
    P0=table0[minge];
    delayms(1);

    HLA=0;HLB=1;HLC=0;  //第3位
    P0=table0[secshi];
    delayms(1);

    HLA=1;HLB=1;HLC=0;  //第4位
    P0=table0[secge];
    delayms(1);

    HLA=0;HLB=0;HLC=1;  //第5位
    P0=table0[attshi];
    delayms(1);

    HLA=1;HLB=0;HLC=1;  //第6位
    P0=table0[attge];
    delayms(1);
    P0=0x00;          //消影
}

4.3 比分显示

//比分显示(4位数码管)
void score_display()
{
    uchar A_scorege,A_scoreshi,B_scorege,B_scoreshi;
    A_scorege=A_score%10;
    A_scoreshi=A_score/10;
    B_scorege=B_score%10;
    B_scoreshi=B_score/10;

    HHA=0;HHB=0;HHC=0; //第1位
    P3=table0[A_scoreshi];
    delayms(1);

    HHA=1;HHB=0;HHC=0;  //第2位
    P3=table0[A_scorege];
    delayms(1);

    HHA=0;HHB=1;HHC=0;  //第3位
    P3=table0[B_scoreshi];
    delayms(1);

    HHA=1;HHB=1;HHC=0;  //第4位
    P3=table0[B_scorege];
    delayms(1);
    P0=0x00;
}

4.4 按键扫描

//按键扫描
void keyscan()
{
    if (key_att==0)
    {
        delayms(1);
        if(key_att==0)
        att=24;//重置倒计时24s
        while(!key_att);
    }
    if (Change==1)//A队
    {
        if (score_1==0)//比分加1
        {
            delayms(1);
            if (score_1==0)
            A_score+=1;
            while(!score_1);
        }
        if (score_2==0)//比分加2
        {
            delayms(1);
            if (score_2==0)
            A_score+=2;
            while(!score_2);

        }
        if (score_3==0)//比分加3
        {
            delayms(1);
            if (score_3==0)
            A_score+=3;
            while(!score_3);
        }
    }
    else//B队
    {
        if (score_1==0)//比分加1
        {
            delayms(5);
            if (score_1==0)
            B_score+=1;
            while(!score_1);
        }
        if (score_2==0)//比分加2
        {
            delayms(5);
            if (score_2==0)
            B_score+=2;
            while(!score_2);

        }
        if (score_3==0)//比分加3
        {
            delayms(5);
            if (score_3==0)
            B_score+=3;
            while(!score_3);
        }
    }
}

二、总结

今天主要讲了基于51单片机的篮球计时器Proteus仿真。

感谢你的观看!

在这里插入图片描述

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

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

相关文章

数据结构:期末考 第六次测试(总复习)

一、 单选题 (共50题,100分) 1、表长为n的顺序存储的线性表,当在任何位置上插入或删除一个元素的概率相等时,插入一个元素所需移动元素的平均个数为( D ).(2.0) A、 &am…

基于matlab的可乐标签模板匹配

1 建模思路 1.图像预处理: 如果目标图像和模板图像是彩色的(即RGB图像),则将它们转换为灰度图像,以便在单通道上进行匹配。使用rgb2gray函数进行灰度化。 2.获取模板大小: 使用size函数获取模板图像的高…

骁龙相机拍照流程分析

和你一起终身学习,这里是程序员Android 经典好文推荐,通过阅读本文,您将收获以下知识点: 1.deliverInputEvent 拍照点击事件处理 2.submitRequestList Camera 提交拍照请求 3.createCaptureRequest 拍照请求帧数 骁龙相机通过binder 数据传输…

2006-2020上市公司研发投入金额数据集

2006-2020上市公司研发投入金额数据集https://download.csdn.net/download/a519573917/89501035 目录 上市公司研发投入与企业绩效的关系研究 一、引言 二、文献综述 三、研究设计 四、实证结果与分析 (一)描述性统计分析 (二&#xf…

人工智能在肿瘤:分子亚型分类领域的最新研究进展|顶刊速递·24-07-01

小罗碎碎念 今日推文主题:人工智能在肿瘤/分子亚型分类中的应用 小罗观点 前两天有一位复旦的师兄私聊问了我一些问题,我看完以后觉得大家可能对于“分类”的概念有点不太熟悉,所以我决定写这篇推文系统的梳理一下“分类”和“回归”。 这俩都…

CleanMyMacX2024免费且强大的mac电脑系统优化工具

如果你的Mac电脑出现了存储空间不足、运行缓慢、电池电量消耗过快等问题,那么CleanMyMacX这款软件或许能为你提供解决方案。作为一款强大的系统优化工具,它能够帮助用户清理垃圾文件、优化内存和电池使用,从而提升Mac的性能表现,让…

09_计算机网络模型

目录 OSI/RM七层模型 OSI/RM七层模型 各层介绍及硬件设备 传输介质 TCP/IP协议簇 网络层协议 传输层协议 应用层协议 完整URL的组成 IP地址表示与计算 分类地址格式 子网划分和超网聚合 无分类编址 特殊含义的IP地址 IPv6协议 过渡技术 OSI/RM七层模型 OSI/RM七…

使用 Vue 实现包含单选框的弹窗功能(附Demo)

目录 前言1. Vue22. Vue3 前言 如果在弹窗中单独增设一些选项或者少部分的数据,可用如下的方式 (不用单独创建专门的表单样式) 如果单纯可以通过基本的按钮传输给后端,可用如下知识点 对于弹窗的基本知识推荐阅读: …

2024年06月CCF-GESP编程能力等级认证Scratch图形化编程四级真题解析

本文收录于《Scratch等级认证CCF-GESP图形化真题解析》专栏,专栏总目录:点这里,订阅后可阅读专栏内所有文章。 一、单选题(共 10 题,每题 2 分,共 30 分) 第1题 小杨父母带他到某培训机构给他报名参加 CCF 组织的 GESP 认证考试的第 1 级,那他可以选择的认证语言有几…

数据资产铸就市场竞争优势:运用先进的数据分析技术,精准把握市场脉搏,构建独特的竞争优势,助力企业实现市场领先地位,赢得持续成功

目录 一、引言 二、数据资产的重要性 三、先进数据分析技术的应用 1、大数据分析技术 2、人工智能与机器学习 3、数据可视化技术 四、精准把握市场脉搏 1、深入了解客户需求 2、预测市场趋势 3、优化资源配置 五、构建独特的竞争优势 1、定制化产品和服务 2、精准营…

zerotier-one自建根服务器方法四

一、简介 前面几篇文章已经写完了安装配置服务器,今天写一下客户端如何连接自建的服务器。 二、准备工作 准备一个有公网IP的云主机。 要稳定性、安全性、不差钱的可以使用阿里、腾讯等大厂的云服务器。 本人穷屌丝一枚,所以我用的是免费的“三丰云…

Firefox 编译指南2024 Windows10-使用Git 管理您的Firefox(五)

1. 引言 在现代软件开发中,版本控制系统(VCS)是不可或缺的工具,它不仅帮助开发者有效管理代码的变化,还支持团队协作与项目管理。Mercurial 是一个高效且易用的分布式版本控制系统,其设计目标是简洁、快速…

【代码随想录】【算法训练营】【第53天】 [739]每日温度 [496]下一个更大元素I [503]下一个更大元素II

前言 思路及算法思维,指路 代码随想录。 题目来自 LeetCode。 day 48,周六,不能再坚持~ 题目详情 [739] 每日温度 题目描述 739 每日温度 解题思路 前提: 思路: 重点: 代码实现 C语言 [496] 下一…

算法题型归类整理及同类题型解法思路总结(持续更新)

1、最优路线 通用思路 1、递归 #案例1-最优路测路线 题目描述 评估一个网络的信号质量,其中一个做法是将网络划分为栅格,然后对每个栅格的信号质量计算。 路测的时候,希望选择一条信号最好的路线(彼此相连的栅格集合&#x…

Unity开箱即用的UGUI面板的拖拽移动功能

文章目录 👉一、背景👉二、效果图👉三、原理👉四、核心代码👉五,总结 👉一、背景 之前做PC项目时常常有面板拖拽移动的需求,今天总结封装一下,做成一个随时随地可复用的…

Linux 安装 Redis 教程

优质博文:IT-BLOG-CN 一、准备工作 配置gcc:安装Redis前需要配置gcc: yum install gcc如果配置gcc出现依赖包问题,在安装时提示需要的依赖包版本和本地版本不一致,本地版本过高,出现如下问题&#xff1a…

【PB案例学习笔记】-25制作一个带底图的MDI窗口

写在前面 这是PB案例学习笔记系列文章的第25篇,该系列文章适合具有一定PB基础的读者。 通过一个个由浅入深的编程实战案例学习,提高编程技巧,以保证小伙伴们能应付公司的各种开发需求。 文章中设计到的源码,小凡都上传到了gite…

Linux CentOS 宝塔 Suhosin禁用php5.6版本eval函数详细图文教程

方法一:PHP_diseval_extension禁用 Linux CentOS 禁用php的eval函数详细图文教程_centos php 禁用 eval-CSDN博客 这个方法make报错,懒得费时间处理,直接用第二种 方法二:suhosin禁用 不支持PHP8,官方只支持PHP7以下…

SpringMVC基础详解

文章目录 一、SpringMVC简介1、什么是MVC2、MVC架构模式与三层模型的区别3、什么是SpringMVC 二、HelloWorld程序1、pom文件2、springmvc.xml3、配置web.xml文件4、html文件5、执行Controller 三、RequestMapping注解1、value属性1.1、基础使用1.2、Ant风格(模糊匹配…

《Programming from the Ground Up》阅读笔记:p1-p18

《Programming from the Ground Up》学习第1天,p1-18总结,总计18页。 一、技术总结 1.fetch-execute cycle p9, The CPU reads in instructions from memory one at a time and executes them. This is known as the fetch-execute cycle。 2.genera…