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

  • 相关阅读:
    asp.net zero 8.2 学习-9-多租户设置,发送邮件配置
    asp.net zero 8.2 学习-8-实现在页面添加、编辑、删除、查看实体
    asp.net zero 8.2 学习-7-展示实体列表,实现查询,分页,过滤,排序功能
    asp.net zero 8.2 学习-6-权限控制
    asp.net zero 8.2 学习-5-实现增删改查服务及API测试
    asp.net zero 8.2 学习-4-创建接口及服务
    asp.net zero 8.2 学习-3-添加实体,并迁移到数据库
    asp.net zero 8.2 学习-2-创建一个页面
    asp.net zero 8.2 学习-1-安装
    .net core 3.1 jwt认证
  • 原文地址:https://www.cnblogs.com/kevin-nancy/p/12569387.html
Copyright © 2011-2022 走看看