找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5794|回复: 9
打印 上一主题 下一主题
收起左侧

基于STM32篮球比赛计分源程序

  [复制链接]
跳转到指定楼层
楼主
ID:410216 发表于 2019-5-18 12:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
自己做的设计, 使用通用定时器产生0.01秒时间单位进行倒计时,在LCD上显示剩余时间(分钟、秒、秒小数各2位)和双方分数,用4个按钮控制时间启动/暂停、双方加减分数。

单片机源程序如下:
  1. #include "stm32f10x.h"
  2. #include "bsp_led.h"
  3. #include "bsp_exti.h"
  4. #include "./usart/bsp_usart.h"        
  5. #include "./lcd/bsp_ili9341_lcd.h"
  6. #include "./flash/bsp_spi_flash.h"
  7. #include "./SysTick/bsp_SysTick.h"
  8. #include "./beep/bsp_beep.h"

  9. //变量说明:start_stop;比赛开始/暂停   fen_up;加分   fen_down;减分   red_team;红队   blue_team:蓝队
  10. int start_stop=0,fen_up=0,fen_down=0,red_team=0,blue_team=0;  

  11. int red_team_fen=0,blue_team_fen=0;  //red_team_fen,红队比分 ; blue_team_fen蓝队比分

  12. int a=0;           //判断红蓝对的标志

  13. uint8_t s[5],t[5];
  14. //int time[0];

  15. uint8_t s1=0,s2=0,s3=0,s4=0;    //时间变量  毫秒s1; 秒s2; 分s3; 时s4;

  16. void time_runing(void);                        /* 比赛时间计算函数 */
  17. void time_runing_test(void);        /* 比赛时间显示函数 */
  18. void time_inti(void);                        /* 比赛时间初始化 */
  19. void fen_test(void);                     /* 红蓝队得分显示函数 */
  20. /**
  21.   * @brief  主函数
  22.   * @param  无
  23.   * @retval 无
  24.   */
  25. int main(void)
  26. {
  27.         /* LED 端口初始化 */
  28.         LED_GPIO_Config();                  
  29.         EXTI_Key_Config();
  30.         ILI9341_Init ();
  31.         SysTick_Init();
  32.         USART_Config();
  33.         BEEP_GPIO_Config();               
  34.         ILI9341_GramScan ( 6 );
  35.         LCD_SetColors(RED,BLACK);
  36.         ILI9341_DisplayStringEx(48,20,24,24,"篮球比赛计分",0);
  37.         LCD_SetColors(GREEN,BLACK);
  38.         ILI9341_DisplayStringEx(20,60,20,20,"比赛时间:",0);
  39.         time_runing_test();
  40.         LCD_SetColors(GREEN,BLACK);
  41.         ILI9341_DisplayStringEx(70,90,20,20,"红蓝队比分",0);
  42.         ILI9341_DispString_EN_CH(20,120,"红队:");
  43.         ILI9341_DispString_EN_CH(120,120,"蓝队:");
  44.         fen_test();
  45.         while(1)                           
  46.         {                 
  47.                 if(start_stop)
  48.                 {
  49.                          time_runing();
  50.                          time_runing_test();
  51.                          if(s3==10)
  52.                          {
  53.                                  start_stop=0;
  54.                                  time_inti();
  55.                                  BEEP( ON_ );                           // 响
  56.                                  Delay_s(5);        
  57. //                                 BEEP( OFF_ );                  // 不响
  58. //                                 Delay_s(0x0FFFFF);
  59.                          }                 
  60.                 }
  61.                 fen_test();
  62.         }
  63. }
  64. /*红蓝队得分显示函数*/
  65. void fen_test(void)
  66. {
  67.         LCD_SetColors(BLUE,BLACK);
  68.         sprintf(t,"%d",red_team_fen);
  69.         if(red_team_fen<10)
  70.         {
  71.                 ILI9341_DispString_EN_CH(68,120,"0");
  72.                 ILI9341_DispString_EN_CH(76,120,t);
  73.         }
  74.         else
  75.                 ILI9341_DispString_EN_CH(68,120,t);
  76.         
  77.         sprintf(t,"%d",blue_team_fen);
  78.         if(blue_team_fen<10)
  79.         {
  80.                 ILI9341_DispString_EN_CH(168,120,"0");
  81.                 ILI9341_DispString_EN_CH(176,120,t);
  82.         }
  83.         else
  84.                 ILI9341_DispString_EN_CH(168,120,t);
  85.         //ILI9341_DispString_EN_CH(120,120,blue_team_fen);
  86. }

  87. /* 比赛时间初始化 */
  88. void time_inti(void)
  89. {
  90.         s2=0;s1=0;s3=0;s4=0;
  91. }

  92. /* 比赛时间显示函数 */
  93. void time_runing_test(void)
  94. {
  95.         LCD_SetColors(BLUE,BLACK);
  96.         sprintf(s,"%d",s3);
  97.         if(s3<10)
  98.         {
  99.                 ILI9341_DisplayStringEx(120,60,20,20,"0",0);
  100.                 ILI9341_DisplayStringEx(130,60,20,20,s,0);
  101.         }
  102.         else
  103.         {
  104.                 ILI9341_DisplayStringEx(120,60,20,20,s,0);
  105.         }   
  106.         ILI9341_DisplayStringEx(140,60,20,20,":",0);

  107.         
  108.         sprintf(s,"%d",s2);
  109.         if(s2<10)
  110.         {
  111.                 ILI9341_DisplayStringEx(150,60,20,20,"0",0);
  112.                 ILI9341_DisplayStringEx(160,60,20,20,s,0);
  113.         }
  114.         else
  115.         {
  116.                 ILI9341_DisplayStringEx(150,60,20,20,s,0);
  117.         }   
  118.         ILI9341_DisplayStringEx(170,60,20,20,":",0);
  119.         

  120.         sprintf(s,"%d",s1);
  121.         if(s1<10)
  122.         {
  123.                 ILI9341_DisplayStringEx(180,60,20,20,"0",0);
  124.                 ILI9341_DisplayStringEx(190,60,20,20,s,0);
  125.         }
  126.         else
  127.         {
  128.                 ILI9341_DisplayStringEx(180,60,20,20,s,0);
  129.         }           
  130. }

  131. /* 比赛时间计算函数 */
  132. void time_runing(void)
  133. {

  134.         Delay_ms(1);
  135.         s1++;
  136.         if(s1==100)
  137.         {
  138.                 s2++;
  139.                 s1=0;        
  140.         }
  141.         if(s2==60)
  142.         {
  143.                 s3++;
  144.                 s2=0;
  145.         }
  146.         if(s3==60)
  147.         {
  148.                 s4++;
  149.                 s3=0;
  150.         }
  151. }
