一. 系统概述
本系统采用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