if(sec &1)ss=1;else ss=0;/*1s一翻*/ 这个一秒一翻转还实在,直接关系1302 编译不了0.5要不然就按秒亮灭了 ![]() |
wulin 发表于 2022-8-14 07:21 下载了,慢慢玩 |
Y_G_G 发表于 2022-8-13 14:50 复制修改的,改好的就凑一起了 ![]() |
调整延时时间 |
玉萌业余发展 发表于 2022-8-11 17:59 单键调时,适用带冒号时钟专用数码管。 ![]()
![]() |
玉萌业余发展 发表于 2022-8-13 10:28 话不是这么说的 你多少是会点的 虽说不是一定要像人家科班出身那样,写出严谨的规范的C语言代码出来 但至少,一个语句占一行,这一点是要的 因为大家都是这样的,如果你要贴代码出来,多少是要考虑一下别人能不能看得明白你的代码 像你这种代码,很多时候,过一段时间,只怕是你自己都不知道自己代码是什么意思了 |
Y_G_G 发表于 2022-8-12 07:24 其实我什么都不懂 ![]() |
玉萌业余发展 发表于 2022-8-11 17:59 你这个代码,写得让人耳目一新啊,有黑客帝国风范 |
Y_G_G 发表于 2022-8-11 13:36 修改了一个。本来就学着玩得 ![]() |
188610329 发表于 2022-8-11 14:54 好,有钱再买回来研究 ![]() |
玉萌业余发展 发表于 2022-8-11 12:20 时钟点是独立引脚控制的话,建议用ds1307替代ds1302,因为ds1307有sqw引脚,可直接控制时钟点,给07地址分别写入0x00,0x80,0x10可控制时钟点亮,灭,闪。 |
Miao在定时器中断中改变,1秒钟取反一次 OUT=..........; //显示,冒号不亮 if(Miao)OUT&=.....;//冒号亮灯 如果你不会写一个一秒钟的定时器,那............. |
lkc8210 发表于 2022-8-10 17:00 冒号是哪根脚/段位? 假设是W3的dp段 P1=0xFF;w3=1;P1=smgduan[shi%16]; if(ss>=500) { ss==0; if(flash) { P1 &= 0x7F; } flash = !flash; }else{ ss+=ms*4; } delay(ms);w3=0;//.... 用的是单独带冒号的数码管,不是小数点分出的;其实小数点分出可以节省硬件连接 ![]() |
mengsiu 发表于 2022-8-11 10:35 感谢黒友回复。 ![]() ![]() |
董云交 发表于 2022-8-11 09:08 感谢黒友回复。 ![]() |
wulin 发表于 2022-8-10 20:54 感谢黒友回复。 ![]() |
188610329 发表于 2022-8-10 18:06 感谢黒友回复。 ![]() ![]() |
npn 发表于 2022-8-10 18:00 感谢黒友回复。 ![]() |
天ノ忆 发表于 2022-8-10 17:35 感谢黒友回复。 ![]() |
haiyang201 发表于 2022-8-10 17:06 感谢黒友回复。 ![]() |
lkc8210 发表于 2022-8-10 17:00 感谢黒友回复。 ![]() |
用个定时器之类的,约500ms灭,然后时钟变秒时亮就可以。 |
这种闪烁我会用定时器中断,不占用系统延时。他在闪烁的话给我的信息就是系统在运行。至于一分钟闪多少下,是57下还是63下,其实并不是那么重要的了。 |
可以用定时器延伸出来做一个软定时器,然后置标志位进行准确定时 |
这个程序里有关于数码管闪点的代码,可以借鉴用于冒号闪烁。![]() |
这要具体情况具体分析,不能任死理的。 一般如果时钟点 是独立引脚的话,我比较习惯用 DS1307 的 SQW 引脚输出 1秒 的脉冲 来驱动。 而如果时钟点 是和其他段是公用引脚,比如,在位2的 小数点。 那么会 利用定时器 每 500ms 翻转一次 Flag_TimePiont 标志, 在数码管 动态扫描 显示 位2 数字的时候: if(Flag_TimePiont) Disp[2] |= 0x80; else Disp[2] &= 0x7f; 这样的方法。 |
你要用定时器中断进行动态扫描和计时。 |
要想准确就用定时器 |
定时器不是好一点,不占用时间 |
冒号是哪根脚/段位? 假设是W3的dp段
|