您好,欢迎来到独旅网。
搜索
您的当前位置:首页51单片机88点阵LED显示原理及程序

51单片机88点阵LED显示原理及程序

来源:独旅网
51单片机8*8点阵LED显示原理及程序

时间:2007-12-20 来源: 作者: 点击:3206 字体大小:【大中小】

在8X8点阵LED上显示柱形,让其先从左到右平滑移动三次,其次从右到左平滑移动三次,再次从上到下平滑移动三次,最后从下到上平滑移动三次,如此循环下去。 1. 程序设计内容 8X8点阵LED工作原理说明 :8X8点阵共需要个发光二极管组成,且每个发光二极管是放置在行线和列线的交叉点上,当对应的某一列置1电平,某一行置0电平,则相应的二极管就亮;因此要实现一根柱形的亮法,如图49所示,对应的一列为一根竖柱,或者对应的一行为一根横柱,因此实现柱的亮的方法如下所述:

• •

一根竖柱:对应的列置1,而行则采用扫描的方法来实现。 一根横柱:对应的行置0,而列则采用扫描的方法来实现。

2. 硬件电路 3.汇编源程序 ORG 00H START: NOP MOV R3,#3 LOP2: MOV R4,#8 MOV R2,#0

LOP1: MOV P1,#0FFH MOV DPTR,#TABA MOV A,R2

MOVC A,@A+DPTR MOV P3,A INC R2 LCALL DELAY DJNZ R4,LOP1 DJNZ R3,LOP2 MOV R3,#3 LOP4: MOV R4,#8 MOV R2,#7

LOP3: MOV P1,#0FFH MOV DPTR,#TABA MOV A,R2

MOVC A,@A+DPTR MOV P3,A DEC R2 LCALL DELAY DJNZ R4,LOP3 DJNZ R3,LOP4 MOV R3,#3 LOP6: MOV R4,#8 MOV R2,#0

LOP5: MOV P3,#00H MOV DPTR,#TABB MOV A,R2

MOVC A,@A+DPTR MOV P1,A INC R2 LCALL DELAY DJNZ R4,LOP5 DJNZ R3,LOP6 MOV R3,#3 LOP8: MOV R4,#8 MOV R2,#7

LOP7: MOV P3,#00H MOV DPTR,#TABB MOV A,R2

MOVC A,@A+DPTR MOV P1,A DEC R2 LCALL DELAY DJNZ R4,LOP7 DJNZ R3,LOP8 LJMP START

DELAY: MOV R5,#10 D2: MOV R6,#20 D1: MOV R7,#248

DJNZ R7,$ DJNZ R6,D1 DJNZ R5,D2 RET

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

4.C51语言源程序 #include

