基于stm32的秒表计时器设计系统Proteus仿真

发布于:2022-11-13 ⋅ 阅读:(528) ⋅ 点赞:(0)

资料编号: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;
}

 下面是该资料的分享下载链接:

https://pan.baidu.com/s/1dR0AqLPzxxL7pwfptJW4kg?pwd=hxqa


网站公告

今日签到

点亮在社区的每一天
去签到