多位led数码管显示

我现在记录一下, 我之前对多位数码管的理解 , 其中包含余晖效应 和 视觉暂留效应.

1. 数码管能为什么亮

因为数码管从正极到负极有电流通过, 然后就亮了 , 共阳数码管公共端接高电平 , 所以八个端口需要低电平才能亮 . 共阴数码管, 公共端接低电平, 所以八个端口需要高电平才能亮.

八个数码管共同摆布 , 然后通过端口控制, 通过计算让对应端口接相应电平, 我们就可以显示对应的数字

2. 多个数码管共用八个

单个数码管我们容易理解, 那多个数码管也是同样道理, 但是如果给每个数码管都分配8个端口 , 势必会造成端口不够用的情况, 所以我们就可以通过 控制公共端的电平 , 在特定时间 , 把八个端口单独给一个端口使用. 说直白点, 就是 每个数码管都有权利去显示, 但是同一时间, 如果每个数码管都想借助八个端口显示特定的数字的话, 就要分时复用了 , 这100毫秒 , 八个端口的数据是数码管1 , 下100ms八个端口的数据就是数码管2的 , 中间决定哪个数码管显示 , 就需要我们控制公共端了.

这中间 , 只要两个数码管切换的时间够频繁, 我们就看不出 某个数码管在100ms内没显示数字, 并且数码管都有余晖效应 , 就是数码管刚亮起来的时候 , 我们突然断电, 数码管不会直接熄灭,而是慢慢熄灭, 在我们数码管还没完全熄灭, 100ms时间又到了, 所以我们就察觉不到数码管的闪烁 (前提是这个数据还是上次一样的数据).

3.数码管的显示命脉

数码管显示的命脉, 就是公共端, 我想让你显示, 共阳数码管的话, 公共端接上高电平, 电源给你通上 , 剩余八个端口, 想怎么显示, 就怎么显示, 反正这边电源给着, 但是公共端把电断了的话, 那无论这八个端口如何显示 , 数码管都是不亮的(led灯电流单向导通).

​ 所以 , 我们只要合理安排多个数码管 , 通电和断电 , 就可以实现多位数码管的显示.

4.合理安排断电

我们安排断电的目标是什么呢?

① 通俗的讲就是可以显示多位数码管显示

② 再严格点就是 , 各个数码管显示对应的数字, 并且不会错位, 不会闪烁 , 各司其职

为达到这个要求 , 我们下面来放慢速度显示数码管过程:

错误示范1:

while(1) //while循环里面进行循环显示

{

// 数码管1电源打开

// 端口显示数码管1数字

// 数码管2电源打开

// 端口电视数码管2数字

}

分析: 这样显示 , 就把两个数码管当成了一个数码管 , 同一时间, 只能显示一个数字, 如果延时时间段, 会造成闪烁

改进方案: 在开启一个数码管前 , 先把另一个数码管的电拔了

while(1) //while循环里面进行循环显示

{

// 数码管2电源关闭 (1)

// 数码管1电源打开(2)

// 端口显示数码管1数字(3)

// 延时(4)

// 数码管1电源关闭(5)

// 数码管2电源打开(6)

// 端口电视数码管2数字(7)

// 延时(8)

}

分析: 其实已经改进的差不多了, 但是还是有点小瑕疵, 问题不大, 就是在步骤2 的时候, 如果直接打开数码管1的电源, 此时端口的电平数据 , 还是数码管2的 , 最好在打开单个数码管电源前 , 先把其他数码管电断了 , 然后修改端口电平数据, 此时再打开此数码管电源 .

改进如下:

while(1) //while循环里面进行循环显示

{

// 数码管2电源关闭 (1)

// 端口显示数码管1数字(3)

// 数码管1电源打开(2)

// 延时(4)

// 数码管1电源关闭(5)

// 端口电视数码管2数字(7)

// 延时(8)

// 数码管2电源打开(6)

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值