找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

LED亮度不够 附单片机程序

查看数: 1703 | 评论数: 6 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2022-11-27 17:26

正文摘要:

我想写第5个练习。烧录进去现象是对的,但是LED闪烁那部分非常暗,有时候写其他程序的时候,也会出现LED很暗的情况,我现在知道的是肯定不是硬件的问题,但是我也找不出是什么问题,感觉好像是单片的特性一类的..... ...

回复

ID:1054240 发表于 2022-11-28 17:16
我换了一种写法,可还是有问题,就是在LED闪烁那一部分,就是如果我把0xff写在前面了,它能正常闪烁,但LED还是很暗;如果我把0x00写在前面了,它就不闪烁了,LED也很亮,完成循环才熄灭,相当于我写的闪烁部分根本没有执行。
以下是代码:

#include <REGX51.H>

typedef char u8;
typedef int u16;

#define LED_PORT P2//宏定义整个LED端口

void delay(u16 x)//延时函数,当ten_us传入1,大约延时10us
{
        u16 y,z;
        for(y=0;y<x;y++)
                for(z=0;z<115;z++);
}

main()
{  
  u8 i=0,b=0;//定义变量i和b
  while(1)
  {
          for(i=0;i<8;i++)                                         
          {
              LED_PORT=~(0x01<<i);//从LED1亮起,i每增加一次,移位一次
              delay(200); // 延时大约0.2秒
          }
          for(i=0;i<8;i++)
          {
              LED_PORT=~(0x80>>i);//从LED8亮起,i每增加一次,移位一次
              delay(200);// 延时大约0.2秒
             }
          b++;//b自加1
          if(b%2==0)//上下循环两次后进入此循环
          {                                    
                  for(i=0;i<5;i++)
                  {
                          LED_PORT=0xff;//LED全灭
                          delay(300);
                          LED_PORT=0x00;//LED全亮
                  }
          }
  }
}


ID:1047841 发表于 2022-11-28 00:00
这个真的是 硬件的问题,跟51单片机的特性相关,因为单片机的io口驱动能力弱,即输出电流1mA都不到,你如果要使LED的亮度高,必须接一个pnp三极管, 能极大的增强电流,在提供led 1.8~2.5v的电压下,串一个220Ω的电阻,亮度就足够量。
ID:384109 发表于 2022-11-27 23:41
要看电路图,能亮不代表电路没问题
ID:161164 发表于 2022-11-27 21:31
亮的时间不够


ID:672792 发表于 2022-11-27 20:00
LED正极串联一个1K电阻到电源正极,LED负极接单片机引脚

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表