zoukankan      html  css  js  c++  java
  • 51单片机电子制作------篮球比赛计分器

    51单片机电子制作------篮球比赛计分器

    作者:李剀

    出处:https://blog.csdn.net/Kevin_8_Lee

    或者 https://www.cnblogs.com/kevin-nancy/

    欢迎转载,但也请保留上面这段声明。谢谢!(上面两个都是我的博客,只是在不同平台)

    这个也是可以用于单片机课设的一个小东西。 同样和之前的交通灯项目一样,我用同样的方法介绍一下

    1) 题目及设计要求

    题目: 篮球比赛计分器
    要求:
    1、两队各三位显示,共计六位数码显示;

    2、设A、B队加、减分按键,复位键;

    3、加减分实现1分、2分、3分加减。

    2) C51编程以及电路仿真软件

    编程:: 同样使用keil3或者keil4,以keil4为例

    软件就不截图了,可以看我关于交通灯的那篇blog
    https://www.cnblogs.com/kevin-nancy/p/10993057.html

    或者 https://blog.csdn.net/Kevin_8_Lee/article/details/91351632

    3) 解决思路

    使用矩阵键盘作为按键输入,分别设置A、B两队加减1、2、3分按键以及清零按键
    在这里插入图片描述

    在proteus中,我的接线如下

    在这里插入图片描述

    使用两个四位八段的数码管(共阴极)显示
    在这里插入图片描述
    **PS:**其他的都跟我之前的那篇交通灯的制作类似
    但是有一个问题在那篇博客忘记说了,这里写一下
    在这里插入图片描述
    上图圈起来那块那个复位用的电阻,必须设置为Digital类型的,否则无法使用复位按钮
    双击元件,即可修改
    在这里插入图片描述

    4)软件部分

    这个整个流程比较简单,程序流程图如下
    在这里插入图片描述

    同样由于时间问题,没心情用更简单的方法改了,直接是无限扫描按键,

    // 矩阵键盘扫描函数,返回16进制数
    uchar KeyScan()	
    {
    	uchar cord_c,cord_r;        
    	P3 = 0x0f;             
    	if( (P3 & 0x0f) != 0x0f)    
    	{
    		delay_ms(5);              
    		if( (P3 & 0x0f) != 0x0f)
    		{
    			  cord_r = P3 & 0x0f;
    			  P3 = cord_c | 0xf0;
    			  cord_c = P3 & 0xf0;
    			  while( (P3 & 0xf0) != 0xf0 );
    			  return (cord_c + cord_r);   
    		}	
    	}
    		
    }
    
    // 不同的按键按下 执行不同的操作
    void Key_score_Dispaly()
    {
    	switch( KeyScan() )
    	{
    		case 0xee: 
                    flag = 0;
                    teamA_scores++;	// A队加分
                    break;
    		case 0xde: 
                    flag = 1;
                    teamA_scores--;
                    break;
    		case 0xbe: 
                    flag = 2;
                    teamB_scores++;
            		break;
    		case 0x7e: 
                    flag = 3;
                    teamB_scores--;
            		break;
    		
    		case 0xed: 
                    flag = 4;
                    teamA_scores+=2;	// 两分球
            		break;
    		case 0xdd: 
                    flag = 5;
                    teamA_scores-=2;
            		break;
    		case 0xbd: 
                    flag = 6;
                    teamB_scores+=2;
            		break;
    		case 0x7d: 
                    flag = 7;
                    teamB_scores-=2;
            		break;
    
    		
    		case 0xeb:  
                    flag = 8;
                    teamA_scores+=3;	// 三分
            		break;
    		case 0xdb:
                    flag = 9;
                    teamA_scores-=3;
            		break;
    		case 0xbb:
                    flag = 10;
                    teamB_scores+=3;
            	    break;
    		case 0x7b:
                    flag = 11;
                    teamB_scores-=3;
            	    break;
    
    		
    		case 0xe7:
                    flag = 12;
                    teamA_scores=0;  // 清零
                    break;
    		case 0xd7:
                    flag = 13;
                    teamA_scores=0;
            	    break;
    		case 0xb7:
                    flag = 14;
                    teamB_scores=0;
            	    break;
    		case 0x77:
                    flag = 15;
                    teamB_scores=0;
            	    break;
    	}
    
        Display(teamA_scores, teamB_scores);  // 显示
    
    }
    
    // 主函数无限循环
    void main()
    {
        system_Init();  // 初始化只是关闭数码管
    	while(1)
        {
            Key_score_Dispaly();
        }
    }
    

    放一下最终的效果吧
    在这里插入图片描述

    路就在你脚下,只要走,就能到达远方! 加油吧!

    ps:这个做的并不是很好,代码大多都是在循环中做,所以没有太细致的讲,但是用来做单片机的课设还是足够了

  • 相关阅读:
    'yiiaseInvalidRouteException' with message 'Unable to resolve the request "site/error".'
    yii2:不使用composer安装yii2-jui的方法
    Oracle cmd乱码
    oracle 11g安装过程中问题:移动binoralbac11.dll 到binoralbac11.dll.dbl出错
    yii2打印数据属性(字段名)/数据
    在xampp集成环境下使用 php 连接oracle
    phalcon: 项目地址/P(.*), 项目地址/Pbaidu 与 路由
    PHP返回32位与16位的md5加密值
    PHP调用webservice接口
    java:日期格式化
  • 原文地址:https://www.cnblogs.com/kevin-nancy/p/12569387.html
Copyright © 2011-2022 走看看