基于51单片机的篮球记分牌设计

一、设计任务  

设计一个基于单片机的篮球计分牌,实现两队的计分功能与24秒计时功能。

二、 性能指标要求 

    (1)按照题目要求独立设计系统所需电路,并完成硬件电路的制作及调试。

    (2)结合硬件能够正常计分(1,2,3)。

    (3)能够正常显示分值。

    (4)能够正常修改工作模式(计分与24秒)。

    (5)能够24秒的误差不小于1秒。

拓展部分

     能记录两队球员犯规次数计数。

三、设计思路及设计框图

1.设计思路

     这次实训的芯片我们采用了AT89C52,并同时用keil进行C语言编程,再生成的HEX文件通过下载口导入AT89C52中。

     器件中有一个12M的晶振并用与芯片相对应的管脚连接,将晶振产生的时钟信号作为定时信号。篮球计分牌分为三个部分:开关控制、数码管显示和警示电路。P1口接8按键,分别作为显示切换,秒计时,犯规计数。P0口和P2口分别接数码管的段选和位选。

     主要在篮球比赛中用于记录24秒计时,犯规计数和显示两队在比赛中的比分。

总体设计框图:

部分程序:

#include <reg51.h>
unsigned int smg[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
unsigned int t = 0, fs1 = 0, fs2 = 0, fg1 = 0, fg2 = 0, q2 = 0, q3 = 0;
unsigned int m = 24;

sbit led =P3^3;
sbit fmq = P3^2;

void delay(unsigned int t)
{
    unsigned int i,j;
    for(i = 0;i < 200;i++)
        for(j = 0;j < t;j++);

void t_0()    interrupt 1
{
    TH0 = 0X3C;
    TL0 = 0XB0;
    t++;
    if(t == 20)
    {
        t = 0;
        m--;
    }
}

void xyh()
{
            P2 = 0xfb;
            P0 = smg[fs1%10];
            delay(1);
            P2 = 0xf7;
            P0 = smg[fs1/10];
            delay(1);
            P2 = 0xfe;
            P0 = smg[fs2%10];
            delay(1);
            P2 = 0xfd;
            P0 = smg[fs2/10];
            delay(1);
}
void xz()
{
    if (P1==0x7f)
        {
           delay (10);
             if (P1==0x7f)
             {
                q2 += 1;
                    if(q2 > 1)
                    {
                       q2 = 0;
                    }
                    while(P1==0x7f);
             }
        }
        if(P1==0xbf)
        {
            delay (10);
            if(P1==0xbf)
            {
                q3 += 1;
                if(q3 > 1)
                {
                    q3 = 0;
                }
                while (P1==0xbf);
            }
        }
}
void xs()
{
    if(q2==0)
    {
        if(q3==1)
        { 
            led = 1;
            P2 = 0xfb;
            P0 = smg[fs1%10];
            delay(1);
            P2 = 0xf7;
            P0 = smg[fs1/10];
            delay(1);
            P2 = 0xfe;
            P0 = smg[fs2%10];
            delay(1);
            P2 = 0xfd;
            P0 = smg[fs2/10];
            delay(1);    
        }
        else
        { 
            led = 0;
            P2 = 0xfb;
            P0 = smg[fg1%10];
            delay(1);
            P2 = 0xf7;
            P0 = smg[fg1/10];
            delay(1);
            P2 = 0xfe;
            P0 = smg[fg2%10];
            delay(1);
            P2 = 0xfd;
            P0 = smg[fg2/10];
            delay(1);    
        }
    }
    else 
    {    
       P2 = 0xfd;
        P0 = smg[m/10];
        delay(1);
        P2 = 0xfe;
        P0 = smg[m%10];
        delay(1);
    }
}

参考电路:

 资料内容:

 需要全部资料可以在资源下载。

 

需要完整的资料可在我的资源里下载,也可以加入我的纷传圈子,里面有资源压缩包的百度网盘下载地址及提取码。

纷传点击用微信打开即可,过程有点繁琐请见谅。

  • 4
    点赞
  • 59
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白茶丫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值