标题:
基于STM32篮球比赛计分源程序
[打印本页]
作者:
1729452842
时间:
2019-5-18 12:09
标题:
基于STM32篮球比赛计分源程序
自己做的设计, 使用通用定时器产生0.01秒时间单位进行倒计时,在LCD上显示剩余时间(分钟、秒、秒小数各2位)和双方分数,用4个按钮控制时间启动/暂停、双方加减分数。
单片机源程序如下:
#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:蓝队
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蓝队比分
int a=0; //判断红蓝对的标志
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); /* 比赛时间计算函数 */
void time_runing_test(void); /* 比赛时间显示函数 */
void time_inti(void); /* 比赛时间初始化 */
void fen_test(void); /* 红蓝队得分显示函数 */
/**
* @brief 主函数
* @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,"红蓝队比分",0);
ILI9341_DispString_EN_CH(20,120,"红队:");
ILI9341_DispString_EN_CH(120,120,"蓝队:");
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();
}
}
/*红蓝队得分显示函数*/
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;
}
/* 比赛时间显示函数 */
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);
}
}
/* 比赛时间计算函数 */
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;
}
}
复制代码
所有资料51hei提供下载:
基于STM32篮球比赛计分.7z
(217.96 KB, 下载次数: 120)
2019-5-18 19:27 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
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