5136|17

60

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

问个数码管的问题....各位帮帮忙.. [复制链接]

我把板子拆开来用万用表测了一下,把数码管的脚都找出来了,是共阳极的,可是在写程序进去时,显示的字却不是跟预测的一样...这是数码管的结构:

P0.3  P0.1  P0.5  P0.2  P0.0
  g    f     dp    a     b

P0.4  P0.6  P0.5  P0.7  .公共端
  d    e     dp    c
看了一下字型的控制代码应该是这样的
     p0.7  p0.6  p0.5   p0.4  p0.3  p0.2  p0.1  p0.0   HEX代码
字     C    E   小数点   D     G     A      F    B
0      0    0     1      0     1     0      0    0     28H  
1      0    1     1      1     1     1      1    0     7EH  
2      1    0     1      0     0     0      1    0     A2H
3      0    1     1      0     0     0      1    0     62H
4      0    1     1      1     0     1      0    0     74H
5      0    1     1      0     0     0      0    1     61H
6      0    0     1      0     0     0      0    1     21H
7      0    1     1      1     1     0      1    0     7AH
8      0    0     1      0     0     0      0    0     20H
9      0    1     1      0     0     0      0    0     60H

可有的共阳极的数码管字型却是这样
字     dp   g     f      e     d     c      b    a   16进制
0      1    1     0      0     0     0      0    0     C0H  
1      1    1     1      1     1     0      0    1     F9H  
2      1    0     1      0     0     1      0    0     A4H
3      1    0     1      1     0     0      0    0     B0H
4      1    0     0      1     1     0      0    1     99H
5      1    0     0      1     0     0      1    0     92H
6      1    0     0      0     0     0      1    0     82H
7      1    1     1      1     1     0      0    0     F8H
8      1    0     0      0     0     0      0    0     80H
9      1    0     0      1     0     0      0    0     90H
这个从 a到dp的顺序是 从P0.0到P0.7吗?
a,b,c,d,e,f,g,dp到底是怎么排列的呢?是不是要跟 P0.0..P0.7 的排列顺序一样的啊?快要晕了

最新回复

学习!!!  详情 回复 发表于 2010-5-2 22:51
点赞 关注

回复
举报

77

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
怎么都没人哪?
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
a,b,c,d,e,f,g,dp到底是怎么排列的呢?是不是要跟 P0.0..P0.7 的排列顺序一样的啊?

用表可以测出来,这个只能你自己来测,然后对应生成一系列显示码,因为不同的人画的板子不一样的,这个又没有标准.所以说不好听的这个就是看心情...

其它的就OK了.
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

4
 
哦,现在已经测出来了,可不懂如何用程序单独控制一个数码管,P0=0x20,P2=0; 6个都显示为8 要怎样控制各个数码管让它显示不同的字呀?
 
 
 

回复

60

帖子

0

TA的资源

一粒金砂(初级)

5
 
我记得有这样写程序的.送不同的字进去后再设定相应的P2的值,可老是显示第一次写进去的字
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

6
 
小说时,有一招叫障眼法...

这个经常屡试不爽...

...................................
基本方式是:一次只点亮一位,显示该位的数码.保持一段时间.

然后,切换到下一位...

咱位眼睛能分辨出1/24秒频率的闪动.OK

加快切换速度,感觉怎么样?"同时"显示了,真郁闷...
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

7
 
嗯..回去再试试,谢谢大哥了,
 
 
 

回复

49

帖子

0

TA的资源

一粒金砂(初级)

8
 

void main()
{
    P2=0;                              
    TMOD=0x01;                              
    digbit=1;
    time0_tmp=65535-time0*fosc/12;
    TH0=(time0_tmp/256);                    
    TL0=(time0_tmp%256);

    TR0=1;                                 
    ET0=1;                                 
    EA=1;
        while(1)
        {
    }
}

void time0_int(void) interrupt 1
{
   TH0=(time0_tmp/256);
   TL0=(time0_tmp%256);
   display();
}

void display(void)
{
   uint j;
   switch(digbit)
   {
    case 1: j=8; break;
        case 2: j=0; break;
        case 3: j=5; break;
        case 4: j=1; break;
        default:     break;
   }   
   P2=0xE1;
   P0=led[j];
   //P2=(P2<<1)|0x01;
   digbit++;
   /*if(j=8)
     P2=0xFC;
   else if(j=0)
     P2=0xFB;
   else if(j=5)
     P2=0xF3;
   else
     P2=0xE7;*/
}
我要让四个数码管分别显示 8051 可这样写.每个数码管都会显示 8 0 5 1  而且都是一闪而过的  六个数码管分别这样连到P2脚
         1     2    3    4    5    6
   2.0  2.1   2.2  2.3  2.4  2.5  2.6  2.7  不知道要怎么控制P2脚啊
 
 
 

回复

82

帖子

0

TA的资源

一粒金砂(初级)

9
 
是共阳极的

这个应该是给0就亮的哈,呵呵
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

10
 
郁闷,没考虑电路,瞎说了一贴...
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

11
 
void display(void)
{
   uint j;
   switch(digbit)//这个哪来的?
   {
    case 1: j=8; break;
        case 2: j=0; break;
        case 3: j=5; break;//这个编码不怎么对吧?这有两位为1了其它的应该还有2/4
        case 4: j=1; break;
        default:     break;
   }//这里有了先位码的,是不是应该还有一个先编码的呢?
   P2=0xE1;
   P0=led[j];
   //P2=(P2<<1)|0x01;
   digbit++;

}//另外,时间是不是太快了?别对自己的眼睛这么自信
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

12
 
。。。
 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

13
 
..
 
 
 

回复

85

帖子

0

TA的资源

一粒金砂(初级)

14
 
帮顶
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

15
 
LZ其实可以把这个显示封装成一个更加通用的功能

给你个思路:
咱们的八段数码管是不是刚刚好八个编码?嘿嘿,给它准备一下6个unsigned char 容量的数组怎么样?
只要我们从头开始扫数码管,那它的位码是不是也有规律的?

那我们就可以,抓出这个规律,定时的扫那个值,然后对应的位对对应的数组值,这样那就可以在我想显示的时候,把编码放到数组里就可以显示了?

那这个数组学术上把它叫作:显示缓冲区.

其它的LCD什么的基本上都是这种个思路,相通了吧???只是表现形态不一样
 
 
 

回复

83

帖子

0

TA的资源

一粒金砂(初级)

16
 
study
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

17
 
忘了说了,定义了一个字型的数组确-_- 每个字都可以正常显示的..
void display(void)
{
   uint j;
   switch(digbit)//这个哪来的?主函数里定义的啊,
   {
    case 1: j=8; break;
case 2: j=0; break;
case 3: j=5; break;//这个编码不怎么对吧?这有两位为1了其它的应该还有2/4
case 4: j=1; break;
default:     break;
   }//这里有了先位码的,是不是应该还有一个先编码的呢?//不懂哦.
   P2=0xE1;
   P0=led[j];
   //P2=(P2<<1)|0x01;
   digbit++;

}//

那个,字型编码没错的啊,我每个字都测试过了.
可能是字位没设对...昨晚调了一下.可以显示 8 0 5 1(这个1有问题,有时会显示为J一样的)
我还是继续研究一下字位控制的P2脚到底是怎么接的哪....
 
 
 

回复

83

帖子

0

TA的资源

一粒金砂(初级)

18
 
学习!!!
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表