标题: 基于STM32篮球比赛计分源程序 [打印本页]

作者: 1729452842    时间: 2019-5-18 12:09
标题: 基于STM32篮球比赛计分源程序
自己做的设计, 使用通用定时器产生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)


作者: admin    时间: 2019-5-18 19:27
本帖需要重新编辑补全电路原理图,源码,详细说明与图片即可获得100+黑币(帖子下方有编辑按钮)
作者: 还有谁?    时间: 2019-5-18 19:43
最好用仿真画好来看看

作者: cnc2020    时间: 2019-5-18 21:59
good job
作者: 阿筱    时间: 2019-6-20 16:29
请问您的代码中的头文件都是自己写的吗
作者: 阳光啊    时间: 2019-6-28 17:21
求原理图呀
作者: wy470739236    时间: 2020-6-14 17:29
这个画图用芯片stm32f103r6应该就可以吧
作者: 1835452075    时间: 2020-6-17 10:12
我下载了这份代码,但是在我这个正点原子STM32f407ZGT6探索者开发板上,用flymcu下载,LCD屏上没有任何显示,请问是什么问题呢,是我操作有误吗?谢谢
作者: 159.5819059    时间: 2020-6-22 15:19
有没有楼主会画proteus图
作者: g1422970383    时间: 2022-5-23 22:05
楼主的p8有没有





欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1