关于7段数码管显示问题

用AT89C52单片机控制数码管从0显示到9,在编程序的时候,段选输入了0X3f.0x06.0x5b.0x4f.0x66.0x6b.0x7b.0x07.0x7f.0x6f,请问这些十六进制是怎么得出来的?讲得尽可能详细一点!

7段数码管其实是八段,有时小数点没有使用,所以常说7段,

显示原理是这样的 

数码管首先从上到右,到下到左,到中间,最后到小数点分别标记为a b c d e f g dp八段其中小数点位DP为最高位,a段为最低位,要想显示什么字符只需要使对应的段发光即可,一般的习惯是单片机的端口的最低位接a段,次低位接b段,...最高位(如p0.7)接dp,显示码从高往低表示为为 dp g f e d c b a

如要显示“1”,只需要将b、c段点亮即可,若是共阴极,片选是低电平选中,某一段输出高电平点亮,即显示码为00000110 即0x06,其他的依照该方法类推

你给的码表为共阴极的。

共阳极的恰巧相反!

数码管的示意图如下图所示

温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-04-17

你这个是共阴的数码管。0x3f是“0”字显示的控制段码,它的二进制数是0011 1111,8 位所控制 的数码管的各段分别是hgfedcba,低电平该段灭,高电平该段亮。如图。

第2个回答  2021-09-14
你说的这个办法其实是最稳妥,最不容易出问题的程序。把十六进制全部换成二进制,就很容易看懂了啊!
3FH(11 1111)06H(110)5BH(101 1011)4FH(100 1111)……
在这些数中,0表示的是低电位,而1表示的是高电位,你现在知道了吗?它可以直接输出到七段数码管,也可以输入到一些解码芯片。共阴极七段数码管则某一段输入为1,那么这一段数码段就会亮。而共阳样七段数码管则某一段输入为0,那么这一段也会亮。亮的这些段,结果是同一样的,都会组成1,2,3……9这些数字。
我理解的原理就是这样的。别人的说得更明白一些,我的表达能力有限。
相似回答