AT89S52驱动LED灯闪烁失败,求解????
,这是我是用的LED驱动电路。以下是我使用的LED灯1S闪烁的程序:
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit led1=P1^0;
uchar num;
void main()
{
TMOD=0x01;
TH0=(65536-45872)/256;
TL0=(65536-45872)%256;
EA=1;
ET0=1;
TR0=1;
while(1);
}
void T0_time() interrupt 1
{
TH0=(65536-45872)/256;
TL0=(65536-45872)%256;
num++;
if(num==20)
{
num=0;
led1=~led1;
}
}
但是真正工作的时候,LED灯只是亮了,但没有闪烁,求解???????????????? 将 if(num==20) 改成 if(num==100)或者更大试试... 本帖最后由 arndei 于 2012-4-6 22:30 编辑
楼主图上是P0口,程序里是P1口;P0口是开漏输出,要加上拉电阻的 三极管用的不好 看你接的是哪个接口了,P0口要接上拉电阻的。 电路的问题。这是射随,虽说射随输入阻抗高也没高到这个份上。
1,P0是否上拉,1K左右强上拉或直接用推挽端口。
2,10K电阻去掉,射随不需要Rb void T0_time() interrupt 1
{
TH0=(65536-45872)/256;
TL0=(65536-45872)%256;
num++;
if(num==1)
{
led1=0;
}
if(num==20)
{
led1=1;
}
if(num==40)
{
num=0;
}
} arndei 正解! turf456 发表于 2012-4-6 22:29 static/image/common/back.gif
三极管用的不好
同意。。。 三极管不是这样用吧?这样是射极跟随器. NPN也好 PNP也好 把负载串接在集电极上 rclong 发表于 2012-4-7 12:34 static/image/common/back.gif
NPN也好 PNP也好 把负载串接在集电极上
为什么?求解 wszyjsw2 发表于 2012-4-7 13:40 static/image/common/back.gif
为什么?求解
单电源系统(0~5V,0~3.3V)里
如果三极管基集接IO口
要让三极管做电流放大作用 或者饱和导通作用
这样接才能保证
wszyjsw2 发表于 2012-4-7 13:40 static/image/common/back.gif
为什么?求解
这个三极管的基本用法,共射接法才能放大饱和,你用射随接法输出电压为基极电压-0.7. rclong 发表于 2012-4-7 15:37 static/image/common/back.gif
单电源系统(0~5V,0~3.3V)里
如果三极管基集接IO口
要让三极管做电流放大作用 或者饱和导通作用
就是把D?和R?串在VCC与C,把三极管看成一个受控的开关。 先看硬件再看软件 surelost2013 发表于 2012-4-7 15:43 static/image/common/back.gif
就是把D?和R?串在VCC与C,把三极管看成一个受控的开关。
NPN管就是串在VCC与C之间
驱动继电器 小型直流电机 都可以用这个办法
我个人偏向于使用PNP管 负载串在C与GND间
这样做能是IO为低电平时导通 上电复位阶段不容易误动作 而且低电平驱动能力较强
http://www.eefocus.com/data/09-01/4155_1231159270/1231405156.jpg 这个图其实是可以工作的。至于不闪要检查程序和实际接的io口是不是弄错了。 比较楼上的接法跟楼主位的接法,各有好处.
楼主的接法是三极管关闭延迟比较小,基极电流也小,但输出电压为基极电压减0.7V,这个要考虑上去,而P0口主要是没有接上接电阻.
楼上的三极管处于开关状态,所以延迟相对大了一点,一般场合都没什么问题的.
页:
[1]