解析I/O并行口直接驱动LED显示

时间:2011-09-03

  AT89S51是一个低功耗,高性能CMOS8位单片机,片内含4kBytesISP(In-systemprogrammable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISPFlash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。

  1.     实验任务

  如所示,利用AT89S51单片机的P0端口的P0.0-P0.7连接到一个共阴数码管的a-h的笔段上,数码管的公共端接地。在数码管上循环显示0-9数字,时间间隔0.2秒。

  2.     电路原理图

  .7.1

  3.系统板上硬件连线

  把“单片机系统”区域中的P0.0/AD0-P0.7/AD7端口用8芯排线连接到“四路静态数码显示模块”区域中的任一个数码管的a-h端口上;要求:P0.0/AD0与a相连,P0.1/AD1与b相连,P0.2/AD2与c相连,……,P0.7/AD7与h相连。

  4.程序设计内容

  1.LED数码显示原理

  LED显示屏(LED panel),是一种通过控制半导体发光二极管的显示方式,用来显示文字、图形、图像、动画、行情、视频、录像信号等各种信息的显示屏幕。  SAMSUNG SyncMaster P2370GLED的技术进步是扩大市场需求及应用的推动力。初,LED只是作为微型指示灯,在计算机、音响和录像机等设备中应用,随着大规模集成电路和计算机技术的不断进步,LED显示器正在迅速崛起,近年来逐渐扩展到证券行情股票机、数码相机、PDA以及手机领域。

  七段LED显示器内部由七个条形发光二极管和一个小圆点发光二极管组成,根据各管的极管的接线形式,可分成共阴极型和共阳极型。

  LED数码管的g~a七个发光二极管因加正电压而发亮,因加零电压而不以发亮,不同亮暗的组合就能形成不同的字形,这种组合称之为字形码,下面给出共阴极的字形码见表2

“0”



“8”



“1”



“9”



“2”



“A”



“3”



“b”



“4”



“C”



“5”



“d”



“6”



“E”



“7”



“F”


 

“0”

3FH

“8”

7FH

“1”

06H

“9”

6FH

“2”

5BH

“A”

77H

“3”

4FH

“b”

7CH

“4”

66H

“C”

39H

“5”

6DH

“d”

5EH

“6”

7DH

“E”

79H

“7”

07H

“F”

71H

  2.由于显示的数字0-9的字形码没有规律可循,只能采用查表的方式来完成我们所需的要求了。这样我们按着数字0-9的顺序,把每个数字的笔段代码按顺序排好!建立的表格如下所示:TABLE DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH

  5.程序框图


  6.汇编源程序

  ORG 0

  START:               MOV R1,#00H

  NEXT:                MOV A,R1

  MOV DPTR,#TABLE

  MOVC A,@A+DPTR

  MOV P0,A

  LCALL DELAY

  INC R1

  CJNE R1,#10,NEXT

  LJMP START

  DELAY:              MOV R5,#20

  D2:                      MOV R6,#20

  D1:                      MOV R7,#248

  DJNZ R7,$

  DJNZ R6,D1

  DJNZ R5,D2

  RET

  TABLE:              DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH

  END

  7.C语言源程序

  #include <AT89X51.H>

  unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,

  0x6d,0x7d,0x07,0x7f,0x6f};

  unsigned char dispcount;

  void delay02s(void)

  {

  unsigned char i,j,k;

  for(i=20;i>0;i--)

  for(j=20;j>0;j--)

  for(k=248;k>0;k--);

  }

  void main(void)

  {

  while(1)

  {

  for(dispcount=0;dispcount<10;dispcount++)

  {

  P0=table[dispcount];

  delay02s();

  }

  }

  }

  尽管LED具有显而易见的优势,但真正要能取代或相当部分取代传统液晶的CCFL发光不是一件轻而易举的事。主要有成本、技术成熟度和透光效率等三方面的原因。但是在这种情况下我们要加强我们的技术,让产品能在社会站的住脚步,不能若无其事。


  
上一篇:抛弃传统嵌入式LabVIEW助力工程师进行系统开发
下一篇:关于视频压缩技术的系统考虑

免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

相关技术资料