c51单片机led奇数偶数亮_【单片机自学】2.如何用单片机点亮一个LED

发光二极管

发光二极管简称为LED。由镓、砷、磷的化合物制成的二极管,当电子与空穴复合时能辐射出可见光,因而可以用来制成发光二极管。在电路及仪器中作为指示灯,或者组成文字或数字显示。磷砷化镓二极管发红光,磷化镓二极管发绿光,碳化硅二极管发黄光。

发光二极管与普通二极管一样也具有单向导电性。当给发光二极管加上大于其导通电压的正向电压后,就会有电流产生,同时发出相应颜色的光,不同颜色的二极管的工作也是不一样的,一般发光二极管的工作电压是2V,其工作电流大多为5—20mA,因此如果用5V的电源进行供电则需要加入限流电阻,其阻值由下式计算:

R=U-Ue/I

利用单片机控制LED的工作原理

6196f697232fb18bd52dc50993e475b1.png

图3.1.1 LED工作原理图

单片机的I/O口有两种状态“1”和“0”,当为“1”时其管脚输出为高电平,即为5V,当为“0”时为低电平,即为0V。

由上图可以,当P0.0为高时发光二级管两端电压相同,即不会产生电流,发光二极管就不会发光,当P0.0为低时,5V和P0.0就会有5V的电压,就会有电流流过LED0,使发光二极管发光。这样我们通过控制单片机的I/O口的高低电平就能实现对LED 的亮灭控制。

3.1.1使LED间隔亮灭

c51单片机led奇数偶数亮_【单片机自学】2.如何用单片机点亮一个LED_第1张图片

图3.1.2 实物连接图

c51单片机led奇数偶数亮_【单片机自学】2.如何用单片机点亮一个LED_第2张图片

图3.1.3 LED间隔亮灭程序

单片机IO口	模块接口	杜邦线数量	功能
P0.0	         LED1	         1	         控制LED1
P0.1	         LED2	         1	         控制LED2
P0.2	         LED3	         1	         控制LED3
P0.3	         LED4	         1	         控制LED4
P0.4	         LED5	         1	         控制LED5
P0.5	         LED6	         1	         控制LED6
P0.6	         LED7	         1	         控制LED7
P0.7	         LED8	         1	         控制LED8

表3.1.1 LED间隔亮灭接线方式

实验现象:LED间隔亮灭,第一个LED不亮,第二个亮,第三个不亮……

c51单片机led奇数偶数亮_【单片机自学】2.如何用单片机点亮一个LED_第3张图片

图3.1.4 LED间隔亮灭运行图

程序讲解:

1、#include在reg52.h中有为单片机中特殊寄存器定义的宏,例如P0对应的寄存器为0X90,直接用P0就代替了枯燥的数字,减轻程序员的记忆内容。

2、main()函数。C 程序最大的特点就是所有的程序都是用函数来装配的。main()称之为主函数,是所有程 序运行的入口。其余函数分为有参或无参两种,均由 main()函数或其它一般函数调用,若调用的是有参函数,则参数在调用时传递。 一个程序有且只有一个 main 函数。

3、while()。计算机的一种基本循环模式。 当括号内表达式的值为“1”进入循环,不满足则跳出。因为本程序只是使一个I/O口拉低,因此在循环里不需要任何内容。

3.1.2 一个LED闪烁

c51单片机led奇数偶数亮_【单片机自学】2.如何用单片机点亮一个LED_第4张图片

图3.1.4 LED闪烁流程图

延时原理:单片机每执行一条指令都需要一定的时间(t),如果某条指令执行N次那么所耗费的时间将会是T=N*t;我们可以通过改变N的大小来改变延时的时间长短。

c51单片机led奇数偶数亮_【单片机自学】2.如何用单片机点亮一个LED_第5张图片

图3.1.5 实物连线图

杜邦线连接——单片机IO和模块接口

单片机IO口	模块接口	杜邦线数量	功能
P0.0		LED1		1		LED闪亮

表3.1.2 LED闪烁接线方式

c51单片机led奇数偶数亮_【单片机自学】2.如何用单片机点亮一个LED_第6张图片

c51单片机led奇数偶数亮_【单片机自学】2.如何用单片机点亮一个LED_第7张图片

图3.1.6 LED闪烁程序

程序讲解:

sbit 这个关键字是C51中特有的,用于定义 SFR(特殊功能寄存器)的位变量。 sbit LED=P0^0; 表示定义发光管连接的硬件端口, LED 定义在P1 (特殊功能寄存器的第0位,即P1.0,定义了这个端口以后,下面对P1.0的操作,我们就可以直接用 LED 代替,

LED=1; //将P1.0 口赋值 1,对外输出高电平

LED=0; //将P1.0 口赋值 0,对外输出低电平

由于sbit定义位变量,所以赋值结果只有 0和 1。

实验现象:开发板上的第一个LED闪亮

你可能感兴趣的:(c51单片机led奇数偶数亮)