输出功能是单片机数字控制的最基础功能。I/O是input/output的缩写,即输入输出端口。每个设备都会有一个专用的I/O地址,用来处理自己的输入输出信息。
输出的原理:如果我们将单片机比作一个水塔,这个水塔有进水管和出水管两根水管。那么,出水管相当于输出功能,用于对外供水,能量是由内向外的。
最基础的实例中,LED灯亮灯灭的控制是最容易理解I/O输出功能的。LED(Light EmittingDI/Ode),发光二极管,主要由支架、银胶、晶片、金线、环氧树脂五种物料所组成。LED是一种能够将电能转化为光能的半导体,它改变了白炽灯钨丝发光与节能灯三基色粉发光的原理,而采用电场发光。
发光二极管与普通二极管一样也具有单向导电能性。当给发光二极管加上正向电压(大于LED的正向压降)就会发光,当给发光二极管加上负向电压就不会发光。发光二极管的发光亮度与通过的工作电流成正比,一般情况下,LED的正向工作电流在10mA左右,若电流过大时会损坏LED,因此使用时必须串联限流电阻以控制通过管子的电流。限流电阻R可用下式计算:
R = (E - UF) / IF (式中E为电源电压,UF为LED的正向压降,IF为LED的工作电流。)
普通发光二极管的正向饱和压降为1.4V-2.1V,白色LED达到3V。正向工作电流5-20mA。LED广泛应用于各种电子电路、家电、仪表等设备中、做电源或电平指示。控制LED灯的亮灭只需要一个开关,它只有两种状态,开或关、亮或灭。
这就是数字信号的基础电平信号,如果用单片机控制,只需要把LED加限流电阻接到单片机任一I/O端口。
程序如下:
#include<reg52.h> Sbit LED = P1^0 Main(){ LED = 0 } |
这里需要注意的是,在C语言中,再大的程序都有且只有一个main函数。程序从这里开始,也从这里结束。LED的亮灭就是理解I/O输出的最简单例子。
你了解了吗?