资料编号:126 下面是相关功能视频演示:
126-基于stm32的秒表计时器设计系统Proteus仿真(源码+仿真+全套资料)
功能讲解:
采用stm32单片机作为控制器,数码管来显示秒表时间,三个按键作为开始 清零 暂停来控制秒表的计时,秒表可以显示小数点后面一位,最大可以显示999.9s,全套资料齐全:
下面是程序部分展示:
//驱动数码管的函数
//mode =0表示共阳,mode=1表示共阴,可以通过这个修改
//m是要显示的数字,比如1.0就是m=10,放大10倍
void Show_num(u16 m)
{
u8 num=0,n=0;
static u8 temp_flag=0;
//数码管消隐
SEG1=0;SEG2=0;SEG3=0;SEG4=0;
switch(temp_flag)
{
case 0://左侧第1位数码管
n=m/1000;//取数据
num=CAseg_table[n];//查询数码管的断码表
Drv_SEG(num);
SEG1=1;//打开数码管显示
temp_flag++;
break;
case 1://左侧第2位数码管
n=m%1000/100;//取数据
num=CAseg_table[n];//查询数码管的断码表
Drv_SEG(num);
SEG2=1;//打开数码管显示
temp_flag++;
break;
case 2://左侧第3位数码管
n=m%100/10;//取数据
num=CAseg_table[n]&0x7f;//查询数码管的断码表
Drv_SEG(num);
SEG3=1;//打开数码管显示
temp_flag++;
break;
case 3://左侧第4位数码管
n=m%10;//取数据
num=CAseg_table[n];//查询数码管的断码表
Drv_SEG(num);
SEG4=1;//打开数码管显示
temp_flag=0;
break;
}
Delay_ms(10);//延时
}
//获取独立按键数据
u8 Get_key_num()
{
u8 temp_key=0;
static u8 flag=0;
if((flag==0)&&((K1==0)||(K2==0)||(K3==0)))
{
flag=1;//按键只获取一次按键数值
SysTick_Delay_Ms(10);//消除抖动
//如果有对应的按键按下就返回对应按键数值
if(K1==0)
{temp_key=1;}
else if(K2==0)
{temp_key=2;}
else if(K3==0)
{temp_key=3;}
}
else if((K1==1)&&(K2==1)&&(K3==1))
{
flag=0;//所有按键都弹起就清除标志
}
return temp_key;
}
下面是该资料的分享下载链接: