新闻中心

EEPW首页>嵌入式系统>设计应用> 单片机篮球计分器程序和仿真图

单片机篮球计分器程序和仿真图

作者: 时间:2016-11-24 来源:网络 收藏
1、 基本要求
(1) 按照题目要求独立设计系统所需电路,并完成硬件电路的制作及调试。
(2)结合硬件能够正常计分
(3)能够正常显示分值。
(4)能够正常修改工作模式
(5)能够24秒的误差不小于1秒。
2、发挥部分
能够两队球员犯规次数计数。

三:基本原理与参考框图

在本题目中用到的参考原理图如下:





#include
#define uchar unsigned char
uchar code table[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar code wei[]={0xfe,0xfd,0xfb,0xf7,0xef,0xbf,0xdf,0x7f};
uchar fen=0,miao=0,yi1=0,yi2=0,er1=0,er2=0;
int a=0,flag=0,temp=0,temp1=0;fangui1=0,fangui2=0;
sbit key1=P1^0;
sbit key2=P1^1;
sbit key3=P1^2;
sbit key4=P1^3;
sbit key5=P1^4;
void delay(uchar z)
{
uchar i,j;
for(i=z;i>0;i--)
for(j=110;j>0;j--);
}
void time01()//定时器相关
{
EA=1;
TR0=1;//启动定时器0
ET0=1;//开定时器0中断
TMOD=1;
TH0=(65536-50000)/256;
TL0=(65536-50000)%6;//声明:定时50毫秒
}
display1(void)
{
P2=wei[0];
P0=table[fen];
delay(3);
P2=wei[1];
P0=table[miao];
delay(3);
P2=wei[2];
P0=table[fangui1];
delay(3);
P2=wei[3];
P0=table[fangui2];
delay(3);
}
display2()
{
P2=wei[0];
P0=table[yi2];
delay(3);
P2=wei[1];
P0=table[yi1];
delay(3);
P2=wei[2];
P0=table[er2];
delay(3);
P2=wei[3];
P0=table[er1];
delay(3);
}
void keyboard()
{
if(key1==0)
{
delay(10);
if(key1==0)
{
flag=!flag;
while(!key1);
delay(4);
}
}

}
void jishu()
{
if(key2==0)
{
delay(10);
if(key2==0)
{ delay(3);
temp++;
yi1=temp;
yi2=temp/10;
if(yi2==10) yi2=0;
while(!key2);
delay(4);
}
}
if(key3==0)
{
delay(10);
if(key3==0)
{ delay(3);
temp++;
er1=temp;
er2=temp/10;
if(er2==10) er2=0;
while(!key3);
delay(5);

}
}
if(key4==0)
{
delay(10);
if(key4==0)
{ delay(3);
fangui1++;
if(fangui1==10)fangui1=0;
while(!key4);
delay(5);

}

}
if(key5==0)
{
delay(10);
if(key5==0)
{ delay(3);
fangui2++;
if(fangui2==10) fangui2=0;
while(!key5);
delay(5);
}

}

}
void main(void)
{
time01();
while(1)
{
keyboard();
jishu();
if(flag==1) display1();
if(flag==0) display2();

}
}

void time0() interrupt1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%6;
a++;
if(a==20)
{
a=0;
miao++;
if(miao==10)
{
miao=0;
fen++;
}
if(fen==2&&miao==5)
{
fen=0;miao=0;
}
}
}


评论


技术专区

关闭