一. 系统概述
系统以STM32单片机作为主要控制单元,通过按键操作实现比赛的计时和计分功能。此外,系统还允许用户调整比赛场次设置。
二. 仿真概述
- 按下“开始”按钮后,系统会启动比赛计时功能;若按下“暂停”按钮,计时将暂停。系统还提供了更改比赛场次的选项,同时下方按键可用于记录两队的得分。
- 按下“设置”按钮,可以对计时时间进行调整。再次按下该按钮可在分钟和秒钟之间切换。下方的两个按键用于增加或减少时间。
三.程序设计
#include <main.h>
//
u8 Key,Aget=0,Bget=0,s=0,d=12,star=0,set=0,jp=1;
//
//
void Init(void);
void Test(void);
void Get(void);
void time(void);
//
int main(void)
{
Init();
while(1)
{
KeyXY_Scan(&Key);
Lcd1602_Write_Num8(0x82,Key);
Test();
time();
Get();
//场次
if(Key==3)
{
star=0;
d=12;s=0;
jp++;
if(jp==5) jp=1;
}
if(jp==1) Lcd1602_Write_String(0x8a,1,(u8*)"1");
if(jp==2) Lcd1602_Write_String(0x8a,1,(u8*)"2");
if(jp==3) Lcd1602_Write_String(0x8a,1,(u8*)"3");
if(jp==4) Lcd1602_Write_String(0x8a,1,(u8*)"4");
//设置
if(Key==4)
{
set++;
if(set==3) set=0;
}
if(Key==8&&set==1)
{
d++;
}
else if(Key==12&&set==1)
{
d--;
}
else if(Key==8&&set==2)
{
s++;
}
else if(Key==12&&set==2)
{
s--;
}
if(set==1)
{
delay_ms(500);
Lcd1602_Write_String(0xc5,2,(u8*)" ");
}
if(set==2)
{
delay_ms(500);
Lcd1602_Write_String(0xc9,2,(u8*)" ");
}
if(d>=60&&(set==1||set==2)) d=0;
if(d==0&&(set==1||set==2)) d=0;
if(s>=60&&(set==1||set==2)) s=0;
if(s==0&&(set==1||set==2)) s=0;
Key=0;
}
}
24-32f-36