您好,有个有问题向您请教 日语想请教您。我想用51来控制一个LED灯发光达到30米,请问LED的驱动电路怎么设计呢

后使用快捷导航没有帐号?
中国电子DIY
科技成就未来
亲爱的游客,欢迎!
已有账号,请
如尚未注册?
在线时间:8:00-16:00
400-123-4567
电子DIY手机版
随时随地掌握网站动态
扫描二维码
免费获取邀请码
<div class="mn"
51单片机驱动WS8212系列集成LED程序及电路图(任意色彩搭配流水灯设计方案)
本帖最后由 E-Man 于
01:37 编辑
据我所知对于广大单片机初学者来说,这个芯片是冷门的!So,最近闲着无聊,又不想更新之前写的帖子,闲来无事看到下面这个家伙,写个程序玩玩,ok,废话不多说,直接上内容,此帖程序内容属于原创,禁止淘宝商家盗用!否则必究!据我所知,网络上还没有这个芯片的51程序。当然,谁会闲着蛋疼51写这个程序。仅以此贴献给刚刚学会流水灯的孩子,学会这个就可以搞任意颜色搭配的流水灯了,而且根本不用考虑引脚个数(碎碎念:只用一个引脚就可以控制几百个以上的灯珠,每个灯珠颜色是255*255*255种)!!!视频还没有审批通过,刚上传!等通过后在后面补上连接。
另外:秉持一贯开源的精神&&...求评分!!!!
貌似从DOC文档中无法带进来图片,我也懒得上图片了,这个东东的资料可以去百度去搜。
/*******************************************************************************************/
/***************************************专用分割线*******************************************/
WS2812B51单片机驱动程序+电路图+视频展示
WS2812B是一个集控制电路与发光电路于一体的智能外控LED光源。其外型与一个5050LED灯珠相同,每个元件即为一个像素点。像素点内部包含了智能数字接口数据锁存信号整形放大驱动电路,还包含有高精度的内部振荡器和12V高压可编程定电流控制部分,有效保证了像素点光的颜色高度一致。
数据协议采用单线归零码的通讯方式,像素点在上电复位以后,DIN端接受从控制器传输过来的数据,首先送过来的24bit数据被第一个像素点提取后,送到像素点内部的数据锁存器,剩余的数据经过内部整形处理电路整形放大后通过DO端口开始转发输出给下一个级联的像素点,每经过一个像素点的传输,信号减少24bit。像素点采用自动整形转发技术,使得该像素点的级联个数不受信号传送的限制,仅仅受限信号传输速度要求。
LED具有低电压驱动,环保节能,亮度高,散射角度大,一致性好,超低功率,超长寿命等优点。将控制电路集成于LED上面,电路变得更加简单,体积小,安装更加简便。
机械尺寸(单位mm)
数据传输方法:
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image014.png
代码如下:
/********************************************************/
/*作 者:Dyingstraw
/*修改日期:
/*版& & 本:V1.0
/*程序功能:用51单片机控制ws2812 RGB输出,显示全色彩
/*备& && &&&注:51单片机晶振24M
/********************************************************/
#include&reg52.h&
#include&intrins.h&
#define uchar unsigned char
sbit Send_Dat=P1^0;& && && && && &//数据输出,接IN脚
sbit Key=P1^1;& && && && && && && & //按键等待
sbit Send_Dat1=P1^2;& &//中断状态灯
uchar RGB_BUF[24];
void delay();
void delays();
void init();
uchar Led_Tab[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};& && &&&
//存储一个转化后的RGB2进制数&&共24bits
struct My_24bits& && && && && && &&&//结构体
{
& && & uchar G_VAL;& && && && && &&&//绿色&&0-255
& && & uchar R_VAL;& && && && && && &//红色 0-255
& && & uchar B_VAL;& && && && && && &//蓝色0-255
};
/*写入数据时序*/
void Send_A_bit(uchar VAL)
{
//& &&&Send_Dat=0;
& && & if (VAL==1)
& && & {
& && & //& &&&Send_Dat=0;
& && && && &&&Send_Dat=1;
& && && && &&&_nop_();
& && && && &&&//_nop_();
& && && && &&&Send_Dat=0;& && && && &//2.17us
& && && && &&&//_nop_();
& && & //& &&&Send_Dat=1;& && && && && &&&//2.17us
& && & }
& && & else
& && & {
& && & //& &&&Send_Dat=0;
& && && && &&&Send_Dat=1;
& && && && &&&//_nop_();
& && && && &&&//_nop_();
& && && && &&&Send_Dat=0;& && && &&&
& && && && &&&_nop_();
& && & //& &&&Send_Dat=1;
& && & }& && && &&&
& && &
}
/*发送24位字符(包含RGB信息各8位)*/
void Send_24bits(struct My_24bits RGB_VAL )& && && && && && && &
{
& && &
& && & for& &(i=0;i&8;i++)
& && & {
& && && && &&&RGB_BUF[i]=RGB_VAL.R_VAL&&i&0x01;& && && && && && && && &&&//转化R_VAL
& && & }
& && && && &&&for& &(i=8;i&16;i++)
& && & {
& && && && &&&RGB_BUF[i]=RGB_VAL.G_VAL&&(i-8)&0x01;& && && && && &//转化G_VAL
& && & }
& && && && &&&for& &(i=16;i&24;i++)& && && && && && && && && && && && && && && && && && & //转化B_VAL
& && & {
& && && && &&&RGB_BUF[i]=RGB_VAL.B_VAL&&(i-16)&0x01;& &&&
& && & }
& && & for (i=0;i&24;i++)
& && & {
& && && && &&&Send_A_bit(RGB_BUF[i]);
& && & }
& && &
}
/*主函数*/
void main()
{
& && & struct My_24bits a,b,c,d,e,f,g;
& && & a.R_VAL=0
& && & a.G_VAL=0x00;& && && && && && && & //1& && && && && && & 颜色顺序,下同
& && & a.B_VAL=0x00;
& & b.R_VAL=0x00;
& && & b.G_VAL=0& && && && && && && &&&//2
& && & b.B_VAL=0x00;
& && & c.R_VAL=0x00;
& && & c.G_VAL=0x00;& && && && && && && && &&&//3
& && & c.B_VAL=0
& && & d.R_VAL=0& && && && && && && && && &//4
& && & d.G_VAL=0
& && & d.B_VAL=0x00;
& && & e.R_VAL=0
& && & e.G_VAL=0x00;& && && && && && && && && &&&//5
& && & e.B_VAL=0
& && & f.R_VAL=0x00;
& && & f.G_VAL=0& && && && && && && && && && && & //6
& && & f.B_VAL=0
& && & g.R_VAL=0& && && && && && && && && && && & //7
& && & g.G_VAL=0
& && & g.B_VAL=0
& && & init();
& && & while(1)
& && & {
& && & Send_Dat=0;
& && & Send_24bits(a);
& && & Send_Dat=0;& &P0=0xF9;
& && & delays();
& && & while(Key==1);& && && && && && && && && && && && && & //按键等待,当Key=1时停止,等于0时七种颜色流水灯循环,下同(主要方便观察颜色)
& && & Send_24bits(b);
& && & Send_Dat=0;& && && & P0=0xa4;& && && && && &//共阴极数码管显示颜色顺序,下同
& && & delays();
& && & while(Key==1);
& && & Send_24bits(c);
& && & Send_Dat=0;& &P0=0xb0;
& && & delays();
& && & while(Key==1);
& && & Send_24bits(d);
& && & Send_Dat=0;& &P0=Led_Tab[4];
& && & delays();
& && & while(Key==1);
& && & Send_24bits(e);
& && & Send_Dat=0;& &P0=Led_Tab[5];
& && & delays();
& && & while(Key==1);
& && & Send_24bits(f);
& && & Send_Dat=0;& &P0=Led_Tab[6];
& && & delays();
& && & while(Key==1);
& && & Send_24bits(g);
& && & Send_Dat=0;& &P0=Led_Tab[7];
& && & delays();
& && & while(Key==1);
//& &&&PCON|=0x01;& && && && && && && & //空闲模式
& && && && &
& && & }
}
/*中断唤醒测试函数*/
void INT1_ISR(void) interrupt 2
{
& && & P2=1;
}
/*小延时函数*/
/*大概1S吧,随便写的*/
void delay()
{
uchar i,j;
& && & for (i=0;i&250;i++)
& && & {
& && && && &&&for (j=0;j&250;j++);
& && & }
}
/*大延时函数*/
/*十几秒*/
void delays()
{
& && & delay();
& && & delay();
& && & delay();
& && & delay();
& && & delay();
& && & delay();
& && & delay();
& && & delay();
& && & delay();&&
& && & delay();
& && & delay();
& && & delay();
}
/*系统初始化*/
void init()
{
&&P0=0x00;
&&P1=0x00;
&&P2=0x00;
&&P3=0x00;
&&TCON=0x05;
&&TMOD=0x00;
&&TH0=0x00;
&&TL0=0x00;
&&TH1=0x00;
&&TL1=0x00;
&&T2CON=0x00;
&&RCAP2H=0x00;
&&RCAP2L=0x00;
&&IP=0x00;
&&IE=0x85;
&&PCON=0x00;
&&SCON=0x00;
}复制代码东西狠小,一支笔对比!引脚标注是错的,请忽略!
下图序号小时不正确!
总评分&nbsp:&nbsp刀币 +28
集中颜色的图片,意思一下。最后一张是实物图,单片机应该看不到吧(这个图片不是这个程序的,另外的序号不一样)
IMG_651.jpg (28.31 KB, 下载次数: 13)
01:30 上传
IMG_705.jpg (20.2 KB, 下载次数: 4)
01:30 上传
IMG_718.jpg (36.61 KB, 下载次数: 6)
01:30 上传
IMG_805.jpg (31.55 KB, 下载次数: 6)
01:30 上传
IMG_921.jpg (40.69 KB, 下载次数: 5)
01:30 上传
马克笔画出来的,引脚标注是错误的!!!请自觉忽略!!
视频地址:&embed src=&http://player.youku.com/player.php/sid/XOTQ2MTg0NjA0/v.swf& allowFullScreen=&true& quality=&high& width=&480& height=&400& align=&middle& allowScriptAccess=&always& type=&application/x-shockwave-flash&&&/embed&
自己嗨,好无聊,感谢hai.yang20189评分!
本帖最后由 ianon 于
21:18 编辑
这个LED要求速率很高,用STC来做有点紧张,楼主还用了点技巧,赞
花了不少时间调时序吧,我刚好可以借鉴了
ianon 发表于
这个LED要求速率很高,用STC来做有点紧张,楼主还用了点技巧,赞
花了不少时间调时序吧,我刚好可以借鉴了
其实还行吧,51速率刚好够。现在用stm32写了一个控制器玩,有时间交流
楼主多才多艺,还能玩stm
调时序用了示波器吗?我是两眼一摸黑
ws2812.png (148.35 KB, 下载次数: 11)
WS2812时序图
09:17 上传
其实我们都被误导了,WS8212适应性很强,并不是一定要800K的速率,低速率也可以,只要调好占空比,我试过400K都能用
折腾了2天,输出波形还是不稳定,真应该用PWM输出来做
可恨的是我选的这个STC15L204竟然不带串口不带PWM,晕死了
ianon 发表于
折腾了2天,输出波形还是不稳定,真应该用PWM输出来做
可恨的是我选的这个STC15L204竟然不带串口不带PWM, ...
没有串口毕竟还是少见
[音箱DIY论坛]
[拆机乐园/修机达人]
[音源/DAC/系统调校]
[拆机乐园/修机达人]
单片机论坛
一周热帖排行最近7x24小时热帖
客服电话:400-123-4567
客服邮箱:
周一至周五 9:00-18:00
公司地址:深圳市南山区美丽湾大厦B座
Powered by51单片机 1个IO口&&怎样同时驱动20颗LED|我爱单片机 - 数码之家
查看完整版本: [--
赞助商链接
小弟想用&&1个IO口驱动&&20颗食人鱼LED呼吸灯&& 单颗LED 30ma 。&&最好有个简单的电路图,谢谢啦。手头只有&&uln2003&& && s
赞助商链接
用低压mos管,n沟道的,高电平输入,就相当于短路(开关闭合),带200个都没问题(记得加限流电阻,要不灯会烧的!
赞助商链接
:用低压mos管,n沟道的,高电平输入,就相当于短路(开关闭合),带200个都没问题(记得加限流电阻,要不灯会烧的!&( 22:43)&谢谢 手头没有MOS
要分配器芯片就能完成
51IO口接8550接ULN2003,直接可以驱动。原理图基本不需要。
io接2003,每路输出接3个led,并串看你电压,3x7=21你还能多接一个。
要20个一起亮灭的话,要一个9013就行了
加个三极管扩流
IO输出驱动一个三极管或者MOS,随便你带多少个
一个三极管足以
LED最好是多组串并联使用
我以为1个io控制20个led显示不同状态呢,如果是20个同样状态控制就和控制1个灯的原理相同,不同点就是控制大电流,频率不好的话可以几个8050分组带起,
哪位大哥弄个电路图,小弟拜谢了
[attachment=3745961]字数字数字数
一个mA 带10个LED&&2个足矣
查看完整版本: [--
Powered by
Time 0.049105 second(s),query:5 Gzip enabled51单片机一个LED灯闪烁电路图原理_百度知道
51单片机一个LED灯闪烁电路图原理
C1和R2在哪里?没找到,没看懂啊。
我有更好的答案
文字说明有点问题。。文字说明中的R2对应图上的R1图上是用R1、C3构成的复位电路
采纳率:42%
我个人认为解释中的C1应代表的是图中的C3。就本图及上面的解释而言,R2应代表的图中的R1C1在最下方,最下方有C1,C2两个30PF的电容与晶振一起构成振荡电路
文中的R2就是图中的R1,文中的C1就是图中的C3。
为您推荐:
其他类似问题
51单片机的相关知识
&#xe675;换一换
回答问题,赢新手礼包&#xe6b9;
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。您好,欢迎来到捷配电子市场网
您所在的位置:&&&&&&其他&&基于51的太阳能LED路灯的设计与实现
版权与免责声明
凡本网注明“出处:捷配电子市场网”的所有作品,版权均属于捷配电子市场网,转载请必须注明捷配电子市场网,http://www.dzsc.com,违反者本网将追究相关法律责任。
本网转载并注明自其它出处的作品,目的在于传递更多信息,并不代表本网赞同其观点或证实其内容的真实性,不承担此类作品侵权行为的直接责任及连带责任。其他媒体、网站或个人从本网转载时,必须保留本网注明的作品出处,并自负版权等法律责任。
如涉及作品内容、版权等问题,请在作品发表之日起一周内与本网联系,否则视为放弃相关权利。
相关技术资料
热门技术资料
最新技术资料&>&51单片机 ,用一个按键控制1个LED灯的亮灭
51单片机 ,用一个按键控制1个LED灯的亮灭
上传大小:40KB
我们学习一下用一个bit变量来做一个标记,然后在按键的控制下,这个标记会变化,再根据这个标记的值,LED也输出不同的状态。
因为按键按下时可能会有抖动的情况,每次按下时,可能会发生了人难以觉察到的多次抖动,相当于一下子按下了很多次。这会导致程序无法识别出您真正的按键意图。
但是抖动一般都是发生在刚按下键和松开键的时候,所以,我们只要避开这一段时间,等键稳定按下或者松开时,再去读它的值,一般就可以正确读取了
综合评分:4
下载个数:
{%username%}回复{%com_username%}{%time%}\
/*点击出现回复框*/
$(".respond_btn").on("click", function (e) {
$(this).parents(".rightLi").children(".respond_box").show();
e.stopPropagation();
$(".cancel_res").on("click", function (e) {
$(this).parents(".res_b").siblings(".res_area").val("");
$(this).parents(".respond_box").hide();
e.stopPropagation();
/*删除评论*/
$(".del_comment_c").on("click", function (e) {
var id = $(e.target).attr("id");
$.getJSON('/index.php/comment/do_invalid/' + id,
function (data) {
if (data.succ == 1) {
$(e.target).parents(".conLi").remove();
alert(data.msg);
$(".res_btn").click(function (e) {
var parentWrap = $(this).parents(".respond_box"),
q = parentWrap.find(".form1").serializeArray(),
resStr = $.trim(parentWrap.find(".res_area_r").val());
console.log(q);
//var res_area_r = $.trim($(".res_area_r").val());
if (resStr == '') {
$(".res_text").css({color: "red"});
$.post("/index.php/comment/do_comment_reply/", q,
function (data) {
if (data.succ == 1) {
var $target,
evt = e || window.
$target = $(evt.target || evt.srcElement);
var $dd = $target.parents('dd');
var $wrapReply = $dd.find('.respond_box');
console.log($wrapReply);
//var mess = $(".res_area_r").val();
var mess = resS
var str = str.replace(/{%header%}/g, data.header)
.replace(/{%href%}/g, 'http://' + window.location.host + '/user/' + data.username)
.replace(/{%username%}/g, data.username)
.replace(/{%com_username%}/g, data.com_username)
.replace(/{%time%}/g, data.time)
.replace(/{%id%}/g, data.id)
.replace(/{%mess%}/g, mess);
$dd.after(str);
$(".respond_box").hide();
$(".res_area_r").val("");
$(".res_area").val("");
$wrapReply.hide();
alert(data.msg);
}, "json");
/*删除回复*/
$(".rightLi").on("click", '.del_comment_r', function (e) {
var id = $(e.target).attr("id");
$.getJSON('/index.php/comment/do_comment_del/' + id,
function (data) {
if (data.succ == 1) {
$(e.target).parent().parent().parent().parent().parent().remove();
$(e.target).parents('.res_list').remove()
alert(data.msg);
//填充回复
function KeyP(v) {
var parentWrap = $(v).parents(".respond_box");
parentWrap.find(".res_area_r").val($.trim(parentWrap.find(".res_area").val()));
评论共有9条
还不错,挺实用的
觉得还不错,对初学者有用
很简单,对初学者有用
hujinpingwell
综合评分:
积分/C币:6
VIP会员动态
CSDN下载频道资源及相关规则调整公告V11.10
下载频道用户反馈专区
下载频道积分规则调整V1710.18
spring mvc+mybatis+mysql+maven+bootstrap 整合实现增删查改简单实例.zip
资源所需积分/C币
当前拥有积分
当前拥有C币
输入下载码
为了良好体验,不建议使用迅雷下载
51单片机 ,用一个按键控制1个LED灯的亮灭
会员到期时间:
剩余下载个数:
剩余积分:0
为了良好体验,不建议使用迅雷下载
积分不足!
资源所需积分/C币
当前拥有积分
您可以选择
程序员的必选
绿色安全资源
资源所需积分/C币
当前拥有积分
当前拥有C币
为了良好体验,不建议使用迅雷下载
资源所需积分/C币
当前拥有积分
当前拥有C币
为了良好体验,不建议使用迅雷下载
资源所需积分/C币
当前拥有积分
当前拥有C币
您的积分不足,将扣除 10 C币
为了良好体验,不建议使用迅雷下载
无法举报自己的资源
你当前的下载分为234。
你还不是VIP会员
开通VIP会员权限,免积分下载
你下载资源过于频繁,请输入验证码
您因违反CSDN下载频道规则而被锁定帐户,如有疑问,请联络:!
若举报审核通过,可返还被扣除的积分
被举报人:
hujinpingwell
举报的资源分:
请选择类型
资源无法下载 ( 404页面、下载失败、资源本身问题)
资源无法使用 (文件损坏、内容缺失、题文不符)
侵犯版权资源 (侵犯公司或个人版权)
虚假资源 (恶意欺诈、刷分资源)
含色情、危害国家安全内容
含广告、木马病毒资源
*详细原因:
51单片机 ,用一个按键控制1个LED灯的亮灭

我要回帖

更多关于 向别人请教问题怎么说 的文章

 

随机推荐