复制代码

所有资料51hei提供下载:
基于STM32篮球比赛计分.7z (217.96 KB, 下载次数: 120)

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏5 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:1 发表于 2019-5-18 19:27 | 只看该作者
本帖需要重新编辑补全电路原理图,源码,详细说明与图片即可获得100+黑币(帖子下方有编辑按钮)
回复

使用道具 举报

板凳
ID:475247 发表于 2019-5-18 19:43 | 只看该作者
最好用仿真画好来看看
回复

使用道具 举报

地板
ID:68875 发表于 2019-5-18 21:59 | 只看该作者
good job
回复

使用道具 举报

5#
ID:566544 发表于 2019-6-20 16:29 | 只看该作者
请问您的代码中的头文件都是自己写的吗
回复

使用道具 举报

6#
ID:573545 发表于 2019-6-28 17:21 | 只看该作者
求原理图呀
回复

使用道具 举报

7#
ID:779148 发表于 2020-6-14 17:29 | 只看该作者
这个画图用芯片stm32f103r6应该就可以吧
回复

使用道具 举报

8#
ID:781678 发表于 2020-6-17 10:12 | 只看该作者
我下载了这份代码,但是在我这个正点原子STM32f407ZGT6探索者开发板上,用flymcu下载,LCD屏上没有任何显示,请问是什么问题呢,是我操作有误吗?谢谢
回复

使用道具 举报

9#
ID:661659 发表于 2020-6-22 15:19 | 只看该作者
有没有楼主会画proteus图
回复

使用道具 举报

10#
ID:1029110 发表于 2022-5-23 22:05 | 只看该作者
楼主的p8有没有
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表