找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1222|回复: 7
收起左侧

关于单片机动态扫描数码管的程序问题

[复制链接]
ID:100982 发表于 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 ];
}
这两种写法是不是一样呢?
回复

使用道具 举报

ID:624769 发表于 2021-12-22 12:36 | 显示全部楼层
不一样,

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

使用道具 举报

ID:624769 发表于 2021-12-22 12:40 | 显示全部楼层
不一样,

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

下面的和大循环比例是  5:1
回复

使用道具 举报

ID:883242 发表于 2021-12-22 13:40 | 显示全部楼层
太不一样了,你的写法i在0~4之间时间特别短,可能眼睛都看不出来,i在5的时间长,没有外层大循环的代码不知道两者的比例。
回复

使用道具 举报

ID:100982 发表于 2021-12-22 15:49 | 显示全部楼层
这个是多个数码管,不是刷新更快了吗?还是没搞明白
回复

使用道具 举报

ID:100982 发表于 2021-12-22 15:50 | 显示全部楼层
P1是38译码器位选,P0是显示内容
回复

使用道具 举报

ID:883242 发表于 2021-12-22 17:08 | 显示全部楼层
wifen 发表于 2021-12-22 15:49
这个是多个数码管,不是刷新更快了吗?还是没搞明白

每个数码管刷新时间不一样,i=5停留时间最长,对应的数码管最亮,其他数码管几乎没有点亮时间,自然也就不怎么亮了。
回复

使用道具 举报

ID:100982 发表于 2021-12-24 11:35 | 显示全部楼层
Hephaestus 发表于 2021-12-22 17:08
每个数码管刷新时间不一样,i=5停留时间最长,对应的数码管最亮,其他数码管几乎没有点亮时间,自然也就 ...

明白了,哈,一语点破
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表