单片机的IO驱动LED灯电路,需要用到三极管,原理图,并说明

搞不明白单片机I/O口驱动LED为什么要用到那么复杂的电路,是单纯的为了复杂而复杂吗?很晕!如果一个I/O口驱动一个LED,只要I/O口低电平有效LED串一个470Ω的电阻即可,如果驱动多个LED只要按下图即可:

如果Vcc=5v;则R0=1KΩ-5.1KΩ;Rn=470Ω。如果晶体管用S8550,那么同时点亮5个LED是没问题的。

单片机工作原理图说明

注释在如下图中。

51单片机最小系统原理图

单片机最小系统,或者称为最小应用系统,是指用最少的元件组成的单片机可以工作的系统.对51系列单片机来说,最小系统一般应该包括:单片机、电源、晶振电路、复位电路。

1、单片机

89C51单片机一片

2、电源

5V直流电源1个

3、晶振电路

包括12MHz晶振1只、30pF瓷片电容2只

4、复位电路

10uF电解电容1只,4k7电阻1只。

电路如下:

向左转|向右转

注:上图中/EA(31引脚)也可直接连接电源VCC,2k电阻可去除。

绿色空调器单片机控制电路原理与维修图说单片机的IO驱动LED灯电路,需要用到三极管,原理图,并说明

单片机最小系统原理描述,原理图,以及电路说明

51单片机最小系统电路介绍

1.51单片机最小系统复位电路的极性电容C1的大小直接影响单片机的复位时间,一般采用10~30uF,51单片机最小系统容值越大需要的复位时间越短。

2.51单片机最小系统晶振Y1也可以采用6MHz或者11.0592MHz,在正常工作的情况下可以采用更高频率的晶振,51单片机最小系统晶振的振荡频率直接影响单片机的处理速度,频率越大处理速度越快。

3.51单片机最小系统起振电容C2、C3一般采用15~33pF,并且电容离晶振越近越好,晶振离单片机越近越好4.P0口为开漏输出,作为输出口时需加上拉电阻,阻值一般为10k。

设置为定时器模式时,加1计数器是对内部机器周期计数(1个机器周期等于12个振荡周期,即计数频率为晶振频率的1/12)。计数值N乘以机器周期Tcy就是定时时间t。

设置为计数器模式时,外部事件计数脉冲由T0或T1引脚输入到计数器。在每个机器周期的S5P2期间采样T0、T1引脚电平。当某周期采样到一高电平输入,而下一周期又采样到一低电平时,则计数器加1,更新的计数值在下一个机器周期的S3P1期间装入计数器。由于检测一个从1到0的下降沿需要2个机器周期,因此要求被采样的电平至少要维持一个机器周期。当晶振频率为12MHz时,最高计数频率不超过1/2MHz,即计数脉冲的周期要大于2ms。

标识符号地址寄存器名称

P30B0HI/O口3寄存器

PCON87H电源控制及波特率选择寄存器

SCON98H串行口控制寄存器

SBUF99H串行数据缓冲寄存器

TCON88H定时控制寄存器

TMOD89H定时器方式选择寄存器

TL08AH定时器0低8位

TH08CH定时器0高8位

TL18BH定时器1低8位

TH18DH定时器1高8位

要用51单片机控制8个LED亮灭的原理图+程序+解说

本来以为这个程序很简单的,没想到写了快三个小时。哎学艺不精啊。贴出来给你研究吧。我不想做过多的解释了,我是按我理解的你出的题目做的,可能和你的本意不是很一样,

1、依次亮,依次灭:从一个灯亮到全亮,再到全灭,每次改变一个灯亮灭

2、奇偶号灯间隔亮灭:隔一个灯亮一个灯亮灯时间为1s,没有灯全灭的时候

3、依次闪烁、切换时间为3秒,闪烁时间为2秒,我理解的是,没三秒钟有一个灯在闪烁,其中有一秒钟是灭灯状态

程序中使用了P1口与8个发光二极管相连,具体电路图你百度一下吧,还有使用了一个按键,该按键与P3.7相连,低电平为按下状态。

程序如下:

#include <reg52.h>

#include <intrins.h>

/*变量声明:

i、j、k都是记录计时器溢出次数的变量,

stat是记录当前显示状态的变量,由按键key控制

temp是状态2中保护P1口状态的变量*/

unsigned char i=0,j=0,k=0,stat=0,temp;

bit flag=1; //状态1处于灭灯还是亮灯状态的变量,1为依次亮灯,0为依次亮灯

sbit key=P3^7; //按键控制

void init(); //初始化函数

void delay(unsigned int N); //延时函数

void keyscan(); //键盘扫描函数

void main()

