单片机实验流水灯

四个按键控制八个LED灯,按键接p1,灯接p0口,要求按1号键八个灯循环亮,跟流水灯样的,按下2号键灯先从左亮到右,然后从右亮到左,这样一次循环,按下3号键,先两端两个灯亮,两端灭,然后次两端的亮,直到中间两个亮,然后高低四位交替亮一次,再奇偶亮一次,一次循环;按下4号键就各位棒棒忙想出一个方案。
头疼啊,谁能搞出来呀。。
要用汇编写出来哦

第1个回答  2009-04-01
ProteUS仿真通过
要ProteUS文件的话,留言

; 四个按键控制八个LED灯,
; 按键接p1,灯接p0口,
; 要求按1号键八个灯循环亮,跟流水灯样的,
; 按下2号键灯先从左亮到右,然后从右亮到左,这样一次循环,
; 按下3号键,先两端两个灯亮,两端灭,然后次两端的亮,直到中间两个亮,
; 然后高低四位交替亮一次,再奇偶亮一次,一次循环;
; 按下4号键就各位棒棒忙想出一个方案。
; 头疼啊,谁能搞出来呀。。

ORG 00H
AJMP _INIT_SYS

_INIT_SYS:
MOV SP,#80H

_MAIN_LOOP:

_WAY0: ;{
MOV A,#0FEH
_WAY0_LOOP:
RR A
MOV P0,A
LCALL _DELAY500MS
AJMP _WAY0_LOOP ;}
_WAY1: ;{
CLR C
MOV A,#0FFH
_WAY1_LOOP0:
RRC A
_WAY1_LOOP:
RRC A
MOV P0,A
JNC _WAY1_LOOP11
LCALL _DELAY500MS
AJMP _WAY1_LOOP
_WAY1_LOOP11:
RLC A
_WAY1_LOOP1:
RLC A
MOV P0,A
JNC _WAY1_LOOP0
LCALL _DELAY500MS
AJMP _WAY1_LOOP1 ;}
_DELAY500MS: ;{
PUSH 0
PUSH 1
PUSH 2

MOV R0,#50
_DEL0:
MOV R1,#100
_DEL1:
MOV P1,#0FFH
JNB P1.0, _WAY0
JNB P1.1, _WAY1
JNB P1.2, _WAY2
JNB P1.3, _WAY3

MOV R2,#100
DJNZ R2,$
DJNZ R1, _DEL1
DJNZ R0, _DEL0

POP 2
POP 1
POP 0
RET
;}
_WAY2: ;{
MOV P0,#7EH
LCALL _DELAY500MS
MOV P0,#10111101B
LCALL _DELAY500MS
MOV P0,#11011011B
LCALL _DELAY500MS
MOV P0,#11100111B
LCALL _DELAY500MS
MOV P0,#0F0H
LCALL _DELAY500MS
MOV P0,#0FH
LCALL _DELAY500MS
MOV P0,#055H
LCALL _DELAY500MS
MOV P0,#0AAH
LCALL _DELAY500MS
AJMP _WAY2
;}
_WAY3: ;{
MOV P0,#0FFH
LCALL _DELAY500MS
MOV P0,#0FEH
LCALL _DELAY500MS
MOV P0,#0FCH
LCALL _DELAY500MS
MOV P0,#0F8H
LCALL _DELAY500MS
MOV P0,#0F0H
LCALL _DELAY500MS
MOV P0,#0E0H
LCALL _DELAY500MS
MOV P0,#0C0H
LCALL _DELAY500MS
MOV P0,#080H
LCALL _DELAY500MS
MOV P0,#000H
LCALL _DELAY500MS
AJMP _WAY3 ;}

END本回答被提问者采纳
第2个回答  2009-04-01
太简单了
第3个回答  2009-04-01
问题都没说清楚 按下4号键怎么样
这是一个很简单的程序
c语言方案:
在主程序里面放置 检测按键程序和相关的按键处理跳转语句。当检测到相关的按键的时候 就跳转到相关的处理程序

当然还要涉及到延时的方法
第4个回答  2009-04-01
能不能用c语言?
第5个回答  2009-04-01
倒是挺好玩的也不是太费事,怎么是匿名提问?

