时间: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
本站由北京市万商天勤律师事务所王兴未律师提供法律服务