目录
前言
本篇文章利用proteus和keil两个软件对AT89C52单片机进行简单的LED流水灯设计,若有疑问或错误欢迎大家私信提问或者纠正。
一、发光二极管简介
发光二极管,简称LED,是一种常用的发光元件,通过电子与空穴复合释放能量发光,它在照明领域应用广泛。
发光二极管是由含镓(Ga)、砷(As)、磷(P)、氮(N)等的化合物制成。
发光二极管与普通二极管一样是由一个PN结组成,也具有单向导电性。当给发光二极管加上正向电压后,从P区注入到N区的空穴和由N区注入到P区的电子,在PN结附近数微米内分别与N区的电子和P区的空穴复合,产生自发辐射的荧光。不同的半导体材料中电子和空穴所处的能量状态不同。当电子和空穴复合时释放出的能量多少不同,释放出的能量越多,则发出的光的波长越短。常用的是发红光、绿光或黄光的二极管。发光二极管的反向击穿电压大于5伏。它的正向伏安特性曲线很陡,使用时必须串联限流电阻以控制通过二极管的电流。
发光二极管的核心部分是由P型半导体和N型半导体组成的晶片,在P型半导体和N型半导体之间有一个过渡层,称为PN结。在某些半导体材料的PN结中,注入的少数载流子与多数载流子复合时会把多余的能量以光的形式释放出来,从而把电能直接转换为光能。PN结加反向电压,少数载流子难以注入,故不发光。当它处于正向工作状态时(即两端加上正向电压),电流从LED阳极流向阴极时,半导体晶体就发出从紫外到红外不同颜色的光线,光的强弱与电流有关。
二、单片机原理图绘制
1.所需原件名称
proteus原理图中名称对应:
AT89C52——52单片机芯片;
BUTTON——按钮(复位按键);
CAP——无极性电容;
CAP-ELEC——电解电容;
CAP-POL——极性电容;
CRYSTAL——晶振;
LED-BIBY——发光二极管;
RES——电阻;
以上就是我们这次设计需要用到的所有元器件,接下来我们就需要创建新工程,然后在右面添加元器件进行绘制。
添加好元器件,我们开始绘制原理图。
其中复位电路和时钟电路是必不可少的。
然后就可以开始绘制LED灯部分的电路了。
由于芯片中上拉电阻太大,导致若通过拉电流的方式点亮LED灯需要很大的电流,所以选用灌流的方式进行绘制(也就是八个LED灯共阳极)。
最后画出的原理图如下图:
至此,咱们的LED流水灯的原理图就绘制出来了。
三、程序编写
1、点亮第一个LED灯
代码如下(示例):
#include "reg52.h"
#define LED P2
typedef unsigned char u8;
typedef unsigned int u16;
void main()
{
LED=0Xfe;
}
2.闪烁第一个流水灯
代码如下(示例):
#include "reg52.h"
#define LED P2
typedef unsigned char u8;
typedef unsigned int u16;
void delay(u16 ten)
{
while(ten--);
}
void main()
{
while(1)
{
LED=0XFE;
delay(1000);
LED=0XFF;
delay(1000);
}
}
3、LED流水灯
#include <reg52.h>
#define LED P2
typedef unsigned char u8;
typedef unsigned int u16;
void delay(u16 ten)
{
while(ten--);
}
void main()
{
u8 LED_display[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
while(1)
{
for(int t=7;t>=0;t--)
{
LED=LED_display[t];
delay(1000);
}
}
}
总结
以上就是今天要讲的内容,本文通过proteus和keil对单片机LED流水灯这个实验进行了简单的设计,希望对你有帮助,后续我还会继续更新更多相关内容,欢迎大家来看。