数码管闪烁模板及注意事项
方式1:直接在segProc()里写
查看代码
void Seg_Proc(void)
{
if(Seg_Slow_Down) return;
Seg_Slow_Down = 1;
/***用户自定义代码区↓***/
sprintf(seg_string,"-%d- %3d",(unsigned int)disp1,disp2);
if(state_flag == 2)//让disp1闪烁
{
/*Seg_Slow_Down减速如果为400,那我们这里if((ms_Tick - ms_Tick_point) >= 200)在400以下的就没理想效果 ,
所以改这里的同时,也要记得改数码管减速Seg_Slow_Down的值*/
if((ms_Tick - ms_Tick_point) >= 200)
{
ms_Tick_point=ms_Tick;
bulingbuling ^= 1;
if(bulingbuling == 1)
seg_string[1] = ' ';
}
}
else if(state_flag == 3)//让disp2闪烁
{
if((ms_Tick - ms_Tick_point)>=200)
{
ms_Tick_point=ms_Tick;
bulingbuling ^= 1;
if(bulingbuling == 1)
seg_string[5] = seg_string[6] = seg_string[7] = ' ';
}
}
Seg_Tran(seg_string, seg_buf);
}
方式2:在timer1_Isr里写个标志位,然后在segProc()里作判断
查看代码
void tm1_isr() interrupt 3
{
//永远不变
if(++Key_Slow_Down == 10) Key_Slow_Down = 0;
if(++Seg_Slow_Down == 400) Seg_Slow_Down = 0;
//根据代码需求变换
Ms_Count++;
if(Ms_Count == 300)
/*Seg_Slow_Down减速如果为400,那我们这里if((ms_Tick - ms_Tick_point) >= 300)在400以下的就没理想效果 ,
所以改这里的同时,也要记得改数码管减速Seg_Slow_Down的值*/
{
Ms_Count=0;
Disp_BlingBling ^= 1;//闪动变量翻滚
}
//这样也可以
// if(Ms_Count % 300 == 0 )
// Disp_BlingBling ^= 1;//闪动变量翻滚
//永远不变
Seg_Disp(seg_buf, pos);//数码管显示刷新
if( ++pos == 8 ) pos = 0;
Led_Disp(ucLed);//LED显示内容
}
void Seg_Proc(void)//显示处理,显示信息生成
{
//永远不变
if(Seg_Slow_Down) return;
Seg_Slow_Down = 1;//减速程序
//根据代码需求发生变化
switch(Running_Setting_Mode)
{
case 1:
case 2:
case 3://S5 时钟界面
sprintf(seg_string, "%02d-%02d-%02d",(unsigned int)Clock_HMS[0],(unsigned int)Clock_HMS[1],(unsigned int)Clock_HMS[2]);//待设置的时间显示处理
break;
case 5:
case 6:
case 7://S6 闹钟界面
sprintf(seg_string, "%02d-%02d-%02d",(unsigned int)Alarm_HMS[0],(unsigned int)Alarm_HMS[1],(unsigned int)Alarm_HMS[2]);//待设置的闹钟显示处理
break;
}
if( Disp_BlingBling==1 )
{
switch(Running_Setting_Mode)
{
case 1://时钟秒
case 7://闹钟秒
seg_string[6] = " ";
seg_string[7] = " ";
break;
case 2://时钟分
case 6://闹钟分
seg_string[3] = " ";
seg_string[4] = " ";
break;
case 3://时钟时
case 5://闹钟时
seg_string[0] = " ";
seg_string[1] = " ";
break;
}
}
//永远不变
Seg_Tran(seg_string, seg_buf);
}
总之,就是 Seg_Slow_Down减速如果为400,那我们这里if((ms_Tick - ms_Tick_point) >= 200)在400以下的就没理想效果,所以改这里的同时,也要记得改数码管减速Seg_Slow_Down的值。
标签:Down,Seg,Slow,string,seg,数码管,ms,注意事项,模板 From: https://www.cnblogs.com/YYZYCS/p/18122368