历史上的今天

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

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

发布者:光明2599 来源: 51hei关键字:51单片机  篮球计分器 手机看文章 扫描二维码
随时随地手机看文章


以下是篮球计分器的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;

}


关键字:51单片机  篮球计分器 引用地址:51单片机篮球计分器程序+电路图

上一篇:51单片机+74hc595芯片实现跑马灯
下一篇:基于51单片机函数信号发生器

推荐阅读

2018年9月6日,罗姆(ROHM)第五届“ROHM技术研讨会”拉开序幕,首站苏州站圆满召开。本次苏州站的研讨会,罗姆的技术讲座围绕“电源”和“SiC(碳化硅)”主题来进行,整场分为AC/DC转换器设计研讨会、DC/DC转换器设计研讨会和功率器件活用研讨会。 此次研讨会,罗姆最新的代理商——世强,也特别受邀出席并带来了最新的解决方案,包括电动汽车PTC优选器...
  第二届“光”+智能驾驶技术高峰论坛于2019年9月6日举办,本次论坛邀请了政府部门、咨询机构、整车企业、激光雷达制造商、红外夜视、摄像头等传感器重点企业及知名科研院所等到会研讨,共话光与汽车电子行业市场前景。以下为Cibby Pulikkaseril首席技术官兼联合创始人 Baraja现场演讲实录:    Cibby Pulikkaseril首席技术官兼联合创始人 Baraj...
由美国航空航天局(NASA)为机构内的研究而开发的太空技术,已进入了汽车行业,甚至进入了美国运动汽车竞赛协会(National Association for Stock Car Auto Racing,NASCAR)的赛场。未来,NASA与汽车行业和汽车制造商的合作,可能会改变我们从一个地方到另一个地方的方式。NASA已经推动了以下5项汽车创新。1. NASA的标准帮助设计出了更舒适的汽车...
具体实现功能:(1)温湿度值测量及显示稳定、精确; (2)可以通过按键设定温湿度报警阈值,且测得的温湿度超过设定的阈值时,报警指示灯闪烁,蜂鸣器报警; (3)可将测得的温湿度值实时通过串口通信模块发送到串口调试助手。单片机介绍51单片是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器。在单芯片上,拥有灵巧的8 位CP...

史海拾趣

问答坊 | AI 解惑

用PIC单片机实现的IC卡读写器

详细介绍PIC单片机使用SPI方式与IC卡进行数据传输的原理和电路设计,以及使用USART方式与PC机进行串行异步通信的工作原理;介绍PIC单片机听SPI方式和USART方式的设置方法。…

查看全部问答∨

FSC开关电源设计手册

FAIRCHILD 系列开关电源设计手册 …

查看全部问答∨

低能耗无线技术在医疗领域的应用

介绍 在分析应用技术被市场采纳比重的时候,处于人类科学前沿的医疗器械市场,总是显得保守和谨慎。当其他工业和消费类市场沉浸于无线连接、网络及英特网的潜在应用时,医疗领域仍继续采用传统的已经测试使用的技术。然而诸如人口老龄化、高涨的医 ...…

查看全部问答∨

WINCE下面ST16C554串口驱动开发

平台:AU1250(MIPS) 系统:WINCE 5.0 开发基于AU1250+WINCE 5.0下面的ST16C554驱动,做过类似的项目的朋友加我: QQ:525074092 MSN: zhaozw1975@hotmail.com …

查看全部问答∨

IDE 硬盘接口相关问题

请问各位:   1:笔记本硬盘和普通台式机硬盘在电平上有没有差别。分别是3.3V和5V吗,最近在做一个嵌入式系统,识别不到硬盘,可能是电平原因,板子的IDE接口是3.3V的。   2:不同厂商的硬盘支持的UDMA方式是不是略有差别? ...…

查看全部问答∨

BinFS和Multi-BIN

大家几年前搞的东东,我现在才弄,而且还有很多不懂,真是惭愧。 我有几个问题想请教各位大虾。 1.采用Multi-Bin方式启动WinCE,Bootloader是否只能用eBoot。 2.若不是,其他的Bootloader势必要解决BinFS格式化的问题,请问哪位有BinFS文件系统 ...…

查看全部问答∨

学习编写驱动

各位,我想学习编写驱动,没有头绪,看到别人的驱动一句接一句,但不知道那样写的根据,大家有什么好书介绍一下让初学的我学习一下,好让我知道写什么驱动的步骤,就算写不出,也能看明白别人为什么这一句后面是那一句,能看得懂啊,谢谢了各位!…

查看全部问答∨

哪个高手过来帮帮忙?关于tinyxml的问题啊

问题在代码中加注释那部分 //设置name元素的内容并连接。  TiXmlText *NameContent = new TiXmlText(str1); 总感觉这个str1出了问题,请问有解吗? void CContactDlg::OnBnClickedCallOnoff() { static int onoff=SWITCH_ON; CStrin ...…

查看全部问答∨

关于unsigned char和unicode转换的问题

我定义了一个uchar[1]数组,其中uchar[0]保存一个汉字unicode编码值的高8位,uchar[1]保存这个汉字unicode编码值的低8位, 请问如何把这两个字节合并出一个完整的汉字unicode编码值?…

查看全部问答∨

wince contact和calendar的数据读取

小弟刚接触wince,需要读取这两项数据发送,请问有什么办法可以获得, 先谢过了…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved