如何制作LED流水灯( 二 )


YSJSEQU 30H延时计数器
LEDEQU 31HLED控制缓冲器
主程序==========================
START:MOV LED,#0FEH 初始化数据
MOV YSJS,#0
MOV TMOD,#10H 定时器1工作于方式1,16位定时器
MOV TL1,#0B0H 设置定时初值
MOV TH1,#3CH 定时时间=50mS
SETB ET1 使能定时器1中断
SETB TR1 启动定时器1
SETB EA开总中断
MOV P1,LED 初始化流水灯
LOOP:JMP LOOP 循环等待中断
T1INT:PUSH PSW 定时器1中断程序
PUSH ACC 保护现场
MOV TH1,#3CH 定时时间=50mS
MOV TL1,#0B0H
INC YSJS
PUSH ACC 保护ACC
MOV A,YSJI
CJNE A,#2,QT1 50mS*2=100mS
MOV P1,LED
MOV A,LED
RL A累加器A的值循环左移1位
MOV LED,A
MOV YSJS,#0
QT1:POP ACC恢复现场
POP PSW
RETI返回主程序
END汇编程序结束
扩展资料:
实现流水灯的三个方法:
第一种 , 总线方法实现流水灯 。这是一种比较笨但又最易理解的方法 , 采用顺序程序结构 , 用位指令控制P1口的每一个位输出高低电平 , 加上延时函数 , 即可控制每个LED灯的亮灭 。
第二种 , 移位方法实现流水灯采用循环程序结构编程 。首先在程序开始给P1.0口送一个低电平 , 其它位为高 。然后延时一段时间再让低电平往高位移动 , 这样就实现“流水”的效果了 。
第三种 , 库函数实现流水灯 。利用左移函数进行 。
怎么制作16个led的流水灯?可以接的 如果你是在原先的口子上面串上去的话 那就相当与两个LED一起跑的
如果你是要16个LED单独跑的话 可以继续接在其他口子上面 编程的方法和前面的一样
只是把I/O口改一下就好了
如何制作LED流水灯 , 随音乐变化用LM339集成运放可以实现 , 把正相(5、7、9、11)脚分别接在不同的电压端(由多个电阻串联分压组成) , 把反相(4、6、8、10)脚接在一起然后接到喇叭端检测声音大小 , 把四个发光二极管负极分别接在输出端(1、2、13、14)脚 , 发光二极管正极分别接电阻 , 然后接到电压正极 , LM339的3脚接电源正极12脚接电源负极