‘壹’ 51单片机能否正常驱动32盏LED灯LED灯做流水灯用。求高人解答!
驱动小功率LED是没有问题的。1个51单片机外加4个PNP三极管(如C9012或8550),以及12个电阻就可以了。将32个LED分成4组共阳连接,采用动态扫描方式输出驱动LED,这样共占用单片机12根口线。
‘贰’ 单片机控制流水灯
可以,不过单片机可能无法直接驱动,要经过三极管或MOS管来控制
‘叁’ 单片机中流水灯如何控制
单片机中流水灯控制:
硬件连接很简单,只要将8个LED指示灯接在P1口上
另一端通过220欧姆的电阻接+5V电源上,就可以了。
主要靠软件控制,简单的可以使用左移或右移指令,将低电平0
逐渐移入寄存器中,即控制LED指示灯逐渐一个一个地点亮或一个一个地熄灭。
复杂点:
可以进行花式流水控制。
例如:
可以由两边逐渐向内点亮
然后再由内逐渐向外一个一个熄灭。
还可以由由内逐渐向两边内点亮
然后再由两边渐向内逐一个一个熄灭。
在程序的实现上
可以把各种花式流水的P1口亮灭状态字
事先定义成数组
然后每隔一定的时间
取出送P1口显示。
呵呵
俺只提供给你一个号的算法
程序就自己动手自立更生吧
满意
就选满意回答
‘肆’ 单片机流水灯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个流水灯逐个闪动
{
P1=~temp;
delay(100); //调用延时函数
temp<<=1;
}
temp=0x80;
for(i=0;i<8;i++) //8个流水灯反向逐个闪动
{
P1=~temp;
delay(100); //调用延时函数
temp>>=1;
}
temp=0xFE;
for(i=0;i<8;i++) //8个流水灯依次全部点亮
{
P1=temp;
delay(100); //调用延时函数
temp<<=1;
}
temp=0x7F;
for(i=0;i<8;i++) //8个流水灯依次反向全部点亮
{
P1=temp;
delay(100); //调用延时函数
temp>>=1;
}
void delay(uint t) //定义延时函数
{
register uint bt;
for(;t;t--)
for(bt=0;bt<255;bt++);
}
(4)流水灯驱动单片机扩展阅读
51单片机流水灯的源代码如下
#include<reg51.h>
#include<intrins.h>
voiddelay(inta)
{
inti;
while(a--)for(i=0;i<110;i++);
}
main()
{
inti;
while(1)
{
P0=0xfe;
for(i=0;i<8;i++)
{
P0=_crol_(P0,1);
delay(500);
}
}
}
‘伍’ 求51单片机驱动32盏LED流水灯(单向流水,全部亮时闪烁两次,双向流水,全部亮时闪烁两次)的C程序!谢谢
这个比较简单吧
uchar table[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
void delay();//自己写吧 延迟一秒
void led_blink();//~~~~~~~~~~~~
void single_stream();//单向流水函数声明
void double_stream();//~~~~~~~~
void led_blink() //全部亮时闪烁两次
{
uchar i;
if(P3^7==0)
{ i=2;
while(i--)
{
P0=0x00;//低电平点亮
P1=0x00;
P2=0x00;
P3=0x00;
delay();
P0=0xff;//熄灭
P1=0xff;
P2=0xff;
P3=0xff;
delay();
}
}
}
void single_stream()//单向流水灯
{
uchar i;//自己定义一下 unsigned char
for(i=0;i<8;i++)
{
P0=table[i];//逐个点亮led0-7 第零组
delay();
}
for(i=0;i<8;i++)
{
P1=table[i];//第一组
delay();
}
for(i=0;i<8;i++)
{
P2=table[i];//第二组
delay();
}
for(i=0;i<8;i++)
{
P3=table[i];//第三组
delay();
}
}
void double_stream()//这个你也自己写吧
{
}
void main()//main 函数就调用下 前面的就可以了。。
{
while(1)
{
single_stream();
led_blink();
double_stream();
led_blink();
}
}// 大概就是这样。。我没测试
‘陆’ 单片机流水灯程序
程序如下:
#include <reg52.h>
sbit led1 = P2^0;
sbit led2 = P2^1;
sbit led3 = P2^2;
sbit led4 = P2^3。
让电子信息技术与单片机技术相融合,有效提高了单片机应用效果。作为计算机技术中的一个分支,单片机技术在电子产品领域的应用,丰富了电子产品的功能,也为智能化电子设备的开发和应用提供了新的出路,实现了智能化电子设备的创新与发展。
从二十世纪九十年代开始,单片机技术就已经发展起来,随着时代的进步与科技的发展,目前该技术的实践应用日渐成熟,单片机被广泛应用于各个领域。现如今,人们越来越重视单片机在智能电子技术方面的开发和应用,单片机的发展进入到新的时期。
无论是自动测量还是智能仪表的实践,都能看到单片机技术的身影。当前工业发展进程中,电子行业属于新兴产业,工业生产中人们将电子信息技术成功运用。
‘柒’ 如何用单片机做流水灯
因为电路用单片机控制,所以电路非常简洁。其电路原理图见下图,印制板图如下图所示。
电路的核心部分是AT89C2051单片机,前面提到它有Pl和P3两组I/O口,我们这里只用到Pl口,共8个引脚。图中Cl、R9组成典型的上电复位(即在加电时单片机复位)电路,XTAL、C2、C3与AT89C2051片内振荡电路组成时钟振荡器。值得注意的是,C2、C3的容量不能与图中数值偏差太大,否则可能引起不起振或振荡不稳定。XTAL的频率可以在4-20MHz之间,不过,频率的变化会导致程序运行速度的变化,这样就需要调整延时子函数的参数。事实上,不调整参数亦可,只是此时延迟时间不再是1秒,其延迟时间会随着XTAL频率的降低而增加。
二、软件部分
本程序包含两个函数,一个是主函数,另一个是延时子函数。源程序如下(为了便于讲解,我们为每行程序加上了编号):
程序各行作用如下:
00行:把AT89C2051的头文件“AT89x051.H”包含进来。
01行:声明Delay()延时子函数,该函数有一个无符号整型参数k,同时函数前面的void表明函数不返回函数值。
02行:延时子函数的开始,同时声明两个无符号整型变量i和j。
不过请注意,这里没有象上期的程序一样,把表示函数开始的“{”单独成行,而是把下一行写在一起了。事实上,写C程序的时候,可以把多行写作一行,C编译器只要遇到分号就认为是一行语句的结束。
当然,我们不能因为C程序有这个特点,就随意把多行合作一行书写,实际书写C程序的时候,还是要养成良好的程序书写习惯,按照约定俗成的原则来书写。
03行:声明for()循环。这个循环的初始条件是i=0,终止条件是i<k,循环计数是每循环一次,用手计数的变量i加1。因此,这个循环的循环次数就是k次。这样,只要改变k的值(即改变Delay()延时子函数的参数k的值),就可以很容易地控制循环次数,从而获得不同的延时时间。
04行:声明嵌套在03循环中的一个新的for()循环,这个循环与上一个循环相似,其循环次数是120次。本循环与上一个循环嵌套后,使得总的循环次数达120×k次。
05行:第一个分号,表示L条空语句,占用一个机器时间,以实现延时的目的。后面的两个“}”中,第一个“}”是04行for()循环的结束标志,程序遇到它时,将自动返回04行,使用于循环计数的变量j加1,同时判断j是否小于120,如果否,则转入05行;第二个是03行for()循环的结束标志,程序遇到它则会返回03行
‘捌’ 如何在实现led流水灯时用单片机精确控制流水灯切换时间
1、首先新建一个工程(新项目)。
2、其次查看原理图确定需求(流水灯)对应LED引脚在单片机上的哪个引脚。
3、然后编写程序(通过查看原理图可以看到需要控制整个P2口以控制8个LED灯)。
4、最后编译程序,下载程序至开发板,查看效果(调试)即可。
‘玖’ 什么是单片机流水灯
就是单片机驱动多个LED灯,亮的时候顺序亮,灭的时候也是顺序灭,看起来就像流水一样。
‘拾’ 关于单片机流水灯的问题
12MHz为时钟周期,如果不分频,定时器周期也为12MHz,51单片机为12分频。
以下计算均为不分频。
Fc = 12MHz, Time = 1s ,计数次数为12_000_000,如果有16bit定时器,计数上限65535,不可以满足,因此要配合软件计数。12000000 = 60_000 X 200.
硬件连接为:
发光二极管的压降为1~3V,
额定电流:20mA
如果用单片机IO口直接驱动,假设输出电压为5V,压降1.2V,那么分压电阻R = (5-1.2)/0.02 =240(ohm),当然了一般可以用1K的电阻。有时候单片机驱动能力不足,要上拉电阻,这个阻值要根据单片机倒灌电流的阈值计算,一般阻值1~10K