一、LED基本原理和知识
图1 LED共阳极原理图
1.1 LED共阴极和共阳极的含义
LED的最小单元是发光二极管。发光二极管是区分正负极的,正向导通,反向截止。共阴极就是发光二极管的负极连接在一起,共阳极就是发光二极管的正极连接在一起。
1.2 共阴极和共阳极的区别
- 耗能不一样。共阳极二极管的公共端接在高电平,需要高电平时时刻刻处在工作状态;而共阴极二极管公共端接低(GND),只需指定二极管工作时给某个二极管高电平即可,有效降低了功耗,对长时间工作LED来言有效降低了屏热。
- 线路复杂程度不同。一般在实际工程中共阴极二极管比共阳极二极管的线路复杂,共阳极不需要那么多的高电平线路驱动。
二、单个LED的闪烁
2.1 KEIL文件的建立
具体的keil工程文件创建可以参考[1]中的过程。
2.2 LED的闪烁程序
2.3 包含/区分/学习知识点
- #include<reg52.h>和#include”reg52.h”区别
两者来说区别不大,< >的引用是C51库函数里面的文件,而” “是引用我们自己创建的库函数里面的文件。
- while循环函数
while函数的定义为:执行程序里面的函数文件,即i+1,执行完后判断i是否<10,若小于,继续执行,若大于等于则跳出循环。
- DELAY延时函数(掌握和学习)
在单片机中有两种延时方式,一种是软件延时,一种是硬件延时(计时器/计数器)。本知识点主要介绍软件延时函数。
延时函数,i=1时,大约延时10us
图2 STC-ISP生成延时函数
图2所示为STC-ISP自动设置生成延时函数,所使用的晶振为11.0592MHz,以10us为例,自动生成。
我们发现其中多了_nop_()指令,该指令包含在头文件#include<intrins.h>中,所以我们需要专门调用改文件。_nop_()的作用是产生下一条指令,对于延时很短的,要求在us级的,采用“_nop_”函数,这个函数的作用是使程序执行完成后延时几微秒。nop指令为单周期指令,可由晶振频率算出延时时间,对于12M晶振,延时1us。对于延时比较长的,要求在大于10us,采用C51中的循环语句来实现。对上述闪烁程序变换后可得如下程序。
三、LED流水灯的实现
3.1最基础最原始的流水灯实现办法
(1)概念
8个LED灯的定义,以共阳极为例,让某一个灯点亮就是让这个LED灯为低电平。从左到右依次为01111111、10111111、11011111、11101111、11110111、11111011、11111101、11111110。其中1就是高电平、0位低电平,为低电平时LED点亮。
(2)具体程序代码
最基础最原始的流水灯方式,就是单纯让LED按照顺序依次点亮,从而达到流水灯的效果,看似笨拙、程序繁多,却突出流水灯的思想和原理,为后面库函数、左移右移、数组索引法奠定基础。
3.2 移位法实现LED流水灯
(1)具体程序代码
左循环
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!