【51单片机】【protues仿真】基于51单片机的篮球计时计分器系统

目录

一、主要功能

二、使用步骤

三、硬件资源

四、软件设计

五、实验现象

一、主要功能

1、LCD1602液晶显示

2、增加比赛节数,开始或暂停比赛时间,两队加分

3、交换比赛场地时,交换甲、乙两队比分的位置

4、比赛时间结束时,能发出报警指令

5、24秒倒计时功能,复位24秒,24秒倒计时结束

启动蜂鸣器报警,同时比赛时间暂停,处理好后按

一下24秒复位键,比赛继续。

二、使用步骤

基于51单片机的篮球计时计分器系统支持24秒进攻倒计时、12分钟比赛计时,具备暂停/继续功能,场地互换,加分减分和蜂鸣器提示。

三、硬件资源

1、51单片机核心模块

2、按键模块

3、蜂鸣器模块

4、LCD1602显示模块

四、软件设计

#include"KeyBord.h"

#include"LCD1602.h"

#include"Timer.h"

sbit Beep = P3^0;

char rule_time = 24; //24S规则

unsigned int A_Score = 0; //A队分数

unsigned int B_Score = 0; //B队分数

unsigned int T_biy = 0 ; //中场换地标注 0初始

unsigned char match = 1; //比赛节数

unsigned char rule_flag = 0; //记录24S规则是否启用

unsigned char Beep_flag =0 ; //判断蜂鸣器是否报警

unsigned char Beep_flag_24 =0 ; //判断24s蜂鸣器是否报警

unsigned char Start_flag = 0; //开始标志位

unsigned char Time_Data4; //数组用于存放处理的设定时间

unsigned char Score6; //用于存储处理的比赛分数

unsigned char Temp4; //用于存储处理的比赛节数和24S规则

void Key_Control();

void main()

{

Beep_flag = 1; //蜂鸣器报警启用

LCD_Init();

Timer0_Init();

while(1)

{

Key_Control();

Time_Data0 = '0' + minute / 10; //赛程时间 分 十位

Time_Data1 = '0' + minute % 10; //赛程时间 分 个位

Time_Data2 = '0' + second / 10; //赛程时间 秒 十位

Time_Data3 = '0' + second % 10; //赛程时间 秒 个位

Temp0 = '0' + match / 10; //赛程节数 十位

Temp1 = '0' + match % 10; //赛程节数 个位

Temp2 = '0' + rule_time / 10; //24秒倒计时 十位

Temp3 = '0' + rule_time % 10; //24秒倒计时 个位

Score0 = '0' + A_Score / 100; //A队分数 百位

Score1 = '0' + A_Score % 100 / 10; //A队分数 十位

Score2 = '0' + A_Score % 100 % 10; //A队分数 个位

Score3 = '0' + B_Score / 100; //B队分数 百位

Score4 = '0' + B_Score % 100 / 10; //B队分数 十位

Score5 = '0' + B_Score % 100 % 10; //B队分数 个位

if(T_biy == 0)

{

LCD_Write_Str(1,0,"H.T"); //对应的位置显示

LCD_Write_Char(5,0,Score0);

LCD_Write_Char(6,0,Score1);

LCD_Write_Char(7,0,Score2);

LCD_Write_Str(8,0,":");

LCD_Write_Char(9,0,Score3);

LCD_Write_Char(10,0,Score4);

LCD_Write_Char(11,0,Score5);

LCD_Write_Str(13,0,"R.T");

}

else

{

LCD_Write_Str(1,0,"R.T"); //对应的位置显示

LCD_Write_Char(5,0,Score3);

LCD_Write_Char(6,0,Score4);

LCD_Write_Char(7,0,Score5);

LCD_Write_Str(8,0,":");

LCD_Write_Char(9,0,Score0);

LCD_Write_Char(10,0,Score1);

LCD_Write_Char(11,0,Score2);

LCD_Write_Str(13,0,"H.T");

}

LCD_Write_Char(0,1,Time_Data0);

LCD_Write_Char(1,1,Time_Data1);

LCD_Write_Str(2,1,":");

LCD_Write_Char(3,1,Time_Data2);

LCD_Write_Char(4,1,Time_Data3);

LCD_Write_Str(6,1,"SEC-");

LCD_Write_Char(10,1,Temp0);

LCD_Write_Char(11,1,Temp1);

LCD_Write_Char(13,1,Temp2);

LCD_Write_Char(14,1,Temp3);

if(second < 0)

{

if(minute == 0) //判断某节点是否结束

{

if(match < MATCH) //判断是否为最后一节比赛

{

//计时系统恢复为默认值,比赛节数加一

match++;

minute = SET_TIME;

rule_time = RULE_TIME;

second = 0;

}

else

{

second = 0;

}

TR0 = 0; //停止时钟,等待下一次比赛开始

while(Beep_flag)

{

Key_Control();

Beep = ~Beep; //板子为无源蜂鸣器

DelayUs2x(10);

}

}

else

{

second = 59;

minute--;

}

}

if(rule_time < 0 && rule_flag) //24秒结束,球未出手,计时器暂停,24秒复位

{

TR0 = 0;

Beep_flag_24=1;

rule_time = RULE_TIME;

}

if(Beep_flag_24)

{

Key_Control();

Beep = 0;

}

}

}

五、实验现象

演示视频:

相关推荐
炸膛坦客14 小时前
单片机/C/C++八股:(二十六)IIC 专题(I²C)---- 上集
c语言·c++·单片机
华清远见IT开放实验室19 小时前
实验室建设案例 | 石家庄科技信息职业学院嵌入式实验室——从底层硬件到系统应用,一所应用型高校的嵌入式人才培养这样落地
linux·arm开发·stm32·嵌入式硬件·高校·实验室建设
AI的探索之旅21 小时前
AI辅助原理图评审:电源去耦、BOOT引脚、VCAP——19项逐一核查,遗漏?不存在的
人工智能·vscode·嵌入式硬件
茯苓gao21 小时前
嵌入式开发笔记:EtherCAT协议从硬件到软件完整配置指南——从零搭建一套EtherCAT通信系统
笔记·嵌入式硬件·学习
程序员Rock21 小时前
上位机开发-MODBUS面试常见问题
c语言·c++·面试·职场和发展·上位机
GeekArch21 小时前
第24讲:Vibe模式代码风格控制——适配Keil/STM32工程规范
人工智能·stm32·单片机·嵌入式硬件·mcu·决策树·ai编程
Freedom_my1 天前
STM32项目3
stm32·单片机·嵌入式硬件
国科安芯1 天前
星间光链路:AS32S601型抗辐射MCU在空间激光通信终端控制中的技术实现
服务器·网络·单片机·嵌入式硬件·物联网·安全·信息与通信
小李不困还能学1 天前
基于 51 单片机的8 路抢答器设计教程
单片机·嵌入式硬件·mongodb·抢答器
CedarQR1 天前
万字长文:从零在 RK3588 上部署 PaddleSpeech 中文 TTS 全流程(FastSpeech2 + HiFiGAN)
开发语言·c++·嵌入式硬件·ubuntu·json