基于STM32篮球计分器数码管显示(Proteus仿真+程序+设计报告+原理图PCB+讲解视频)
仿真图proteus 8.9
程序编译器:keil 5
编程语言:C语言
设计编号:C0102
1.主要功能
设计一个基于STM32单片机的篮球比赛计分器仿真设计,下面是设计的功能要求
1.可以在比赛期间随时更新A和B队的比分。
2.中场休息期间交换场地,交换A队和B队的位置。
3.当添加比赛分数时,如果有错误,可以手动更改赛场分数。
4.具备篮球24秒进攻时间倒计时,进攻时间结束时可以触发蜂鸣器警报。
5.可以通过复位按键回复比分初始状态。
6.可以通过proteus仿真演示。
主要硬件设备:STM32F103+74HC138+蜂鸣器+数码管
2.功能演示
1.可以在比赛期间随时更新A和B队的比分。
2.中场休息期间交换场地,交换A队和B队的位置。
3.当添加比赛分数时,如果有错误,可以手动更改赛场分数。
4.具备篮球24秒进攻时间倒计时,进攻时间结束时可以触发警报。
当系统启动时,发光二极管数码管按程序流程被点亮,显示赛场比赛24秒倒计时和赛场比赛计分。没启动之前24秒倒计时时间显示24。比赛分数000:000.按下启动按键后,24秒倒计时数码管开始倒计时。比赛状态指示灯开始指示灯点亮,如果有A队得分,可以通过A+按键按一下加一份。如果有错误需要修正可以按下A-,按一下减一份。B队得分同理操作。如果比赛开始后有犯规或者其他需要暂停比赛的需要,可以按下启动/暂停按键来暂停比赛,需要重新开始再按一下。24秒进攻倒计时结束后蜂鸣器报警提醒。
下图是中场A队得分6分,B队得分3分。需要交换场地再计分轻触交换场地按键即可。比分会换过来。
3.程序设计
程序是用keil5 mdk版本打开的,如果打开有问题,核实下keil的版本。程序是HAL版本编写的,有stm32cubemx配置文件。有注释可以结合讲解视频理解。
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
if(htim == &htim2) //定时器2中断 10ms一次
{
if(start==1){
if(flick_cnt<100){//flick_cnt计数在0-100,100就一秒
flick_cnt++;
}else{
flick_cnt=0;
if(miao>0){//秒计时 一秒减一次
miao--;
if(miao==0){
start=0;//停止
beep_time=30;
BEEP=BEEP_ON;
}else if(miao>0){
BEEP=BEEP_OFF;
}
}
}
}
if(beep_time>0)//蜂鸣器响
{
if(beep_time)beep_time--;
if(beep_time==0){
BEEP=BEEP_OFF;
}
}
}
}
/*中断回调函数*/
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
if(GPIO_Pin == GPIO_PIN_0) /*检测到EXTI0线产生外部中断事件*/
{
HAL_Delay(10);
if(HAL_GPIO_ReadPin(KEY1_GPIO_Port,KEY1_Pin)==0){//消抖
if(start==0) /*检测到EXTI0线产生外部中断事件*/
{
start=1;//开始倒计时
miao=24;//倒计时时间24秒
}
else
{
if(start==1)
start=2;
else
start=1;
}
}
}
else if(GPIO_Pin == GPIO_PIN_1) /*检测到EXTI1线产生外部中断事件*/
{
HAL_Delay(10);
if(HAL_GPIO_ReadPin(KEY2_GPIO_Port,KEY2_Pin)==0){//消抖
flag=!flag; //交换场地
}
}
else if(GPIO_Pin == GPIO_PIN_6) /*检测到EXTI6线产生外部中断事件*/
{
HAL_Delay(10);
if(HAL_GPIO_ReadPin(KEY3_GPIO_Port,KEY3_Pin)==0){//消抖
start=1;
miao=24;
}
}
else if(GPIO_Pin == GPIO_PIN_7) /*检测到EXTI7线产生外部中断事件*/
{
HAL_Delay(10);
if(HAL_GPIO_ReadPin(KEY4_GPIO_Port,KEY4_Pin)==0){//消抖
// if(start==0){
fena=0;
miao=24;
fenb=0;
// }
}
}
else if(GPIO_Pin == GPIO_PIN_8) /*检测到EXTI8线产生外部中断事件*/
{
HAL_Delay(10);
if(HAL_GPIO_ReadPin(KEY5_GPIO_Port,KEY5_Pin)==0){//消抖
if(fena<999)
fena++;
}
}
else if(GPIO_Pin == GPIO_PIN_9) /*检测到EXTI9线产生外部中断事件*/
{
HAL_Delay(10);
if(HAL_GPIO_ReadPin(KEY6_GPIO_Port,KEY6_Pin)==0){//消抖
if(fena>0)
fena--;
}
}
else if(GPIO_Pin == GPIO_PIN_10) /*检测到EXTI10线产生外部中断事件*/
{
HAL_Delay(10);
if(HAL_GPIO_ReadPin(KEY7_GPIO_Port,KEY7_Pin)==0){//消抖
if(fenb<999)
fenb++;
}
}
else if(GPIO_Pin == GPIO_PIN_11) /*检测到EXTI11线产生外部中断事件*/
{
HAL_Delay(10);
if(HAL_GPIO_ReadPin(KEY8_GPIO_Port,KEY8_Pin)==0){//消抖
if(fenb>0)
fenb--;
}
}
}
/* USER CODE END 4 */
程序流程图
4.原理图PCB
5.元器件清单
No. | 数量 | Comment | Designator |
---|---|---|---|
1 | 1 | 有源蜂鸣器5V | BUZ1 |
2 | 1 | 二极管1N4007 | D1 |
3 | 8 | 按键K4-6×6_TH | KEY1,KEY2,KEY3,KEY4,KEY5,KEY6,KEY7,KEY8 |
4 | 2 | LED灯LED-TH-3mm_R | LED1,LED2 |
5 | 1 | 0.36寸共阴极二位数码管 | LED4 |
6 | 1 | 三极管SS8550 | Q1 |
7 | 2 | 电阻100欧 | R1,R3 |
8 | 2 | 电阻10k | R5,R6 |
9 | 2 | 0.56寸共阴极四位数码管 | SEG1,SEG2 |
10 | 1 | STM32F103C8T6最小系统板 | U1 |
11 | 1 | 74HC245 | U2 |
12 | 1 | 74LS138 | U3 |
实物图
6.设计报告
篮球是青少年非常喜欢的体育运动,它不仅能锻炼人的意志,而且还可以陶冶情操,培养团队精神和合作意识,最重要的是提高青少年的身体素质。广大人民群众的物质生活伴随着中国综合国力的不断上升,也变的花样繁多起来,与此带来的是对精神生活的需求。他们都希望自己的身体和精神都能健康。大家都想通过体育运动来锻炼自己。在过去的30多年里,篮球比赛已经成为了全世界最流行的体育运动项目。尤其是进入新世纪以来,很多中国球员和华裔美国人加入了NBA,篮球在中国也越来越流行,年轻人们对篮球也越来越热爱。针对这一现象,本文根据我国篮球运动的具体规定,设计了一种可以用于篮球比赛赛场的计时计分设备。这个篮球计时计设备,在实际赛场中操作简单,而且计时计分准确。非常适合青少年的日常篮球和其他两队制竞赛活动。
7.下载链接
资料下载链接:
通过网盘分享的文件:KEY_C0102
https://pan.baidu.com/s/1FnO5TuM2o0TDhcZHdFK1UA?pwd=2i1u
提取码: 2i1u
0、常见使用问题及解决方法–必读!!!!
1、程序代码
2、Proteus仿真
3、功能要求
4、开题报告
5、设计报告+PPT
6、框图
7、原理图
8、PCB图
9、元器件清单
10、实物图
11、讲解视频
Altium Designer 安装破解
KEIL+proteus 单片机仿真设计教程
KEIL安装破解
Proteus元器件查找
Proteus安装
Proteus简易使用教程
单片机学习资料
相关数据手册
答辩技巧
设计报告常用描述
鼠标双击打开查找嘉盛单片机51 STM32单片机课程毕业设计.url