用单片机控制流水灯的六种方案,要程序电路图,详细讲解

如题所述

;//*********************************************************
;//实现功能:本程序实现在P0口模拟一种流水灯程序
;//*********************************************************
p_out equ P0 ;宏定义P0为p_out
org 00h ;程序的开始地址
ajmp main ;跳到main
org 030h
;//******************主函数***************************
;//描 述:实现在P0口模拟一个流水灯程序
;//设计人: lishengling24
;//****************************************************
main: ;主函数
mov sp,#50h ;设置sp堆栈的初始位置
mov a,#0feh ;初始化acc
main_1:
mov p_out,a ;点亮一个灯
mov r1,#250 ;
mov r0,#250 ;
Call delay_time;调用时间延迟子程序,上面两句是设置延迟时间
mov p_out,#0ffh;熄灭灯
RL a ;循环左移一位准备点亮下一个灯
JMP main_1 ;跳到main_1循环
;//******************时间延迟函数**********************
;//描 述:用指令实现延时一段时间
;//入口参数:r1为高位,r0为低位,都是十六进制表示?
;//出口参数:无
;//设计人:lishengling24
;//****************************************************
delay_time:
push acc ;acc入栈
push psw ;psw入栈
mov a,r0 ;把r0赋给acc
inc r1 ;r1加1,因为djnz是先减1再比较是否为零,如果不加1
;当r1的初值为0的时候,减1后变成了0x0ff,改变了当
;初预想的延迟时间计数值
inc r0 ;道理和inc r1 一样,当然r0和r1的初值不能为0x0ff
loop:
nop
nop
nop
nop
nop
nop
djnz acc,loop ;
mov a,r0 ;
djnz r1,loop ;
pop psw ;psw出栈
pop acc ;acc出栈
ret
end ;需要其他5种方案的程序和电路,在百度HI我。

以下是C的写法:
//*********************************************************
//实现功能:本程序实现在P0口模拟一个流水灯程序
//*********************************************************
#include <reg51.h>
#define p_out P0 //宏定义输出的i/o口为p0
//******************时间延迟函数**********************
//描 述:用指令实现延时一段时间
//入口参数:int i,为时间延迟参数
//****************************************************
void delay_time(int i)
{
while(i)
i--;
}
//******************主函数***************************
//描 述:实现在P0口模拟一个流水灯程序
//****************************************************
void main(void)
{
unsigned char i=0; //初始化一个局部变量为0
p_out=0xff; //初始化将要输出的i/o口,输出高电平,熄灭所有灯
while(1)
{
for(i=0;i<8;i++)
{
p_out=~(1<<i);//点亮一个灯,
delay_time(50000); //延迟一段时间
p_out=0xff;//熄灭所有灯
}
}
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-06-07
单片机类型有要求吗?

用单片机控制的LED流水灯设计(电路、程序全部给出)
软件编程:点亮LED的艺术 流水灯的魅力在于其动态变化,而软件编程则是关键。这里,我们将采用位操作法,通过顺序控制P1口的位,实现LED的循环点亮。比如,首先让LED 7亮起,通过SETB P1.6指令,紧接着LED 8亮起,执行CLR P1.7指令将其关闭。更深入的细节在于延时子程序的编写,如SETB\/P1.7后,...

用单片机控制的LED流水灯设计(电路、程序全部给出)
硬件部分,流水灯基于单片机最小应用系统构建,仅需八个LED、晶振、复位、电源等基本元件,每个LED的亮灭控制依赖P1口的电平调节。通过控制P1.0到P1.7的电平变化,连续点亮和熄灭,创造出流水灯效果。软件编程部分,有三种方法:位控法通过逐个位操作控制LED,虽然直观但代码较长;循环移位法利用循环指令...

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

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

51单片机流水灯程序
程序如下:include <reg52.h> sbit led1 = P2^0;sbit led2 = P2^1;sbit led3 = P2^2;sbit led4 = P2^3;sbit led5 = P2^4;sbit led6 = P2^5;sbit led7 = P2^6;sbit led8 = P2^7;void main(){ int i,j;\/\/点亮第一个灯 led1 = 1;led2 = 0;led3 = 0;led4 = ...

51单片机中如何用汇编语言编写流水灯
流水灯就是51单片机控制led灯依次点亮的控制方式。具体程序如下:ORG 0000H;复位启动AJMP START;ORG 001BH;T1中断AJMP T1INT;;定义变量===YSJSEQU 30H;延时计数器LEDEQU 31H;LED控制缓冲器 ;主程序===START:MOV LED,#0FEH;初始化数据MOV YSJS,#0;MOV TMOD,#10H;定时器1工作于方式1,16位定时...

怎样调整单片机流水灯的快慢,请举个例子
就下面的程序 ;--- 延时子程序 --- DELAY: MOV R0,#255 ;延时一段时间 D1: MOV R1,#20 DJNZ R1,DJNZ R0,D1 RET ;子程序返回 END ;程序结束 来说,想要让流水灯变慢点的话,就增加延时。这里将第二行指令D1: MOV R1,#20中的20改大,但是要小于256.比如D1: MOV R1,#200 如果想...

单片机流水灯C语言程序(8个灯,依次点亮每个灯,延时500MS)
单片机流水灯C语言程序的源代码如下:include \/\/51系列单片机定义文件 define uchar unsigned char \/\/定义无符号字符 define uint unsigned int \/\/定义无符号整数 void delay(uint); \/\/声明延时函数 void main(void){ uint i;uchar temp;while(1){ temp=0x01;for(i=0;i<8;i++) \/\/8个流水灯...

单片机流水灯怎么实现的?
一般来说,实现流水灯功能需要以下步骤:首先确定单片机型号和开发环境,并熟悉指令集和寄存器配置。然后确定LED灯的连接方式,并编写程序来控制LED灯的亮灭状态。最后在程序中添加延时函数来实现LED灯的亮灭延迟。在编写程序时,需要注意语法错误和逻辑错误,并进行测试和调试,以确保程序能够正确运行并实现...

怎样用单片机实现一个流水灯的效果呢?
单片机流水灯是一种常见的电子制作项目,它通过单片机控制多个LED灯按照一定顺序依次亮起,形成流水般的效果。在这个项目中,单片机起到了核心控制作用。要实现流水灯效果,首先需要将每个LED灯的一个引脚连接到单片机的一个I\/O端口上。然后,通过编程控制这些I\/O端口的电平状态,就可以控制LED灯的亮灭。...

相似回答