七段码真值表

可能有人说,现在都进入LCD时代了,这个东西没有用了,其实这个东西还是很有用的,我们总不能总是使用别人写好的源代码吧。就算是自已写源代码,这个真值表最少你也要写一回,以方便以后调用。

 

七段码真值表:

 

数字       共阳       共阴                            对应的数据位

0         0x0C       0X3F                dp   g     f      e      d     c     b     a

1         0XF9      0X06                  7     6     5     4     3     2     1     0

2         0XA4      0X5B

3         0XB0      0X4F                                                   

4         0X99      0X66

5         0X92      0X6D

6         0X82      0X7D                                                                   

7         0XD8     0X27                                                    

8         0X80      0X7F

9         0X90      0X6F

                       

七段码表值表 - ♂苹果 - 眼睛想旅行

 

下边是我自已写的一个七段码显示程序和效果图:

#include <REG52.H>
#include <intrins.h>
#define uchar unsigned char
//
#define data P0
sbit n1 =P2^0;
sbit n2 =P2^1;
sbit n3 =P2^2;
sbit n4 =P2^3;
sbit n5 =P2^4;
sbit n6 =P2^5;
uchar x[6]={0xff,0xff,0xff,0xff,0xff,0xff,};
void delay(uchar n)   //n=1时延时1ms
{

uchar a,b;
    for(b=n;b>0;b--)
        for(a=47;a>0;a--);
 /*
    uchar a,b,c;
    for(c=n;c>0;c--)
        for(b=142;b>0;b--)
            for(a=2;a>0;a--);
 */
}
uchar number_(uchar x) //数码管显示值 x=0~10
{
 uchar code num[11]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xd8,0x80,0x90,0xff};
return num[x];
}
void nu_display(uchar a,uchar n)   // a=0~5,n=0~10
{

switch(a){
case 0:x[0]=n;
case 1:x[1]=n;
case 2:x[2]=n;
case 3:x[3]=n;
case 4:x[4]=n;
default:x[5]=n;
       }


 }

void display7(uchar n)    //显示100MS时间
{
   unsigned char a,b,c;
    for(c=n;c>0;c--)
        for(b=19;b>0;b--)
        for(a=130;a>0;a--){
 
  P0=number_(x[0]);
  n1=0;
  delay(1);
  n1=1;
  P0=number_(x[1]);
  n2=0;
  delay(1);
  n2=1;
  P0=number_(x[2]);
  n3=0;
  delay(1);
  n3=1;
  P0=number_(x[3]);
  n4=0;
  delay(1);
  n4=1;
  P0=number_(x[4]);
  n5=0;
  delay(1);
  n5=1;
  P0=number_(x[5]);
  n6=0;
  delay(1);
  n6=1;   

  }

}

void main()
{  
  for(;;){
 
   nu_display(0,1); 
   nu_display(1,2);
   nu_display(2,3);
   nu_display(3,4);
   nu_display(4,5);
   nu_display(5,6);
 
  display7(1);  //显示500MS 
  nu_display(5,5);
  display7(1);  //显示500MS
     nu_display(5,4);
  display7(1);  //显示500MS

    }
}

 七段码真值表 - ♂苹果 - 眼睛想旅行

 

欢迎大家去我的淘宝店看看:http://fengmm521.taobao.com

 

 

 

为了更好的支持我,如果要转载请注明出处:fengmm521.blog.163.com

欢迎大家去我的个人网站和论坛留下脚印,网站:http://www.k557.com,论坛:http://www.k557.com/bbs

