C语言单片机代码 数码管动态显示

第一个数码管显示1,时间为0.5s,然后关闭它,立即让第二个数码管显示2,时间仍为0.5s,在关闭它…………一直到最后一个数码管显示6,时间同样为0.5s,关闭它后再回来显示第一个数码管,一直循环下去

其中一段代码

uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};

为什么数组有16个元素?要根据什么来填写这些数组元素?
为什么
P0=table[1]显示1
P0=table[2]显示2
P0=table[3]显示3
P0=table[4]显示4
P0=table[5]显示5
P0=table[6]显示6

你这数组里面16组数分别为0~f的共阴数码管的编码,你说只需要数码管显示0~6,那么多余的就没有用到,或者 在别的函数里面有用到 你仔细看你的程序……
P0=table[1],意思就是说 往P0里面送table这组数里面的第2个数也就是0x06,0x06正好是共阴数码管显示1的编码。所以数码管就会显示1,同理 table[2]就是显示2的编码,需要注意的是table[0]指定的是table里面的第一个数。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-09-22
这里的16个元素代表的是从十六进制数0~9、A、B、C、D、E、F的段码,根据什么来填这些数组元素?那就要看你设计程序时定义数组的作用才能确定.table[1]对应的元素为0x06,是十六进制数,转换成二进制数是00000110B,分别对应于数码管的Dp、g、f、e、d、c、b、a 脚,所以在共阴数码管上点亮b、c两段,显示的是数字1,其它同理。追问

如果共阳数码管,还是点亮b、c两段吗?

追答

不是的,但段码正好相反,如下图:

共阳数码管要显示数字'1',二进制码为共阴数码管的反码:11111001B,十六进制为:0xf9.

追问

共阴数码管,高电平才能点亮
共阳数码管,低电平才能点亮
为什么?

追答

学习下面数码管知识后你就知道了:::

数码管由七个条状和一个点状发光二极管管芯制成,称为七段数码管。根据其结构的不同,可分为共阳极数码管和共阴极数码管两种。 共阳共阴,是针对数码管的公共脚而说的。典型的一位数码管,一般有10个脚,8个段码(7段加1个小数点),剩下两个脚接在一起。各个段码实际上是一个发光二极管,既然是发光二极管,就有正负极。共阳,也就是说公共脚是正极(阳极),所有的段码实际上是负极,当某一个或某几个段码位接低电平,公共脚接高电平时,对应的段码位就能点亮,进而组合成数字或字母。共阴是公共脚是负极(阴极),段码位是阳极,当公共脚接地,段码位接高电平时,对应段码位点亮。一位数码管就是这样,多位的数码管原理类似。

    LED数码管中各段发光二极管的伏安特性和普通二极管类似,只是正向压降较大,正向电阻也较大。在一定范围内,其正向电流与发光亮度成正比。由于常规的数码管起辉电流只有1~2 mA,最大极限电流也只有10~30 mA,所以它的输入端在5 V电源或高于TTL高电平(3.5 V)的电路信号相接时,一定要串加限流电阻,否则会损坏数码管器件。共阴共阳与电路接线密切相关,决定了驱动电路的接法,因此在电路设计前要考虑好数码管的类型,否则就不能实现显示的效果了。共阳极的比较容易驱动,共阴极的比较好编程. 。

LED数码管引脚图:

追问

为什么共阳极的比较容易驱动,共阴极的比较好编程?

正向压降较大是指发光二极管导通的所需电压很低吗?

正向电阻较大是指发光二极管导通时的电阻很大吗?

追答

1、共阳极驱动所需电路简单,容易实现。共阴极因段码与显示码一样,因此编程过种中易于编写,不易搞混。
2、是指导通电压较大,因普通硅二极管正向导通压降是0.7V左右,而发光二极管正向导通压降一般要大于1.5V以上。
3、也是相对而言,与普通二极管比较来说导通电阻较大。

本回答被提问者采纳
第2个回答  2013-09-22
数组不一定是数码管的编码,也许是其它地方用的,如果显示6个字,6个数组也就够了,看看数码管的规格书吧,共阳还是共阴,自已编下看看追问

书上说共阴的

相似回答