前言
学无止境,日常上来分享一些自己的一些小心得,虽然不是什么高尖端的技术,但是重在学习。
本设计主要讲解一个关于篮球计分器的简易系统设计及编程思路。
主要分两大部分进行阐述:电路部分和程序部分。
电路设计
简易电路设计总体来说还是比较简单的,需要的耗材也不是很多,At89C52单片机一个,两个LED,一个74LS138译码器,一个八位的数码管显示器和六个不带自锁的按键。下图所示是作者在proteus软件设计的一个仿真电路。

工作原理
将编写好的单片机程序下载到到单片机后,系统上电数码管会显示六个0,左边三位于右边两位,中间两位不显示,用来区分两队的分值,当左边队伍进球得分后按选择计分队伍的按键,左边LED指示灯 D1 会亮,然后根据进球分数按相应的加分按键,加一、加二或者加三分,如果不小心将分值加错的情况下可以按减一分按键减掉所加的分,当需要对的分队伍的分值进行清理的时候可以按下单队清零按键进行分值清除。右边计分方法跟左边一样,只需要将加分队伍切换到右边即可。

程序编写
程序编写主要可分两个部分,按键处理部分和数码管显示部分。

主程序如下所示

#include <stc15.h>typedef unsigned int uint;
typedef unsigned char uchar;#define smgduan P0    //数码管段定义
//声明按键与数码管的子程序
void key_dis();
void key_display();
void display(uchar a0,uchar a1,uchar a2,uchar a3,uchar a4,uchar a5);
/*数码管位定义74hs138*/
sbit LSA=P1^0;
sbit LSB=P1^1;
sbit LSC=P1^2;
sbit G2A=P1^3;
/*led定义,用于区别加分边,led0左边,led1右边*/
sbit led0=P1^4;
sbit led1=P1^5;
/*按键定义*/
sbit key0=P3^0;     //加分区别按键,未按下为左边,按下为右边
sbit key1=P3^1;     //加一分按键
sbit key2=P3^2;     //加两分按键
sbit key3=P3^3;     //加三分按键
sbit key4=P3^4;     //减一分按键
sbit key5=P3^5;     //复位清零按键
uchar code duan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00};uchar fen0,fen1;       //两队得分累计标志
uchar flag0;      //模式选择标志
uchar bai0,bai1,shi0,shi1,ge0,ge1;       //数据处理标志void delay(uint i)   //软件延时函数
{while(i--);
}void main()     //主函数
{while(1){key_display();shujuchili();display(ge1,shi1,bai1,ge0,shi0,bai0);}
}

按键处理程序如下

void key_dis()    //加分队伍选择,flag0等于1时,左边队伍,flag0=2时,右边队伍
{P1=0xff;if(key0==0){delay(100);if(key0==0){while(!key0);flag0++;if(flag0==3){flag0=1;}}}
}void key_display()     //加减分按键处理函数
{key_dis();    //调用选择加分队伍子程序if(flag0==1)    //左边队伍{led1=1;led0=0;if(key1==0)    //加1分{delay(100);if(key1==0){while(!key1);fen0=fen0+1;}}if(key2==0)    //加两分{delay(100);if(key2==0){while(!key2);fen0=fen0+2;}}if(key3==0)     //加三分{delay(100);if(key3==0){while(!key3);fen0=fen0+3;}}if(key4==0)     //减一分{delay(100);if(key4==0){while(!key4);fen0=fen0-1;}}if(key5==0)     //清零{delay(100);if(key5==0){while(!key5);fen0=0;}}}else if(flag0==2)     //右边队伍{led1=0;led0=1;    //右边队伍指示灯if(key1==0)    //加1分{delay(100);if(key1==0){while(!key1);fen1=fen1+1;}}if(key2==0)    //加两分{delay(100);if(key2==0){while(!key2);fen1=fen1+2;}}if(key3==0)     //加三分{delay(100);if(key3==0){while(!key3);fen1=fen1+3;}}if(key4==0)     //减一分{delay(100);if(key4==0){while(!key4);fen1=fen1-1;}}if(key5==0)     //清零{delay(100);if(key5==0){while(!key5);fen1=0;}}}
}

数码管显示程序

