manzunzu
发表于 2024-1-26 16:30:30
不用了,显示正常了
wangxiangtan
发表于 2024-1-26 16:32:23
干得不错,功能再完善一下
泰勒soc
发表于 2024-1-26 16:44:11
跟着冲哥学,比他更会冲{:4_166:}
challis
发表于 2024-1-27 22:51:55
manzunzu 发表于 2024-1-26 15:09
你好这个代码能分享下吗,我做出来的乱码
好的,我一会整理一下
challis
发表于 2024-1-27 22:52:11
今天比较忙,晚上回家,赶紧添加了按钮以及调整时间的功能
challis
发表于 2024-1-27 22:55:35
新建mode.h文件,来实现不同模式的显示
目前的模式有3中,一种是正常显示模式,一种是修改分钟,一种是修改小时模式,用宏定义3种模式的值分别为1,2,3#define Mode_Normal 1
#define Mode_Change_Minute 2
#define Mode_Change_Hour 3
challis
发表于 2024-1-27 22:56:41
建立局部变量,以及把之前的is_show_dot变量剪切到这个文件中定义,并初始化
uchar is_show_dot = 1;
uchar mode = Mode_Normal;
challis
发表于 2024-1-27 22:57:44
接下来重写SetSeg4Bit函数,当正常模式时,显示小时和分钟,并且根据is_show_dot来切换是否显示时间中间的冒号void SetSeg4Bit()
{
switch(mode)
{
case Mode_Normal:
SetSeg4BitData_1(Mode_Show_1,is_show_dot);
SetSeg4BitData_2(Mode_Show_2);
break;
case Mode_Change_Minute:
SetSeg4BitData_1(Mode_Show_1,1);
if(is_show_dot)
SetSeg4BitData_2(Mode_Show_2);
else
SetSeg4BitData_2(SEG_NULL);
break;
case Mode_Change_Hour:
if(is_show_dot)
SetSeg4BitData_1(Mode_Show_1,1);
else
SetSeg4BitData_1(SEG_NULL,1);
SetSeg4BitData_2(Mode_Show_2);
break;
}
}
challis
发表于 2024-1-27 22:59:37
当是修改分钟的模式时(Mode_Change_Minute),会常亮显示冒号,并且根据is_show_dot来决定是否显示分钟的那2位数字,这样就实现了显示分钟的那2个数码管闪烁的效果
修改时钟的模式(Mode_Change_Hour)和修改分钟的模式类似,只是闪烁变为了前2位,也就是小时
challis
发表于 2024-1-27 23:01:37
timer3中断函数中修改一下,只有在正常模式(Mode_Normal)才会增加秒数,而修改模式设定的时间流逝是暂停的
if(t3_iter == 10)
{
if(mode == Mode_Normal)
AddSec();
is_show_dot = !is_show_dot;
SetSeg4Bit();
t3_iter = 0;
}
页:
1
2
3
[4]
5
6
7
8
9
10
11