基于 STM32 的智能篮球比赛测温计时计分系统:解决传统计分器问题的创新方案
发布时间:2024年09月10日 09:04
1.1 项目简介(5分)
进入21世纪,随着电子信息与通信技术的应用和普及,人们对电子技术的要求越来越高,篮球运动已经走入人们的生活,为了规范比赛管理,研究篮球比赛测温计时记分系统具有重要意义。
电子计分器虽然在篮球比赛中的研究和应用由来已久,但通常由模拟电子器件、数字电子器件或模拟和数字器件混合构成,其稳定性和高精度计分还存在一些问题。以单片机为核心的篮球比赛测温计分装置,计分准确,且具有体积小、重量轻、能耗低、价格低、可靠性高、抗干扰能力强、使用方便等独特优势。基于STM32的智能篮球比赛测温计时计分系统正是针对这一问题而设计的。该系统具有测量室温、设定预定时间、及时刷新A、B双方分数、暂停预定时间、报警结束比赛等功能。
1.2 系统功能需求分析(10分)
本项目采用单片机,整个设计由主控、矩阵键盘、显示、报警、温度模拟5部分组成,综合应用了STM32中断系统、定时器、计数器、ADC模数转换等知识。
矩阵键盘功能有“加一分”、“加二分”、“加三分”、“减一分”、“减二分”、“减三分”、“选择A队”、“选择B队”、“复位”、“开始/暂停”、“减一分钟”、“减二分钟”、“减三分钟”、“关闭蜂鸣器”等。按“A”键时,选中A队,可以对A队的分数进行加减,此时按“1”键,A队的分数加1。按“B”键时,选中B队,可以对B队的分数进行加减,此时按“3”键,B队的分数加3。按“*”键时,游戏开始计时或者计时暂停,按“#”键时,复位。当游戏时间为0时,蜂鸣器和小灯会亮。当按下“0”时,报警蜂鸣器和小灯将关闭。
报警模块主要由蜂鸣器和LED灯组成,当输入低电平时,蜂鸣器响,LED灯亮,当输入高电平时,蜂鸣器和LED灯熄灭。
显示模块通过LCD显示模拟的环境温度,改造温度传感器后LCD立即显示最新的环境温度,经过延时后进入游戏界面显示游戏节数、游戏剩余时间、两队得分。
温度模拟模块利用温度传感器加减环境温度,并在LCD上显示当前模拟温度。
系统功能:
1、液晶显示屏可显示环境温度,并在一段时间后显示比赛剩余时间和球队得分。
2.比赛默认4节,每节10分钟,在默认条件下,可以修改比赛时间(例如,一节可修改为5分钟)。
3.每局游戏结束后,蜂鸣器会发出警报声,LED灯亮起。可以暂停或重置时间。
4.每局游戏设A、B两队,通过矩阵键盘可以分别控制两队得分,按A键选中A队,按1、2、3键累计相应分数,若不小心计分错误(如加分过多),可按4、5、6键分别减去1、2、3分。
1.3 系统开发工具的分析、选择和使用(5分)
本项目主要使用Keil5编写代码,设计仿真图来模拟功能的实现,采用矩阵键盘进行操作,包括成绩修改,时间控制,蜂鸣器和LED小灯用于报警功能,LED LCD用于显示,温度传感器用于模拟当前环境温度。
2.项目硬件系统设计(30分)
2.1. 系统解决方案原理图(10分)
如图所示,所用的芯片为,显示模块采用液晶显示器,游戏时间和分数由矩阵键盘的输入控制,显示在液晶屏上。温度传感器可以模拟环境温度,显示在液晶屏上。PA0-PA7引脚分别接液晶屏的D0-D7,PB8引脚接RS,PC13接RW,PB9接E。PC0-PC7引脚分别接矩阵键盘,PC8引脚接蜂鸣器。PB4引脚接温度传感器的DQ引脚。
模拟图:
2.2. 原理介绍(5分)
1)核心架构——CM3核心架构:
它是一款以嵌入式-M3(简称CM3)处理器为核心的ARM微控制器。
CM3的三条总线通过总线矩阵与主要部件及外设相连。
该架构包括CM3的核心架构和除核心之外的其他架构。
2)GPIO:(Input,通用输入输出接口)是MCU与外部电路、设备连接的基本外设,也俗称端口或者引脚。
GPIO 8种工作模式,可由软件配置:
1、悬空输入:上拉下拉电阻断开,用于不确定高低电平的输入。(复位后此状态)
2、上拉输入:接上拉电阻,默认为高电平输入。
3、下拉输入:接下拉电阻,默认为低电平输入。
4.模拟输入:施密特触发器截止,模拟输入常用于AD转换
5、开漏输出:上面的MOS管不工作,只能输出低电平,不能输出高电平,如果要输出高电平需要外接上拉。用来实现电平转换和线与功能输出。
6、推挽输出:上下MOS管交替导通,用于更大功率驱动的输出。
7、推挽复用输出功能:复用功能下推挽输出。
8、开漏复用输出功能:复用功能下,开漏输出。
3)NVIC中断控制器:(NVIC)位于CM3核心中,是用于管理和配置中断的中断系统硬件设施。
NVIV的功能:(由硬件+控制寄存器组成)
1.管理中断源 2.保存中断请求信号 3.优先级判断中断嵌套 4.屏蔽中断 5.中断优先级设置
4)EXTI控制器:主要用于管理片外引脚中断和事件控制。
EXTI 控制器是一个片上外设,可以管理 16 个外部引脚中断和 4 个事件控制,总共 20 个输入。
EXTI——外部中断/事件线图像:
80个通用I/O口:均可作为外部中断或事件输入线,连接16个外部中断/事件线。使用时必须设置AFIO功能,并开启其时钟。(可以是中断,也可以是事件)
四条专用线路:1. EXTI 线路 16 连接至 PVD 输出(中断)。2. EXTI 线路 17 连接至 RTC 闹钟事件。3. EXTI 线路 18 连接至 USB 唤醒事件。4. EXTI 线路 19 连接至以太网唤醒事件。
注意:PVD(可编程电压监视器)管理上电复位和断电中断。
5)ADC模数转换:ADC转换分为2个通道组:常规通道组和注入通道组。常规通道相当于你正常运行的程序,注入通道相当于中断。注入通道的转换可以中断常规通道的转换,注入通道转换完成后,常规通道可以继续转换。ADC的常规通道组最多包含16个转换,而注入通道组最多包含4个通道。
常规通道组:在寄存器中选择常规通道及其转换顺序,并将常规组转换的总次数写入寄存器的L[3:0]中。
注入通道组:在寄存器中选择注入组及其转换顺序,并且要将注入组中的转换总数写入寄存器的L[1:0]。
2.3 矩阵键盘模块原理
按键由一组独立的按键组成,由于弹性按键结构简单,价格低廉,因此选用弹性按键。同时每个按键单独连接到芯片相应引脚,简化了电路设计。本设计共有16个独立的弹性小按键,用于控制分数的加减、计时开始结束等操作。它们都直接连接到相应的GPIO口,所有GPIO口都设置为上拉输入电平触发方式。一旦小按键被按下,相应引脚以低电平连接到地,当程序进入按键查询时,它处于低电平,表示按键被按下,按键弹起后处于高电平。
2.4 液晶模块原理
液晶显示器的原理是利用液晶的物理特性,通过电压来控制其显示面积,有电就有显示,从而可以显示图形。液晶显示器具有厚度薄、适合大规模集成电路直接驱动、容易实现全彩色显示等特点,在便携式电脑、数码相机、PDA移动通讯工具等许多领域得到了广泛的应用。
LCD模块是一个慢速显示设备,所以在执行每条指令前,必须确认模块的忙标志为低,表示不忙,否则指令会失败。要显示字符,必须先输入显示字符地址,也就是告诉模块把字符显示到哪里。所以必须有一个忙等待。
引脚描述:
引脚1:VSS为地电源。
引脚2:VDD连接5V正电源。
第3脚:VL为液晶显示器对比度调节端,接正电源时对比度最弱,接地时对比度最高。对比度过高会产生“重影”。使用过程中可通过10K电位器调节对比度。
引脚4:RS为寄存器选择,高电平时选择数据寄存器,低电平时选择指令寄存器。
引脚5:R/W为读写信号线,当RS和R/W都为低时,可以写入指令或显示地址,当RS为低时,
当R/W为高电平时可以读取忙信号,当RS为高电平且R/W为低电平时可以写入数据。
脚6:E端为使能端,当E端由高电平跳变为低电平时,液晶模块执行命令。
引脚7至14:D0至D7是8位双向数据线。
第15脚:背光源正极。
第16脚:背光源负极。
本项目中需要一个LCD,用于显示倒计时和A队、B队的得分。LCD的D0-D7连接到PA0-PA7引脚,RS连接到PB8引脚,RW连接到PC13。
2.5 蜂鸣器模块原理
蜂鸣器是一种一体化结构的电子发声器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作为发声装置。蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种。本系统采用蜂鸣器作提示用,当游戏每段计时结束时,即时间=0(置为低电平)时,蜂鸣器会报警,按“0”键后,可关闭蜂鸣器。
2.6 LED灯模组原理
系统有一颗LED小灯,小灯正极接电源,当系统发现竞争直接切断时,立即将STM32对应GPIO口置低电平,点亮对应小灯,系统保持LED小灯状态,直到按下复位键,此时小灯熄灭。
2.7 温度传感器模块原理
系统配有温度传感器,主要用于模拟当前的环境温度,并在LCD上显示当前的模拟温度。其适用电压范围宽,电压范围:3.0~5.5V,寄生电源供电模式下可通过数据线供电。独特的单线接口方式,与微处理器连接时仅需一根线,即可实现微处理器与微处理器之间的双向通讯。支持多点组网功能,在仅有的三根线上可并联多个,实现组网多点测温。使用过程中无需任何外围元器件。所有传感元件及转换电路都集成在一个形似晶体管的集成电路中。测温范围为-55℃~+125℃,精度为-10~+85℃时±0.5℃。可编程分辨率为9至12位,对应可解析温度分别为0.5℃、0.25℃、0.125℃、0.0625℃,可实现高精度温度测量。9位分辨率时,最多可在93.75ms内将温度转为数字量,12位分辨率时,最多可在750ms内将温度值转为数字量,快速测量结果直接输出数字温度信号。
2.8 系统定时器控制组件设计
时序控制部件按规定的时间向外发出各种操作所需的全部内部和外部控制信号,使各功能部件协同工作,完成指令规定的功能。其主要任务是产生工作序列。它的运行需要时钟电路提供工作频率,外部时钟源可构成时钟电路。单片机的生产工艺不同,时钟的产生方式也不同。时钟产生方式有内部时钟产生和外部时钟产生两种。本系统采用内部时钟产生方式,输入输出端跨接晶体或陶瓷谐振器,经内部反相器组成稳定的自激振荡器,它发出的脉冲直接送给片内时序控制部件。
3.系统软件设计(30分)
3.1项目软件系统总体架构图(10分)
本项目主要子模块有定时器中断模块、矩阵键盘模块、显示模块、报警检测模块、温度传感器AD转换模块
总体流程图:
3.2 定时器中断模块
定时器采用内部中断方式,实现步骤为:
1. 定时器时钟
md();
2.初始化计时器并配置ARR和PSC。
();
3.使能定时器中断并配置NVIC
无效();NVIC _Init();
4. 启用计时器。();
5.编写中断函数
无效 nfig(无效)
//开启定时器时钟,即内部时钟=8M
(,);
定义 e;
//开启定时器时钟,即内部时钟=8M
(,);
// 自动重新加载寄存器值,累计+1频率后产生更新或中断
#如果定义
例如。= + 1;
#别的
例如.=;
#结束
// 时钟预分频器
e. = 呃;
// 时钟分频因子,如果不使用则忽略
例如.=;
//计数器计数模式,设置为向上计数
例如.=;
// 重复计数器值,即使没有使用也不用担心
呃= 0;
// 初始化计时器
(,&e);
// 清除计数器中断标志
(,);
// 启用计数器中断
(,,);
// 启用计数器
(,);
无效 nfig(vo