您的位置:首页 > 其它

51单片机之外设——点亮LED

2017-10-03 19:28 267 查看
前面介绍了74HC138、74HC02、74HC573。所以接下来的几个外设中,我们将以这三款芯片为基础,去驱动他们!

一、首先,我们来看什么LED?怎么驱动正负极? 

LED全英文名是“Light Emitting Diode”,中文名称为“发光二极管”,它有直插式和贴面式的两种封装。现今,为了节省开发板的利用空间,一般在开发板上采用的都是贴片式封装。但是无论是哪种封装,我们都必须搞清楚它的正负极性。一般而言,直插式的 LED ,长的一脚是正极(连接电源的正极)、短的一脚为负极(连接电源的负极)。另外,圆柱形的 LED 负极侧面会有一个平滑的切面,而正极侧是一个圆弧面。对了贴面的 LED ,我们也能看到它的背面会有箭头或者是 T 字型的标志(一般是绿色的标志)指向 LED
的负极。

二、 LED 的工作原理: 

它和普通的二极管一样,具有单向导通特性。所以通过它的电流应是从正极流向负极。我们再选取一个特性的电阻,将电流限定在它正常的工作范围之内即可。 LED 常见的导通电压为 1.7V 左右(其实,不同颜色的 LED 导通压降不同),工作电流一般为1~20mA,所以大多数开发板选择 1K欧 或者330欧姆的电阻为 LED 提供限流保护。

三、接下来看一下连接 LED 的原理图: 






 

由上图可见,我们通过控制P2.5P2.6P2.7,控制Y4C,再控制锁存器的开关,用P0口实现LED的亮灭。 

具体驱动部分的代码如下:
P2 = (P2 & 0x1f)|0x80;  //先将P2口的高三位置0,第5位保持原来的状态不变,再或上0x80,使得Y4为0。进而Y4C为1,锁存器打开。
P0 = 0xf0;              //控制P0口,使得高四位输出1,第四位输出0,结合原理图,可知P0口所连接的低四位LED被点亮。
P2 &= 0x1f;             //再使得P2.5P2.6P2.7为0,关闭Y4C所连接的锁存器。以后再控制P0口,并不会影响LED的亮灭情况。
1
2
3

当然,我们也可以添加适当的延时,让 LED 具有闪烁的功能;用适当的代码或函数移,使得具有移位的功能,这里不再详细说明。 

其中,这里再提一点: 

P2 = 0xf0,即为 P2 = 0b11110000,让P0~P3为0,P4~P7为1。 “0x”是表示后面为十六进制的数,“0b”是表示后面为二进制的数。而0x也就是用4个二进制数表示成为一个十六进制数。但是我们为什么不写成P0 = 0b11110000,因为我们写代码用的 Keil 的 C 编译器是不支持二进制数的,它只能识别十进制数和十六进制数,所以我们写成0x的形式。其实,用十六进制数也方便了许多。 

这样,我们就点亮了LED灯!

未来待续……
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: