这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 物联网技术 » LED驱动问题

共8条 1/1 1 跳转至

LED驱动问题

助工
2011-08-28 22:43:05     打赏
最近用单片机驱动八位数码管(动态扫描),用P0口控制a-dp,P2口控制选通,没有用其他芯片。一开始直接接的,(P0口和LED管脚间没加电阻、P2口直接练LED)当然驱动不了...单片机输入电压也就+5伏,所以点不亮LED,去网上查了下,大概说是要用三极管放大电流,于是就用三极管(NPN P2接b,+5v接e,c接LED管)和电阻(接在P0、P2口端),LED亮了,但是不扫描,显示的全是一模一样的字符(自定义的),请高手系统讲下下用做I/O口是的驱动问题呢(不外接74系列和外接74系列的接法),3Q



关键词: 驱动     问题    

院士
2011-08-29 09:13:06     打赏
2楼

耐心等等~~


院士
2011-08-29 09:13:21     打赏
3楼

耐心等等~~


菜鸟
2011-09-08 16:06:08     打赏
4楼
请高手指点指点!这也是我常遇到的问题。

高工
2011-09-16 13:02:15     打赏
5楼
提高IO口的驱动能力可以加上拉电阻,
如果电流仍然不够,那就得加BUFFER(74系列)

你的(NPN P2接b,+5v接e,c接LED管)接法错了,

高工
2011-09-16 13:04:02     打赏
6楼
c串电阻接5v ,e接数码管,

助工
2011-09-29 22:24:58     打赏
7楼
谢谢~还是模电学的不扎实呃...最近在重新自学

助工
2012-02-19 23:14:53     打赏
8楼


/*01数码管的显示,查表显示*/

#include <reg51.h>
#include <intrins.h>

void display(unsigned char *lp,unsigned char lc);//数字的显示函数;lp为指向数组的地址,lc为显示的个数

void delay();//延时子函数,5个空指令

code unsigned char table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40,0x00};
   //共阴数码管 0-9 - 空 表

unsigned char l_tmpdate[8]={1,2,3,4,5,6,7,8};//定义数组变量,并赋值1,2,3,4,5,6,7,8,就是本程序显示的八个数
           //可以改成别的数字做相应显示


void main(void) 
{
 unsigned char i=0;
 while(1){
  display(l_tmpdate,8); //用数字显示函数显示八个数字
  
 }
}
void display(unsigned char *lp,unsigned char lc)//显示
{
 unsigned char i;  //定义变量
 P2=0;     //端口2为输出
 P1=P1&0xF8;    //将P1口的前3位输出0,对应138译门输入脚,全0为第一位数码管
 for(i=0;i<lc;i++){  //循环显示
 P2=table[lp[i]];  //查表法得到要显示数字的数码段
 delay();    //延时5个空指令 
 if(i==7)    //检测显示完8位否,完成直接退出,不让P1口再加1,否则进位影响到第四位数据
  break;
 P2=0;     //清0端口,准备显示下位
 P1++;     //下一位数码管
 }
}
void delay(void)        //空5个指令
{
 _nop_();_nop_();_nop_();_nop_();_nop_();
}


共8条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]