• 方案介绍
    • 1.  简介
    • 2.  主要功能
    • 3.  源程序(Keil5)
    • 4.  仿真proteus8.6
    • 5.  设计报告
    • 6.  资料清单
    • 7.  资料获取链接
  • 附件下载
  • 相关推荐
申请入驻 产业图谱

基于51单片机的多功能篮球积分计时器设计(一)

04/08 09:22
534
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

单片机仿真设计合集资料获取.pdf

共1个文件

[相关器件] BGA5M1BN6E6327XTSA1

射频-放大器/低噪放大器/模拟前端,BGA5M1 - LTE / 3G LNAs '

资料清单:C程序+仿真+设计报告+使用说明+元件清单+操作视频

仿真版本:Proteus8.6及以上版本

程序编译:Keil5 C51

编程语言:C语言

设计编号:【D06】

1.  简介

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

2.  主要功能

a.支持按键设置开始、暂停、24S倒计时复位、A队加减分、B队加减分、交换场地。

b.支持数码管显示A队、B队分数、比赛时间、24S倒计时。

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

3.  源程序(Keil5)

本设计采用keil5 C51软件(内附安装包)实现程序设计。如需用keil4打开程序,可自行通过.c和.h文件新建工程即可。

#include<reg51.h>
#define LEDData P0
unsigned char code LEDCode[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
int minit,second,count,count1;        	//分,秒,计数器
char min=12,sec=0;
sbit add1=P1^0;						//甲对加分,每按一次加1分   /在未开始比赛时为加时间分
sbit dec1=P1^1;						//甲对减分,每按一次减1分	/在未开始比赛时为减时间分
sbit exchange=P1^2;					//交换场地
sbit add2=P1^3;						//乙对加分,每按一次加1分	/在未开始比赛时为加时间秒
sbit dec2=P1^4;						//乙对减分,每按一次减1分	/在未开始比赛时为减时间秒
sbit p24_sec=P1^5;
sbit secondpoint=P0^7;				//秒闪动点
sbit led1=P2^7;
sbit led2=P2^6;
sbit led3=P2^5;
sbit led4=P2^4;
sbit led5=P2^3;
sbit led6=P2^2;
sbit led7=P2^1;
sbit led8=P2^0;
sbit led9=P3^7;
sbit led10=P3^6;
sbit led11=P3^5;
sbit led12=P3^4;

sbit alam=P1^7;						//报警

bit  playon=0;						//比赛进行标志位,为1时表示比赛开始,计时开启
bit  timeover=0;					//比赛结束标志位,为1时表示时间已经完
bit  AorB=0;						//甲乙对交换位置标志位
bit  halfsecond=0;					//半秒标志位

unsigned int scoreA;				//甲队得分
unsigned int scoreB;				//乙队得分
char sec24=24;		

void Delay5ms(void)
{
	unsigned int i;
	for(i=100;i>0;i--);
}
void Delay(void)
{
	unsigned int i;
	for(i=10000;i>0;i--);
}
void display(void)
{
//-----------显示时间分--------------
	LEDData=LEDCode[minit/10];
	led1=0;
	Delay5ms();
	led1=1;
	LEDData=LEDCode[minit%10];
	led2=0;
	Delay5ms();
	led2=1;
//-------------秒点闪动------------
	if(halfsecond==1)
		LEDData=0x7f;
	else
		LEDData=0xff;
	led2=0;
	Delay5ms();
	led2=1;
	secondpoint=0;
//-----------显示时间秒------------
	LEDData=LEDCode[second/10];
	led3=0;
	Delay5ms();
	led3=1;
	LEDData=LEDCode[second%10];
	led4=0;
	Delay5ms();
	led4=1;
//-----------显示1组的分数百位-------
	if(AorB==0)
		LEDData=LEDCode[scoreA/100];
	else
		LEDData=LEDCode[scoreB/100];
	led5=0;
	Delay5ms();
	led5=1;
//---------------显示1组分数的十位-----------
	if(AorB==0)
		LEDData=LEDCode[(scoreA%100)/10];
	else
		LEDData=LEDCode[(scoreB%100)/10];
	led6=0;
	Delay5ms();
	led6=1;

//---------------显示1组分数的个位-----------
	if(AorB==0)
		LEDData=LEDCode[scoreA%10];
	else
		LEDData=LEDCode[scoreB%10];
	led7=0;
	Delay5ms();
	led7=1;

//-----------显示2组分数的百位-------
	if(AorB==1)
		LEDData=LEDCode[scoreA/100];
	else
		LEDData=LEDCode[scoreB/100];
	led8=0;
	Delay5ms();
	led8=1;
//-----------显示2组分数的十位-----------
	if(AorB==1)
		LEDData=LEDCode[(scoreA%100)/10];
	else
		LEDData=LEDCode[(scoreB%100)/10];
	led9=0;
	Delay5ms();
	led9=1;

//-----------显示2组分数的个位-----------
	if(AorB==1)
		LEDData=LEDCode[scoreA%10];
	else
		LEDData=LEDCode[scoreB%10];
	led10=0;
	Delay5ms();
	led10=1;

4.  仿真proteus8.6

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

开始:

加分:

5.  设计报告

设计报告主要包括硬件电路、软件设计、仿真调试等等,仅供参考。

6.  资料清单

设计资料主要包括C程序+仿真+设计报告+使用说明+元件清单+操作视频等。

7.  资料获取链接

百度网盘下载链接:【D06】百度网盘下载链接

更多单片机仿真设计合集:单片机仿真设计合集

  • 单片机仿真设计合集资料获取.pdf
    下载
[相关器件] BGA5M1BN6E6327XTSA1

射频-放大器/低噪放大器/模拟前端,BGA5M1 - LTE / 3G LNAs '

点赞
收藏
评论
分享
加入交流群
举报

相关推荐

方案定制

去合作
方案开发定制化,2000+方案商即时响应!