STC89C52RC控制WS2812B LED 调色调光(一) |
您所在的位置:网站首页 › 单色调整 › STC89C52RC控制WS2812B LED 调色调光(一) |
前言
一直想自己做一个LED的台灯,能够实现三色调节和光暗调节,搜索了下淘宝里的可调LED灯发现要么是只能调光暗,无法做到单色的调节,要么就是可以能实现调各种颜色,但是是无线的,多出一个遥控器是什么鬼...我只是想在台灯的底座上开三个孔,连上旋钮实现调色和调光啊,多一个遥控器不像话啊,看来只能自己实现了。 一通翻箱倒柜,发现5年前买的51开发板还在,就差一个能控的LED模块了!又一通搜索,发现一款WS2812B的LED控制模块好像挺符合我的需求的,但是网上发的程序要么是STM32的,要么是15系列的芯片的,没有我手头上51的,看来还是得自己手动来调了。 WS2812B资料主要特点 智能反接保护,电源反接不会损坏IC。IC控制电路与LED点光源公用一个电源。控制电路与RGB芯片集成在一个5050封装的元器件中,构成一个完整的外控像素点。内置信号整形电路,任何一个像素点收到信号后经过波形整形再输出,保证线路波形畸变不会累加。内置上电复位和掉电复位电路。每个像素点的三基色颜色可实现256级亮度显示,完成16777216种颜色的全真色彩显示,扫描频率不低于400Hz/s。串行级联接口,能通过一根信号线完成数据的接收与解码。任意两点传传输距离在不超过5米时无需增加任何电路。当刷新速率30帧/秒时,级联数不小于1024点。数据发送速度可达800Kbps。光的颜色高度一致,性价比高。主要应用领域 LED全彩发光字灯串,LED全彩模组, LED全彩软灯条硬灯条,LED护栏管。LED点光源,LED像素屏,LED异形屏,各种电子产品,电器设备跑马灯。产品概述 WS2813B是一个集控制电路与发光电路于一体的智能外控LED光源。其外型与一个5050LED灯珠相同,每个元件即为一个像素点。像素点内部包含了智能数字接口数据锁存信号整形放大驱动电路,还包含有高精度的内部振荡器和12V高压可编程定电流控制部分,有效保证了像素点光的颜色高度一致。 数据协议采用单线归零码的通讯方式,像素点在上电复位以后,DIN端接受从控制器传输过来的数据,首先送过来的24bit数据被第一个像素点提取后,送到像素点内部的数据锁存器,剩余的数据经过内部整形处理电路整形放大后通过DO端口开始转发输出给下一个级联的像素点,每经过一个像素点的传输,信号减少24bit。像素点采用自动整形转发技术,使得该像素点的级联个数不受信号传送的限制,仅仅受限信号传输速度要求。 LED具有低电压驱动,环保节能,亮度高,散射角度大,一致性好,超低功率,超长寿命等优点。将控制电路集成于LED上面,电路变得更加简单,体积小,安装更加简便。 机械尺寸(单位mm) 机械尺寸与引脚图(单位mm) 引脚功能 : 序号 符号 管脚名 功 能 描 述 1 VDD 电源 供电管脚 2 DOUT 数据输出 控制数据信号输出 3 VSS 地 信号接地和电源接地 4 DIN 数据输入 控制数据信号输入 最大额定值(如无特殊说明,TA=25℃,VSS=0V) 参数 符号 范围 单位 电源电压 VDD +3.5~+5.3 V 逻辑输入电压 VI -0.5~VDD+0.5 V 工作温度 Topt -25~+80 ℃ 储存温度 Tstg -55~+150 ℃ 电气参数(如无特殊说明,TA=-20~+70℃,VDD=4.5~5.5V,VSS=0V) 参数 符号 最小 典型 最大 单位 测试条件 输入电流 II —— —— ±1 µA VI=VDD/VSS 高电平输入 VIH 0.7VDD —— —— V DIN,SET 低电平输入 VIL —— —— 0.3 VDD V DIN,SET 滞后电压 VH —— 0.35 —— V DIN,SET
开关特性(如无特殊说明,TA=-20~+70℃,VDD=4.5~5.5V,VSS=0V) 参数 符号 最小 典型 最大 单位 测试条件 振荡频率 Fosc —— 600 —— KHz —— 传输延迟时间 tPLZ —— —— 300 ns CL=15pF,DIN→DOUT,RL=10KΩ 下降时间 tTHZ —— —— 120 µs CL=300pF,OUTR/OUTG/OUTB 输入电容 CI —— —— 15 pF —— LED 特性参数 数据传输时间( TH+TL=1.25µs±600ns) T0H 0码, 高电平时间 0.4µs ±150ns T1H 1码, 高电平时间 0.8 µs ±150ns T0L 0码, 低电平时间 0.85µs ±150ns T1L 1码, 低电平时间 0.45 µs ±150ns RES 帧单位,低电平时间 50µs以上
时序波形图
WS2812B 输入码型: 连接方法:
WS2812B
WS2812B 数据传输方法: 注:其中D1为MCU端发送的数据,D2、D3、D4为级联电路自动整形转发的数据。 24bit数据结构: G7 G6 G5 G4 G3 G2 G1 G0 R7 R6 R5 R4 R3 R2 R1 R0 B7 B6 B5 B4 B3 B2 B1 B0 注:高位先发,按照GRB的顺序发送数据。 典型应用电路: 以上内容复制粘贴。。。来源https://wenku.baidu.com/view/25f176db482fb4daa48d4ba1.html,还有英文版https://wenku.baidu.com/view/76a0294580eb6294dc886c4d.html 主要注意以下几个点: 1.发送的01数据流一定要跟规格书走;误差不能超过150ns,51单片机的频率小一点的晶振可能根本达不到这个要求,所以我采用 了一颗24M晶振,并且在ISP下载工具中打开了 2.发送的24位数据一定注意发送的顺序,文档中的要求是先发绿色色值,并且是从高位开始发送; 3.发送数据时有多少个灯要发送多少个24位颜色值,而且2个24位颜色值之间时间间隔不能超过50µs,否则,模块会把这个24位 数当做是第一个灯的数据; 4.嗯,想起来再补充; 关键思路先实现能调光,而想要调光,那么肯定要有一个电位器进行调节,然后通过ADC模块来读入值,再转化后发送到ws2812b模块。嗯,直接先用51开发板上的ADC模块来调试吧。 51开发板上自带的ADC模块,J2直接短接34脚,使用电位器来调节。 ADC模块代码开发板已经自带了,直接拿来使用,不在本文的关键内容中,不做赘述! ws2812b有四口,一个VCC,一个GND,一个DATA IN,一个DATA OUT。51与ws2812b的连接电路很简单,P0.0口上拉一个10K电阻后与ws2812b的data in口连接,ws2812b的电源地端与51的电源共地,电源的+-之间并一个100uf的电容,搞定! 相关代码 注意,以下代码都是在stc89c52rc,晶振为24M,打开使能6T功能下测试成功,P0口上拉电阻,接ws2812b的data in端,其他条件下需要自己做代码上的调整! (1)写入一位数据时序: /*写入数据时序*/ void Send_A_bit(uchar VAL) { if (VAL==1) { Send_Dat=1; _nop_();//两个nop,大概是0.5us,经测试,发送完1后的延时最重要 _nop_(); Send_Dat=0; } else { Send_Dat=1; _nop_(); //一个nop,大概是0.25us Send_Dat=0; } }(2)发送一个灯的24位数据: //存储一个转化后的RGB2进制数 共24bits struct My_24bits //结构体 { uchar G_VAL; //绿色 0-255 uchar R_VAL; //红色 0-255 uchar B_VAL; //蓝色0-255 }; /*发送24位字符(包含RGB信息各8位)*/ void Send_24bits(struct My_24bits RGB_VAL) { uchar i; for(i=0; i>(7-i)&0x01);//注意是从高位先发 } for(i=8; i>(15-i)&0x01); } for(i=16; i>(23-i)&0x01); } }(3)ADC转换代码,不是重点,可以下载后查看,略;
以上,实现了电位器对led灯亮度进行调节,可以对ws2812b模块进行很好的了解与熟悉。因为此部分只能调光,不能对单色进行调节,下部分会把ADC模块替换掉,改用EC11编码器,就可以对单色逐一调节,然后用上EEPROM保存颜色值,断电重启能记忆上次颜色值。嗯,EC11还没买,没有示波器,只能纯手调,看运气和人品了。。。 完整代码:https://download.csdn.net/download/yaleond/10749279
|
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |