标题: 关于单片机动态扫描数码管的程序问题 [打印本页]

作者: wifen    时间: 2021-12-22 09:25
标题: 关于单片机动态扫描数码管的程序问题
看书上动态扫描代码为
P0 = 0xFF;
P1 = (P1 & 0xF8) | i;
P0 = LedBuff[i ];
if (i < 5)
i++;
else
i = 0;


我自己写的话是写成
i = 0;
for(i = 0; i < 6; i++)
{
   P0 = 0xff;
   P1 = (P1 & 0xf8) | i;
   P0 = ledbuf[i ];
}
这两种写法是不是一样呢?

作者: 188610329    时间: 2021-12-22 12:36
不一样,

上面的和大循环比例是  1:1
作者: 188610329    时间: 2021-12-22 12:40
不一样,

上面的和大循环比例是  1:1

下面的和大循环比例是  5:1
作者: Hephaestus    时间: 2021-12-22 13:40
太不一样了,你的写法i在0~4之间时间特别短,可能眼睛都看不出来,i在5的时间长,没有外层大循环的代码不知道两者的比例。
作者: wifen    时间: 2021-12-22 15:49
这个是多个数码管,不是刷新更快了吗?还是没搞明白
作者: wifen    时间: 2021-12-22 15:50
P1是38译码器位选,P0是显示内容
作者: Hephaestus    时间: 2021-12-22 17:08
wifen 发表于 2021-12-22 15:49
这个是多个数码管,不是刷新更快了吗?还是没搞明白

每个数码管刷新时间不一样,i=5停留时间最长,对应的数码管最亮,其他数码管几乎没有点亮时间,自然也就不怎么亮了。
作者: wifen    时间: 2021-12-24 11:35
Hephaestus 发表于 2021-12-22 17:08
每个数码管刷新时间不一样,i=5停留时间最长,对应的数码管最亮,其他数码管几乎没有点亮时间,自然也就 ...

明白了,哈,一语点破




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1