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的亮灭。
具体驱动部分的代码如下:
2
3
当然,我们也可以添加适当的延时,让 LED 具有闪烁的功能;用适当的代码或函数移,使得具有移位的功能,这里不再详细说明。
其中,这里再提一点:
P2 = 0xf0,即为 P2 = 0b11110000,让P0~P3为0,P4~P7为1。 “0x”是表示后面为十六进制的数,“0b”是表示后面为二进制的数。而0x也就是用4个二进制数表示成为一个十六进制数。但是我们为什么不写成P0 = 0b11110000,因为我们写代码用的 Keil 的 C 编译器是不支持二进制数的,它只能识别十进制数和十六进制数,所以我们写成0x的形式。其实,用十六进制数也方便了许多。
这样,我们就点亮了LED灯!
未来待续……
一、首先,我们来看什么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灯!
未来待续……
相关文章推荐
- 51单片机基础学习(1)点亮一个LED灯
- 51单片机之外设——74HC138、74HC02、74HC573讲解(二)
- 51单片机做的74HC595驱动控制LED
- 单片机学习之点亮LED小灯
- 51单片机之外设——74HC138、74HC02、74HC573讲解(三)
- 单片机小白学步系列(十四) 点亮第一个LED的程序分析
- 51单片机之外设——玩转数码管
- 流水灯51单片机最小系统,顺序、反向点亮,从左到右再从右到左点亮
- 51单片机高级外设和项目篇-免费下载
- 点亮 LED 灯 , 外设基地址初始化
- tiny6410裸机实验第2章--------------点亮LED灯(外设基地址和关闭看门狗)
- 51单片机之外设——玩转数码管
- 基于proteus的51单片机仿真实例十七、用不同的数据类型控制LED灯的闪烁频率
- 51单片机外设之——矩阵键盘(传统法一)
- stm8单片机点亮LED中断定时串口读写功能测试笔记
- 51单片机开发系列四_LED点阵扫描显示
- 51 单片机:在 P0 口接上 8 个 LED,实现每次亮两个灯的流水灯
- 51单片机8*8点阵LED显示原理及程序
- 51单片机之点亮多个小灯
- 51单片机 8*8LED点阵横向流水 使用位运算生成中间帧