LED原理及流水灯的实现
原理
Library中
ACTIVE:可视化的,可以看清LED的活动
LED_BIBY的意思是:两种极性的LED颜色:B-blue,Y-yellow
LED是蓝色的,发光后颜色为黄色。
像LED_BIGY ,LED_BIRG,LED_BIRY都是类似的意思
选中
电流方向P极–》N极
流水灯的实现
流水灯通常是由八个LED组成的轮流、滚动显示的效果。
LED发光二极管是单向导电的一种元器件,它分共阳极和共阴极两个极。
构成流水灯的元器件
AT89C51
电阻(RES)
LED*8(LED-BIBY)
加入89C51,然后排列8个led
演示共阳极接法:
- 连上所有LED
-
添加电源,用单片机的p2口控制流水灯
引出线,由于单片机IO口可以承受的电流是有限的,如果直接接线会烧掉单片机的IO口,所以我们需要加入电阻进行限流,电阻大于250
共阴极连接:
代码
sbit是定义特殊功能寄存器的位变量。
bit和sbit都是C51扩展的变量类型。
典型应用是:sbit P0_0=P0^0;//即定义P0_0为P0口的第1位,以便进行位操作。
bit和int char之类的差不多,只不过char=8位, bit=1位而已。
都是变量,编译器在编译过程中分配地址。
#include "reg51.h"
//sbit是定义特殊功能寄存器的位变量
//这里我们操作D1亮灭,对应单片机P2.0
sbit LED0=P2^0;
void delay(unsigned int n)
{
//给变量一个初始值,防止变量初始化的时候是一个随机数
//可能造成程序的误动作
unsigned int i=0,j=0;
for(i=0;i<n;i++)
{
for(j=0;j<120;j++);
}
}
void main()
{
while(1)
{
//亮
LED0=0;
//延时函数,亮和灭之间切换太快,延时5毫秒
delay(5);
//灭
LED0=1;
delay(5);
}
}
为单片机导入hex文件
双击单片机
然后点击运行
目前实现了单个led效果,接下来实现流水灯效果
#include "reg51.h"
//sbit是定义特殊功能寄存器的位变量
//这里我们操作D1亮灭,对应单片机P2.0
sbit LED0=P2^0;
void delay(unsigned int n)
{
//给变量一个初始值,防止变量初始化的时候是一个随机数
//可能造成程序的误动作
unsigned int i=0,j=0;
for(i=0;i<n;i++)
{
for(j=0;j<120;j++);
}
}
void led()
{
int i=0;
for(i=0;i<8;i++)
{
//共阳
//P2=~(0x01<<i);//0x01 0000 0001 --> 0000 0010 --> 0000 0100
//共阴
P1=0x01<<i;
delay(50);
}
}
void main()
{
while(1)
{
led();
}
}
重新双击单片机,引入hex文件,然后运行程序