51单片机之外设——点亮LED
来源:互联网 发布:网络中国算命 编辑:程序博客网 时间:2024/06/01 09:45
前面介绍了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的亮灭。
具体驱动部分的代码如下:
- 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单片机之外设——点亮LED
- 51单片机之外设——点亮LED
- 51单片机之外设——玩转数码管
- 51单片机之外设——玩转数码管
- 单片机开发——点亮你的LED小灯
- Linux下51单片机的led点亮
- 51单片机之外设——74HC138、74HC02、74HC573讲解(一)
- 51单片机之外设——74HC138、74HC02、74HC573讲解(二)
- 51单片机之外设——74HC138、74HC02、74HC573讲解(三)
- 51单片机之外设——74HC138、74HC02、74HC573讲解(一)
- 51单片机之外设——74HC138、74HC02、74HC573讲解(二)
- 51单片机之外设——74HC138、74HC02、74HC573讲解(三)
- 在单片机上点亮LED
- PIC单片机花式点亮LED
- TQ210 —— 点亮LED
- 点亮LED——汇编
- 菜鸟之学习51单片机(三)点亮LED灯
- 51单片机 学习之旅[1] 点亮第一个LED
- 在 CMD下使用java运行类出现“找不到或无法加载主类”
- 回文三位数
- 51nod 1453 抽彩球(组合数)
- 实验三:内部模块化的命令行菜单小程序V2.0
- 有趣的现象,改天详细钻下
- 51单片机之外设——点亮LED
- Java-final,finally和finalize
- ES6--iterator和for-of循环
- HDU 4790 Just Random
- Web项目优化
- js之原型链与继承
- Redis学习日志(三)
- 重载和重写
- JAVA单例模式的7种方式