⑴ 51单片机实现流水灯,计数器显示灯亮的序号
51单片机实现流水灯,计数器显示灯亮的序号。程序中用的变量ledi和b重复了,只用b就行。把主程序第二行声明换成b,画红线的3行删掉,红箭头的是替换。强调,原来b不能在那里赋值为0,这样b永远为0,虽然有b++,下面还有b=0,又回0了。
⑵ 51单片机32个流水灯编程如何实现指定其中某一个灯亮,如何实现多种花样亮灯
要51单片机控制32个流水灯,关键是要解决电路设计,只要能设计出电路来,编程实现控制指定其中某一个灯亮,并实现多种花样亮灯,就容易了。如果只做32个流水灯,就用单片机的四个并行口,共32个IO引脚全部用上,正好控制32个流水灯。如果引脚还有其他应用,可用四片锁存器,也可以控制32个流水灯了。
⑶ 关于单片机C51做流水灯和花式的
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
uchar i,j,w =0xfe;
void delay()
{
for( i = z;i > 0;i++)
{
TH0 = (65536 - 50000)/256; //利用定时器0准确定时
TL0 = (65536 - 50000)%256;
TR0 = 1;
while(!TF0); //当TF0 = 1 时,关闭它。
TF0 = 0;
}
}
void main()
{
TMOD = 0x01; //设置定时器0工作方式1
while(1)
{
P1 = 0xff; //关闭所有二极管
P2 = 0xff;
delay(10); // 延时500ms;
P1 = 0x00;
P2 = 0x00;
delay(10);
for(j = 0;j < 8;j++)
{
P1 = w;
delay(10);
w = _crol_(w,1); // 做移动一位。
}
w = 0xfe;
for(j = 0;j < 8;j++)
{
P2 = w;
delay(10);
w = _crol_(w,1);
}
for(j = 0;j <3;j++) //左右两侧四只同时闪烁3次
{
P1 = 0xf0;
P2 = 0x0f;
delay(10);
P1 = 0xff;
P2 = 0xff;
}
delay(20); //延时1s.
}
}
⑷ 如何用单片机简单制作一个流水灯
工具:STC系列51单片机、串口转换器(USB转TTL 或232转TTL)
材料:实验板一块(可以买现成的,也可以买面包板自己搭建),电阻、LED灯 若干,5V电源等。
以下程序可以直接用Keil C 直接编译执行。
//可以通过左移函数_crol_()和右移函数_cror_()来实现LED等的来回流动。
//具体实现方法可以参考如下程序:
#include<reg51.h>
#include<intrins.h>
#defineuintunsignedint
#defineucharunsignedchar
voiddelay(uinta);
voidmain()
{
P1=0xfe;
while(1)
{
//向左循环点亮LED
for(i=0;i<7;i++)
{
P1=_crol_(P1,1);//左移一位,点亮下一位LED
delay(55);
}
//向右循环点亮LED
for(i=0;i<7;i++)
{
P1=_cror_(P1,1);//右移一位,,点亮上一位LED
delay(55);
}
}
}
//延时函数,延时a毫秒
voiddelay(uinta)
{
uintx,y;
for(x=a;x>0;x--)
for(y=110;y>0;y--);
}
⑸ 51单片机 8盏花样流水灯
ORG 0000H
AJMP MAIN
ORG 0030H
MAIN:
MOV R1,#7 ;
MOV A,#0FCH
LOOP1: MOV P1,A
RL A
CALL DELAY
DJNZ R1,LOOP1
MOV P1,00H
CALL DELAY
CALL DELAY
MOV R1,#7 ;
MOV A,#3FH
LOOP2: MOV P1,A
CALL DELAY
RR A
DJNZ R1,LOOP2
MOV P1,#00H
CALL DELAY
SJMP MAIN
DELAY: MOV R4,#4
MOV R5,#200
MOV R6,#248
DJNZ R6,$
DJNZ R5,$-2
DJNZ R4,$-4
RET
END
注:LED共阳接法
⑹ 51单片机流水灯原理
单片机流水灯控制原理就是将多个LED灯珠连接到不同的单片机输出端上,编程使单片机的这些输出端逐个的输出信号点亮LED,在设置好各个LED的通电时间和通电间隔时间后,就可以看到这些LED灯珠此起彼伏的亮起,如同流水一样.
⑺ 想用51单片机驱动led,做花样流水灯,有四五十多个,接口不够怎么办,需要哪些电子器件谢谢
1、扩并口,用8255或者74HC573锁存器。P0加另一个口可以简单扩出8个口,得到8*8=64个控制IO。足够用了。
2、用串口移位控制,74LS595,可以级联,理论上你可以扩充无限。
⑻ 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语言的标识符命名规则。
(): 不需要传入参数,所以括号中为空
至此我们可以把流水灯程序写为以下形式:
⑼ C语言C51单片机花样流水灯程序分析注释
和你说一句关键的(别告我你整个程序一句都看不懂):
P1=0xfe;
0xfe是十六进制表示的数,二进制就是1111 1110,通过你的程序和相关注释可以看出,硬件上你有8个led灯连接P1口,且这些led是低电平亮。P1=0xfe(1111 1110)也就是表示七个灯灭,一个灯亮。接下来的代码就是让P1数据0xfe左移且低位补1,移一次就是1111 1101,、两次就是1111 1011,三次是1111 0111。。。以此类推,可以看出它是0由最低位到最高位依次移过去的,而刚说了0表示led亮,这也就是led从一边到另一边依次点亮的效果。
后面的代码按我上面说的自己理解,完全对你解释太麻烦,对你也没多大好处,只有你自己理解了才能学好单片机