×
单片机 > 单片机程序设计 > 详情

8个LED依次循环发光,3种显示效果,要求通过按钮切换

发布时间:2023-02-27 发布时间:
|

用单片机控制8个发光二极管依次发光,产生跑马灯的效果。


3种效果循环,要求通过按钮切换效果。


这是一个网友在:/zixunimg/eeworldimg/zhidao.baidu.com/question/133803194.html 提出的问题。


原程序比较长,且有些错误,就不列出了。


原来的电路图,可见:/zixunimg/eeworldimg/hi.baidu.com/%D7%F6%B6%F8%C2%DB%B5%C0/album/item/2f609f80c69180e6bd3e1edf.html


做而论道对程序做了修改,用PROTEUS进行仿真,3种效果都出来了。


原程序的效果切换,必须重新启动,现在,增加了三行指令,就可以在不断电的情况下进行切换。


用PROTEUS进行仿真的截图如下:

图片链接:/zixunimg/eeworldimg/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

————————————————


『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
Keil(MDK-ARM)系列教程(七)_菜单