|
自己做的設(shè)計, 使用通用定時器產(chǎn)生0.01秒時間單位進(jìn)行倒計時,在LCD上顯示剩余時間(分鐘、秒、秒小數(shù)各2位)和雙方分?jǐn)?shù),用4個按鈕控制時間啟動/暫停、雙方加減分?jǐn)?shù)。
單片機(jī)源程序如下:
- #include "stm32f10x.h"
- #include "bsp_led.h"
- #include "bsp_exti.h"
- #include "./usart/bsp_usart.h"
- #include "./lcd/bsp_ili9341_lcd.h"
- #include "./flash/bsp_spi_flash.h"
- #include "./SysTick/bsp_SysTick.h"
- #include "./beep/bsp_beep.h"
- //變量說明:start_stop;比賽開始/暫停 fen_up;加分 fen_down;減分 red_team;紅隊 blue_team:藍(lán)隊
- int start_stop=0,fen_up=0,fen_down=0,red_team=0,blue_team=0;
- int red_team_fen=0,blue_team_fen=0; //red_team_fen,紅隊比分 ; blue_team_fen藍(lán)隊比分
- int a=0; //判斷紅藍(lán)對的標(biāo)志
- uint8_t s[5],t[5];
- //int time[0];
- uint8_t s1=0,s2=0,s3=0,s4=0; //時間變量 毫秒s1; 秒s2; 分s3; 時s4;
- void time_runing(void); /* 比賽時間計算函數(shù) */
- void time_runing_test(void); /* 比賽時間顯示函數(shù) */
- void time_inti(void); /* 比賽時間初始化 */
- void fen_test(void); /* 紅藍(lán)隊得分顯示函數(shù) */
- /**
- * @brief 主函數(shù)
- * @param 無
- * @retval 無
- */
- int main(void)
- {
- /* LED 端口初始化 */
- LED_GPIO_Config();
- EXTI_Key_Config();
- ILI9341_Init ();
- SysTick_Init();
- USART_Config();
- BEEP_GPIO_Config();
- ILI9341_GramScan ( 6 );
- LCD_SetColors(RED,BLACK);
- ILI9341_DisplayStringEx(48,20,24,24,"籃球比賽計分",0);
- LCD_SetColors(GREEN,BLACK);
- ILI9341_DisplayStringEx(20,60,20,20,"比賽時間:",0);
- time_runing_test();
- LCD_SetColors(GREEN,BLACK);
- ILI9341_DisplayStringEx(70,90,20,20,"紅藍(lán)隊比分",0);
- ILI9341_DispString_EN_CH(20,120,"紅隊:");
- ILI9341_DispString_EN_CH(120,120,"藍(lán)隊:");
- fen_test();
- while(1)
- {
- if(start_stop)
- {
- time_runing();
- time_runing_test();
- if(s3==10)
- {
- start_stop=0;
- time_inti();
- BEEP( ON_ ); // 響
- Delay_s(5);
- // BEEP( OFF_ ); // 不響
- // Delay_s(0x0FFFFF);
- }
- }
- fen_test();
- }
- }
- /*紅藍(lán)隊得分顯示函數(shù)*/
- void fen_test(void)
- {
- LCD_SetColors(BLUE,BLACK);
- sprintf(t,"%d",red_team_fen);
- if(red_team_fen<10)
- {
- ILI9341_DispString_EN_CH(68,120,"0");
- ILI9341_DispString_EN_CH(76,120,t);
- }
- else
- ILI9341_DispString_EN_CH(68,120,t);
-
- sprintf(t,"%d",blue_team_fen);
- if(blue_team_fen<10)
- {
- ILI9341_DispString_EN_CH(168,120,"0");
- ILI9341_DispString_EN_CH(176,120,t);
- }
- else
- ILI9341_DispString_EN_CH(168,120,t);
- //ILI9341_DispString_EN_CH(120,120,blue_team_fen);
- }
- /* 比賽時間初始化 */
- void time_inti(void)
- {
- s2=0;s1=0;s3=0;s4=0;
- }
- /* 比賽時間顯示函數(shù) */
- void time_runing_test(void)
- {
- LCD_SetColors(BLUE,BLACK);
- sprintf(s,"%d",s3);
- if(s3<10)
- {
- ILI9341_DisplayStringEx(120,60,20,20,"0",0);
- ILI9341_DisplayStringEx(130,60,20,20,s,0);
- }
- else
- {
- ILI9341_DisplayStringEx(120,60,20,20,s,0);
- }
- ILI9341_DisplayStringEx(140,60,20,20,":",0);
-
- sprintf(s,"%d",s2);
- if(s2<10)
- {
- ILI9341_DisplayStringEx(150,60,20,20,"0",0);
- ILI9341_DisplayStringEx(160,60,20,20,s,0);
- }
- else
- {
- ILI9341_DisplayStringEx(150,60,20,20,s,0);
- }
- ILI9341_DisplayStringEx(170,60,20,20,":",0);
-
- sprintf(s,"%d",s1);
- if(s1<10)
- {
- ILI9341_DisplayStringEx(180,60,20,20,"0",0);
- ILI9341_DisplayStringEx(190,60,20,20,s,0);
- }
- else
- {
- ILI9341_DisplayStringEx(180,60,20,20,s,0);
- }
- }
- /* 比賽時間計算函數(shù) */
- void time_runing(void)
- {
- Delay_ms(1);
- s1++;
- if(s1==100)
- {
- s2++;
- s1=0;
- }
- if(s2==60)
- {
- s3++;
- s2=0;
- }
- if(s3==60)
- {
- s4++;
- s3=0;
- }
- }
復(fù)制代碼
所有資料51hei提供下載:
基于STM32籃球比賽計分.7z
(217.96 KB, 下載次數(shù): 120)
2019-5-18 19:27 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|
|