AT89S52驱动LED灯闪烁失败,求解????

2020-02-04 09:16发布

单片机驱动发光二级管.jpg (72.61 KB, 下载次数: 0) 下载附件 LED驱动电路 2012-4-6 22:03 上传 ,这是我是用的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灯只是亮了,但没有闪烁,求解????????????????
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
18条回答
电子蔡鸟
1楼-- · 2020-02-04 11:25
将 if(num==20) 改成 if(num==100)或者更大试试...
arndei
2楼-- · 2020-02-04 14:02
 精彩回答 2  元偷偷看……
turf456
3楼-- · 2020-02-04 15:10
三极管用的不好
zyyn123
4楼-- · 2020-02-04 16:45
看你接的是哪个接口了,P0口要接上拉电阻的。
Sullivan
5楼-- · 2020-02-04 18:27
电路的问题。这是射随,虽说射随输入阻抗高也没高到这个份上。
1,P0是否上拉,1K左右强上拉或直接用推挽端口。
2,10K电阻去掉,射随不需要Rb
lryxr2507
6楼-- · 2020-02-04 23:19
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;   
  }
}

一周热门 更多>