赞
踩
用单片机控制8个发光二极管依次发光,产生跑马灯的效果。
3种效果循环,要求通过按钮切换效果。
这是一个网友在:http://zhidao.baidu.com/question/133803194.html 提出的问题。
原程序比较长,且有些错误,就不列出了。
原来的电路图,可见:http://hi.baidu.com/%D7%F6%B6%F8%C2%DB%B5%C0/album/item/2f609f80c69180e6bd3e1edf.html
做而论道对程序做了修改,用PROTEUS进行仿真,3种效果都出来了。
原程序的效果切换,必须重新启动,现在,增加了三行指令,就可以在不断电的情况下进行切换。
用PROTEUS进行仿真的截图如下:
图片链接:http://hi.baidu.com/%D7%F6%B6%F8%C2%DB%B5%C0/album/item/2f609f80c69180e6bd3e1edf.html#IMG=f2005aed4f89fa1963d09fdf
做而论道修改后的程序如下:
ORG 0000H
START:
MOV P1, #255
CLR P1.6
MOV P2, #0
SETB P2.1
SETB P2.3
JNB P1.0, LOOPB
JNB P1.1, LOOPC
;----------------------------------
;显示花样1:左移7次、右移7次
MOV A, #01H ;单个LED
LOOPA:MOV R0, #7
LOOPAL:
MOV P0, A
RL A
CALL DELAY
DJNZ R0, LOOPAL
;--------------------
MOV R0, #7
LOOPAR:
MOV P0, A
RR A
CALL DELAY
DJNZ R0, LOOPAR
;----------------------------------
LJMP START ;本行可删除.
LJMP LOOPA
;----------------------------------
;显示花样2:左移到头、右移到头
MOV A, #01H
LOOPB:MOV A, #03H ;两个LED
LOOPBL:
MOV P0, A
RL A
CALL DELAY
JNB ACC.7, LOOPBL
;--------------------
LOOPBR:
MOV P0, A
RR A
CALL DELAY
JNB ACC.0,LOOPBR
;----------------------------------
LJMP START ;本行可删除.
LJMP LOOPB
;----------------------------------
;显示花样3:比较乱
LOOPC:MOV R0, #3
MOV A, #01H
LOOPCL:
MOV P0, A
RL A
RL A
CALL DELAY
DJNZ R0,LOOPCL
;--------------------
MOV R0, #3
RL A
LOOPCR:
MOV P0, A
RR A
RR A
CALL DELAY
DJNZ R0, LOOPCR
;----------------------------------
LJMP START ;本行可删除.
LJMP LOOPC
;----------------------------------
DELAY: ;延时子程序
MOV R4, #2
L1: MOV R2, #250
L2: MOV R3, #250
L3: DJNZ R3, L3
DJNZ R2, L2
DJNZ R4, L1
RET
;----------------------------------
END
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。