历史上的今天
今天是:2025年08月17日(星期日)
2018年08月17日 | 51单片机功能模块学习笔记 — 发光二极管
2018-08-17 来源:eefocus
1. 发光二极管简介
发光二极管是半导体二极管的一种,可以把电能转化成光能。常简写为LED(lightemittingdiode)。
发光二极管与普通二极管一样也具有单向导电性。当给发光二极管加上正向电压(大于LED的正向压降)就会发光,当给发光二极管加上负向电压就不会发光。发光二极管的发光
亮度与通过的工作电流成正比,一般情况下,LED的正向工作电流在10mA左右,若电流过大时会损坏LED,因此使用时必须串联限流电阻以控制通过管子的电流。限流电阻R可用下式计算:
R=(E-UF)/IF
式中E为电源电压,UF为LED的正向压降,IF为LED的一般工作电流。
普通发光二极管的正向饱和压降为1.4~2.1V,正向工作电流为5~20mA.
2. 开发平台硬件连接原理
由以上的原理图,我们可以看出,八个发光二极管的左端连接到公共的电源。若是想要使得二极管发光,根据其单向导电性,我们应该在其右端的对应端口置“0”。
² 那么如何使得LED的端口置“0”呢?
可以将如图所示的LED模块连接到单片机的四个I/O(P0、P1、P2、P3)中的任意一个,通过对于I/O的操作,来控制LED模块的亮灭。
例如,将上图的LED模块连接到单片机的P1口(基于开发板的各个模块都是独立模块的情况下)。从原理图上看,也就是将LED1~LED8连接到单片机的P1.0~P1.7口。那么,如果我们想要使得LED1点亮,就应该给单片机的P1.0口送“0”;如果我们想要点亮全部的灯,就应该将P1.0~P1.7空全部置“0”。
弄懂了原理,下面来写程序^_^
3.LED模块实验程序
² 程序一:点亮一个LED灯(分别利用位定义和直接对I/O空操作)
/*利用位定义的方法:点亮P1.0口,即LED1灯*/
#include
sbit LED1 = P1^0; //定义LED1
void main()
{
while(1)
{
LED1 = 0; //点亮LED1灯
}
}
/* 直接对端口进行操作:点亮一个LED灯*/
#include
void main()
{
while(1)
{
P0 = 0xfe; //1111 1110
}
}
² 程序二:使得一个LED灯闪烁(直接在程序一上修改)
#include
sbit LED1 = P1^0; //定义LED1
void delay(unsigned int i)
{
while(--i);
}
void main()
{
while(1)
{
LED1 = 0; //点亮LED1灯
delay(30000);
LED1 = 1; //熄灭LED1灯
delay(30000);
}
}
² 8位LED灯循环左移
/* 利用查表的方法左移 */
void LiuShuiDeng()
{
unsigned char i;
for(i = 0;i < 8;i++)
{
LEDPORT = table[i];
delay_ms(200);
}
}
² 8位LED灯循环右移
/* 利用C语言位定义的方法右移 */
void LedBlink()
{
unsigned char i,temp;
temp = 0x7f; //0111 1111
delay_ms(200);
for(i = 0;i < 8;i++)
{
temp = (temp>>1) | 0x80;
delay_ms(200);
LEDPORT = temp;
}
}
下一篇:51单片机的内存问题
史海拾趣
|
2006年电子行业薪酬调查 从2002 年起已经连续三年举办“中国电子工程师薪酬调查”活动,今年总数2287 电子工程师 和技术管理人员提交了调查问卷,其中16%来自上海市,来自深圳和北京的电子工 ...… 查看全部问答> |
|
网友EddyLau最近基于mini2440+Qtopia-2.2.0制作了几个有趣的小程序(视频地址:http://www.youku.com/playlist_show/id_4019326.html) 并提出了自己的见解,如下: 小弟真的不明白为何人们总是热衷于移植最新板的Qt! 最新板的Qt真的能很好地和min ...… 查看全部问答> |
|
第一次接触SPI,问一些基本的问题,先介绍下我是用的S3C6410的芯片。下面问几个问题,希望知道的朋友耐心解答一下, 1、SPI的时钟是否会一直存在?还是在只有主机在发送数据或者接收数据的时候才存在,除此之外的时间是否不存在? 2、如果我用2台 ...… 查看全部问答> |
|
计算机具有1MB的内存,按字节编址,地址寄存器至少需要二进制数__位 解答:1MB=1024*1024B=2^20,所以需要20位 我觉得题干中使用的是B,B=8b,而一位b才对应一个二进制数,因此我觉得应该是 1MB=1024*1024*8b=2^23 请大家指教,看看我这样理 ...… 查看全部问答> |




