Linux下C51入门教程07:八位数码管
系列文章索引:Linux下C51入门教程索引
今天,我们来学习八位数码管的开发。
首先,你应该理解Linux下C51入门教程06:一位数码管。
八位数码管开发,其实就是控制8个一位数码管。那么就涉及到两个问题:一是选择8个中的一个,二是设置一位数码管的值。前者称为位选,即8位中的哪一位,后者为段选,即8个字段中的哪一段。
段选就是第6篇的一位数码管控制,那么重点就是位选。
位选就是从需要控制的8位数码管中进行选择,选择的方式有两种:一为P[0123]
(正则表达式语法,表示匹配0123中的任意一个)口直接选择,二为前面提到的译码器。
P口
首先,看一下8位数码管的型号为:CL3641AH。根据上一篇教程我们可以知道这是共阳极数码管。
然后,看一下官方电路图:
J12用来设置单位数码管的数值(和上一篇一样),J10用来设置数码管显示等位,与J12共用一个接地端.并且J10部分没有VCC端,也就是说电流是共用J12流过来的VCC(20)端.那么数码管此时变成了共阴极.
这里我们用P0接J12,P1接J10.
第一步,我们点亮LED2最右侧的一个数码管.
J10.12345678=00000001=P1.01234567
P1.76543210=10000000
取反为:01111111=0x7f
P0就设置为0.
代码为:
1 |
|
效果如图:
第二步,我们设置两个,选右数1/3位,显示数字0.
P1=0x5f,P0=0x3f;
代码为:
1 |
|
效果如下:
第三步,上一步中的两个数码管动态显示数字.
根据代码,我们可以知道,P1,P0口的设置对所有的数码管都有效,不可能同时设置两个数码管.那么,我们一次设置一个数码管,间隔一段时间设置第二个.欺骗视觉就是动态设置了.
1 |
|
效果:
译码器
见代码,很简单的代码.
Linux下C51入门教程07:八位数码管
https://blog.jackeylea.com/c51/c51-eight-nixie-tube/