基于单片机的篮球计时计分器
时间:11-23
来源:互联网
点击:
电路功能:
按下k1比赛开始
按下k2比赛暂停
按下k3键24s重新计时(用于抢断,或后场篮板等)
k4加1分
k5加2分
k6加3分
元件清单:
AT89c52单片机
R1—R8 10K
R9—R16 200R
R17—R24 1K
三极管 9015 *8个
四位一体共阳数码管两个
其他的电路图上能看清
制作原理图如下:
源程序:
#include
#define uint unsigned int
#define uchar unsigned char
uchar code table[]={ //不带小数点的数码管编码
0xc0,0xf9,0xa4,0xb0,
0x99,0x92,0x82,0xf8,
0x80,0x90};
uchar code table1[]={ //带小数点的数码管编码
0x40,0x79,0x24,0x30,
0x19,0x12,0x02,0x78,
0x00,0x10};
sbit k1=P3^1; //按下比赛开始
sbit k2=P3^2; //按下比赛暂停
sbit k3=P3^3; //24s计时
sbit k4=P3^4; //加1分
sbit k5=P3^5; //加2分
sbit k6=P3^6; //加3分
sbit beep=P3^7;
uchar second,minute;
uint num,num1,num2,num3,num4,num5,sum,sum1,sum2,sum3;
void display();
void keyscan();
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void init()
{
TMOD=0x11;
TH0=(65536-50000)/256;
TL0=(65536-50000)%6;
TH1=(65536-50000)/256;
TL1=(65536-50000)%6;
EA=1;
ET0=1;
TR0=0;
ET1=1;
TR1=0;
num2=24;
}
void main()
{
init();
while(1)
{
display();
keyscan();
}
}
void timer0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%6;
num++;
if(num==20)
{
num=0;
second++;
if(second==60)
{
second=0;
minute++;
if(minute==99)
{
minute=0;
}
}
}
}
void timer1() interrupt 3
{
TH1=(65536-50000)/256;
TL1=(65536-50000)%6;
num1++;
if(num1==20)
{
num1=0;
num2--;
if(num2==0)
{
beep=0;
delay(300);
beep=1;
delay(300);
TR1=0;
}
}
}
void display()
{
P2=0xf7;
P0=table[second];
delay(1);
P2=0xff;
P2=0xfb;
P0=table[second/10];
delay(1);
P2=0xff;
P2=0xfd;
P0=table1[minute];
delay(1);
P2=0xff;
P2=0xfe;
P0=table[minute/10];
delay(1);
P2=0xff;
P2=0xdf;
P0=table1[num2];
delay(1);
P2=0xff;
P2=0xef;
P0=table[num2/10];
delay(1);
P2=0xff;
P2=0x7f;
P0=table[(num3+num4+num5)];
delay(1);
P2=0xff;
P2=0xbf;
P0=table[(num3+num4+num5)/10];
delay(1);
P2=0xff;
}
void keyscan()
{
if(k1==0)
{
TR0=1;
TR1=1;
}
if(k3==0)
{
num2=24;
TR1=1;
}
if(k4==0)
{
delay(10);
if(k4==0)
{
num3++;
while(!k4);
}
}
if(k5==0)
{
delay(10);
if(k5==0)
{
num4+=2;
while(!k5);
}
}
if(k6==0)
{
delay(10);
if(k6==0)
{
num5+=3;
while(!k6);
}
}
if(k2==0)
{
TR0=0;
TR1=0;
}
}
按下k1比赛开始
按下k2比赛暂停
按下k3键24s重新计时(用于抢断,或后场篮板等)
k4加1分
k5加2分
k6加3分
元件清单:
AT89c52单片机
R1—R8
R9—R16
R17—R24
三极管 9015
四位一体共阳数码管两个
其他的电路图上能看清
制作原理图如下:
源程序:
#include
#define uint unsigned int
#define uchar unsigned char
uchar code table[]={
0xc0,0xf9,0xa4,0xb0,
0x99,0x92,0x82,0xf8,
0x80,0x90};
uchar code table1[]={
0x40,0x79,0x24,0x30,
0x19,0x12,0x02,0x78,
0x00,0x10};
sbit k1=P3^1;
sbit k2=P3^2;
sbit k3=P3^3;
sbit k4=P3^4;
sbit k5=P3^5;
sbit k6=P3^6;
sbit beep=P3^7;
uchar second,minute;
uint num,num1,num2,num3,num4,num5,sum,sum1,sum2,sum3;
void display();
void keyscan();
void delay(uint z)
{
}
void init()
{
}
void main()
{
}
void timer0() interrupt 1
{
}
void timer1() interrupt 3
{
}
void display()
{
}
void keyscan()
{
}
单片机篮球计时计分 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)