返回列表 发帖

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. }
复制代码

很好啊。





TOP

返回列表

最新关注 关闭


关于论坛注册,最新修改,请网友们注意

由于最近大量垃圾信息出现在我们的论坛,为了营造一个良好的氛围,目前论坛只开发邀请注册,你可以点击以下链接自动邀请注册(如果有人使用了点击下一个试一试) ...


查看
珩源工控论坛热诚欢迎您联系我们进行合作!

Powered by Discuz! 7.2© 2001-2009 Comsenz Inc.

珩源工控论坛 ( 桂ICP备19004328号) |论坛统计|WAP| 客服中心-www.hymcu.com
  

GMT+8, 2024-4-20 16:42, Processed in 1.037959 second(s), 6 queries, Gzip enabled.