【Proteus仿真】【51单片机】篮球比赛计分器


一、功能简介

本项目使用Proteus8仿真51单片机控制器,使用声光报警模块、动态数码管模块、按键模块等。

主要功能:
系统运行后,数码管显示比赛时间和AB队得分;系统还未开启时,可通过按键K1和K2调节分钟,K3和K4调节秒钟;当按下K7键比赛开始,K1和K2调节A队得分;K3和K4调节B队得分;当比赛时间结束,可按下K6键交换场地,亦可按下K5键清零得分,回归最初状态。


二、软件设计

/*
作者:嗨小易(QQ:3443792007)

*/


//系统数据设置
void sys_data_set(void)
{
   
	u8 key=0;

	key=key_scan(0);

	//开始/暂停
	if(key==KEY7_PRESS)
	{
   
		beep_alarm(10,1000);//提示音
		sys_ctrl.start++;
		if(sys_ctrl.start==1)
		{
   
			LED_KS=0;LED_ZT=1;
			TR0=1;//打开定时器
		}
		else if(sys_ctrl.start==2)
		{
   
			LED_KS=1;LED_ZT=0;
			TR0=0;//关闭定时器	
		}
		else 
		{
   
			LED_KS=0;LED_ZT=1;
			sys_ctrl.start=1;
			TR0=1;//打开定时器	
		}	
	}
	//还未开始,可调节时间
	if(sys_ctrl.start==0)
	{
   
		//分加
		if(key==KEY1_PRESS)	
		{
   
			sys_ctrl.min++;
			if(sys_ctrl.min>59)sys_ctrl.min=0;	
		}
		//分减
		else if(key==KEY2_PRESS)	
		{
   
			sys_ctrl.min--;
			if(sys_ctrl.min<0)sys_ctrl.min=59;	
		}
		//秒加
		else if(key==KEY3_PRESS)	
		{
   
			sys_ctrl.sec++;
			if(sys_ctrl.sec>59)sys_ctrl.sec=0;	
		}
		//秒减
		else if(key==KEY4_PRESS)	
		{
   
			sys_ctrl.sec--;
			if(sys_ctrl.sec<0)sys_ctrl.sec=59;	
		}
		//清零
		else if(key==KEY5_PRESS)	
		{
   
			sys_parm_init();//系统参数初始化	
		}
		//交换场地
		else if(key==KEY6_PRESS)	
		{
   
			sys_ctrl.dir=!sys_ctrl.dir;		
		}
	}
	//比赛开始
	else
	{
   
		//A加分
		if(key==KEY1_PRESS)	
		{
   
			sys_ctrl.score_a++;
			if(sys_ctrl.score_a>99)sys_ctrl.score_a=99;	
		}
		//A减分
		else if(key==KEY2_PRESS)	
		{
   
			sys_ctrl.score_a--;
			if(sys_ctrl.score_a<0)sys_ctrl.score_a=0;	
		}
		//B加分
		else if(key==KEY3_PRESS)	
		{
   
			sys_ctrl.score_b++;
			if(sys_ctrl.score_b>99)sys_ctrl.score_b=99;	
		}
		//B减分
		else if(key==KEY4_PRESS)	
		{
   
			sys_ctrl.score_b--;
			if(sys_ctrl.score_b<0)sys_ctrl.score_b=0;	
		}	
	}
}


//应用控制系统
void app_ctrl_sys(void)
{
   
	sys_parm_init();//系统参数初始化
	time0_init();//定时器0初始化	

	while(1)
	{
   
		sys_data_show();//系统数据显示
		sys_data_set();//系统数据设置	
	}		
}



三、实验现象

B站演示视频:https://space.bilibili.com/444388619

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

联系作者

视频地址:https://space.bilibili.com/444388619/video
专注于51单片机、STM32、国产32、DSP、Proteus、arduino、ESP32、物联网软件开发,PCB设计,视频分享,技术交流。

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-05 18:58:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-05 18:58:03       100 阅读
  3. 在Django里面运行非项目文件

    2023-12-05 18:58:03       82 阅读
  4. Python语言-面向对象

    2023-12-05 18:58:03       91 阅读

热门阅读

  1. android11-隐藏状态栏和导航栏

    2023-12-05 18:58:03       43 阅读
  2. 【Rust与AI】概览和方向

    2023-12-05 18:58:03       55 阅读
  3. js中()的作用

    2023-12-05 18:58:03       62 阅读