基于51单片机控制的篮球比赛计时、计分系统设计与仿真(含设计图和C语言程序源码) 您所在的位置:网站首页 24s计时器课程设计 基于51单片机控制的篮球比赛计时、计分系统设计与仿真(含设计图和C语言程序源码)

基于51单片机控制的篮球比赛计时、计分系统设计与仿真(含设计图和C语言程序源码)

2024-06-29 21:11| 来源: 网络整理| 查看: 265

1. 设计任务:2. 设计说明 2.1 需求分析 2.1.1 计分系统:2.1.2 计时系统: 2.2 原理分析2.3 总体设计2.4 软硬件设计 2.4.1 硬件设计2.4.2 软件设计 2.5 方案论证及可行性分析2.6 测试结果与分析2.7 参考文献: 3. 设计文件以及源码下载

1. 设计任务:

本次设计用由AT89C51编程控制LED七段数码管作显示的球赛计时计分系统。系统应具有赛程定时设置,赛程时间暂停,及时刷新甲、乙双方的成绩以及赛后成绩暂存等功能。 内容包括:显示、键盘、时钟等内容

2. 设计说明 2.1 需求分析 2.1.1 计分系统:

(1)分为“A队”和“B队”的“3分”,“2分”,“1分”各六个按键输入部分,以及两队比分的LED显示部分。在每次增加分数的同时,“24秒”计时恢复为初始值,“12分钟”计时暂停,等待比赛的继续进行

2.1.2 计时系统:

(1)比赛开始/继续:当“比赛开始/继续”键按下后,“24s”和“12分钟”计时器开始倒计时; (2)手动24s复位:当“24s复位” 键按下后,“24s”倒计时恢复初始值,“12分钟”倒计时暂停,等待比赛的继续; (3)比赛暂停:“比赛暂停”键按下后,“24s”倒计时和“12分钟”倒计时均暂停,等待比赛的继续进行; (4)自动增加比赛节数:当“12分钟”倒计时完成后,判断当前节数是否为最后一节,若不是,则节数自动增加,并“12分钟”和“24s”均恢复默认值,等待下一节比赛的进行。

2.2 原理分析

采用单片机AT89C51作为本设计的核心元件。利用7段共阴LED作为显示器件。在此设计中共接入了6个7段共阴LED显示器,其中2个4位LED显示器用于记录AB队的分数,每队1个4位LED显示器显示范围可达到0~999分,足够满足赛程需要;2个两位LED显示器用来记录赛程时间,其中1个用于显示分钟,1个用于显示秒钟;使用1个2位LED显示器用于显示“24s”倒计时,赛程计时均采用倒计时方式。即比赛前将时间设置好,即12分钟,比赛开始时启动计时,直至计时到零为止。本设计中设立了10个按键,其中6个用于设置两队的比分,1个用于比赛开始/比赛继续,1个用于暂停,1个用于手动增加比赛节数,一个用于恢复“24s”倒计时等功能。

2.3 总体设计

系统主要包括单片机、LED显示电路、按键控制电路、时钟电路及复位电路等组成

2.4 软硬件设计 2.4.1 硬件设计

设计思路: (1)按键模块设计 : 按键接至P1口和P3口,按键按下时输入是低电平。键的设置如下:“A1”,“A2”,“A3”键是A队加1分、加2分,加3分键盘,B队同理。“比赛开始/比赛继续”是启动键,“比赛暂停”是暂停键。此外,还有两个按键, “24s”复位键,“增加比赛节数”键。 (2) LED显示模块设计 : 显示分为计时和计分显示两个部分,均采用共阴极LED数码管动态扫描显示,由2个四位一体和4个两位一体的共阴极数码管构成。数码管的7个段控端输出经过74HC573驱动器进行电流放大驱动接至P0口。采用动态扫描方式,在足够短的周期内,使各位数码管逐个轮流受控显示。

设计截图: 设计截图

2.4.2 软件设计

软件设计采用C语言模块设计方法,程序由主程序、T0中断程序、显示程序、外部中断0程序、按键程序、初始函数、计时函数、延时函数组成。

C语言程序代码:

#include #include #define uchar unsigned char #define uint unsigned int sbit A8=P2^0; sbit A9=P2^1; sbit A10=P2^2; sbit A11=P2^3; sfr P00=0x80; uchar code wei_1[]={0X01,0X02,0X04,0X08,0X10,0X20,0X40,0X80}; uchar code table[]={0X3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X07,0X7F,0X6F,0x77,0x7c,0x39,0x5e,0x79,0x71,0X00,0X40}; uchar minute=12; //分 uchar second=0; //秒 uchar key_status=0; //按键状态值 uchar scoreA=0; //A队得分 uchar scoreB=0; //B队得分 uchar count1=20; //记录定时器时间 uchar match=1; //比赛节数 uchar rule_time=24; //记录24秒规则 uchar rule_flag=0; //记录24秒规则是否启用 /* 初始化IO口 */ void IO_init(){ A8=0; A9=0; } /* 初始化时间 */ void time_init(){ TMOD = 0x01; TH0 = (65536-50000)/256; TL0 = (65536-50000)%256; EA = 1; ET0 = 1; } /* 延时函数 */ void delay_ms(uint z){ uint i; uchar j; for(i=0;i


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有