• 方案介绍
  • 附件下载
  • 相关推荐
申请入驻 产业图谱

基于51单片机的篮球计时【数码管,休息,罚球】(仿真)

01/30 08:41
912
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

有需要资料的可了解一下.docx

共1个文件

[相关器件] AD8115ASTZ

多路复用器,Cross Point Switch, 16 Channel, PQFP100

篮球比赛计时器设计:

(1)计时功能:

能记录整个赛程的实际比赛时间,并能修改比赛时间,计时范围:0〜99分 钟。

能扣除暂停时间、节间休息时间和罚球时间。

(2)定时功能:

总时间分为四节,每节时间到报警。

节休时间到报警。

(3)节休时间可人为预置。

bit smg2=P2^1;
sbit smg3=P2^2;
sbit smg4=P2^3;
sbit beep=P3^2;//蜂鸣器
sbit led1=P3^3;//指示灯
sbit led2=P3^4;
sbit led3=P3^5;
sbit led4=P3^6;
sbit led5=P3^7;

//数码管编码
uchar code smgduan0[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//显示0~9,无小数点
uchar code smgduan1[10]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};//显示0~9,有小数点

uchar time=0,mode=0;//系统变量
uchar fen=0,miao=0;//计时
uchar fen1=0,fen2=0,fen3=0,fen4=0;//设置时间
uchar miao1=30,miao2=10,miao3=15,miao4=20;
uchar bei1=0,bei2=0;//备份
uchar beep_flag=0; 

uchar key=0;//键值
uchar key_scan()//按键检测
{
	uchar i;
	i=0;
	P1=0x7f;
 	switch(P1)//检测第1行
 	{
  		case 0x77:i=1;break;
  		case 0x7b:i=2;break;
  		case 0x7d:i=3;break;
  		case 0x7e:i=4;
 	}
	P1=0xbf;
 	switch(P1)//检测第2行
 	{
  		case 0xb7:i=5;break;
  		case 0xbb:i=6;break;
  		case 0xbd:i=7;break;
  		case 0xbe:i=8;
 	}
	P1=0xdf;
 	switch(P1)//检测第3行
 	{
  		case 0xd7:i=9;break;
  		case 0xdb:i=10;break;
  		case 0xdd:i=11;break;
  		case 0xde:i=12;
 	}
	P1=0xef;
 	switch(P1)//检测第4行
 	{
  		case 0xe7:i=13;break;
  		case 0xeb:i=14;break;
  		case 0xed:i=15;break;
  		case 0xee:i=16;
 	}
	if(key==i)
		return 0;
	else
	{
		key=i;
		return(key);
	}
}
//延时
void delay(uint j)
{
	uint i;
	for(i=0;i<j;i++)
	{}
}
//显示函数
void disp1()//显示时间
{
	P0=smgduan0[fen/10];smg1=0;delay(100);smg1=1;
	P0=smgduan1[fen%10];smg2=0;delay(100);smg2=1;
	P0=smgduan0[miao/10];smg3=0;delay(100);smg3=1;
	P0=smgduan0[miao%10];smg4=0;delay(100);smg4=1;
}
void disp2()//显示设置时间
{
	P0=smgduan0[fen1/10];smg1=0;delay(100);smg1=1;
	P0=smgduan1[fen1%10];smg2=0;delay(100);smg2=1;
	P0=smgduan0[miao1/10];smg3=0;delay(100);smg3=1;
	P0=smgduan0[miao1%10];smg4=0;delay(100);smg4=1;
}
void disp3()//显示暂停设置时间
{
	P0=smgduan0[fen2/10];smg1=0;delay(100);smg1=1;
	P0=smgduan1[fen2%10];smg2=0;delay(100);smg2=1;
	P0=smgduan0[miao2/10];smg3=0;delay(100);smg3=1;
	P0=smgduan0[miao2%10];smg4=0;delay(100);smg4=1;
}
void disp4()//显示休息设置时间
{
	P0=smgduan0[fen3/10];smg1=0;delay(100);smg1=1;
	P0=smgduan1[fen3%10];smg2=0;delay(100);smg2=1;
	P0=smgduan0[miao3/10];smg3=0;delay(100);smg3=1;
	P0=smgduan0[miao3%10];smg4=0;delay(100);smg4=1;
}
void disp5()//显示罚球设置时间
{
	P0=smgduan0[fen4/10];smg1=0;delay(100);smg1=1;
	P0=smgduan1[fen4%10];smg2=0;delay(100);smg2=1;
	P0=smgduan0[miao4/10];smg3=0;delay(100);smg3=1;
	P0=smgduan0[miao4%10];smg4=0;delay(100);smg4=1;
}
//主函数
void main()
{
	uchar i=0;
	uint m,n;
	TMOD|=0X01;
	TH0=0X3C;

资料借鉴于此纷传

  • 有需要资料的可了解一下.docx
    下载
[相关器件] AD8115ASTZ

多路复用器,Cross Point Switch, 16 Channel, PQFP100

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

相关推荐

方案定制

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