{

init();

while (1)

{

switch (stat)

{

case 0: //0方案

if(i==20&&flag)

{

i=0;

P1=P1<<1; //依次亮灯

temp=P1;

if(temp==0)

{

flag=0;

}

}

if(i==20&&!flag)

{

i=0;

if(P1==0xff)

{

flag=1;

P1=0xfe;

}

if(!flag)

{

P1=P1<<1; //依次灭灯

temp=P1;

P1=temp+1;

}

}

break;

case 1: //2方案

if(i==20)

{

i=0;

P1=~P1; //去反后亮灯状态为灭灯,P1初值取0x55或0xaa,奇偶交替亮灯

}

break;

case 2: //3方案

if(j==60)

{

P1=temp;

P1=_crol_(P1,1);

temp=P1; //保护P1口亮灯状态

k=0;

j=0;

}

//闪烁部分,应该可以优化

if(k<5)

{

P1=0xff;

}

else if(k>=5&&k<10)

{

P1=temp;

}

else if(k>=10&&k<15)

{

P1=0xff;

}

else if(k>=15&&k<20)

{

P1=temp;

}

else if(k>=20&&k<25)

{

P1=0xff;

}

else if(k>=30&&k<35)

{

P1=temp;

}

else if(k>=35&&k<40)

{

P1=0xff;

}

//-----------------------------------

break;

}

keyscan();

}

}

void init()

{

TH0=0x3c; //定时器赋初值定时时间50ms

TL0=0xB0;

TMOD=0x01; //设置定时器工作方式为方式1

EA=1; //开总中断

ET0=1; //开中断允许位

TR0=1; //定时器计数

P1=0xfe; //这里假设led灯与P1口相连并且

//低电平有效

}

void delay(unsigned int N)

{

int i,j;

for (i=0;i<N;i++);

for (j=0;j<110;j++);

}

void keyscan()

{

if(!key)

{

delay(10); //消抖

if(!key); //确认有键按下

stat++;

if(stat==3)

{

stat=0;

}

//右键按下复位

i=0;

j=0;

k=0;

TH0=0x3c;

TL0=0xB0;

switch (stat)

{

case 0:

P1=0xfe;

flag=1;

stat=0;

break;

case 1:

P1=0x55;

break;

case 2:

P1=0xfe;

temp=P1;

break;

}

//-----------------------------------

while(!key) //此循环中的函数和主函数中的显示函数是同一个

//用于长按键的显示,可以去掉,去掉长按键不会正常显示,松开按键后正常

{

switch (stat)

{

case 0:

if(i==20&&flag)

{

i=0;

P1=P1<<1;

temp=P1;

if(temp==0)

{

flag=0;

}

}

if(i==20&&!flag)

{

i=0;

if(P1==0xff)

{

flag=1;

P1=0xfe;

}

if(!flag)

{

P1=P1<<1;

temp=P1;

P1=temp+1;

}

}

break;

case 1:

if(i==20)

{

i=0;

P1=~P1;

}

break;

case 2:

if(j==60)

{

P1=temp;

P1=_crol_(P1,1);

temp=P1;

k=0;

j=0;

}

if(k<5)

{

P1=0xff;

}

else if(k>=5&&k<10)

{

P1=temp;

}

else if(k>=10&&k<15)

{

P1=0xff;

}

else if(k>=15&&k<20)

{

P1=temp;

}

else if(k>=20&&k<25)

{

P1=0xff;

}

else if(k>=30&&k<35)

{

P1=temp;

}

else if(k>=35&&k<40)

{

P1=0xff;

}

break;

}

}

}

}

void timer0() interrupt 1

{

TH0=0x3c;

TL0=0xB0; //溢出后重新赋初值

//定时器中断时间为50ms

i++; //20次中断时间为1s

j++; //40次中断时间为2s

k++; //60次中断时间为3s

}

有什么不懂的可以百度Hi我

单片机的IO驱动LED灯电路,需要用到三极管,原理图,并说明、绿色空调器单片机控制电路原理与维修图说,就介绍到这里啦!感谢大家的阅读!希望能够对大家有所帮助!

  • UC3846控制芯片工作原理控制图 逆变焊机原理与用途
  • 数字万用表电阻档测试二极管正反向没有阻值(使用万用表测量二极管的正向电阻,为什么各档)
  • 学单片机需要学数电模电吗(学单片机要先学数电模电吗)
  • 电工怎么选择适合自己用的万用表(电工初学者买什么样的万用表好)
  • 单片机需要同时运行多个任务怎么办(单片机怎么同时执行多个任务)
  • 电机保护的方案取决于负载的机械特性
  • 绝缘电阻表正负搭接不复零位是怎么回事
  • 短路怎么用万用表查