找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 17126|回复: 22
收起左侧

32个爱心灯制作

  [复制链接]
ID:143367 发表于 2016-11-8 11:43 | 显示全部楼层 |阅读模式

发光二极管,又称LED。说到LED,那是初学者最容易了解的!


本小节目录


1,识别LED极性和图标


2,LED原理图分析


3,LED流水灯的程序分析


4,DIY酷炫的“爱心”型的LED灯的焊接,调试和程序编写!


一)识别LED极性及图标


识别LED正负极是每个学电子人的基本常识,但也是很多初学者常问的问题,包括本人当初也是没有懂!


32a8523d5d.jpg


图1-1


1.观察法(如图1-1)


直插式LED:看引脚长短来判别发光二极管的正负极,引脚长的为正极,短的为负极。


若引脚被“破坏”,看灯珠内,较小处为正(建议初学者仔细观察实物可知)


贴片LED:俯视,一边带彩色线的是负极,另一边是正极。


2.万用表测量法


万用表检测发光二极管时,必须使用“R×10k”档。


LED一般的管压降为2V,而万用表处于“R×1k”及其以下各电阻档时,表内电池仅为1.5V,低于管压降。无论正、反向接入,发光二极管都不可能导通,也就无法检测。“R×10k”档时表内接9V(或15V)高压电池,高于管压降,所以可以用来检测发光二极管。


检测时,将两表笔分别与LED两脚相接,如表针偏转过半,同时LED中有一发亮光点,表示LED是正向接入,这时与黑表笔(与表内电池正极相连)相接的是正极;与红表笔相接的是负极。再将两表笔对调后与发光二极管相接,这时为反向接入,表针应不动。


若正向接入和反向接入,表针都偏转到头或不动,则该LED已损坏。


3.LED图标




e54b8a6bab.jpg


图1-2


谨记:阳极(A)为三角形边,指向角加一竖即为阴极(K),也有电流从粗面流向细面的意味!




二)LED原理图分析


a48d7076bc.jpg


图2—2 开发板LED原理图


若让LED能正常发光,则必须使LED内部通过一定的电流和电压差(2-3.9V左右)才可。通常LED的工作电流为3~20mA左右,所以不能直接将两端接电源和GND来点亮,需要加一个限流电阻,而如何算这个电阻呢?


通常LED的压降是1.72~1.98V左右,为使LED有合适的亮度和长寿命,通常让其工作电流为:3mA,用欧姆定律算可知,限流电阻:R=3.15V/3mA=1.05KΩ,因而需用1K的限流电阻。


初学者看原理图需懂:


1)原理图上同样物理标识的引脚,互相连接一起,如图2-2中,数字28右边的LED8与RP4左边的LED8在开发板上才是连接一起的。


2)图2-2中D1-D8的LED灯正极都连接电源正极(VCC),负极分别连接单片机P2^0--P2^7口,而为什么不是D1-D8正极连单片机P2口,负极连地(GDN)呢???那是因为单片机一上电后,P2口默认就为高电平,即直接使八个LED完全亮了,根本不需要程序去控制,那不是失去学习单片机的意义了么?




三)LED流水灯的程序分析(傻瓜式)


#include//51单片机的头文件


#defineUchar8unsignedchar//宏定义(就是用Uchar8替换unsignedchar,方便后面程序编写


#defineUint16unsignedint


sbitLED1=P2^0; //声明单片机P2口的第一位,用LED1表示,便于简化程序


sbitLED2=P2^1;


sbitLED3=P2^2;


sbitLED4=P2^3;


sbitLED5=P2^4;


sbitLED6=P2^5;


sbitLED7=P2^6;


sbitLED8=P2^7;


/*******************************************************/


//函数功能: 约延时毫秒函数


//入口参数: 延时毫秒数(xms)


//出口参数: 无


/*******************************************************/


voidDelayms(Uint16xms)


{


Uint16i,j;


for(i=xms;i>0;i--)


for(j=121;j>0;j--);//这里初学者会问:为什么是121呢?你也可以写110~122等等


}//可先不深究,知道这个是约延时1ms的函数就足以


voidmain(void)