unsigned char code taba[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}。 unsigned char code tabb[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}。 void delay(void> {

unsigned char i,j。 for(i=10。i>0。i--> for(j=248。j>0。j-->。 }

void delay1(void> {

unsigned char i,j,k。 for(k=10。k>0。k--> for(i=20。i>0。i--> for(j=248。j>0。j-->。 }

void main(void> {

unsigned char i,j。 while(1> {

for(j=0。j<3。j++> //from left to right 3 time {

for(i=0。i<8。i++>

{

P3=taba[i]。 P1=0xff。 delay1(>。 } }

for(j=0。j<3。j++> //from right to left 3 time {

for(i=0。i<8。i++> {

P3=taba[7-i]。 P1=0xff。 delay1(>。 } }

for(j=0。j<3。j++> //from top to bottom 3 time {

for(i=0。i<8。i++> {

P3=0x00。 P1=tabb[7-i]。 delay1(>。 } }

for(j=0。j<3。j++> //from bottom to top 3 time {

for(i=0。i<8。i++> {

P3=0x00。 P1=tabb[i]。 delay1(>。 } } } } 积木式单片机教程

综合练习--8*8LED阵列动态显示<二>

文 / 刘永辉

练习科目:综合练习--8*8LED阵列动态显示<二> 练习目的:熟悉LED阵列原理。 关键字:LED阵列。

功能应用:按下图所示,本练习是让LED阵列动态显示“8051”,而其移动方向是由上而下移动。

程序设计:流程图

程序设计:汇编程序

1. 。由P1输出

2. 。利用查表法,以产生1-2相驱动信号 3. 。速度为1/(0.05xTIMES>步/秒

4. TIMES EQU 10 。重复次数 5. OUT REG P1 。输出口

6. 。================================================= 7. ORG 0

8. START: MOV DPTR,#TABLE 。指向表格位置 9. CALL POSITION 。调用定位子程序 10. MOV R4,#8 。八个驱动信号 11. MOV R3,#0 。信号初始位置 12. LOOP: MOV A,R3 。

13. MOVC A,@A+DPTR 。取出驱动信号 14. MOV OUT,A 。输出

15. MOV R5,#TIMES 。指定重复次数 16. CALL DELAY 。调用延迟子程序 17. INC R3 。指向下个位置

18. DINZ R4,LOOP 。是否已输出八个驱动信号 19. JMP START 。跳至START形成一个回路 20. 。=============延迟子程序==R5x0.05秒================= 21. DELAY: MOV R7,#100 22. D1: MOV R6,#250

23. DJNZ R6,5 24. DJNZ R7,D1 25. DJNZ R5,DELAY 26. RET

27. 。=============定位子程序============================= 28. POSITION: MOV R4,#8 。八个驱动信号 29. MOV R3,#0 。信号初始位置 30. P_1: MOV A,R3 。

31. MOVC A,@A+DPTR 。取出驱动信号 32. MOV OUT,A 。输出

33. MOV R5,#TIMES 。指定重复次数 34. CALL DELAY 。调用延迟子程序 35. INC R3 。指向下个位置

36. DINZ R4,P_1 。是否已输出八个驱动信号 37. RET

38. 。==================================================== 39. TABLE: DB 1,3,2,6 40. DB 4,12,8,9

41. 。==================================================== 42. END

******************************************************

***********积木式单片机教程 综合练习--8*8LED阵列动态显示<一>

文 / 刘永辉

练习科目:综合练习--8*8LED阵列动态显示<一> 练习目的:熟悉LED阵列原理。 关键字:LED阵列。

功能应用:按下图所示,本练习是让LED阵列动态显示“8051”,每0.2秒左移一步。

程序设计:流程图

程序设计:汇编程序

1. 。由P1输出

2. 。利用查表法,以产生1-2相驱动信号 3. 。速度为1/(0.05xTIMES>步/秒

4. TIMES EQU 10 。重复次数 5. OUT REG P1 。输出口

6. 。================================================= 7. ORG 0

8. START: MOV DPTR,#TABLE 。指向表格位置 9. CALL POSITION 。调用定位子程序 10. MOV R4,#8 。八个驱动信号 11. MOV R3,#0 。信号初始位置 12. LOOP: MOV A,R3 。

13. MOVC A,@A+DPTR 。取出驱动信号 14. MOV OUT,A 。输出

15. MOV R5,#TIMES 。指定重复次数 16. CALL DELAY 。调用延迟子程序 17. INC R3 。指向下个位置

18. DINZ R4,LOOP 。是否已输出八个驱动信号 19. JMP START 。跳至START形成一个回路 20. 。=============延迟子程序==R5x0.05秒================= 21. DELAY: MOV R7,#100 22. D1: MOV R6,#250 23. DJNZ R6,5 24. DJNZ R7,D1 25. DJNZ R5,DELAY 26. RET

27. 。=============定位子程序============================= 28. POSITION: MOV R4,#8 。八个驱动信号 29. MOV R3,#0 。信号初始位置 30. P_1: MOV A,R3 。

31. MOVC A,@A+DPTR 。取出驱动信号 32. MOV OUT,A 。输出

33. MOV R5,#TIMES 。指定重复次数 34. CALL DELAY 。调用延迟子程序 35. INC R3 。指向下个位置

36. DINZ R4,P_1 。是否已输出八个驱动信号 37. RET

38. 。==================================================== 39. TABLE: DB 1,3,2,6 40. DB 4,12,8,9

41. 。==================================================== 42. END

积木式单片机教程

综合练习--8*8LED阵列动态显示<二>

文 / 刘永辉

练习科目:综合练习--8*8LED阵列动态显示<二> 练习目的:熟悉LED阵列原理。 关键字:LED阵列。

功能应用:按下图所示,本练习是让LED阵列动态显示“8051”,而其移动方向是由上而下移动。

程序设计:流程图

程序设计:汇编程序

1. 。由P1输出

2. 。利用查表法,以产生1-2相驱动信号

3. 。速度为1/(0.05xTIMES>步/秒 4. TIMES EQU 10 。重复次数 5. OUT REG P1 。输出口

6. 。=================================================

7. ORG 0

8. START: MOV DPTR,#TABLE 。指向表格位置 9. CALL POSITION 。调用定位子程序 10. MOV R4,#8 。八个驱动信号 11. MOV R3,#0 。信号初始位置

12. LOOP: MOV A,R3 。

13. MOVC A,@A+DPTR 。取出驱动信号

14. MOV OUT,A 。输出 15. MOV R5,#TIMES 。指定重复次数 16. CALL DELAY 。调用延迟子程序 17. INC R3 。指向下个位置

18. DINZ R4,LOOP 。是否已输出八个驱动信号 19. JMP START 。跳至START形成一个回路 20. 。=============延迟子程序==R5x0.05秒=================

21. DELAY: MOV R7,#100 22. D1: MOV R6,#250 23. DJNZ R6,5 24. DJNZ R7,D1 25. DJNZ R5,DELAY

26. RET

27. 。=============定位子程序=============================

28. POSITION: MOV R4,#8 。八个驱动信号 29. MOV R3,#0 。信号初始位置

30. P_1: MOV A,R3 。

31. MOVC A,@A+DPTR 。取出驱动信号

32. MOV OUT,A 。输出 33. MOV R5,#TIMES 。指定重复次数 34. CALL DELAY 。调用延迟子程序 35. INC R3 。指向下个位置

36. DINZ R4,P_1 。是否已输出八个驱动信号

37. RET

38. 。==================================================== 39. TABLE: DB 1,3,2,6 40. DB 4,12,8,9

41. 。==================================================== 42. END

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- dcrkj.com 版权所有 赣ICP备2024042791号-2

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务