本文目录一览

1,LED流水灯是什么

就是多个LED灯组成一个阵列,通过程序控制LED的亮和灭,依次逐个点亮的时候像流水一样,所以叫流水灯。

LED流水灯是什么

2,用分立元件制作流水灯

分太少,多加分,我给你画一张图,纯三极管、电阻、电容的,触发器都不用! 别说16个100个都可以,理论上是几何增长,就看你有没有时间精力去焊接那么多零件!

用分立元件制作流水灯

3,1花样流水灯

ORG 0000H LJMP START ORG 0100H START: MOV DPTR,#TABLE ;取DPTR的地址,即表格的起始地址 LOOP: CLR A ;对A清零 MOVC A,@A+DPTR ;查表 CJNE A,#01H,LOOP1 ;判断是否到了表格的结尾处,当A等于01时程序往下执行,否则跳到 LOOP1 LJMP START ;跳到程序的开头循环执行 LOOP1: MOV P1,A ;把取得的表格数据送到P1 LCALL DELAY ;延时 INC DPTR ;DPTR加一,即把DPTR指向下一个表格单元 LJMP LOOP DELAY: MOV R5,#10 ;延时子程序,改变R5,R6,R7 的值,可以改变延时的时间,从而改变流水灯移动速度 D1: MOV R6,#20 D2: MOV R7,#248 DJNZ R7,$ DJNZ R6,D2 DJNZ R5,D1 RET

1花样流水灯

4,单片机中的流水灯花样灯跑马灯

没什么实质的区别只是各人说法不一样,像流水灯程序也有人叫跑马灯,说个简单的例子,比方说一个亮点不断的左循环就叫流水灯。从中间亮两个点,从左右两边流动就叫花样。
估计楼上都没看题目,花样灯应该没啥既定要求,流水灯和跑马灯有区别,跑马灯是一亮一灭,流水灯是实现一个流水的效果流水灯和跑马灯(图源CSDN)
可以把每组I/O口看成一个数组,进行移位取反等操做就可以边不同的流水灯程序,参考一下:#include <AT89X51.H> unsigned char i; unsigned char temp,temp1; unsigned char a,b; void delay(void) unsigned char m,n,s; for(m=10;m>0;m--) for(n=20;n>0;n--) for(s=248;s>0;s--); } void main(void) while(1) temp=0x80; temp1 = 0x01; P0=temp; delay(); for(i=0;i<9;i++) P0 = temp>>i; delay(); } for(i=0;i<9;i++) P2 = temp1<<i; delay(); } for(i=0;i<9;i++) P0 = temp>>i; delay(); } for(i=0;i<9;i++) P2 = temp1<<i; delay(); } for(i=0;i<3;i++) P0=P2=0xff;delay(); P0=P2=0x00;delay(); } } }这个是我在开发板上的实验程序,很久以前了,从程序来看应该是两组八个的,转一圈然后闪三下。
这三个和你了解都差不多,只是顺序不同
等 到 你单片机学到一定程度就理解了,这些灯只是按照自己的意思来亮,至于名称都无所谓

5,单片机流水灯

/*******************************************************************/ /* 控制P1口的8个LED发光管可实现先左移,再右移,然后全亮,再全灭,连续闪烁三次,再从右开始,依次点亮1个LED灯、2个LED灯、3个LED灯……最后全部点亮,再全亮全灭闪烁一次。 P1低电平电点亮LED */ /*********************************************************/ #include<reg52.h> //52单片机头文件 #include <intrins.h> //包含有左右循环移位子函数的库 #define uint unsigned int //宏定义 #define uchar unsigned char //宏定义 void delay(uint z) //延时函数,z的取值为这个函数的延时ms数,如delay(200);大约延时200ms. delay(200); //延时200毫秒 P1=0xfe<<i; //点亮小灯 } for(j=0;j<3;j++) delay(300); } }
#include <reg52.h> //////////////////////////////////////////////////////// void delay(unsigned int cnt) //简单的延时 { while(--cnt); } /////////////////////////////////////////////////////// main() { P1=0xfe;//给初始化值 while(1) { delay(30000);//delay at crystal frequency in 12MHz P1<<=1;//左移一位 P1|=0x01;//最后一位补1 if(P1==0x7f)//检测是否移到最左端? { delay(30000);//delay P1=0xfe; } } }

6,用c语言编写流水灯