怎样用单片机实现一个流水灯的效果呢?
单片机流水灯1到8依次亮,是通过编程控制单片机的I\/O端口实现的。通常使用循环结构和延时函数,依次将每个LED灯对应的I\/O端口置为高电平,使其亮起,然后延时一段时间,再将其置为低电平,使其熄灭。通过不断循环这个过程,就可以实现流水灯的效果。单片机流水灯是一种常见的电子制作项目,它通过单片机...

如何用单片机制作一个流水灯?
1、首先要写入单片机的头函数,定义单片机P1口的8个管脚,让他们分别代表流水灯的8个led。2、写一个大约一小时的延时函数,为了清楚的看到流水灯的、效果。3、下面是流水灯的主函数,流水灯一个点亮后一个熄灭反复循环点亮熄灭。4、这样流水灯就可以反复循环了。把程序下到仿真软件或者是开发板,进行仿...

怎样用单片机做一个简单的流水灯?
单片机流水灯代码:#include<reg51.h>\/\/51头文件void delay(int t)\/\/定义延时函数{int j;while(t--){for(j=0;j<500;j++);}}void main(){int i;while(1){for(i=0;i<7;i++)\/\/循环点亮LED,到第7个LED延时一会就结束循环。在这个单片机流水灯代码中,假设使用的是8051...

51单片机C程序实验LED灯:[2]左到右的流水灯
依旧是基础的LED灯部分的实验 说明:实现一排灯从左到右依次一个一个点亮熄灭,实现流水灯 proteus电路图 元件清单:(分别是) 51单片机 电容 瓷片电容(也可用普通电容) 晶振 红色二极管 电阻 电路图的连接方法 程序清单 说明:本例有两种程序写法 第一种是入门级别比较基础的写法 先是依旧延时子程...

编写出单片机流水灯程序
编写一个基于8051单片机的流水灯程序,假设我们使用P1口连接了8个LED灯,要实现从第一个LED开始依次点亮,形成流水效果。以下是一个简单的C语言程序示例:```c include void delay(unsigned int ms) { unsigned int i, j;for (i = ms; i > 0; i--)for (j = 110; j > 0; j--); \/...

如何用单片机控制流水灯闪烁?
可以用for循环试试unsingned char i;for(i=0;i<5;i++)\/\/流水灯闪烁程序。若干个灯泡依次点亮就叫流水灯,它用在夜间建筑物装饰方面。例如在建筑物的棱角上装上流水灯,可起到变换闪烁美不胜收的效果。单片机(Single-Chip Microcomputer)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据...

基于51单片机设计的花样流水灯设计
在51单片机中,可以通过定时器和端口控制实现花样流水灯的效果。硬件搭建时,需要将多个LED灯按照一定的顺序连接到51单片机的IO引脚上。每个LED灯配备一个适当电阻,连接到5V电源引脚和地线上,形成一个完整的电路。具体硬件搭建方法如下:(1)将多个LED灯依次连接组成电路链,每个LED的正极连接到51单片机...

单片机八个流水灯左右依次点亮
1、首先,打开proteus,可以看到界面上方有库,点开,在库里选择做实验需要的元件。2、如图所示,我们做流水灯实验所需要的元件,就是红色方框里面的元件,一定都要添加进来,要不然实验就做不成功。3、接着,我们按照电路原理图,排布好元件,连好线,最后的电路如图所示。4、我们把实验代码插入单片机,...

单片机原理流水灯实验报告
单片机原理流水灯实验报告: 一、实验目的:进一步熟习keil仿真软件、proteus仿真软件的使用。认识并熟习单片机I\/O口和LED灯的电路构造,学会建立简单的流水灯电路。掌握C51中单片机I\/O口的编程方法和使用I\/O口进行输入输出的注意事项。二、实验原理:MCS-51系列单片机有四组8位并行I\/O口,记作P0、P1、P2...

单片机流水灯程序
在`main`函数中,通过位操作和延时,实现了流水灯的循环滚动效果。整个程序通过改变P1口的值,控制LED灯的亮灭,形成流水灯效果。如果你对单片机编程感兴趣,可以参考这个程序,同时作者推荐你查看他们整理的“17个实验学会单片机”教程,只需在百度搜索“17个实验学会单片机”即可获取更多学习资源。

相似回答