Chinaunix首页 | 论坛 | 博客
  • 博客访问: 537135
  • 博文数量: 252
  • 博客积分: 6057
  • 博客等级: 准将
  • 技术积分: 1635
  • 用 户 组: 普通用户
  • 注册时间: 2009-12-21 10:17
文章分类

全部博文(252)

文章存档

2013年(1)

2012年(1)

2011年(32)

2010年(212)

2009年(6)

分类:

2011-05-12 09:54:22

本站已提供的实验板上的显示为例介绍LED数码管的原理与驱动,紧供网友参考。

  本站是用的共阳极的LED数码管,共阳就是7段的显示字码共用一个电源的正。原理示意图:
      
  从上图可以看出,要是数码管显示数字,有两个条件:1、是要在VT端(3/8脚)加正电源;2、要使(a,b,c,d,e,f,g,dp)端接低电平或“0”电平。这样才能显示的。

  一般刚接触数码显示的网友搞不清字段和编码的关系,其实要看硬件的电路的组成的,本站的实验板上的数码显示是用P0口驱动的,原理图可以参阅实验板的网页,其计算的方法如下,供网友参考:

 例:如要显示“0”,则要  a,b,c,d,e,f六个字段亮就显示“0”了,而g和dp字段不亮;这样只要向P0口送出相应的代码即可,编码方法如下表:

dp g f e d c b a 显示的字符 编码
P0.7 P0.6 P0.5 P0.4 P0.3 P0.2 P0.1 P0.0
1 1 0 0 0 0 0 0 0 C0H
1 1 1 1 0 0 1 1 1 F3H
1 0 1 0 0 1 0 0 2 A4H
1 0 1 1 0 0 0 0 3 B0H
1 0 0 1 1 0 0 1 4 99H
1 0 0 1 0 0 1 0 5 92H
1 0 0 0 0 0 1 0 6 82H
1 1 1 1 1 0 0 0 7 F8H
1 0 0 0 0 0 0 0 8 80H
1 0 0 1 0 0 0 0 9 90H
1 0 0 0 1 0 0 0 A 88H
1 0 0 0 1 1 1 0 F 8EH

  程序使用时,只需将显示数字所对应的编码送P0口,然后打开相应的数码管显示位的电源控制即可显示相应的字符;实验板载程序如下供参考:

   ORG 0000H
  ajmp start
   org0030h
start: mov sp,#60h;

   mov P0,#0A4H;//将数字2的编码送P0口
      CLR P2.0;//打开第一位数码管的显示电源
      ACALL D1MS;//调用延时1MS子程序
      SETB P2.0;//显示1MS后关第一位数码管显示
      MOV P0,#0B0H;//数字3的编码
      CLR P2.1;//打开第二位数码管的显示电源
      ACALL D1MS;//调用延时1MS子程序
      SETB P2.1;//显示1MS后关第二位数码管显示
     
      MOV P0,#99H;//数字4的编码
      CLR P2.2;//打开第三位数码管的显示电源
      ACALL D1MS;//调用延时1MS子程序
      SETB P2.2;//显示1MS后关第三位数码管显示
      MOV P0,#92H;//数字5的编码
      CLR P2.3;//打开第四位数码管的显示电源
      ACALL D1MS;//调用延时1MS子程序
      SETB P2.3;//显示1MS后关第四位数码管显示
      AJMP start;//返回从第一位显示循环

 //1MS延时子程序1MS延时(按12MHZ算)
      
D1MS: MOV R7,#80
DJNZ R7,$
RET

   END ;

  以上就是本站提供的数码管的动态显示的一种方法,仅供网友参考,可以将上面的程序编译后烧录进89C51,放本站的实验板上看效果将显示2345.

文章出处:单片机与电子制作网











阅读(2201) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chulia200020012011-05-12 10:01:03

参考:数码管显示原理 http://blog.sina.com.cn/s/blog_5fcaaf8f0100fmo0.html