/*将计分的存储变量进行处理,取出对应数码管所要显示的数值,个十百三位数*/
void shujuchili()     //数据处理函数
{//左边数码管数据处理bai0=fen0/100;shi0=fen0%100/10;ge0=fen0%10;//右边计分队伍数据处理bai1=fen1/100;     //取百位shi1=fen1%100/10;   //取十位ge1=fen1%10;      //取个位
}
/*数码管显示74LS138译码器驱动程序*/
void display(uchar a0,uchar a1,uchar a2,uchar a3,uchar a4,uchar a5)     //数码管显示函数
{uchar jj;G2A=0;for(jj=0;jj<8;jj++)   /*case0到case2为右边三位数码管,case5到case7为左边三位数码管,中间两位不进行显示,用以区分*/{switch(jj){case 0:LSA=0;LSB=0;LSC=0;smgduan=duan[a5];break;case 1:LSA=1;LSB=0;LSC=0;smgduan=duan[a4];break;case 2:LSA=0;LSB=1;LSC=0;smgduan=duan[a3];break;case 3:LSA=1;LSB=1;LSC=0;smgduan=0x00;break;case 4:LSA=0;LSB=0;LSC=1;smgduan=0x00;break;case 5:LSA=1;LSB=0;LSC=1;smgduan=duan[a2];break;case 6:LSA=0;LSB=1;LSC=1;smgduan=duan[a1];break;case 7:LSA=1;LSB=1;LSC=1;smgduan=duan[a0];break;}delay(50);smgduan=0x00;     //消隐}
}

以上就是所有关于简易篮球计分器设计所有过程与程序了,写的不是很好,还望读者能给些建议或者自己能将其完善的更加完美。

基于AT89C52单片机简易篮球计分器设计相关推荐

  1. 51单片机篮球计分器C语言,基于51单片机的篮球计分器设计

    { while(P25==0); cc=cc+3; point_lcd(0x08,cc); if(P25==0) { while(P25==0); delay(20); } } else if(P26 ...

  2. 51单片机 Proteus仿真 基于单片机的篮球计分器设计 LCD

    基于单片机的篮球计分器设计 设计LCD显示篮球比分牌 通过加分按钮可以给A队或B队加分 设计对调功能,A队和B队分数互换,意味着中场交换场地 显示比赛倒计时功能 创新内容:如显示第几小节

  3. 基于51单片机的篮球计分器

    基于51单片机的篮球计分器 1)LCD1602液晶屏显示: 比赛双方队名.双方比分.12分钟倒计时.24s进攻倒计时.场次 2)24s倒计时结束蜂鸣器响 3)按键功能: 比赛开始/暂停.24s倒计时重 ...

  4. 51单片机设计简易计算机原理,基于AT89C51单片机简易计算器的设计(DOC).docx

    PAGE PAGE # 基于AT89C51单片机简易计算器的设计 [摘要]单片机的出现是计算机制造技术高速发展的产物,它是嵌 入式控制系统的核心,如今,它已广泛的应用到我们生活的各个领域, 电子.科技 ...

  5. 单片机c语言篮球比分_基于51单片机的篮球记分牌设计

    1 摘 要 单片机,亦称单片微电脑或单片微型计算机.它是把中央处理器( CPU ).随机存 取存储器( RAM ).只读存储器( ROM ).输入 / 输出端口( I/0 )等主要计算机功能部件 都集 ...

  6. 基于AT89C52单片机的温湿度检测设计

    点击链接获取Keil源码与Project Backups仿真图: https://download.csdn.net/download/qq_64505944/87704704 源码获取 主要内容: ...

  7. 基于单片机的篮球计分器设计

    1.设计任务 利用单片机AT89C51设计篮球计分器,设计LED显示比分牌,通过加分按钮可以给A队和B队加分. 2. 设计要求 2.1系统方案论证 根据设计任务,分析设计系统的组成,给出实现设计任务的 ...

  8. 基于51单片机的羽毛球计分器设计

    硬件设计 本设计采用单片机AT89C51作为核心元件,由控制系统,显示模块,按键驱动模块3部分组成.主要编写了主程序,中断程序,显示程序功能模块程序等.实现羽毛球计分器功能.        整体电路主 ...

  9. 基于51单片机的篮球计时计分器仿真原理图PCB方案设计

    总体方案设计 (末尾附文件) 2.1设计思路 以STC89C52单片机为核心元件,利用独立式键盘控制,使LCD1602实时记录A.B两队的分数.独立式键盘由K1.K2.K3.K4.K5.K6.K7.K ...

  10. 基于单片机的篮球计数器设计

    基于单片机的篮球计数器设计 作者:*** 摘要:本次课程设计是使用51单片机完成篮球计数器的设计.为达到本次的设计目标,我决定使用全部的八个数码管,分别显示节次.时间.A队得分和B队得分:一开始是计划 ...

最新文章

  1. Python 函数参数有冒号 声明后有- 箭头 返回值注释 参数类型注释
  2. 计算机视觉招聘_香港理工大学人工智能设计实验室科研招聘
  3. SQLite关于时间段查询的sql
  4. Android——Fragment实例精讲——底部导航栏+ViewPager滑动切换页面
  5. Python爬虫利器五Selenium用法
  6. flutter 真机无法调试 sdk报错_老许,你要转Flutter不要?只要你开金口,面试题现在就给你送来...
  7. 利用反射获取类或者方法或者字段上的注解的值
  8. Android RecyclerViewSwipeDismiss:水平、垂直方向的拖曳删除item
  9. CVE-2018-8120 漏洞分析
  10. Linux命令:more
  11. adb刷入第三方recovery_PE Plus类原生系统刷入教程(小白基础篇)
  12. 中国港口年鉴(2000-2020年)
  13. Spark MLBase分布式机器学习系统入门:以MLlib实现Kmeans聚类算法
  14. Dynamics CRM 为案例起源设置自定义图标
  15. 老毛桃 固态硬盘 系统迁移
  16. 递归实现 1,1,2,3,5,8,….第 30 个数是多少?
  17. 成功并不是总要劳其筋骨,饿其体肤,成功的密码是: 专注!
  18. Pytroch 深度学习 跑CIFAR10数据集
  19. Druid配置好之后sql监控界面不显示sql语句的可能原因
  20. 第4节 操作器和Trackball

热门文章

  1. 安川机器人io对照表_安川机器人信号
  2. 最强下载神器IDM的安装和使用
  3. OBS录制高清视频卡顿原因之一:OBS缓存数据写入磁盘不及时
  4. 国外src(漏洞挖掘平台)
  5. linux查看 网卡信息
  6. 根据MySQL表结构批量自动生成HIVE建表语句
  7. python开发app教程_超简单app制作教程,颠覆行业的开发模式来啦
  8. 前富士康CEO程天纵:创新来自长尾,创业源于创客!
  9. axure 原型图 基础知识介绍
  10. [转载]自动化行业信讯_史蒂文森sun_新浪博客