{


for(;;)//死循环


{


LED1=0;//点亮图2-2中D1灯亮


Delayms(100);//延时100毫秒,也就是让D1亮100毫秒


LED1=1;//灭掉D1灯


LED2=0;//灭D1灯后,马上接着点亮D2灯


Delayms(100);//让D2灯亮100毫秒


LED2=1;//接着灭掉D2灯


LED3=0;//接着,,,,D3亮,,,,,一直到最后,D8,亮灭,程序就是如此循环执行 Delayms(100);


LED3=1;


LED4=0;


Delayms(100);


LED4=1;


LED5=0;


Delayms(100);


LED5=1;


LED6=0;


Delayms(100);


LED6=1;


LED7=0;


Delayms(100);


LED7=1;


LED8=0;


Delayms(100);


LED8=1;


}


}


傻瓜式程序太多,太麻烦了,那就看看下面简化版的吧


#include


#include


#defineUchar8unsignedchar


#defineUint16unsignedint


voidDelayms(Uint16xms)


{


Uint16i,j;


for(i=xms;i>0;i--)


for(j=121;j>0;j--);


}


voidmain(void)


{


Uchar8temp;


temp=0xfe;//让变量temp等于11111110


for(;;)


{


P2=temp;//将11111110赋予P2,即P2最低位P2^0为0,点亮D1灯


temp=_crol_(temp,1);//temp循环左移动1位后再次赋值给temp


Delayms(100);


}


}


c6d399d497.jpg


图3-1循环左移动


说明:KeilC51自带的函数库,里面有个_crol_()函数(循环左移),即最高位往最低位循环移动,同理循环右移为_cror_()函数也一样。


2f33d556b3.jpg


图3-2流水灯示意图(来自麦光电子)


说明:P2=temp(11111110)时,D1亮,接着P2=11111101时,D2亮,如此循环的点亮8个LED灯!写到这里,我想,再菜鸟的初学者都明白了吧?




四)DIY酷炫的“心”型的LED灯


DIY的乐趣的无穷的,当你花上几个小时,几天甚至几个星期,亲手DIY并调试成功后的那种喜悦感和幸福感,那是别人无法去体会和了解的啊!显然,本人最初也是受xumb的影响,毅然走上了一条DIY的路,从此我待DIY如初恋,它虐我如后妈呀!




1)“心”原理图


698aaad988.jpg


图4-1“心”型LED灯原理图


说明:“心”型LED灯共用了32个灯,刚好接完MCU的P0,P1,P2,P3共32个端口。


注意:全部的LED灯正极分别连接100欧左右电阻后,并连VCC,负极分别连接32个端口即可。


89c74176da.jpg


图4-2“心”型LED焊接布局图


说明:焊接前,先将全部的LED灯布局好后,看看效果,然后先焊接单片机最小系统,后焊接LED灯。


09175d78de.jpg


图4-3“心”型LED焊接正面布局图


52059007c2.jpg


图4-4“心”型LED焊接电阻图


说明:本人用直插电阻直接在万能板背面焊接,同时晶振和瓷片电路都焊接于单片机插座内,同时本人用的LED灯为红,黄,兰,绿相互焊接!


90b86f116e.jpg


图4-5“心”型LED焊接背面完成图




说明:LED灯负极全用焊锡丝连接到单片机端口,建议初焊者用导线连,因为对于初焊者,焊锡丝非常不好连接,而且漂亮!


焊接时注意:焊接完电阻后,千万要布好局后才焊接负极连接MCU端口,毕竟我们要追求完美的“心”呀!再说了,焊接好了,正面为“心”型,背面也是完美的“心”型,才能算真心,才算浪漫呀!


c06e43e6f7.jpg


图4-6“心”型LED焊接正面完成图


说明:电源由4个5号电池提供,焊接时,千万别焊反正负极,要不然MCU芯片就被烧了!


焊接完后,是该见证奇迹的时候了,下完程序后,如图4-7,4-8,4-9


01b5b95a11.jpg


图4-7“心”型LED灯效果图


1c0a55d3f3.jpg


图4-8“心”型LED灯效果图


0164a8510c.jpg


图4-9“心”型LED灯效果图




