单片机程序转:

http://www.ndiy.cn/thread-36302-1-1.html

代码如下:
/********************************************************/
/*作 者:Dyingstraw
/*修改日期:2015.5.2
/*版    本: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-255uchar R_VAL;                  //红色 0-255uchar 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 )
{uchar i;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=0xff;a.G_VAL=0x00;                      //1                   颜色顺序,下同a.B_VAL=0x00;b.R_VAL=0x00;b.G_VAL=0xff;                       //2b.B_VAL=0x00;c.R_VAL=0x00;c.G_VAL=0x00;                          //3c.B_VAL=0xff;d.R_VAL=0xff;                           //4d.G_VAL=0xff;d.B_VAL=0x00;e.R_VAL=0xff;e.G_VAL=0x00;                             //5e.B_VAL=0xff;f.R_VAL=0x00;f.G_VAL=0xff;                                  //6f.B_VAL=0xff;g.R_VAL=0xff;                                  //7g.G_VAL=0xff;g.B_VAL=0xff;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;
}

单片机控制ws2812b相关推荐

  1. 单片机控制WS2812B实例代码

    1.  控制方式 WS2812B数据协议采用单线归零码的通讯方式,像素点在上电复位以后,DIN端接受从控制器传输过来的数据,首先送过来的24bit数据被第一个像素点提取后,送到像素点内部的数据锁存器, ...

  2. 单片机18b20c语言程序,AVR单片机控制DS18B20的示例C程序

    原标题:AVR单片机控制DS18B20的示例C程序 #include #include #include #include unsigned char data_H, data_L,wendu; un ...

  3. 乐鑫代理启明云端分享:用ESP32单片机控制LED教程示例

    提示:准备好开发板和LED灯 1.可以选择启明云端推出的ESP32开发板,上手简单 原因: 启明云端WT-ESP32-DevKitC V4开发板,这是一款基于ESP32的小型开发板,集WIFI+蓝牙方 ...

  4. 单片机原理及其应用——单片机控制按键依次点亮8只发光二极管

    目录 一.实验要求 二.Proteus仿真软件画原理图 三.Keil编程软件编写程序 四.实验结果 (一)仿真结果 (二)连接电路 (三)烧录并观察实验现象 结语 一.实验要求 [实验目的] 1.了解 ...

  5. 单片机原理及其应用——单片机控制按键点亮发光二极管

    目录 一.实验要求 二.分析 (一)电路原理 (二)机械式按键的抖动时间与解决方法 三.Proteus仿真软件画原理图 四.Keil编程软件编写程序 五.实验结果 (一)仿真结果 (二)连接电路烧录 ...

  6. 单片机原理及其应用——单片机控制8只发光二极管交替闪烁

    目录 一.实验要求 二.分析 三.利用Proteus仿真软件画原理图 四.Keil编程软件编写程序 五.实验结果 一.实验要求 [实验内容] 1.用Proteus绘制硬件原理图,并设置元件参数. 2. ...

  7. avr单片机led数码管六位动态显示时分秒c语言程序,AVR单片机控制8段LED数码管同时显示 - AVR单片机8位数码管显示的程序实现(两种方法介绍)...

    AVR单片机控制8段LED数码管同时显示 这是一个简单的供单片机入门学习者练习用的8段LED数码管控制汇编程序,控制一个两位的数码管同时显示字符(动态刷新).用AVR- Studio-4 开发,在AV ...

  8. c52单片机控制l298n步进电机角度_【设计图文】单片机实现的步进电机控制系统(开题报告+论文+文献综述+外文翻译+DWG图纸)...

    点击标题上方"微Life梦Heart阅读",关注. 设计图文626 摘  要[快速浏览摘要]单片微型计算机简称单片机.它是把组成微型计算机的各功能部件:中央处理器.CPU.随机存取 ...

  9. arduino数码管显示0到9_少儿Python程序第十二讲:单片机控制数码管

    本讲继续学习用Python控制单片机,并用单片机连接和控制其它硬件,具体目标是利用开发板控制四位数码管,显示指定的数字.实验效果如图12.1所示: 图12.1 单片机控制四位数码管显示数字 注意:请先 ...

最新文章

  1. python-正则表达式练习题
  2. 阿里云 Ubuntu PHP7 Nginx Mysql 开发环境搭建
  3. nginx和pcre错误问题
  4. JSF JQUERY 使用datepicker
  5. 关于Angular里给Component protected方法写单元测试的技巧
  6. mac mysql php_Mac搭建php开发环境:Apache+php+MySql
  7. [设计模式]代理模式
  8. C/C++下载文件_上传文件
  9. Opencv--Mat属性step,size,step1,elemSize,elemSize1
  10. Docker 集群环境实现的新方式
  11. iOS Swift JSON解析教程
  12. 京东联盟开发(10)——轮询获取数据
  13. java中是否可以覆盖over_”static”关键字是什么意思?Java中是否可以覆盖(override)一个private或者是static的方法?...
  14. 华南师范大学计算机考研考场,2018考研:华南师范大学考场安排
  15. 城市公交、地铁站点和线路数据纠偏与矢量化
  16. 串口服务器的作用是什么?
  17. GB28181监控视频统一汇聚平台LiveGBS将海康大华华为宇视等厂家监控设备统一接入后如何生成固定播放链接或者固定的流地址可以直接无插件播放或者拉取
  18. 常用表格:ASCAII码对照表
  19. linux deploy安装kali和磁盘扩容
  20. Java给字符串数组动态赋值

热门文章

  1. 视频剪辑必备,5个视频素材网站,马住
  2. 机器学习之变分推断(三)基于平均场假设变分推断与广义EM
  3. 计算机英语期末试题,计算机英语期末考试试题
  4. 新版本读取老版本文件崩溃BUG
  5. 阿里云国际站:阿里云启用第三座日本数据中心,加快海外市场扩展
  6. Java 本地接口(JNI)编程指南和规范学习笔记2
  7. Wang Changyu
  8. 淘宝宝贝标题的优化设置技巧
  9. pdf怎么转换成jpg图片效果好
  10. 浅析缓冲区溢出漏洞的利用与Shellcode编写