曾有个美丽的村庄,叫做LED乐园,这里住满了各式各样的LED。他们或排成队闪来闪去,或坐在山头看灯火阑珊,或相互偎依脸上漏出幸福而又羞涩的红晕。
总之,他们是快乐的,因为他们可以随心所欲干自己想做的事。然而有一天,电子王国要举办运动会,LED家族要完成计时计数的任务,无奈之下,一部分LED去排成8的形状,并接受了单片机的命令。天真淳朴的LED们很是听话,他们认真完成了国家交给的任务,他们是光荣的,国王为了奖励他们,参与者有了自己新的村庄,还发给好看的衣服。然而,他们并不高兴,因为穿上的衣服脱不掉了,随心所欲的闪也不被允许了,他们被外人羡慕,可谁知他们想要的是自由,更想与翘首以盼的家人团聚,可他们只能待着,在村子里等候命令,而这个村子叫数码管。
从上面的童话故事我们可知道,数码管是来自于LED,所以百度百科上这样说“数码管也称LED数码管,是一种半导体发光器件,其基本单元是发光二极管。”那么数码管是不是就可以像控制LED那样控制呢?这是必须的。
数码管分为两种,一种叫做共阴数码管,一种叫做共阳数码管。所谓的共阴共阳也就是数码管中led的接法,是让他们都接地还是都接VCC,都接地了就是共阴,都接Vcc就是共阳。不知道会不会有人问为什么非要都接一样的呢?当然可以接不一样,不过,我们有为什么要为自己增加不必要的麻烦呢?单片机和数码管的接法就好比多个led接单片机。也需要接电阻,和led是完全一样的。
如果把数码管叫做数字编码管不知合适不,何为编码?就是信息从一种形式或格式转换为另一种形式的过程。其实和伸出大拇指表示棒一样一样的。所以对数码管的控制就是编码的实现。
如果这是共阳数码管则低电平点亮。且ABCDEFGDP分别接在P0~P7。那么,当要显示1的时候,让BC段亮就好了,也就是接低电平。即P0=0xf9
如果这是共阴数码管则高电平点亮。当要显示1的时候,让BC段亮就好了,也就是接高电平。即P0=0x06。
当我们要表示0~9的时候,就让数码管指定某段亮就好了。而这个指定就是我们所说的编码,如下(0——F编码):
共阳: 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e
共阴: 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71
数码管很无奈啊,对于上述的一位数码管还可以,只不过是不闪罢了,就是有的亮有的灭。但是LED之初,性本闪,闪才能显示它的美。可是,国王就是这样,说不让你闪就不让你闪,不过,单片机还是比较不错的,他让数码管闪,只不过闪的比较含蓄的,可是单片机为什么要帮数码管闪呢?
很简单,单片机的IO口只有32个,如果不让数码管闪的话,它只能控制四个,这样低的效率会被国王责罚的。某天单片机听说国王责骂了每秒闪百次的霓虹灯,说他不闪,然后单片机会心一笑wow~ ⊙o⊙。
他就让四个数码管八个段选都接在P0口上,每一位接在其他口上,让数码管闪烁的频率大于100HZ,这样,数码管不失闪之本性,单片机也能完成任务了。就让你看不到,就让你看不到O(∩_∩)0!我就是动态显示
具体接法如下图:
这就好比控制led灯,四位数码管有32个LED分成了四组,每组八个但既定数闪一下再让下一组,只不过闪烁频率比较大,咱们看不清。
可是无理的国王还是不满足于单片机所完成的任务,让他干更多的活,可引脚不够了,怎么办?于是他把38编码器找来了。38编码器实现了让单片机用3个IO口控制8个led。
学识浅薄出拙文,如察错误望赐教,小弟在此感涕零。