历史上的今天

今天是:2024年10月19日(星期六)

正在发生

2019年10月19日 | 基于51单片机的篮球计分器设计

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

这是我以前做的51单片机篮球计分器设计,
花了一个星期时间,
附件里面包括源代码;PCB原理图,
和proteus的仿真文件以及课程设计的相关文档,
都是自己原创的,大家多多指教

制作出来的篮球计分器实物图如下:
 

电路原理图如下:
 

篮球计分器仿真原理图如下
 

Altium Designer画的篮球计分器原理图和PCB图如下:
 

单片机篮球计分器程序源码:

#include//51单片机头文件

typedef unsigned char uchar;

typedef unsigned int  uint;

sbit K1=P3^2;//比赛倒计时开始/暂停

sbit K2=P3^3;//24s倒计时重新开始

sbit P20=P2^0;//乙队+1按键

sbit P21=P2^1;//乙队+2按键

sbit P22=P2^2;//甲队+1按键

sbit P23=P2^3;//甲队+2按键

sbit P24=P2^4;//甲队+3按键

sbit P25=P2^5;//乙队+3按键

sbit P26=P2^6;//预留按键

sbit P27=P2^7;

sbit beep=P3^6;//蜂鸣器接口  

sbit RS=P1^0;

sbit RW=P1^1;

sbit E=P1^2;

char second,minute,num,time,aa;

uchar dd,bb,cc;

uchar code table1[]={"H.T 000:000 T.H "};

uchar code table2[]={"12:00  SEC-1  24"};


//延时子函数

void delay(uint z)  

{

        uint x;

        uchar y;

        for(x=z;x>0;x--)

                  for(y=110;y>0;y--);

}

//LCD1602液晶写指令子函数

void write_com(uchar com)

{        

    RW=0;

    RS=0;

        P0=com;

        delay(5);

        E=1;

        delay(5);

        E=0;

}

//LCD1602液晶写数据子函数

void write_date(uchar date)

{

        RW=0;

        RS=1;

        P0=date;

        delay(5);

        E=1;

        delay(5);

        E=0;

}

//LCD1602液晶初始化子函数

void LCD1602_init()

{

        uchar i;

        bb=0;         //H.T分数初始化

        cc=0;         //T.H分数初始化

        time=0;

        TMOD=0x10;    //定时器1初始化

        TL1=0x00;

        TH1=0x4c;

        EA=1;         //开总中断

        ET1=1;        //开定时器1

        TR1=0;        //开中断0

        EX1=1;        //开中断1

        IT0=1;        //中断0为边沿触发

        IT1=1;        //中断1为边沿触发

        E=0; 

        beep=0;

        second=0;

        minute=12;

        num=1;

        aa=24;

        write_com(0x38);  //LCD设置初始化

        write_com(0x0c);

        write_com(0x06);

        write_com(0x01);

        write_com(0x80);  //LCD显示初始化

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

        {

                  write_date(table1[i]);

        }

        write_com(0x80+0x40);

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

        {

                  write_date(table2[i]);

        }

}

//分数更新子函数

void point_lcd(uchar add,uchar dat)

{

        write_com(0x80+add);

        write_date(0x30+dat/100);

        write_date(0x30+(dat%100)/10);

        write_date(0x30+dat%10);

        write_com(0x80+add);

}

//按键扫描子函数

void keyscan()