<think>好的,我现在需要帮助用户查找共阳极数码管的段码真值表。首先,用户的问题很明确,他们需要知道共阳极数码管显示0到9时的各个段码值。根据用户提供的引用内容,特别是引用[1]、[2]和[3],我需要整理这些信息。 首先,引用[1]提到共阳极数码管的连接方式,即阳极共同连接到电源,要点亮某段需要给对应的段低电平。这一点很重要,因为段码的真值表会根据共阳极的特性来确定每个数字需要哪些段被点亮。例如,显示数字0时,需要a、b、c、d、e、f段亮,而g段不亮,所以对应的引脚应该是低电平。 然后,引用[2]进一步解释了共阳极和共阴极的区别,并提到FPGA控制数码管的方法。这帮助我确认了共阳极数码管的控制逻辑,即通过给对应段低电平来导通二极管。 引用[3]提供了FJ3461BH型号的数码管真值表,其中给出了不带小数点和带小数点的段码值。例如,数字0的段码是0X90,转换成二进制是1001 0000,对应段a到dp的位置。需要确认每个位的对应关系是否正确,通常段码的排列顺序是a、b、c、d、e、f、g、dp,但不同厂家可能有不同的顺序,因此需要参考具体型号的数据手册。 另外,引用[4]虽然提到了七段码真值表,但内容似乎与代码相关,可能没有直接帮助,但需要注意七段码和八段码(带小数点)的区别。用户的问题是关于共阳极的,所以需要区分这两种情况。 接下来,我需要整理共阳极数码管的标准段码真值表。通常,每个数字对应的段码如下: - 0:a, b, c, d, e, f亮,g灭 → 二进制为11000000(假设a是最高位),对应的十六进制为0xC0。 - 1:b, c亮 → 二进制11111001 → 0xF9。 - 2:a, b, g, e, d亮 → 10100100 → 0xA4。 - 以此类推。 但根据引用[3]中的例子,数字0的段码是0X90,可能意味着段码的排列顺序不同,比如a对应的是某个不同的位。这里可能存在不同编码方式的问题,比如段码的位顺序可能不同,例如有的设计是从高位到低位依次是a、b、c、d、e、f、g、dp,而有的可能相反。例如,如果a对应的是第7位(从0开始),那么0X90的二进制是1001 0000,可能代表a、d、e段被点亮?这需要进一步确认。 不过,用户提到的引用[3]中的段码表是特定的型号,可能和标准的不同。因此,可能需要指出标准真值表和特定型号之间的差异,并建议用户查阅具体型号的数据手册。 另外,用户可能需要了解如何根据共阳极的特性推导出段码值。例如,每个段对应的引脚是否需要置0(低电平)来点亮,那么对于每个数字,确定哪些段需要点亮,然后将对应的位设为0,其余设为1,再转换成十六进制。 例如,假设段码的排列顺序是a到g,加上小数点dp,共8位,每一位对应一个段。对于共阳极,点亮段需要该位为0。例如,数字0需要a、b、c、d、e、f为0,g和dp为1。所以二进制是11000000,即0xC0。但引用[3]中给出的是0X90,这说明可能存在不同的位排列。 这可能是因为不同的数码管产品有不同的引脚定义,导致段码的顺序不同。因此,用户需要根据具体使用的数码管型号来确定真值表。如果用户有具体的型号,如FJ3461BH,可以参考引用[3]中的段码表,但如果没有的话,可能需要使用标准表,并提醒用户可能存在差异。 总结步骤: 1. 根据共阳极特性,确定每个数字需要点亮的段。 2. 将对应的段设置为低电平(0),其他为高电平(1)。 3. 按照数码管的段顺序(如a到g,dp)排列二进制位,转换为十六进制。 4. 提供标准真值表,并指出可能因型号而异,建议查阅数据手册。 同时,用户可能需要示例代码或应用方法,如引用[3]中的代码示例,展示如何在实际编程中使用段码值。此外,提醒用户注意共阳极和共阴极的区别,避免混淆。 最后,生成相关问题,帮助用户深入理解,例如如何根据真值表编写驱动代码,或者如何处理多位数码管的动态显示等。</think>### 共阳极数码管段码真值表说明 共阳极数码管通过将阳极共同连接到电源,需要点亮的段需置低电平(0)。以下是标准八段数码管(含小数点)显示数字0-9的**通用段码真值表**(按段顺序 `a,b,c,d,e,f,g,dp`,高位到低位排列): | 数字 | 段码(二进制) | 十六进制值 | 点亮的段 | |------|----------------|------------|----------------| | 0 | `11000000` | `0xC0` | a,b,c,d,e,f | | 1 | `11111001` | `0xF9` | b,c | | 2 | `10100100` | `0xA4` | a,b,g,e,d | | 3 | `10110000` | `0xB0` | a,b,g,c,d | | 4 | `10011001` | `0x99` | f,g,b,c | | 5 | `10010010` | `0x92` | a,f,g,c,d | | 6 | `10000010` | `0x82` | a,f,g,c,d,e | | 7 | `11111000` | `0xF8` | a,b,c | | 8 | `10000000` | `0x80` | a,b,c,d,e,f,g | | 9 | `10010000` | `0x90` | a,b,c,d,f,g | ### 注意事项: 1. **段码顺序可能因型号不同**(如FJ3461BH的段码顺序可能与标准不同),需以具体数据手册为准[^3]。 2. **小数点控制**:若需显示小数点(dp),需将dp位设为低电平。例如,显示“0.”时,段码为 `0xC0 & 0x7F = 0x40`(即二进制 `01000000`)。 3. **编程实现**:代码中可通过预定义数组存储段码值(如引用[3]中的`LedChar1`数组)。 --- ### 示例代码(C语言) ```c // 共阳极段码表(0~9,不带小数点) unsigned char code seg_codes[] = {0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90}; ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值