Board logo

标题: 8*8点阵LED显示原理的简要介绍 [打印本页]

作者: leslen    时间: 2010-10-17 15:52     标题: 8*8点阵LED显示原理的简要介绍

1. 实验任务

在8X8 LED点阵上显示柱形,让其先从左到右平滑移动三次,其次从右到左平滑移动三次,再次从上到下平滑移动三次,最后从下到上平滑移动三次,如此循环下去。

2. 电路原理图

3. 硬件电路连线

(1). 把“单片机系统”区域中的P1端口用8芯排芯连接到“点阵模块”区域中的“DR1-DR8”端口上;

(2). 把“单片机系统”区域中的P3端口用8芯排芯连接到“点阵模块”区域中的“DC1-DC8”端口上;

4. 程序设计内容

(1). 8X8 点阵LED工作原理说明 :8X8点阵共需要64个发光二极管组成,且每个发光二极管是放置在行线和列线的交叉点上,当对应的某一列置1电平,某一行置0电平,则相应的二极管就亮;因此要实现一根柱形的亮法,如图49所示,对应的一列为一根竖柱,或者对应的一行为一根横柱,因此实现柱的亮的方法如下所述:


一根竖柱:对应的列置1,而行则采用扫描的方法来实现。
一根横柱:对应的行置0,而列则采用扫描的方法来实现。
5.汇编源程序
  1. ORG 00H
  2. START: NOP
  3. MOV R3,#3
  4. LOP2: MOV R4,#8
  5. MOV R2,#0
  6. LOP1: MOV P1,#0FFH
  7. MOV DPTR,#TABA
  8. MOV A,R2
  9. MOVC A,@A+DPTR
  10. MOV P3,A
  11. INC R2
  12. LCALL DELAY
  13. DJNZ R4,LOP1
  14. DJNZ R3,LOP2

  15. MOV R3,#3
  16. LOP4: MOV R4,#8
  17. MOV R2,#7
  18. LOP3: MOV P1,#0FFH
  19. MOV DPTR,#TABA
  20. MOV A,R2
  21. MOVC A,@A+DPTR
  22. MOV P3,A
  23. DEC R2
  24. LCALL DELAY
  25. DJNZ R4,LOP3
  26. DJNZ R3,LOP4

  27. MOV R3,#3
  28. LOP6: MOV R4,#8
  29. MOV R2,#0
  30. LOP5: MOV P3,#00H
  31. MOV DPTR,#TABB
  32. MOV A,R2
  33. MOVC A,@A+DPTR
  34. MOV P1,A
  35. INC R2
  36. LCALL DELAY
  37. DJNZ R4,LOP5
  38. DJNZ R3,LOP6

  39. MOV R3,#3
  40. LOP8: MOV R4,#8
  41. MOV R2,#7
  42. LOP7: MOV P3,#00H
  43. MOV DPTR,#TABB
  44. MOV A,R2
  45. MOVC A,@A+DPTR
  46. MOV P1,A
  47. DEC R2
  48. LCALL DELAY
  49. DJNZ R4,LOP7
  50. DJNZ R3,LOP8
  51. LJMP START

  52. DELAY: MOV R5,#10
  53. D2: MOV R6,#20
  54. D1: MOV R7,#248
  55. DJNZ R7,$
  56. DJNZ R6,D1
  57. DJNZ R5,D2
  58. RET

  59. TABA: DB 0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,07FH
  60. TABB: DB 01H,02H,04H,08H,10H,20H,40H,80H
  61. END


  62. 6. C语言源程序
  63. #include <AT89X52.H>

  64. unsigned char code taba[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
  65. unsigned char code tabb[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};

  66. void delay(void)
  67. {
  68. unsigned char i,j;

  69. for(i=10;i>0;i--)
  70. for(j=248;j>0;j--);
  71. }

  72. void delay1(void)
  73. {
  74. unsigned char i,j,k;

  75. for(k=10;k>0;k--)
  76. for(i=20;i>0;i--)
  77. for(j=248;j>0;j--);

  78. }

  79. void main(void)
  80. {
  81. unsigned char i,j;

  82. while(1)
  83. {
  84. for(j=0;j<3;j++)  //from left to right 3 time
  85. {
  86. for(i=0;i<8;i++)
  87. {
  88. P3=taba[i];
  89. P1=0xff;
  90. delay1();
  91. }
  92. }

  93. for(j=0;j<3;j++)  //from right to left 3 time
  94. {
  95. for(i=0;i<8;i++)
  96. {
  97. P3=taba[7-i];
  98. P1=0xff;
  99. delay1();
  100. }
  101. }

  102. for(j=0;j<3;j++)  //from top to bottom 3 time
  103. {
  104. for(i=0;i<8;i++)
  105. {
  106. P3=0x00;
  107. P1=tabb[7-i];
  108. delay1();
  109. }
  110. }

  111. for(j=0;j<3;j++)  //from bottom to top 3 time
  112. {
  113. for(i=0;i<8;i++)
  114. {
  115. P3=0x00;
  116. P1=tabb[i];
  117. delay1();
  118. }
  119. }
  120. }
  121. }
复制代码


图片附件: 1.jpg (2010-10-17 15:51, 43.55 KB) / 下载次数 269
http://bbs.hymcu.com/attachment.php?aid=129&k=f93264d7190abdd70411188660c24b20&t=1732439066&sid=LZlXJE


作者: 模块化    时间: 2011-10-10 13:29

很好啊。










欢迎光临 珩源工控论坛 (http://bbs.hymcu.com/) Powered by Discuz! 7.2