• 基于STM32单片机的篮球计时记分器proteus仿真原理图PCB


    功能:
    0.本系统采用STC89C52作为单片机
    1.LCD1602液晶实时显示比赛剩余时间,球队分数
    2.默认计时器为4节,每节10分钟,每节比赛结束,蜂鸣器报警
    3.按键功能介绍:
    '1’键——加1分 '4’键——减1分
    '2’键——加2分 '5’键——减2分
    '3’键——加3分 '6’键——减3分
    '0’键——关闭蜂鸣器
    '*'键——启动/暂停计时器
    '#'键——复位计分器
    'A’键——选择A队 'B’键——选择B队
    'C’键——初始状态下计时器加1分钟
    'D’键——初始状态下计时器减1分钟
    4.采用DC002作为电源接口可直接输入5V给整个系统供电

    原理图:
    在这里插入图片描述

    PCB :
    在这里插入图片描述

    主程序:

    #define __MAIN_C
    #include "main.h"
    #include "stm32f10x.h"
    #include "stm32f10x_gpio.h"
    #include "bsp_gpio.h"
    #include "bsp_clkconfig.h"
    #include "bsp_delay.h"
    #include "bsp_lcd1602.h"
    #include "bsp_GeneralTim.h" 
    #include "bsp_keyArray.h"
    #include "stdio.h"
    
    CreatByte Flag;
    
    uint8_t roundNum = 1;
    uint8_t scoreA = 0;
    uint8_t scoreB = 0;
    volatile uint8_t timeMinute = 0;
    volatile uint8_t timeSecond = 0;
    volatile uint8_t time10ms = 0;
    uint8_t setTimeMinute = 10;
    
    int main(void)
    {	
        char dis[16] = {0};
        dispFlag = 1;
        startFlag = 0;
        teamFlag = 0;
        timeMinute = setTimeMinute;
        
        // 使用HSI,SYSCLK = 4M * RCC_PLLMul_x, x:[2,3,...16],最高是64MH
        HSI_SetSysClock(RCC_PLLMul_2); //使用内部8MHz晶振,并设置PLL输出为8MHz
    
        // LED 端口初始化
        GPIO_Config();
        GENERAL_TIM_Init();
        KeyArray_GPIO_Init();
        
        LCD_GPIO_Init();
        LCD_Init();
        LCD_Clear();
        DelayMs(250);
        LCD_DispStr(0, 0, "    Welcome!    ");
        DelayMs(2000);
        LCD_Clear();
        
        
        while (1)
        {    
            if (dispFlag == 1)
            {
                dispFlag = 0;
                sprintf(dis, "R:%1d  T:%02d:%02d:%02d", (int)roundNum, (int)timeMinute, (int)timeSecond, (int)time10ms);
                LCD_DispStr(0, 0, dis);
                DelayMs(10);
                if (teamFlag == 0)
                {
                    sprintf(dis, ">A  %03d--%03d  B ", (int)scoreA, (int)scoreB);
                    LCD_DispStr(0, 1, dis);
                }
                else
                {
                    sprintf(dis, " A  %03d--%03d >B ", (int)scoreA, (int)scoreB);
                    LCD_DispStr(0, 1, dis);
                }
            }
            
            KeyFunction();
        }
    }
    
    /*********************************************END OF FILE**********************/
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73

    仿真演示视频:
    https://www.bilibili.com/video/BV1cN4y1P7cZ/

    实物演示视频:
    https://www.bilibili.com/video/BV1pY4y167dj/

  • 相关阅读:
    91. 存钱罐
    Linux操作系统分析总结
    「提效脚本 redis」 使用Lua批量删除key
    【Wifi认证 攻击】
    Fury:一个基于JIT动态编译的高性能多语言原生序列化框架
    华为S5700交换机初始化和配置SSH和TELNET远程登录方法
    JVM篇---第五篇
    2.4路由日志管理
    mysql进阶:数据库审计软件yearning搭建指南
    day30 日期转换
  • 原文地址:https://blog.csdn.net/jimo167913/article/details/128133506