最后说明:“心”型LED灯的程序很长(一千多行),本人已经上传附件,也录段小视频,程序配的背景音乐为《克罗地亚狂想曲》,因为网速原因和还不熟悉EDN如何上传视频,如想看,请留下您的邮箱,本人乐意分享于您,并希望您在原程序基础上,再发挥您聪明的智慧,DIY出更有意思的电子设计!




晚安,这个没有星星的夜,却有很多很多星星在我心中一闪一闪着....照亮着我的路,一条人生的路,未来的路.....!信这小小之“火”,也能带着你去寻找一条属于你的MCU之路!






本系列《MCU之心路分享》博文,本人尽自己微薄之力,以菜鸟的身份,写写初学者最详细,最具体的入门博客,本人自当也种是锻炼,仅仅如此简单容易,如有误之处,欢迎拍砖,本人不胜感激!


32个爱心灯程序.rar (60.35 KB, 下载次数: 97)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:137554 发表于 2017-3-21 08:42 | 显示全部楼层
好资料  学习了
回复

使用道具 举报

ID:166089 发表于 2017-3-22 00:20 来自手机 | 显示全部楼层
很详细,学习了
回复

使用道具 举报

ID:185866 发表于 2017-4-14 08:10 | 显示全部楼层
用的灯是快闪吗?几种颜色
回复

使用道具 举报

ID:250673 发表于 2017-11-18 11:31 | 显示全部楼层
很好的资料,谢谢楼主的分享
回复

使用道具 举报

ID:250673 发表于 2017-11-18 11:32 | 显示全部楼层
有个问题,p0、p1、p2和p3口的默认的全是高电平么?
回复

使用道具 举报

ID:248394 发表于 2017-11-18 12:27 | 显示全部楼层
P0不是,它的状态不确定。
回复

使用道具 举报

ID:257818 发表于 2017-12-5 20:06 | 显示全部楼层
能qq发下程序代码吗,305284985@qq.com
回复

使用道具 举报

ID:135960 发表于 2017-12-7 15:03 | 显示全部楼层
很给力   很给力
回复

使用道具 举报

ID:304104 发表于 2018-4-8 23:37 | 显示全部楼层
能qq发下32个爱心灯程序吗
回复

使用道具 举报

ID:304104 发表于 2018-4-8 23:38 | 显示全部楼层
能qq发下32个爱心程序吗
回复

使用道具 举报

ID:338532 发表于 2018-5-26 09:37 | 显示全部楼层
👌好资料,学到了
回复

使用道具 举报

ID:388624 发表于 2018-8-21 17:12 | 显示全部楼层
1792667390@qq.com   谢谢
回复

使用道具 举报

ID:384558 发表于 2018-8-22 11:00 | 显示全部楼层
好资料,学习了
回复

使用道具 举报

ID:386674 发表于 2018-8-22 20:22 | 显示全部楼层
可以做给女朋友
回复

使用道具 举报

ID:312132 发表于 2018-8-23 13:05 | 显示全部楼层
感觉组IO口分段处理有点麻烦 直接定义一个无符号的long 在分割成char 操作上更方便一点
回复

使用道具 举报

ID:392360 发表于 2018-9-1 17:19 | 显示全部楼层
好资料,学习了
回复

使用道具 举报

ID:484258 发表于 2019-3-4 15:13 来自手机 | 显示全部楼层
好想现在就动手做起来
回复

使用道具 举报

ID:318672 发表于 2019-3-6 21:21 来自手机 | 显示全部楼层
好教程,感谢分享
回复

使用道具 举报

ID:438796 发表于 2019-3-14 15:55 | 显示全部楼层
我想知道这个灯的颜色是根据什么来变颜色
回复

使用道具 举报

ID:551268 发表于 2019-5-30 17:45 | 显示全部楼层
你好能QQ发一下程序吗,谢谢  2996362232@qq.com
回复

使用道具 举报

ID:399179 发表于 2019-5-31 21:31 来自手机 | 显示全部楼层
感谢楼主分享!
回复

使用道具 举报

ID:510532 发表于 2019-6-1 01:05 来自手机 | 显示全部楼层
正好我也在学习做这个32位流水灯,可以给我发一下你的程序吗?邮箱1330687337@qq.com对了,我是打算全部led负极接电阻,应该也没问题吧。因为我已经把正极都接在一起了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表