C语言流水灯程序是学习的基础,一定要搞懂!给你发两个!(一)#include<reg51.h> //51系列单片机定义文件#define uchar unsigned char //定义无符号字符#define uint unsigned int //定义无符号整数void delay(uint); //声明延时函数void main() uint i; uchar temp; while(1) temp=0x01; for(i=0;i<8;i++) //8个流水灯逐个闪动 P2=~temp; delay(500); //调用延时函数 temp<<=1; } temp=0x80; for(i=0;i<8;i++) //8个流水灯反向逐个闪动 P2=~temp; delay(500); //调用延时函数 temp>>=1; } temp=0xFE; for(i=0;i<8;i++) //8个流水灯依次全部点亮 P2=temp; delay(500); //调用延时函数 temp<<=1; } temp=0x7F; for(i=0;i<8;i++) //8个流水灯依次反向全部点亮 P2=temp; delay(500); //调用延时函数 temp>>=1; } }}void delay(uint a) //延时函数,毫秒级别 uint i; while(--a!=0) //执行空操作循环,其中a为形参,由调用该函数的函数语句提供值 for(i=0;i<125;i++);//执行当0加到125时,大约会用掉1ms的时间 }}(二)*****************************以下程序均采用12M晶振*****************************************************/#include<reg51.h>#define uint unsigned int#define uchar unsigned char#define ulong unsigned long sbit p2=P2^0;void main() TMOD=0x01; TR0=1; ET0=1; EA=1; while(1) ; }}timer0() interrupt 1 TH0=0x00; TL0=0x06; p2=!p2;}(三)定时流水灯//#include<reg51.h>#define uint unsigned int#define uchar unsigned char#define ulong unsigned longbit ldelay=0;void main() uchar led[9]= uchar leda; TMOD=0x00; TR0=1; ET0=1; EA=1; while(1) if(ldelay) ldelay=0; P2=led[leda]; leda++; if(leda==9)leda=0; } }}timer2() interrupt 1 static uchar t; TF0=0; t++; if(t==10) t=0; ldelay=1; }} (四)变速流水灯//#include<reg51.h>#define uint unsigned int#define uchar unsigned char#define ulong unsigned longbit ldelay=0;uchar speed=100;void main() uchar led[9]= uchar leda; TMOD=0x00; TR0=1; ET0=1; EA=1; while(1) if(ldelay) ldelay=0; P2=led[leda]; leda++; if(leda==9) leda=0; speed-=10; if(speed==0)speed=100; } } }}timer2() interrupt 1 static uchar t; TF0=0; t++; if(t==speed) t=0; ldelay=1; }} (五)//每2两圈改变一次亮度#include<reg51.h>#define uint unsigned int#define uchar unsigned char#define ulong unsigned longbit ldelay=0;uchar speeda=30;uint k=0;void main() uchar led[9]= uchar leda; uchar speed[10]= uint i; uint k; TMOD=0x00; TR0=1; ET0=1; EA=1; while(1) if(ldelay) ldelay=0; P2=led[leda]; leda++; if(leda==9) leda=0; k++; if(k==2) k=0; speeda=speed[i]; i++; if(i==9)i=0; } } } }}timer2() interrupt 1 static uchar t; TF0=0; t++; if(t==speeda) t=0; ldelay=1; }} (六)//在上面基础上调灯的亮度(调占空比)#include<reg51.h>#define uint unsigned int#define uchar unsigned char#define ulong unsigned longbit ldelay=0;uchar speeda=30;uint k=0;uchar scale; void main() uchar led[9]= uchar leda; uchar speed[10]= uint i; uint k; TMOD=0x00; TR0=1; ET0=1; EA=1; while(1) if(ldelay==1) ldelay=0; P2=led[leda]; leda++; scale++; if(scale==10)scale=0; if(leda==9) leda=0; k++; if(k==2) k=0; speeda=speed[i]; i++; if(i==9)i=0; } } } }}timer2() interrupt 1 static uchar t; TH0=0x1c; TL0=0xbf; TF0=0; t++; if(t==speeda) t=0; ldelay=1; } if(scale==10)P2=0; if(scale==0)P2=1;}
#include<reg52.h>#define uchar unsigned char //数据类型的宏定义#define uint unsigned int //数据类型的宏定义uchar code table[]=void delay(uint);void main() uchar a; while(1) //死循环,让程序不断的重复 for(a=0; a<8; a++) //for循环让程序跑八次 delay(50); P2=table[a]; //分八次分别让8个LED灯点亮 } }}/******************************************函数功能:延时一段时间*******************************************/void delay(uint i) unsigned int j; for(; i>0; i--) for(j=0; j<125; j++) ; }}
#include<reg51.h>#include <intrins.h>void delayms(unsigned char ms) // 延时子程序unsigned char i;while(ms--)for(i = 0; i < 120; i++);}}flash()delayms(250); P0=0xff;delayms(250); P0=0x00;delayms(250); P0=0xff;delayms(250);}main()unsigned char LED;LED = 0xfe;P0 = LED;while(1)LED = _crol_(LED,1); //循环右移1位,点亮下一个LEDP0 = LED;delayms(250);if(LED==0x7f) P0=0x7f;while(P0!=0xfe)P0=P0<<7|P0>>1;//循环左移delayms(250);}flash(); }}}

文章TAG:流水灯  LED流水灯是什么  
下一篇