8*8*8立方灯如何写程序只使一盏灯亮。我做了一个888立方灯,p0是控制灯亮灭,p1是控制层数,

8*8*8立方灯如何写程序只使一盏灯亮。我做了一个888立方灯,p0是控制灯亮灭,p1是控制层数,,第1张

用一个寄存器做变量就可以。

假如按键是一个开个,接在P1.0,八个灯在P0,低电平灯亮

程序是这样的

MOV 30H ,#00

LOP :

SETB P1.0

JNB P1.0, PRESS

AJMP LOP

PRESS:

INC 30H

MOV A,30H

CJNE A,#9,L_NEXT

MOV 30H,#1

L_NEXT:

JNB P1.0,$

MOV A,30H

CJNE A,#1 ,LED1_ON

CJNE A,#2, LED2_ON

CJNE A,#3, LED3_ON

CJNE A,#4, LED4_ON

CJNE A,#5, LED5_ON

CJNE A,#6, LED6_ON

CJNE A,#7, LED7_ON

CJNE A,#8, LED8_ON

LJMP LOP

LED1_ON: MOV P0,#0FEH //亮一个灯

LJMP LOP

LED2_ON: MOV P0,#0FDH //亮一个灯

LJMP LOP

LED3_ON: MOV P0,#0F8H //亮一个灯

LJMP LOP

LED4_ON: MOV P0,#0F0H //亮一个灯

LJMP LOP

LED5_ON: MOV P0,#0E0H //亮一个灯

LJMP LOP

LED6_ON: MOV P0,#0D0H //亮一个灯

LJMP LOP

LED7_ON: MOV P0,#080H //亮一个灯

LJMP LOP

LED8_ON: MOV P0,#00H //亮一个灯

LJMP LOP

8*8*8那就用8+8+8=24个IO口控制了,通过循环扫描的方式显示。

分成8个平面,每个平面8行8列,8行用8个IO口 如P0,8列用8个IO口 ;

8个平面的行都用P0控制,P1口通过8个锁存器构成8组分别控制8个平面的列;

P2口则用来控制8个锁存器,控制其是否高阻。

这样每次显示一个LED,按照30HZ的频率,每秒需要扫描8*8*8*30=15360次,也就是65us一次。

若P0口的灌电流达到LED的要求,则直接连接LED,否则需要加驱动了,一般用三极管驱动,或者驱动芯片也行。

是不是时间不够?二极管质量不过关时有可能发生时间不够时会看不到光。

建议单独点亮这个二极管测试,一定是脉冲点亮时间要和正常显示的时候一样,如果可以亮就看电源供电电流,如果不能亮但是常亮时能亮的话就换个管子吧


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11025124.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-13
下一篇 2023-05-13

发表评论

登录后才能评论

评论列表(0条)

保存