D04基于51单片机的1602篮球积分计时器设计(一)

1、简介
用AT89C51作为核心部件进行逻辑控制及信号产生的单片机技术和C语言编程设计的篮球比赛计时器。此篮球计时计分器在硬件方面主要采用AT89C51单片机作为主控核心,由独立按键、蜂鸣器、LCD1602显示屏显示。具有灵活方便、适用范围广的特点,基本能够满足实践需求。

2、主要功能
a.支持按键设置开始、暂停、24S倒计时复位、甲队加分、乙队加分。

b.支持LCD1602显示甲队、乙队分数、比赛时间、24S倒计时。

c.支持比赛结束后蜂鸣器告警。

3、环境搭建
编译平台:Keil C51
编程语言:C语言
仿真版本:Proteus8.6 +

4、源程序
使用keil C51软件(内附安装包)实现程序编写与编译。

#include<reg51.h>//51单片机头文件
typedef unsigned char uchar;
typedef unsigned int  uint;
sbit K1=P3^2;//比赛倒计时开始/暂停
sbit K2=P3^3;//24s倒计时重新开始
sbit K3=P1^3;//甲队+1按键
sbit K4=P1^4;//甲队+2按键
sbit K8=P1^5;//乙队+3按键
sbit K5=P1^0;//乙队+1按键
sbit K6=P1^1;//乙队+2按键
sbit K7=P1^2;//甲队+3按键
sbit beep=P2^0;//蜂鸣器接口  
sbit RS=P2^7;
sbit E=P2^5;
char miao,fen,num,time,aa;
uchar bb,cc;
uchar code table1[]={"H.T 000:000 R.T "};
uchar code table2[]={"12:00  SEC-1  24"};
//延时子函数
void delay(uint z)  
{
	uint x;
	uchar y;
	for(x=z;x>0;x--)
  		for(y=110;y>0;y--);
}
//LCD1602液晶写指令子函数
void write_com(uchar com)
{
	RS=0;
	P0=com;
	delay(5);
	E=1;
	delay(5);
	E=0;
}
//LCD1602液晶写数据子函数
void write_date(uchar date)
{
	RS=1;
	P0=date;
	delay(5);
	E=1;
	delay(5);
	E=0;
}
//LCD1602液晶初始化子函数
void LCD1602_init()
{
	uchar i;
	bb=0;    //H.T分数初始化
	cc=0;    //R.T分数初始化
	time=0;
	TMOD=0x10;    //定时器1初始化
	TL1=0x00;
	TH1=0x4c;
	EA=1;     //开总中断
	ET1=1;     //开定时器1
	TR1=0;     //定时器1不工作
	EX0=1;     //开中断0
	EX1=1;     //开中断1
	IT0=1;     //中断0为边沿触发
	IT1=1;     //中断1为边沿触发
	E=0; 
	beep=0;
	miao=0;
	fen=12;
	num=1;
	aa=24;
	write_com(0x38);  //LCD设置初始化
	write_com(0x0c);
	write_com(0x06);
	write_com(0x01);
	write_com(0x80);  //LCD显示初始化
	for(i=0;i<16;i++)
	{
	  	write_date(table1[i]);
	}
	write_com(0x80+0x40);
	for(i=0;i<16;i++)
	{
	  	write_date(table2[i]);
	}
}
//分数更新子函数
void point_lcd(uchar add,uchar dat)
{
	write_com(0x80+add);
	write_date(0x30+dat/100);
	write_date(0x30+(dat%100)/10);
	write_date(0x30+dat%10);
	write_com(0x80+add);
}
//按键扫描子函数
void keyscan()
{
	if(K3==0)     //K3按下H.T分数加一
	{
  		while(K3==0);
		bb++;
  		point_lcd(0x04,bb);  //分数显示更新
  		if(K3==0)    //松手检测
  		{
   			while(K3==0);
   			delay(20);
  		}
	}
	else if(K4==0)    //S4按下H.T分数加二
	{
  		while(K4==0);
		bb=bb+2;
  		point_lcd(0x04,bb);
  		if(K4==0)
  		{
   			while(K4==0);
   			delay(20);
  		}
	}
	else if(K7==0)    //S4按下H.T分数加二
	{
  		while(K7==0);
		bb=bb+3;
  		point_lcd(0x04,bb);
  		if(K7==0)
  		{
   			while(K7==0);
   			delay(20);
  		}
	}
	else if(K5==0)    //S5按下R.T分数加一
	{
  		while(K5==0);
		cc++;
  		point_lcd(0x08,cc);
  		if(K5==0)
  		{
   			while(K5==0);
   			delay(20);
  		}
	}
	else if(K6==0)    //S6按下R.T分数加2
	{
  		while(K6==0);
		cc=cc+2;
  		point_lcd(0x08,cc);
  		if(K6==0)
  		{
   			while(K6==0);
   			delay(20);
  		}
	}
	else if(K8==0)    //S6按下R.T分数加2
	{
  		while(K8==0);
		cc=cc+3;
  		point_lcd(0x08,cc);
  		if(K8==0)
  		{
   			while(K8==0);
   			delay(20);
  		}
	}
}

5、proteus8.6仿真
采用proteus8.6软件(内附安装包)实现仿真设计,如下图所示。proteus软件一般存在高低版本兼容问题,该仿真是通过proteus8.6导出的,所以请尽量使用proteus8.6打开文件,低于proteus8.6的版本不能够正常使用,高于proteus8.6的版本除了proteus8.8/8.9理论上可以正常使用。
开始:
在这里插入图片描述
加分:
在这里插入图片描述

6、设计资料清单
设计资料主要包括C程序+仿真+设计报告+使用说明+元件清单+操作视频等,设计报告主要包括硬件电路、软件设计、仿真调试等等,仅供参考。由于不定期更新,最新的资料包不一定与下面图片完全一致,但主要资料都有。

在这里插入图片描述

7、获取方式
百度网盘链接:
https://pan.baidu.com/s/11ouBTSV_8U8B3nNBdnVSQg?pwd=v9i1

有偿获取,非诚勿扰🙏

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值