基于51单片机的篮球积分器

基于51单片机的篮球积分器

基于51单片机的篮球计分器,设置三个按键,分别是+1分、+2分、+3分,一个按键按三次中断-1分。

例程:

#include <reg52.h> // 定义头文件
#define delay_time 1000
#define seg_data P1
#define delay_display 1000
unsigned char jifen;
unsigned char TAB[10]={ 0x3f, 0x06, 0x5b, 0x4f, 0x66, // 数字0-4
0x6d, 0x7d, 0x07, 0x7f, 0x6f }; // 数字5-9
sbit ADD1=P2^1; //定义硬件的接口
sbit ADD2=P2^3;
sbit ADD3=P2^5;
sbit SUB=P3^5;
sbit MP1=P3^0;
sbit MP2=P3^1;

void delay (unsigned int a) // 声明延迟函数
{
while(a–);
}

void yifen() //分数加 子函数
{
if(ADD10) //加1分
{
delay(delay_time);
if(ADD1
0)
{
if(jifen>=99) jifen=99;
else jifen++;
}
while(ADD1==0);

}

if(ADD20) //加2分
{
delay(delay_time);
if(ADD2
0)
{
if(jifen>=99) jifen=99;
else jifen++; jifen++;
}
while(ADD2==0);

}

if(ADD30) //加3分
{
delay(delay_time);
if(ADD3
0)
{
if(jifen>=99) jifen=99;
else jifen++; jifen++;jifen++;
}
while(ADD3==0);

}

/* if(SUB0) //按键减分
{
delay(delay_time);
if(SUB
0)
{
if(jifen>=99) jifen=99;
else jifen–;
}
while(SUB==0);

}

****/

}

void display() //显示子函数
{
seg_data=TAB[jifen/10];
MP1=0;MP2=1;
delay(delay_display);
MP1=1;MP2=1;
seg_data=TAB[jifen%10];
MP1=1;MP2=0;
delay(delay_display);
MP1=1;MP2=1;
}

void INIT()
{

TMOD=0x50;
TH1=(65536-3)/256;
TL1=(65536-3)%256;
TR1=1; //启动定时计数器
EA=1; //中断总开关
ET1=1; //使能定时计数器中断
}

//主程序==================================
main() // 主程序开始
{ INIT(); //条调用INIT函数,初始化中断
P1=0x3f;MP1=0;MP2=0; //启动时数码管显示“00”
while(1)
{
yifen(); //包调用
display();
}
}

void Timer0() interrupt 3 //计数器的中断服务函数
{

jifen–;
TH1=(65536-3)/256; //重装初值
TL1=(65536-3)%256;
}

图片:

按键硬件连接

©️2020 CSDN 皮肤主题: 1024 设计师:上身试试 返回首页