历史上的今天
返回首页

历史上的今天

今天是:2024年09月07日(星期六)

2020年09月07日 | 51单片机篮球计分器程序+电路图

2020-09-07 来源:51hei


以下是篮球计分器的c语言程序源代码:

#include


#include

#define uchar unsigned char

#define uint unsigned int

uchar secs = 0;

uchar minutes = 1;

uchar LED,num1,num2,num = 4;

uchar  flag1 = 1,flag2 = 0;

uchar m_secs = 24;

uchar key_value = 0;

uchar table[13] = {1,2,3,4,5,6,7,8,9,0,1,2,3};

uchar code LedNum[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

uchar scan_kay(void);

void delay(uchar z);

void INT0_Initial(void)

{

    EX0 = 1;

    IT0 = 1;

    EA = 1;

    P1 = 0xF0;

}


void INT0_Interrupt(void) interrupt 0

{

    uchar temp;

    temp = scan_kay();

    if(temp!=0x7f)

    {

        key_value = temp;

    }

    P1 = 0xF0;

}


void Time0_Initial(void)

{

    TMOD = 0x01;

    TH0 = (65536-50000)/256;

    TL0 = (65536-50000)%256;

    ET0 = 1;

    TR0 = 1;

    EA = 1;

    PT0 = 1;

    PX0 = 0;

}


volatile uchar cnt = 0;

void Time0_Interrupt(void) interrupt 1

{

    TH0 = (65536-50000)/256;

    TL0 = (65536-50000)%256;

    cnt ++;

minutes=11;

    if(cnt==15)

    {

        cnt = 0;

        secs --;

        m_secs --;

        if(flag2==1)

        {

            LED = !LED;

        }

        if(flag2==0)

        {

            LED = 0;

        }

    }

    if(secs>60)

    {

        secs = 59;

        minutes --;

    }

    if(m_secs>24)

    {

        m_secs = 23;

        if(flag1==1)

        {

            flag2 = 1;

        }

        if(flag1==0)

        {

            flag2 = 0;

        }

    }

    if(minutes>60)

    {

        minutes = 11;

        m_secs = 24;

        num ++;

    }

    if(num==4)

    {

        num = 1;

    }

}

void HEXTOBCD(void)

{

    table[0] = LedNum[num];

    table[1] = LedNum[m_secs/10];

    table[2] = LedNum[m_secs%10];

    table[3] = LedNum[minutes/10];

    table[4] = LedNum[minutes%10];

    table[5] = LedNum[secs/10];

    table[6] = LedNum[secs%10];

    table[7] = LedNum[num1/100];

    table[8] = LedNum[num1%100/10];

    table[9] = LedNum[num1%10];

    table[10] = LedNum[num2/100];

    table[11] = LedNum[num2%100/10];

    table[12] = LedNum[num2%10];

}


void Display(uchar *str)

{

    uchar i,temp = 0;

    for(i=0;i<13;i++)

    {

        P0 = 0x00;

        _nop_();

        P2 = temp+i;

        P0 = str[i];

        delay(2);

    }

}

uchar i,j;

void delay(uchar z)

{

for(i=1;i  for(j=1;j<110;j++);

}


void main()

{

    INT0_Initial();

    Time0_Initial();

    delay(10);

    LED = 0;

    while(1)

    {

        switch(key_value)

     {

            case 12:

      {

                num1 ++;key_value = 0;

                flag1 = 0;

                if(num1>255)

          {

                 num1 = 0;

          }

             break;

      }

            case 13:

      {

                num1 --;key_value = 0;

                flag1 = 0;

                if(num1>255)

          {

                 num1 = 255;

          }

             break;

      }

            case 14:

      {

                num2 ++;key_value = 0;

                flag1 = 0;

                if(num2>255)

          {

                 num2 = 0;

          }

             break;

      }

            case 15:

      {

                num2 --;key_value = 0;

                flag1 = 0;

                if(num2>255)

          {

                 num2 = 255;

          }

             break;

      }

            case 1:

      {

             TR0 = 1;

                key_value = 0;

             break;

      }

            case 2:

      {

                num1 = 0;num2 = 0;

             num = 4;

                secs = 0;minutes = 12;

                m_secs = 24;

                key_value = 0;

             TR0 = 1;

             break;

      }

            case 3:

      {

             TR0 = 0;

                key_value = 0;

             break;

      }

            default:

      {

             break;

      }

     }

        HEXTOBCD();

        delay(5);

        Display(table);

        delay(10);

    }

}

uchar scan_key(void)

{

    uchar i,key_value;

    P1 = 0xFF;

    for(i=0;i<4;i++)

    {

        P1 = ~(1<        key_value = P1&0xF0;

        if(key_value!=0xF0)

        {

            delay(20);

            key_value = P1&0xF0;

            if(key_value!=0xF0)

         {

                key_value &= 0xF0;

                switch(key_value)

             {

                    case 0x70: key_value = 15-(3-i)*4;break;

                    case 0xb0: key_value = 14-(3-i)*4;break;

                    case 0xd0: key_value = 13-(3-i)*4;break;

                    case 0xe0: key_value = 12-(3-i)*4;break;

                    default: key_value = 0x7f;

             }

                return key_value;

         }

        }

        P1 = 0xFF;

    }

    return 0x7f;

}


uchar scan_kay(void)

{

    uchar key_va1,key_va2;

    key_va1 = scan_key();

    if(key_va1==0x7f)

    {

        return 0x7f;

    }

    do

    {

        key_va2 = scan_key();

    }while(key_va1==key_va2);

    return key_va1;

}


推荐阅读

史海拾趣

BusBoard Prototype Systems公司的发展小趣事

随着市场的不断变化,BusBoard Prototype Systems意识到,要想在激烈的竞争中保持领先地位,必须不断进行技术创新。于是,公司投入大量资源研发新的BusBoard技术,成功提高了原型制作的精度和效率。这一技术突破不仅赢得了客户的广泛赞誉,也为公司带来了更多的业务机会。

Brilliance公司的发展小趣事

在国内市场取得一定成功后,Brilliance公司开始将目光投向国际市场。公司制定了详细的国际化战略,积极寻求与国际知名企业的合作机会。通过与国外合作伙伴的共同努力,Brilliance的产品逐渐打入国际市场,并获得了良好的口碑。同时,公司还积极参加国际电子展会和交流活动,提升了品牌知名度和影响力。

BLACK&DECKER公司的发展小趣事

BLACK&DECKER在技术创新方面一直走在行业前列。公司不断投入研发资源,推动电动工具技术的进步。例如,1979年,BLACK&DECKER发布了第一台手提式充电吸尘器Dustbuster,这一创新产品迅速成为市场上的热销产品,并推动了整个吸尘器行业的发展。此外,BLACK&DECKER还积极参与行业标准的制定工作,通过制定严格的产品质量标准和安全规范,为整个电子行业的健康发展做出了贡献。

Cystech公司的发展小趣事

C-TECH Co., Ltd自1997年成立以来,始终将技术创新作为公司发展的核心驱动力。在2008年,公司敏锐地捕捉到了5G通信技术的潜在商机,开始投入大量资源进行研发。经过数年的不懈努力,终于在2018年成功开发出了5G(3.5GHz)频段中频、射频SAW(声表面波)滤波器,这一技术突破为公司在5G通信市场赢得了先机。通过不断的技术创新,C-TECH Co., Ltd逐步确立了在电子行业中的领先地位。

Electro-Optical Systems Inc公司的发展小趣事

进入21世纪,EOS在红外探测器领域取得了重大技术突破。他们成功将探测器的波长范围扩展到远红外(40微米)领域,这一成果在行业内引起了广泛关注。同时,EOS的产品也凭借其高性能、高可靠性和高稳定性,赢得了广大用户的认可和信赖。他们开始与国内外多家知名企业建立合作关系,产品广泛应用于军事、科研、安防等领域。

Faraday Technology公司的发展小趣事

为了保持技术领先地位和市场竞争力,EOS不断加大研发投入,积极推动产品创新。他们与多所知名高校和研究机构建立产学研合作关系,共同开展前沿技术研究。同时,EOS也积极拓展国际市场,产品出口到欧美、东南亚等多个国家和地区。通过持续创新和国际拓展,EOS在红外探测器领域的地位日益稳固。

问答坊 | AI 解惑

单片机控制实时时钟X1226的应用设计[ZT]

单片机控制实时时钟X1226的应用设计[ZT] 引 言 X1226具有时钟和日历的功能,时钟依赖时、分、秒寄存器来跟踪,日历依赖日期、星期、月和年寄存器来跟踪,日历可正确通过2099年,具有自动闰年修正。 拥有强大的双报警功能,能够被设置到 ...…

查看全部问答>

4*4键盘的问题

4*4键盘先编排好0-9十个数字,第一次按键盘时第一个数码管显示按键的读数.第2次按时第2个数码管显示第2次按键的值,第一个保持不变.于此类推,一直到第6次按键的第6位数码管. 用C语言写   这样的程序应该怎样想,给个思路就好.谢谢了.想了一 ...…

查看全部问答>

我想学习linux下电源管理,有没有前人知道acpi方面的资料,能全面点的最好

我想学习linux下电源管理,有没有前人知道acpi方面的资料,能全面点的最好啊…

查看全部问答>

请问哪位高手有 Ibuyspy delivery 2005 的Sample可以提供?谢谢!

Ibuyspy Delivery 2005,VS2005和SQL2005用于WINCE应用的开发范例。 原来的GOTDOTNET已经找不到这个下载了,MSDN上也没有,请问哪位高手可以给一个这个Sample的安装包,谢谢 地址或者发邮件都可以。 junzhu@ymail.com…

查看全部问答>

WinCE下基于Directshow的摄像头驱动的开发

在做WinCE相关的工作,想在DShow的框架下面使用摄像头,但是似乎比较困难。 首先因为在WinCE5/6,微软好像把Camera这一个模块单独提取出来,写了一个完整的MDD和一个空壳的PDD 现在要开发自己的饿摄像头驱动,其实个人感觉就是实现PDD中的功能就O ...…

查看全部问答>

请教,帮我看看这个串口问题,好吗?

请教,帮我看看这个串口问题,好吗? void ComInStr() interrupt 4 //串行口中断 {   if(RI)   {        if (j>4)           {        &n ...…

查看全部问答>

急聘:硬件研发工程师

1. 本科以上学历,计算机、电子相关专业 2. 善于沟通,工作认真负责并具备较强的分析和解决问题的能力,有独立工作能力 3. 良好的高速数字电路设计以及数字模拟混合电路设计基础,良好的高速PCB设计基础 5. 熟悉视频相关电路,熟悉FPGA开发与 ...…

查看全部问答>

打算买十片103C8T6的,卖家要一片22块钱整,贵吗?

                                 打算买十片103C8T6的,卖家要一片22块钱整,贵吗?…

查看全部问答>

我公司急聘输液泵 注射泵研发项目部经理

1、 负责注射泵、输液泵研发等相关工作;2、 负责制定注射泵、输液泵年度研发费用预算并实施费用控制;3. 组织制定和实施泵系列产品技术方案;4. 跟踪本行业及与公司业务相关的国内外技术发展趋势,积累研发素材,收集和分析产品市场信息,结合公司 ...…

查看全部问答>