8个LED依次循环发光,3种显示效果,要求通过按钮切换
2016-01-25 11:41
841 查看
用单片机控制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
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
相关文章推荐
- 浅析Java中CountDownLatch用法
- 处理不确定数据的方法研究
- Ligerui表格基本操作(五)
- 【足迹C++primer】40、动态数组
- Java学习笔记九(泛型)
- spring4 学习4 spring MVC+mybatis+Mysql
- Project Euler欧拉计划
- 提高 ASP.NET Web 应用性能
- 基于51单片机的简易数字频率计
- Python 基础教程
- 单片机按键按下的先后顺序判断
- 用T1定时,在P1.0和P1.1 引脚分别输出周期为2ms和500微秒的方波
- 以中断方法设计单片机秒、分脉冲发生器
- 单片机LED数码电路和C程序
- java中的引用和GC
- 中国碉堡
- Knight Moves hdu1372
- 江桥抭战和义勇军进行曲
- 电影《铁血江桥》在鹤城拍摄
- 单片机编程:键控定时灯