【单片机】51单片机入门教程中(LED流水灯)

发布时间:2022-12-15  

前言

提示:以下是本篇文章前言内容

在大家学习用点亮LED之前希望大家去复习一下51单片机的最小系统!

大家需要了解一下进制转换,如下图:

1.十进制: 都是以0-9这九个数字组成,不能以0开头。

2.二进制: 由0和1两个数字组成。

3.八进制: 由0-7数字组成,为了区分与其他进制的数字区别,开头都是以0开始。

4.十六进制:由0-9和A-F组成。为了区分于其他数字的区别,开头都是以0x开始。

正文

提示:以下是本篇文章正文内容


一、了解LED的工作原理

简单的理解一下:发光二极管与普通二极管一样是由一个PN结组成,也具有单向导电性。当给发光二极管加上正向电压后,从P区注入到N区的空穴和由N区注入到P区的电子,在PN结附近数微米内分别与N区的电子和P区的空穴复合,产生自发辐射的荧光。常用的是发红光、绿光或黄光的二极管。发光二极管的反向击穿电压大于5伏。它的正向伏安特性曲线很陡,使用时必须串联限流电阻以控制通过二极管的电流。


实物图如下:

电路原理图如下:

如何计算发光二极管电压

发光二极管的压降是比较固定的,通常红色为1.6V左右,绿色有2V和3V两种,黄色和橙色约为2.2V,蓝色为3.2V左右。对于常用的几毫米大小的二极管,其工作电流一般在2毫安至20毫安之间,电流越大亮度越高,用电源电压减去二极管的压降,再除以设定的工作电流,就得出限流电阻的阻值。


串联R=(U-LED压降)/设定的工作电流

简单了解一下即可,如果想深入了解的话可以学学《模拟电路》,第一章就是讲的二极管,在这里就不过多赘述了!


二、用Proteus画原理图

共阴接法:

共阳接法:

三、用Keil写代码

方法一:点亮流水灯-位操作(共阴)

#include


sbit led1=P1^0;

sbit led2=P1^1;

sbit led3=P1^2;

sbit led4=P1^3;

sbit led5=P1^4;

sbit led6=P1^5;

sbit led7=P1^6;

sbit led8=P1^7;


void Delay500ms();


void main()

{

while(1)

{

P1=0x00;

led1=1;

Delay500ms();

led1=0;

Delay500ms();

led2=1;

Delay500ms();

led2=0;

Delay500ms();

led3=1;

Delay500ms();

led3=0;

Delay500ms();

led4=1;

Delay500ms();

led4=0;

Delay500ms();

led5=1;

Delay500ms();

led5=0;

Delay500ms();

led6=1;

Delay500ms();

led6=0;

Delay500ms();

led7=1;

Delay500ms();

led7=0;

Delay500ms();

led8=1;

Delay500ms();

led8=0;

Delay500ms();

led8=1;

Delay500ms();

led8=0;

Delay500ms();

led7=1;

Delay500ms();

led7=0;

Delay500ms();

led6=1;

Delay500ms();

led6=0;

Delay500ms();

led5=1;

Delay500ms();

led5=0;

Delay500ms();

led4=1;

Delay500ms();

led4=0;

Delay500ms();

led3=1;

Delay500ms();

led3=0;

Delay500ms();

led2=1;

Delay500ms();

led2=0;

Delay500ms();

led1=1;

Delay500ms();

led1=0;

Delay500ms();

}

}



void Delay500ms() //@11.0592MHz

{

unsigned char i, j, k;

i = 4;

j = 129;

k = 119;

do

{

do

{

while (--k);

} while (--j);

} while (--i);

}

方法二:点亮流水灯-左移右移(共阴)


#include

void Delay100ms();


unsigned char  i=0;


//主函数

void main()

{

while(1)

{

//for循环让Led依次点亮

for(i=0;i<8;i++)

{

P1=~(0x01< Delay100ms();

}

}

}


//100ms的延时函数

void Delay100ms() //@11.0592MHz

{

unsigned char i, j;


i = 180;

j = 73;

do

{

while (--j);

} while (--i);

}

方法三:点亮流水灯-用数组点亮(共阴)


#include

#define uchar unsigned char

uchar tab[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,

0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,0xff};

uchar tab1[]={0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00,

0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff};


void delay();

void main()

{

uchar i;

while(1)

{

for(i=0;i<16;i++)

{

P1=tab1[i];

delay();

}

}

}


void delay()

{

uchar i,j;

for(i=0;i<255;i++)

for(j=0;j<255;j++);

}


四、下载代码

双击芯片,然后会弹出如下界面,然后点击黄色文件夹

找到刚刚编译完生成的hex文件

选择OK就可以了!

然后点击左下角的蓝色三角就可以开始运行程序了

五、调试代码

在写代码的时候需要不停的调试,直到能实现自己想要的现象!

文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

相关文章

    51单片机流水灯电路图大全;  51单片机流水灯电路图(一)   本原理图采用STC89S52单片机控制8个LED灯,其中8个LED灯的负极接单片机的P1端口,正极通过1KΩ排阻连接到电源上。原理......
    用51单片机控制的LED流水灯设计;  1.引言   当今时代是一个新技术层出不穷的时代,在电子领域尤其是自动化智能控制领域,传统的分立元件或数字逻辑电路构成的控制系统,正以......
    用单片机控制的LED流水灯设计;1.引言 当今时代是一个新技术层出不穷的时代,在电子领域尤其是自动化智能控制领域,传统的分立元件或数字逻辑电路构成的控制系统,正以......
    80C51单片机-LED流水灯效果;本文将介绍一个基于8051单片机的跑马灯实验,通过编写代码实现LED流水灯效果。这个实验将使用8051单片机的P2口来控制8个LED灯,实现流水灯效果。 实验......
    // -------------------------------------------------------------------- // Module Function:流水灯的模块化设计      module flashled (clk,rst,led);      input clk,rst......
    位输出到LED就能实现流水灯。 ====Verilog代码==== 模块化设计是用硬件描述语言进行数字电路设计的精髓,代码可重复利用。而且模块化的设计使得程序的结构也很清晰。这里我们首先看看流水灯的模块化设计......
    51单片机学习:LED流水灯实验;实验名称:LED流水灯实验接线说明:实验现象:下载程序后“LED模块”的D1-D8指示......
    80C51单片机-LED流水灯效果(汇编版);本文将介绍一个基于8051单片机的跑马灯实验,通过编写汇编代码实现LED流水灯效果。这个实验将使用8051单片机的P2口来控制8个LED灯,实现流水灯......
    OSRAM 汽车级高亮LED,广泛应用于汽车转向灯,尾灯等应用。方案应用于汽车流水转向灯及汽车高位刹车灯。 1、流水灯的通断电时间需要根据闪光器的实际时间进行调整。 2、PCB 请根据实际产品尺寸来设计......
    就是主函数,包括流水灯的反复循环和j流水灯的方向   6、检查没有错误,编译一下。就可以进行仿真了   单片机32位LED花样流水灯程序及原理图   原理图   LED心形排布图:   程序......

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>