{

        P2=0xf0;

        if((P2&0xf0)!=0xf0)

        {

                delay(20);

        }

        if((P2&0xf0)!=0xf0)

        {

                P2=0xf7;

                        if(P24==0)

                        {

                                while(P24==0);         //P24按下H.T分数加1

                        bb++;

                          point_lcd(0x04,bb);  

                          if(P24==0)        

                                {

                                   while(P24==0);

                                    delay(20);

                                }

                        }

                        else if(P25==0)           //P25按下H.T分数加2

                        {

                                while(P25==0);

                                bb=bb+2;

                          point_lcd(0x04,bb);

                          if(P25==0)

                                {

                                 while(P25==0);

                                 delay(20);

                                }

                        }

                        else if(P26==0)       //P26按下H.T分数加3

                        {

                          while(P26==0);

                        bb=bb+3;

                          point_lcd(0x04,bb);

                           if(P26==0)

                                {

                                   while(P26==0);

                                   delay(20);

                                }


                        else if(P27==0)         //P27按下T.H分数加一

                        {

                         while(P27==0);

                       cc++;

                         point_lcd(0x08,cc);

                         if(P27==0)

                                 while(P27==0);

                                 delay(20);

                           }

                        }

                P2=0xfb;

              if(P24==0)           //P24按下T.H分数加2

                          {

                         while(P24==0);

                   cc=cc+2;

                         point_lcd(0x08,cc);

                         if(P24==0)

                           {

                                while(P24==0);

                                delay(20); 

                           }

                         }

                          else if(P25==0)      //P25按下T.H分数加3

[1] [2]
关键字:51单片机  篮球计分器  proteus 引用地址:基于51单片机的篮球计分器设计

上一篇:基于51单片机的智能晾衣架设计
下一篇:单片机太阳能自动追光系统程序+电路+仿真

推荐阅读

近日,美国亚利桑那州宣布成立自动驾驶移动出行研究所(Institute for Automated Mobility)以推动自动驾驶汽车的安全落地,英特尔公司成为这家新晋研究所的创始合作伙伴。这个独一无二的公私联盟将重点关注自动驾驶汽车对责任、监管和安全等方面的影响,并将致力于制定行业标准并为行业提供有关自动驾驶落地的宝贵经验。该组织已开始进行责任和监管方...
概览 对于利用LabVIEW FPGA实现RIO目标平台上的定制硬件的工程师与开发人员,他们可以很容易地利用所推荐的组件设计构建适合其应用的、可复用且可扩展的代码模块。基于已经验证的设计进行代码模块开发,将使现有IP在未来应用中得到更好的复用,也可以使在不同开发人员和内部组织之间进行共享和交换的代码更好服用。 目录 1.代码模块 2.可复用代码——知识...
泄密者 Sleepy Kuma 援引韩国网站 Clien 的消息称,LG 可能不会在 2021 年上半年发布搭载骁龙 875 的旗舰机。  骁龙 875 是高通的首款 5nm 芯片,可能会在 12 月亮相。虽然不知道 LG 为什么决定不在明年上半年发布搭载该芯片的旗舰智能手机,但这背后可能有两个原因。 高通一直在稳步提高其旗舰芯片的价格,预计今...
电动汽车,并不只是“四个轮子的iPhone”那样简单。 在今年鸿海科技日上,鸿海集团创始人郭台铭将一辆电动汽车开到了现场。 伴随着《生日快乐》的BGM和现场观众的鼓掌,主持人揭晓了预热许久的三款新车——Model E、Model C以及Model T。 没错,新车采用了和特斯拉如出一辙的命名方式。 郭台铭感慨道:“今天就我个人而言,(这款车)是我71岁以来收到...

史海拾趣

问答坊 | AI 解惑

无线传能

本无线传能充电器由能量发送单元和能量接收单元两大部分组成,可在6cm 的距离以内对电池进行快速和慢速充电。能量发送端可用市电和直流电源供电, 具有交流优先和交直流自动切换的功能;接收端控制电路采用MSP430 低功耗单 片机,电压和充电时间 ...…

查看全部问答∨

【wince 5.0生成映像文件问题,无语了...】

我查了一下,除了gpe.lib不存在外,其它的lib都有 还有下面红色部分太诡异了,先删除,然后又提示找不到~~~ Copying rdrvgradfill.* Deleting gpe.lib 找不到 C:\\WINCE500\\PBWorkspaces\\mini2440\\WINCE500\\mini2440_ARMV4I\\cesysgen\\oak ...…

查看全部问答∨

请大虾们看看

CJNE  A,#01H,$+6 CLR     P1.4    以上两句程序是什么意思? $+6是什么意思?       …

查看全部问答∨

为什么在驱动程序中使用非分页(双向)链表时,要使用自旋锁进行同步?

什么是“自旋锁”? 非分页内存有什么特点? 什么是同步? ......…

查看全部问答∨

evc 中支持数学三角函数吗?

我现在需要编程需要一些数学函数 请问能直接用吗 谢谢! 如 sin cos tan ctag等? 能直接用吗? 如:y=sin(x);?? 可不可以这样直接用这些三角数学公式 …

查看全部问答∨

关于硬件设计项目的问题,大家帮忙看看

在网上有很多开源的软件项目,只要你有能力,或者说喜欢就可以加入那个团队,大家一起来设计的那种. 这样大家就可以在网上通过一个公共的项目共同学习,交流. 那么在硬件项目上,比如说,数字电路,模拟电路的设计啊,(PCB,DSP,等等各类东西)在网上有没 ...…

查看全部问答∨

了解STM32F100

刚注册,还没有分数可以给大家,抱歉; 我的问题比较多,集中在一起问;多谢大家; 1)STM32F的FLASH区域比较大,能否利用FALSH区域存用户数据;(数据量估计在64K左右); 2)如果可以,擦写操作和写操作的速度怎么样?是不是可以一次性擦除一大块区域;如 ...…

查看全部问答∨

107主机nak重试后CSW接收不到

                                 大哥 这个论坛到底有没人回答问题的唉 尴尬 最后一个帖 ~~问发送CBW之后,发送数据阶段一直回复nak,然后我一直重 ...…

查看全部问答∨

EDMA中断

大家好:   我想问一下,我的EDMA中断服务程序里面的代码太长执行时间太长,这样相应其他中断就不及时了所以我想把中断服务程序里数据处理部分移植到主函数中,然后在EDMA中断服务程序里判断来了中断给出标志,然后主函数里判断标志位进行操作, ...…

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

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

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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