Ⅰ 单片机 8×8点阵LED 驱动电路
我看了你写的,感到秋收的关键问题是不理解8×8点阵LED驱动电路是如何工作的。
这个8×8点阵LED驱动电路是“行”和“列”的扫描方式工作的,这64个发光管,在每个瞬间只有一个亮。我画了一个简图,图中,红色的仅在1高,A低时工作,同样绿色的仅在2高,D低时工作,黄色的仅在6高,E低时工作,不是同时都亮。
只要64个发光管在1/25秒内扫描一次(或是说整个64只管子,每秒扫描35次以上)视觉上是看不出是扫描的。
行和列的扫描频率是1比8,这样就能有序的工作了。
你的R1,R2电阻也好确定了,你只要按一个发光管的工作来考虑。这里也用不上什么3态,你将OE接0电平就行了。
好好想想吧,搞不清可以HI我,我一般晚上都在。
Ⅱ 单片机中LED显示电路用三极管驱动电路怎么连接啊四个数码管。
三极管的基极接单片机引脚,集电极接+5V电源和数码管的共阳极,发射极接地。OK?
Ⅲ @张飞老师:如何设计单片机控制的2PIN双色LED灯的驱动电路
你的线路好像不对吧 请看我的方案,肯定可以,望采纳,
Ⅳ 单片机驱动LED
如果是NPN三极管的话,把LED的正极接到三极管的发射极,如果是PNP的话,把LED的负极接到三极管的发射极这种导通方式电流最大,注意电流方向,PNP的电流是从发射极流动到基极和集电极,NPN的是集电极和基极的电流通过发射极流出。
Ⅳ 51单片机做个led路灯照明,求1W led驱动电路
给您两个方案,一个是正规方案,另一个是建议方案。
先说简易方案,用三极管与功率电阻组合用单片机控制这是简易方案。然后说明其中作用,三极管选用9013,作用是放大,他的几级串电阻接单片机。他的发射极串x欧姆电阻接地,他的集电极串接led和电阻。其中集电极电阻r和发射极电阻x欧需功率电阻,大小为1W的功率电阻。集电极供电电源是由7808稳压器,若改为7805则可减小阻值,具体电阻阻值这需要计算。
LED有个特性,在未达到额定电压时候是可以点亮的,此时电流小于额定电流很多,但有可能亮度与额定电压下变化并不明显,若超过额定电压,则电流比额定电流会大很多。也就是说需要使led串接电阻,使其电流一定。那么计算阻值时候,比如led额定电流要求300ma,那么我们只要保证他是通过300ma去计算阻值。
由于这个简单方案我做过,故给个红笔更改过的电路图,只不过我是2led串联,红叉代表不接,红线代表链接。具体看图。
最后祝你调试成功,没了。
Ⅵ 单片机的IO驱动LED灯电路,需要用到三极管,求原理图,并说明
搞不明白单片机I/O口驱动LED为什么要用到那么复杂的电路,是单纯的为了复杂而复杂吗?很晕!如果一个I/O口驱动一个LED,只要I/O口低电平有效LED串一个470Ω的电阻即可,如果驱动多个LED只要按下图即可:
如果Vcc=5v;则R0=1KΩ-5.1KΩ;Rn=470Ω。如果晶体管用S8550,那么同时点亮5个LED是没问题的。
Ⅶ 单片机中LED显示电路用三极管驱动电路怎么连接啊四个数码管。
//单片机中LED显示电路用三极管驱动电路四个数码管。可以参考一下
#include<reg52.h>
sbit led0=P3^2;
sbit led1=P3^3;
sbit led2=P3^4;
sbit led3=P3^5;
sbit ledd=P3^7;
unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
unsigned char g,s,b,d,a;
unsigned int num;
void delay(unsigned char x)
{
unsigned char i,j;
for(i=x;i>0;i--)
for(j=110;j>0;j--);
}
void display()
{
P1=table[d];
led3=0;
delay(5);
led3=1;
P1=table[b];
led2=0;
delay(5);
led2=1;
P1=table[s];
led1=0;
delay(5);
led1=1;
P1=table[g];
led0=0;
delay(5);
led0=1;
}
void ont()
{
num=0;
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
}
void main()
{
ont();
while(1)
{
if(a==20)
{
a=0;
ledd=~ledd;
num++;
d=num/1000;
b=num%1000/100;
s=num%100/10;
g=num%10;
}
display();
if(num==10000)
{
num=0;
}
} }
void time_0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
a++;
}