用单片机来点亮LED,这几乎是每个同学学习单片机的第一个实验。那么谁来点,怎么亮?注意这里面涉及到两个研究对象,单片机和LED。要想知道单片机如何来点,先要知道LED为什么亮。这种由分析被控制对象来研究控制对象的思路在本教程后面会反复用到,这里先提出来亮个相。我们先来看LED为什么会亮,也就是说先来了解LED的工作原理。当有电流通过时(达到一定值比如5mA), LED便会发光。至于进一步的发光的工作原理我们不去追究,有兴趣的可以自己查查,不属于我们讨论的内容。根据这个原理,我们只需要给LED正极接在5V电源下,LED负极接地,如图1所示,产生电势差,正向导通,那么LED有电流通过,就发光了。
图1点亮LED,由于电流过高,LED很快熄灭
但是LED会很快熄灭,为什么?假设LED正向导通时两端压价约为2.2V,那么剩余的压降(5-2.2)V会施加在导线上,电阻几乎为0,根据欧姆定律,电流无穷大,LED很快被烧掉。因此我们需要给这个电路加个限流电阻,这个限流电阻应该取多大,同样假设LED正向导通的压价约为2.2V(具体查阅LED厂家提供的参数),电源电压为5V,电流设定为5mA,根据欧姆定律就能算出限流电阻为560R。计算过程如下
R1两端的电压等于电源电压减去LED电压降,电流I取5mA,这样可以计算出电阻R1为560欧姆。这样LED就能持续发光了,如图2所示。
图2串联一个电阻R1,其阻值为560欧姆,此时LED正常发光
那么LED怎么熄灭呢?没有电流通过就可以了。如何实现没有电流?LED两边等电势就行了。因此只需要在LED左边提供一个高电平5V,LED就熄灭了,如图3所示
图3LED两边等势,LED熄灭
以上我们完成了对LED的分析。前面说了,我们要通过分析被控制对象(LED)来操作控制对象(MCU).下面再来分析,如何操作控制对象?首先要知道MCU是什么?根据定义,MCU是具有一定可编程能力的数字电路集合体。那么什么叫做可编程呢?通俗的讲,就是根据人给单片机的不同指令去执行不同的任务。那这样就好办了,如下图所示,LED左边接在了MCU的P1.0引脚。根据前面的分析,只要跟MCU讲:”把你的P1.0引脚输出低电平“,(假设这里我们的单片机输出高电平是5V,低电平是0V。因为有的单片机高电平为3.3V)。这时候LED就点亮了,如果输出高电平,LED就熄灭了,这样就实现了单片机对LED的控制,如图4所示。
图4单片机实现对LED点亮和熄灭的控制
你使用人类语言与单片机交流,单片机是听不懂的。因此你对单片机发送的指令他是听不懂的。那么单片机听的懂什么语言?我们知道单片机只认识0和1.那么我们马上想到用0和1来和单片机对话,这当然可以。其实早期的程序就是直接写0和1的(www.ppptalk.com)。可是这样做对程序员来说太痛苦了,单片机是认识了,程序员却晕倒了。不信的话,你自己在一张A4的纸上填满0和1,姑且不论什么含义,看着就晕倒了。这样就产生了一个问题,用人类语言,单片机听不懂,用单片机的语言,人类使用不方便。因此就各退一步,来个折中吧。用什么呢,C语言(早期是汇编,我们以后再谈),既像机器语言又带有人类语言的味道。这样我们就先把人类语言转成C语言,然后再按照一定的规则把C语言转成机器语言,从而实现人与机器的交流。因此简单来讲,就是把人的语言(或者说指令)先翻译成C语言,然后进一步翻译成机器语言(或者机器指令)。那么这个指令如何传送给单片机呢,这个过程就叫程序烧写,或者程序下载,烧写过程中用到的工具就是烧写器。把机器指令输送到单片机,上电后,单片机就开始执行这个指令,从而到达我们控制器件的目的。其过程如下所示::
图5单片机开发环境搭建流程图。一共包括三个过程,STEP1-把人的指令翻译成C语言,STEP2-把C语言进一步翻译(编译)成机器语言,STEP3-把机器语言传送给单片机,从而实现对单片机的控制
以上这个例子非常简单,但是给出了单片机开发的基本流程。我们来梳理一下这个过程(叁议电子)。首先我们要知道工作器件的原理。注意工作器件是我们最终的目的,比如控制led的目的是用来照明或者指示作用;控制温度传感器的目的是为了测量温度;控制液晶模块的目的是为了要显示特定的内容等等。单片机只是达到最终目的的手段或者途径。因此用单片机来控制工作器件,一开始就要理解工作器件是如何工作的。然后在这个基础上,根据工作器件的需要对单片机传递不同的指令(人类语言)。但是单片机是看不懂人类指令的,因此需要翻译成单片机看得懂的语言,然后把翻译的结果传送给单片机
对于STC89C52RC单片机,编辑和编译指令采用的是KEIL软件,下载程序(烧写指令)采用STC_ISP(宏晶)。因此简单来讲,对于STC89C52RC单片机搭建开发环境,就是安装这个两个软件(KEIL和STC_ISP)
前面罗嗦了这么多,主要是为初学者讲解了单片机开发的初步思想以及单片机开发环境的搭建。主要总结如下两点:
1.从被控制对象入手来研究如何操作控制对象。所谓被控制对象其实就是我们想要使用的外围工作器件,他可以是LED,也可以是温度传感器,步进电机等等,是我们的最终目的,比如让LED闪烁,测量温度,控制转速等等。如何了解他们的工作原理,最好的方式就是阅读厂家提供的说明资料。对于控制对象(单片机),这个也很多,51,MSP430,AVR,PIC等等,如何与他们对话,同样的道理,查看芯片手册(也是官方资料)。
2.了解这两个对象之间的关系后,我们就开始搭建单片机开发环境,编写指令,编译指令,最后烧写指令。
补充内容:发光二极管的导通压降
发光二极管导通后的压降基本稳定在1.2~2V左右,随着电压的升高压降略有升高
对于直插发光二极管压降
主要有三种颜色,这三种颜色的压降都不相同,具体压降参考值如下:
红色发光二极管的压降为2.0~2.2V
黄色发光二极管的压降为1.8~2.0V
绿色发光二极管的压降为3.0~3.2V
直插型发光二极管正常发光时的额定电流约为20mA
对于贴片发光二极管压降:
红色发光二极管压降为1.82~1.88V,额定电流5-8mA
绿色发光二极管压降为1.75~1.82V,额定电流3-5mA
橙色发光二极管压降为1.7~1.8V,额定电流3-5mA
蓝色发光二极管压降为3.1~3.3V,额定电流8-10mA
这里列出这些参数,主要给大家一个简单的印象,在具体项目中要查看使用的发光二极管厂家提供的参数。