一组灯并且在控制系统的控制下按照设定的顺序和时间来发亮和熄灭。形成一定的视觉效果,常安装于店面和招牌上。
流水灯控制原理为:三极管在电路中充当开关的作用,当电路导通,最左边的LED首先点亮。基极串出一电容连接下一个三极管的集电极。当电容充分充电后,下一个三极管导通使得第二个LED点亮,以此类推。可以通过调节电容的容量值,来控制流水灯点亮的时间。
扩展资料
流水灯效果的实现:
以4个灯为例,让4个灯在不同的时间、不同的顺序亮起来实现流水灯的效果,需要有平台来统计每个灯的信息,包括顺序和时间。这个用来统计信息的平台叫做数据寄存器。
数据寄存器主要用来保存 *** 作数和 *** 作运算结果等信息。程序员可利用数据寄存器的特性灵活处理字节信息,从而实现流水灯的效果。
单片机流水灯程序代码(汇编语言):ORG0000HAJMPMAINORG0030HMAIN:MOVP1,#11111110BACALLDELAY;跳转到子程序MOVP1,#11111101BACALLDELAYMOVP1,#11111011BACALLDELAYMOVP1,#11110111BACALLDELAYMOVP1,#11101111BACALLDELAYMOVP1,#11011111BACALLDELAYMOVP1,#10111111BACALLDELAYMOVP1,#01111111BACALLDELAYAJMPMAINDELAY:MOVR7,#10;延时1s子程序开始DEL1:MOVR6,#200DEL2:MOVR5,#250DJNZR5,$DJNZR6,DEL2DJNZR7,DEL1RETEND
1、流水灯是若干个灯泡依次点亮,视觉上感觉到灯光在流动就叫做流水灯。2、它是由无数个LED灯组成的,而LED就是发光二极管的简称,它有个特性:就是它只允许电流单一方向流过。如果让LED灯亮起来,他需要连接一个高电平和一个低电平,当它遇到低电平时它会亮起来而遇到高电平它就会熄灭。由于他只能单方向流过电流,所以也就会一亮一暗。
我有个类似的代码
1片stm8s103
4片74HC164
32个贴片LED
4个排阻
不知道你会不会用stm8s系列的单片机
不会的话,给你也没用
C语言流水灯程序是学习的基础,一定要搞懂!给你发两个!\x0d\(一)\x0d\#include //51系列单片机定义文件\x0d\#define uchar unsigned char //定义无符号字符\x0d\#define uint unsigned int //定义无符号整数\x0d\void delay(uint); //声明延时函数\x0d\void main()\x0d\{\x0d\ uint i;\x0d\ uchar temp;\x0d\ while(1)\x0d\ {\x0d\ temp=0x01;\x0d\ for(i=0;i>=1;\x0d\ }\x0d\ temp=0xFE;\x0d\ for(i=0;i>=1;\x0d\ }\x0d\ }\x0d\}\x0d\void delay(uint a) //延时函数,毫秒级别\x0d\{\x0d\ uint i;\x0d\ while(--a!=0) //执行空 *** 作循环,其中a为形参,由调用该函数的函数语句提供值\x0d\ {\x0d\ for(i=0;i\x0d\#define uint unsigned int\x0d\#define uchar unsigned char\x0d\#define ulong unsigned long\x0d\ sbit p2=P2^0;\x0d\void main()\x0d\{\x0d\ TMOD=0x01;\x0d\ TR0=1;\x0d\ ET0=1;\x0d\ EA=1;\x0d\ while(1)\x0d\ {\x0d\ ;\x0d\ }\x0d\}\x0d\\x0d\timer0() interrupt 1\x0d\{\x0d\ TH0=0x00;\x0d\ TL0=0x06;\x0d\ p2=!p2;\x0d\}\x0d\\x0d\(三)\x0d\定时流水灯//\x0d\#include\x0d\#define uint unsigned int\x0d\#define uchar unsigned char\x0d\#define ulong unsigned long\x0d\bit ldelay=0;\x0d\void main()\x0d\{\x0d\ uchar led[9]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff};\x0d\ uchar leda;\x0d\ TMOD=0x00;\x0d\ TR0=1;\x0d\ ET0=1;\x0d\ EA=1;\x0d\ while(1)\x0d\ {\x0d\ if(ldelay)\x0d\ {\x0d\ ldelay=0;\x0d\ P2=led[leda];\x0d\ leda++;\x0d\ if(leda==9)leda=0; \x0d\ }\x0d\ }\x0d\}\x0d\timer2() interrupt 1\x0d\{\x0d\ static uchar t;\x0d\ TF0=0;\x0d\ t++;\x0d\ if(t==10)\x0d\ {\x0d\ t=0;\x0d\ ldelay=1;\x0d\ }\x0d\} \x0d\\x0d\(四)\x0d\变速流水灯//\x0d\#include\x0d\#define uint unsigned int\x0d\#define uchar unsigned char\x0d\#define ulong unsigned long\x0d\bit ldelay=0;\x0d\uchar speed=100;\x0d\void main()\x0d\{\x0d\ uchar led[9]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff};\x0d\ uchar leda;\x0d\ TMOD=0x00;\x0d\ TR0=1;\x0d\ ET0=1;\x0d\ EA=1;\x0d\ while(1)\x0d\ {\x0d\ if(ldelay)\x0d\ {\x0d\ ldelay=0;\x0d\ P2=led[leda];\x0d\ leda++;\x0d\ if(leda==9)\x0d\ {\x0d\ leda=0;\x0d\ speed-=10;\x0d\ if(speed==0)speed=100;\x0d\ } \x0d\ }\x0d\ }\x0d\}\x0d\timer2() interrupt 1\x0d\{\x0d\ static uchar t;\x0d\ TF0=0;\x0d\ t++;\x0d\ if(t==speed)\x0d\ {\x0d\ t=0;\x0d\ ldelay=1;\x0d\ }\x0d\} \x0d\\x0d\(五)\x0d\//每2两圈改变一次亮度\x0d\#include\x0d\#define uint unsigned int\x0d\#define uchar unsigned char\x0d\#define ulong unsigned long\x0d\bit ldelay=0;\x0d\uchar speeda=30;\x0d\uint k=0;\x0d\void main()\x0d\{\x0d\ uchar led[9]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff};\x0d\ uchar leda;\x0d\ uchar speed[10]={5,80,70,60,50,40,30,20,10,5};\x0d\ uint i;\x0d\ uint k;\x0d\ TMOD=0x00;\x0d\ TR0=1;\x0d\ ET0=1;\x0d\ EA=1;\x0d\ while(1)\x0d\ {\x0d\ if(ldelay)\x0d\ {\x0d\ ldelay=0;\x0d\ P2=led[leda];\x0d\ leda++;\x0d\ if(leda==9)\x0d\ {\x0d\ leda=0;\x0d\ k++;\x0d\ if(k==2){\x0d\ k=0;\x0d\ speeda=speed[i];\x0d\ i++;\x0d\ if(i==9)i=0;\x0d\ }\x0d\ } \x0d\ }\x0d\ }\x0d\}\x0d\timer2() interrupt 1\x0d\{\x0d\ static uchar t;\x0d\ TF0=0;\x0d\ t++;\x0d\ if(t==speeda)\x0d\ {\x0d\ t=0;\x0d\ ldelay=1;\x0d\ }\x0d\} \x0d\\x0d\(六)\x0d\//在上面基础上调灯的亮度(调占空比)\x0d\#include\x0d\#define uint unsigned int\x0d\#define uchar unsigned char\x0d\#define ulong unsigned long\x0d\bit ldelay=0;\x0d\uchar speeda=30;\x0d\uint k=0;\x0d\uchar scale; \x0d\void main()\x0d\{\x0d\ uchar led[9]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff};\x0d\ uchar leda;\x0d\ uchar speed[10]={5,80,70,60,50,40,30,20,10,5};\x0d\ uint i;\x0d\ uint k;\x0d\ TMOD=0x00;\x0d\ TR0=1;\x0d\ ET0=1;\x0d\ EA=1;\x0d\ while(1)\x0d\ {\x0d\ if(ldelay==1)\x0d\ {\x0d\ ldelay=0;\x0d\ P2=led[leda];\x0d\ leda++;\x0d\ scale++;\x0d\ if(scale==10)scale=0;\x0d\ if(leda==9)\x0d\ {\x0d\ leda=0;\x0d\ k++;\x0d\ if(k==2){\x0d\ k=0;\x0d\ speeda=speed[i];\x0d\ i++;\x0d\ if(i==9)i=0;\x0d\ }\x0d\ } \x0d\ }\x0d\ }\x0d\}\x0d\timer2() interrupt 1\x0d\{ \x0d\ static uchar t;\x0d\ TH0=0x1c;\x0d\ TL0=0xbf;\x0d\ TF0=0;\x0d\ t++;\x0d\ if(t==speeda)\x0d\ {\x0d\ t=0;\x0d\ ldelay=1;\x0d\ }\x0d\ if(scale==10)P2=0;\x0d\ if(scale==0)P2=1;\x0d\}
因为电阻R1~R7与地线的连接端,导致电阻引脚直接与上面的横导线相接触。
在电阻的每个引脚上都必须画一段导线与上面的横导线相连,连接后应该出一个结点。用proteus画仿真图时,元件的每个引脚都必须有一段导线与其它元件或电路相连才行,不能用引脚直接连接。
一共有三组等,三个定时回路,接通电源的时候,会有一个三极管先导通,这时候这组LED亮起了,导通后集电极的点位会被拉低,这时候电容通过限流电阻开始充电,当电压逐渐升高的时候,下一级三极管导通,这时候另一组LED亮起了,以此类推,这三组灯会轮流按这个顺序点亮,点亮时间是根据电阻和电容的值,电容越大,闪烁越慢,电阻越大闪烁越慢,相反则越快。
以上就是关于什么是流水灯全部的内容,包括:什么是流水灯、流水灯单片机程序代码、谁有32个LED灯的心形流水灯电路图及所需元器件发给我下,还有程序,谢谢等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)