Ⅰ 如何通过51单片机控制LED灯以1。5s的频率的流水灯,求源代码。
延时程序:让xms=30
void delayms(uchar xms)
{
uchar a;
while(xms--)
for(a=110;a>0;a--);
}
Ⅱ 51单片机控制LED灯
首先要查看电路的连接,看看输入连接到单片机的哪个引脚(比如P1.0),LED灯连接到哪个引脚(比如P2.0)。然后看是高电平有效还是低电平有效(也就是高电平时LED灯亮,还是低电平时LED灯亮)。
如果是高电平灯亮的话,程序如下:
P2.0=P1.0;
Ⅲ STC90C51单片机怎么做50只LED的流水灯
我给你提供一个思路吧,你可以网络一下光立方。光立方用10多个IO口,控制了512个LED。光立方大家都在做,网上有很多的资料。
Ⅳ 51单片机LED流水灯怎么实现从两边同时逐个点亮到中间,又从中间逐个熄灯到两边
简单点的,用表格,事先计算好,放到ROM中,用的时候逐行编译输出就可以。
复杂点的,开一个缓冲区,用循环程序,根据花样的不同,每次填充一行,并输出,然后再计算一下行。除非表格太大,不建议这样用。
#define len 8
char tablelist[][len] =
{
"00000000",
"10000001",
"01000010",
"00100100",
"00011000",
}
outline( char * s )
{
int i;
for(i=0; i<len; ++i )
{
if ( s[i] == '0' )
{
// 对应的灯亮
}
else
{
// 对应的灯灭
}
}
}
main()
{
for(;;)
{
outline( &tablelist[i]);
delay(..);
}
}
Ⅳ 51单片机led流水灯两个同时点亮,四次一循环
不知道你的板子,我就拿郭天祥经典的举个栗子吧。
#include<reg52.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
void delay(uint z)
{
uint i,j;
for(i=z;i>0;i--)
{
for(j=110;j>0;j--);
}
}
void main()
{
uchar a=0xfc;
while(1)
{
P1=a;
delay(500);
a=_crol_(a,2);
}
}
Ⅵ 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 = 0;
led5 = 0;
led6 = 0;
led7 = 0;
led8 = 0;
//延时1秒
for(i = 0;i < 110; ++i)
{
for(j = 0; j < 1000; ++j)
{
;//什么也不做
}
}
//点亮第二个灯
led1 = 0;
led2 = 1;
led3 = 0;
led4 = 0;
led5 = 0;
led6 = 0;
led7 = 0;
led8 = 0;
//点亮剩余的灯
//省略……
while(1);
}
流水灯几点说明:
void:因为该延时函数不需要返回值,所以写为void
delay1s:该函数的函数名,命名需要符合C语言的标识符命名规则。
(): 不需要传入参数,所以括号中为空
至此我们可以把流水灯程序写为以下形式: