Code Monkey home page Code Monkey logo

eetreeassignment1's Introduction

硬禾学堂雪花灯实验报告: 苏州圣诞来点雪~

导言

背景

嵌入式系统(Embedded System),是一种嵌入机械或电气系统内部、具有专一功能和实时计算性能的计算机系统[1]。在以5G,物联网,边缘计算,为代表的新的计算浪潮下,掌握嵌入式系统的是成为全栈开发的必要条件,西浦国际创新港携手硬禾学堂,结合研发技术的行业需求和发展趋势,共同推出全栈技能人才培养计划。本报告为雪花灯实验报告,旨在学习嵌入式系统编程的基本开发流程,并且对于嵌入式系统模块和功能有进一步的认识[2]。今天正好是2020圣诞节,这个可爱的雪花灯实验报告,就圣诞礼物送给大家啦~

报告结构

本报告首先介绍嵌入式系统的基本背景,并且把介绍嵌入式系统的系统架构和实践方法,进而,实验过程和对应的实验结果会呗阐明,最终实验总结和未来展望会被阐述作为报告结尾。

名词表(这里是概念)

  • MCU
  • 是微处理器Microprocessor的缩写
  • ELEC211要好好学哈,我们用的是ARM Cortex M7来讲的
  • 常见的微处理器包括树莓派,Arduino
  • 雪花灯:ws2812
  • 本质上是一种灯的结构
  • 雪花灯原理图雪花灯原理图
  • WS2812, 这LED内部已经整合了信号处理的芯片
  • 他有四个引脚,分别是
    • VDD作为电源来实现供电管脚
    • DOUT,作为data out 的缩写,作为数据输出的管脚来控制数据信号的输出
    • VSS,作为Voltage Source Source的缩写,是Vdd反过来的兄弟,所以这个是地啦
    • DIN,是data in 的缩写,作为数据输入的管脚,来控制数据信号的输入
  • 具体的线路图在左边,供参考
  • 单片机:stc15w204s
  • stc15w204s原理引脚图stc15w204s原理引脚图
  • 51单片机,STC牛的!
  • 我的理解这是一个深圳软件厂家STC做的非常硬核的,成本非常低,非常适合教学的芯片,我们就用这个了。
  • nop()和33M时钟
  • 一个nop就是一个指令周期, STC15W204S是1T单片机,所以就是一个机械周期就是一个时钟周期所以在33MHz的情况下,一个nop大概是31ns左右
  • 这样20个nop就是610ns,PPT写的是680ns,可能是为了数字好听的工程考虑吧~
  • nop分析图表nop分析图表
  • 这里有一个PPT,我其实并不知道如何调出这个窗口?
  • 至于所谓的33MHz,我们可以通过这个下拉窗口来实现
  • stc时序设置模块stc时序设置模块
  • 话说这个33MHz好像和nop有点关系,但我不知道是什么。

方法论

嵌入式系统整体结构

  • 通用嵌入式系统与外界环境交互范式通用嵌入式系统与外界环境交互范式
  • 我们的世界是模拟的世界,也就是连续的世界
  • 这样我们从传感器把自然界的信号转换成电信号
  • 之后我们通过放大,滤波,我们得到了对于我们有意义的信号
  • 之后,我们通过多路转换,采样保持,做一些转换和convert
  • 之后我们到了A2D的东西,这样我们生成了数字信号,输入到微信计算机的输入接口里面
  • 之后计算机通过它的强大 的计算能力,产生了对应的输出信号
  • 通过D2A
  • 我们通过放大,驱动,我们到了机械臂,来做相对应的执行
  • 改变这个连续的世界!

嵌入式系统实践:雪花灯控制系统

雪花灯控制系统雪花灯控制系统
  • 我们通过PC串口助手上把编好的程序以hex文件的形式
  • 通过UART的传输协议
  • 传送到MCU,也就是微处理器上面
  • 微处理器通过程序来选择WS2812灯亮灭的方式

数据传输方式

UART数据传输方式解释UART数据传输方式解释

我的理解这个数据他能同时有四个口传,总共有24bit的数据传输结构,长楼上这个样子。

点亮雪花板

点亮雪花板的状态和码的对应关系点亮雪花板的状态和码的对应关系

说实话,这个板子插上去就亮了,我也不知道这个数据传输时间在这里是怎么体现的。。。

编程啦

串口初始化

void UartInit(void)        //9600bps@33MHz
{
    SCON = 0x50;        
    AUXR |= 0x01;   
    AUXR |= 0x04;       
    T2L = 0xA5;     
    T2H = 0xFC;     
    AUXR |= 0x10;       
    ES=1;
    EA=1;
}

初始化哈

SCON寄存器

  • 好像要把这个寄存器取个值SCON=0x50;//0101 0000

串口1的四种工作方式的定义方式

  • SM0=0 SM1=0
  • SM0=0 SM1=1
  • SM0=1 SM1=0
  • SM0=1 SM1=1

最后一个比较重要的代码块

UART传输协议代码块UART传输协议代码块

我的理解是这个是一个实现UART接受数据的函数,总之UART用这个就对了。

实验过程

实验仪器布局图

实验仪器布局实验仪器布局

实验过程1

通过stc的脚本调试工具导入hex文件

STC调试软件STC调试软件

在这里要设置灯是ws2812,单片机是stc15w204s,时钟选择33M

导入的hex文件见附录。

实验过程2

/*------------------------------------------------------------------------------------
 * 项目名称:
     带单片机8位全彩流水灯模板程序V1.0
 * 功能描述:
 * 配置说明:
      - MCU    :STC15W204S
     - CPU频率:30MHz
-------------------------------------------------------------------------------------*/


/**************************************包含头文件*************************************/
#include "STC15W.h"
#include "ws2812.h"         //包含LED驱动程序
#include "delay.h"         //包含延时程序
#include "uart.h"
/**************************************子函数声明*************************************/

void Flash_WS2812(unsigned char *p);//整体闪烁,传递颜色参数
void LED_Water(unsigned char *p);//由内而外流水点亮
void LED_Water_Color(unsigned char *p);//由内而外流水点亮,颜色变化
void LED_Single_Flower(void);//单圈单个灯绽放点亮
void Water_lamp(unsigned char *p);//按1-37顺序点亮
void DIY_SNOW(unsigned char *p);//由外向内,按照数组的颜色顺序显示,最多五个颜色
void Flower(void);
void Flower_In(void);//一圈圈逐步点亮
void Gradual_change(unsigned char *p);//渐变亮
void Breathing_WS2812(unsigned char level,unsigned char Color);//呼吸渐变,两个参数,第一个表示集中小颜色,第二个表示颜色

void WS2812_Close(void);
void WS2812_1_5Line(unsigned char *p,unsigned char line);//让其整圈一起点亮,传递两个参数,第一个参数为显示颜色,第二个参数是让第几圈点亮,圈数1-5
void WS2812_1_5Line_In(unsigned char *p,unsigned char line);//让其整圈一起点亮,内圈颜色保持不变,传递两个参数,第一个参数为显示颜色,第二个参数是让第几圈点亮,圈数1-5
void WS2812_1_5Line_Single(unsigned char *p,unsigned char line);//让对应圈的灯流水点亮,传递两个参数,第一个参数为显示颜色,第二个参数是让第几圈点亮,圈数1-5
void WS2812_LineIn_Single(unsigned char *p,unsigned char line);//对应圈数最外层流水,里面全部点亮。传递两个参数,第一个参数为显示颜色,第二个参数是让第几圈点亮,圈数2-5

void Change_Color(unsigned char *p);
void sovle(unsigned char m);

/***************************************全局变量**************************************/

unsigned char green[3]={50,0,0};//绿,红,蓝
unsigned char red[3]={0,50,0};//红
unsigned char blue[3]={0,0,50};//蓝
unsigned char white[3]={25,25,25};//白
unsigned char org[3]={5,80,0};//橘
unsigned char close[3]={0,0,0};
unsigned char color[7][3]={{0,50,0},{25,255,0},{100,255,0},{50,0,0},{0,0,50},{0,230,230},{50,50,50}};//红,橙,黄,绿,蓝,紫,白
xdata unsigned char buffer[64];
unsigned char buf_data=0x00;
// unsigned char dis_count=0;
/***************************************主程序****************************************/
void  main()
{
    DelayMs(1000);            //上电延时
    UartInit();
    UART1_SendString("STC15W204S\r\nUart is ok !\r\n");//发送字符串检测是否初始化成功
    DelayMs(1000);  
     ResetDataFlow();
     WS2812_Close();
    //主循环
    while(1)
    {
//         UART1_SendData(buf_data);
        sovle(buf_data);
//         Flash_WS2812(white);
    }
}
//-------------------------------------------------------------------------------
//子程序名称:sovle(unsigned char m)
//功能:根据串口接收的数据,选择处理
//参数:选择参数
//说明:
//-------------------------------------------------------------------------------
void sovle(unsigned char m)
{
    switch(m)
    {
        case 0x00:
            DIY_SNOW(color);
            Delay100Ms(50);
            WS2812_Close();
            Water_lamp(white);
            ResetDataFlow();
            Flash_WS2812(white);
            ResetDataFlow();    

            WS2812_Close();
            Delay100Ms(5);

            LED_Water_Color(color);
            WS2812_Close();
            Delay100Ms(5);
        break;
        case 0x01:
            WS2812_Close();
            DIY_SNOW(color);
        break;
        case 0x02:
            WS2812_Close();
            Flower_In();
        break;
        case 0x03:
            WS2812_Close();
            Breathing_WS2812(0,Red);
            Breathing_WS2812(1,Red);
            Breathing_WS2812(1,Green);
            Breathing_WS2812(1,Blue);
        break;
        case 0x04:
            WS2812_Close();
            Gradual_change(org);

        break;
        case 0x05:
            WS2812_Close();
            LED_Single_Flower();

        break;
        case 0x06:
            WS2812_Close();
            Change_Color(red);

        break;
        case 0x07:
            WS2812_Close();
            LED_Water_Color(color);
        break;
        case 0x08:
            WS2812_Close();
            Flash_WS2812(white);
        break;
        case 0x09:
            WS2812_Close();
        break;
    }
}

//-------------------------------------------------------------------------------
//子程序名称:WS2812_Close(void)
//功能:将37个灯全部熄灭
//参数:无
//说明:
//-------------------------------------------------------------------------------
void WS2812_Close(void)
{
    unsigned char count_sum;
    for(count_sum=0;count_sum<37;count_sum++)
    {
        SendOnePix(close);
    }
    ResetDataFlow();
}
//-------------------------------------------------------------------------------
//子程序名称:WS2812_1_5Line(unsigned char *p,unsigned char line)
//功能:让其整圈一起点亮,传递两个参数,第一个参数为显示颜色,第二个参数是让第几圈点亮,圈数1-5
//参数:指针参数是颜色的数组,line参数为第几圈(1-5)
//说明:
//-------------------------------------------------------------------------------
void WS2812_1_5Line(unsigned char *p,unsigned char line)
{

    unsigned char count_sum;
    unsigned char m=1;
    switch(line)
    {
        case 1:
            for(count_sum=0;count_sum<=36;count_sum++)//36个灯循环
            {
                if(count_sum==36)
                {
                    SendOnePix(p);
                }
                else
                    SendOnePix(close);
            }
            ResetDataFlow();    
            break;
        case 2:
            for(count_sum=0;count_sum<36;count_sum++)//36个灯循环
            {
                if(count_sum%6==0)
                {
                    SendOnePix(p);
                }
                else
                    SendOnePix(close);
            }
            ResetDataFlow();    
            break;
        case 3:
            for(count_sum=0;count_sum<36;count_sum++)//36个灯循环
            {
                if(count_sum%6==1)
                {
                    SendOnePix(p);
                }
                else
                    SendOnePix(close);
            }
            ResetDataFlow();    
            break;
        case 4:
            for(count_sum=0;count_sum<36;count_sum++)//36个灯循环
            {
                if(count_sum%6==2)
                {
                    SendOnePix(p);
                }
                else
                    SendOnePix(close);
            }
            ResetDataFlow();    
            break;
        case 5:
            for(count_sum=0;count_sum<36;count_sum++)//36个灯循环
            {
                if(count_sum==3*m)
                {
                    SendOnePix(p);
                }
                else if(count_sum==(3*m)+1)
                {
                    SendOnePix(p);
                }
                else if(count_sum==(3*m)+2)
                {
                    SendOnePix(p);
                    m+=2;
                }
                else
                    SendOnePix(close);  
            }
            m=1;
            ResetDataFlow();    
            break;
    }
}

//-------------------------------------------------------------------------------
//子程序名称:WS2812_1_5Line_In(unsigned char *p,unsigned char line)
//功能:让其整圈一起点亮,内圈颜色保持不变
//参数:指针参数是颜色的二维数组,line参数为第几圈(1-5)
//说明:
//-------------------------------------------------------------------------------
void WS2812_1_5Line_In(unsigned char *p,unsigned char line)
{
    unsigned char count_sum;
    unsigned char m=1;
    unsigned char k=0;
    switch(line)
    {
        case 1:
            for(count_sum=0;count_sum<=36;count_sum++)//36个灯循环
            {
                if(count_sum==36)
                {
                    SendOnePix(&p[(3*k)]);
                }
                else
                    SendOnePix(close);
            }
            ResetDataFlow();    
            break;
        case 2:
            for(count_sum=0;count_sum<36;count_sum++)//36个灯循环
            {
                k=1;
                if(count_sum%6==0)
                {
                    SendOnePix(&p[(3*k)]);
                }
                else
                    SendOnePix(close);
            }
            ResetDataFlow();    
            break;
        case 3:
            for(count_sum=0;count_sum<36;count_sum++)//36个灯循环
            {
                if(count_sum%6==1)
                {
                    k=2;
                    SendOnePix(&p[(3*k)]);
                }
                else if(count_sum%6==0)
                {
                    k=1;
                    SendOnePix(&p[(3*k)]);
                }
                else
                    SendOnePix(close);
            }
            ResetDataFlow();    
            break;
        case 4:
            for(count_sum=0;count_sum<36;count_sum++)//36个灯循环
            {
                if(count_sum%6==2)
                {
                    k=3;
                    SendOnePix(&p[(3*k)]);
                }
                else if(count_sum%6==1)
                {
                    k=2;
                    SendOnePix(&p[(3*k)]);
                }
                else if(count_sum%6==0)
                {
                    k=1;
                    SendOnePix(&p[(3*k)]);
                }
                else
                    SendOnePix(close);
            }
            ResetDataFlow();    
            break;
        case 5:
            for(count_sum=0;count_sum<36;count_sum++)//36个灯循环
            {
                if(count_sum==3*m)
                {
                    k=4;
                    SendOnePix(&p[(3*k)]);
                }
                else if(count_sum==(3*m)+1)
                {
                    k=5;
                    SendOnePix(&p[(3*k)]);
                }
                else if(count_sum==(3*m)+2)
                {
                    k=6;
                    SendOnePix(&p[(3*k)]);
                    m+=2;
                }
                else if(count_sum%6==2)
                {
                    k=3;
                    SendOnePix(&p[(3*k)]);
                }
                else if(count_sum%6==1)
                {
                    k=2;
                    SendOnePix(&p[(3*k)]);
                }
                else if(count_sum%6==0)
                {
                    k=1;
                    SendOnePix(&p[(3*k)]);
                }
                else
                    SendOnePix(close);  
            }
            m=1;
            ResetDataFlow();    
            break;
    }
}
//-------------------------------------------------------------------------------
//子程序名称:WS2812_1_5Line_Single(unsigned char *p,unsigned char line)
//功能:让对应圈的灯流水点亮,传递两个参数
//参数:指针参数是颜色的二维数组,line参数为第几圈(1-5)
//说明:
//-------------------------------------------------------------------------------
void WS2812_1_5Line_Single(unsigned char *p,unsigned char line)//让对应圈的灯流水点亮,传递两个参数,第一个参数为显示颜色,第二个参数是让第几圈点亮,圈数1-5
{
    unsigned char count_sum;
    unsigned char count=0;
    unsigned char m=1;
    switch(line)
    {
        case 1:
            for(count_sum=0;count_sum<37;count_sum++)
            {
                if(count_sum==36)
                {
                    SendOnePix(p);
                }
                else
                    SendOnePix(close);
            }
            Delay100Ms(2);
            ResetDataFlow();
            break;
        case 2:
            for(count_sum=0;count_sum<36;count_sum++)//36个灯循环
            {
                for(count=0;count<=count_sum;count++)//在count_sum个灯内,保证亮几个
                {
                    if(count%6==0)
                    {
                        SendOnePix(p);
                    }
                    else
                        SendOnePix(close);
                }
                DelayMs(10);
            }
            ResetDataFlow();
            break;
        case 3:
            for(count_sum=0;count_sum<36;count_sum++)//36个灯循环
            {
                for(count=0;count<=count_sum;count++)//在count_sum个灯内,保证亮几个
                {
                    if(count%6==1)
                    {
                        SendOnePix(p);
                    }
                    else
                        SendOnePix(close);
                }
                DelayMs(10);
            }
            ResetDataFlow();
            break;
        case 4:
            for(count_sum=0;count_sum<36;count_sum++)//36个灯循环
            {
                for(count=0;count<=count_sum;count++)//在count_sum个灯内,保证亮几个
                {
                    if(count%6==2)
                    {
                        SendOnePix(p);
                    }
                    else
                        SendOnePix(close);
                }
                DelayMs(10);
            }
            ResetDataFlow();
            break;
        case 5:
            for(count_sum=0;count_sum<36;count_sum++)
            {
                for(count=0;count<=count_sum;count++)
                {
                    if(count==3*m)
                    {
                        SendOnePix(p);
                    }
                    else if(count==(3*m)+1)
                    {
                        SendOnePix(p);
                    }
                    else if(count==(3*m)+2)
                    {
                        SendOnePix(p);
                        m+=2;
                    }
                    else
                        SendOnePix(close);
                }
                ResetDataFlow();
                Delay100Ms(1);
                m=1;
            }
            ResetDataFlow();
        }
}

//-------------------------------------------------------------------------------
//子程序名称:WS2812_LineIn_Single(unsigned char *p,unsigned char line)
//功能:让对应圈的灯流水点亮,内圈不灭,传递两个参数
//参数:指针参数是颜色的数组,line参数为第几圈(2-5)
//说明:
//-------------------------------------------------------------------------------
void WS2812_LineIn_Single(unsigned char *p,unsigned char line)
{
    unsigned char count;
    unsigned char count_sum;
    unsigned char m=1;
    switch(line)
    {
        case 2:
            for(count_sum=0;count_sum<37;count_sum++)
            {
                for(count=0;count<=count_sum;count++)
                {
                    if(count%6==0)
                    {
                        SendOnePix(p);
                    }
                    else
                        SendOnePix(close);
                }
                DelayMs(20);
            }
            ResetDataFlow();
            break;
        case 3:
            for(count_sum=0;count_sum<36;count_sum++)
            {
                for(count=0;count<=count_sum;count++)
                {
                    if(count%6==1)
                    {
                        SendOnePix(p);
                    }
                    else if(count%6==0)
                    {
                        SendOnePix(p);
                    }
                    else
                        SendOnePix(close);
                }
//                 ResetDataFlow();
                DelayMs(20);
            }
            ResetDataFlow();
            break;
        case 4:
            for(count_sum=0;count_sum<36;count_sum++)
            {
                for(count=0;count<=count_sum;count++)
                {
                    if(count%6==2)
                    {
                        SendOnePix(p);
                    }
                    else if(count%6==1)
                    {
                        SendOnePix(p);
                    }
                    else if(count%6==0)
                    {
                        SendOnePix(p);
                    }
                    else
                        SendOnePix(close);
                }
//                 ResetDataFlow();
                DelayMs(20);
            }
            ResetDataFlow();
            break;
        case 5:
            for(count_sum=0;count_sum<36;count_sum++)
            {
                for(count=0;count<=count_sum;count++)
                {
                    if(count==3*m)
                    {
                        SendOnePix(p);
        //              m+=2;
                    }
                    else if(count==(3*m)+1)
                    {
                        SendOnePix(p);
                    }
                    else if(count==(3*m)+2)
                    {
                        SendOnePix(p);
                        m+=2;
                    }

                    else if(count%6==2)
                    {
                        SendOnePix(p);
                    }
                    else if(count%6==1)
                    {
                        SendOnePix(p);
                    }
                    else if(count%6==0)
                    {
                        SendOnePix(p);
                    }
                    else
                        SendOnePix(close);
                }
                DelayMs(70);
                m=1;
            }
            ResetDataFlow();
            break;
    }
}

//-------------------------------------------------------------------------------
//子程序名称:LED_Water(unsigned char *p)
//功能:由内而外流水点亮
//参数:指针参数是颜色的数组
//说明:
//-------------------------------------------------------------------------------
void LED_Water(unsigned char *p)//由内而外流水点亮
{
    WS2812_1_5Line_Single(p,1);//37点不给新的数据,所以一直保持之前的状态
    WS2812_1_5Line_Single(p,2);
//     LED_3count(p);
//     LED_4count(p);
//     LED_5count(p);
    WS2812_LineIn_Single(p,3);
    WS2812_LineIn_Single(p,4);
    WS2812_LineIn_Single(p,5);
}

//-------------------------------------------------------------------------------
//子程序名称:LED_Water(unsigned char *p)
//功能:由内而外流水点亮
//参数:指针参数是多个颜色的二维数组
//说明:
//-------------------------------------------------------------------------------
void LED_Water_Color(unsigned char *p)//由内而外流水点亮,颜色变换
{
    unsigned char k=0;
    for(k=0;k<7;k++)
    {
        LED_Water(&p[(3*k)]);
    }
}
//-------------------------------------------------------------------------------
//子程序名称:LED_Single_Flower(void)
//功能:单圈单个灯绽放点亮
//参数:无
//说明:
//-------------------------------------------------------------------------------
void LED_Single_Flower(void)//单圈单个灯绽放点亮
{
        WS2812_1_5Line_Single(green,1);
        DelayMs(50);
        WS2812_Close();
//         LED_2_Single(c);
    WS2812_1_5Line_Single(red,2);
        DelayMs(50);
//         LED_3_Single(b);
    WS2812_1_5Line_Single(blue,3);
        DelayMs(50);
//         LED_4_Single(a);
    WS2812_1_5Line_Single(org,4);
        DelayMs(50);
//         LED_5_Single(d);
    WS2812_1_5Line_Single(white,5);
        DelayMs(20);
        WS2812_Close();
}

//-------------------------------------------------------------------------------
//子程序名称:Flash_WS2812(unsigned char *p)
//功能:整体闪烁
//参数:指针参数是颜色的数组
//说明:
//-------------------------------------------------------------------------------
void Flash_WS2812(unsigned char *p)
{
    unsigned char count;
    WS2812_Close();
    ResetDataFlow();
    Delay100Ms(5);
    for(count=0;count<37;count++)
    {
        SendOnePix(p);
    }
    Delay100Ms(5);
}

//-------------------------------------------------------------------------------
//子程序名称:DIY_SNOW(unsigned char *p)
//功能:由外向内,按照数组的颜色顺序显示,最多五个颜色
//参数:指针参数是多个颜色的二维数组
//说明:
//-------------------------------------------------------------------------------
void DIY_SNOW(unsigned char *p)//由外向内,按照数组的颜色顺序显示,最多五个颜色
{
    unsigned char count;
    unsigned char m=1;
    unsigned char k=0;
    for(count=0;count<36;count++)
    {
        if(count==3*m)
            {
                SendOnePix(&p[(3*k)]);
            }
            else if(count==(3*m)+1)
            {
                SendOnePix(&p[(3*k)]);
            }
            else if(count==(3*m)+2)
            {
                SendOnePix(&p[(3*k)]);
                m+=2;
            }
            else if(count%6==2)
            {
                k=1;
                SendOnePix(&p[(3*k)]);
            }
            else if(count%6==1)
            {
                k=2;
                SendOnePix(&p[(3*k)]);
            }
            else if(count%6==0)
            {
                k=3;
                SendOnePix(&p[(3*k)]);
            }
    }
    if(count==36)
    {
        k=4;
        SendOnePix(&p[(3*k)]);
    }
    m=1;
    ResetDataFlow();    
}

//-------------------------------------------------------------------------------
//子程序名称:Water_lamp(unsigned char *p)
//功能:按1-37顺序点亮
//参数:指针参数是颜色的数组
//说明:
//-------------------------------------------------------------------------------
void Water_lamp(unsigned char *p)//按1-37顺序点亮
{
    unsigned char count;
    unsigned char count_sum;
    for(count_sum=0;count_sum<37;count_sum++)
    {
        for(count=0;count<=count_sum;count++)
        {
            SendOnePix(p);
        }
        ResetDataFlow();
        DelayMs(50);
    }
    ResetDataFlow();
}

void Flower(void)
{
    WS2812_1_5Line(green,1);
    Delay100Ms(5);
    WS2812_1_5Line(green,1);
    WS2812_1_5Line(red,2);
    Delay100Ms(5);
    WS2812_1_5Line(green,1);
    WS2812_1_5Line(red,2);
    WS2812_1_5Line(blue,3);
    Delay100Ms(5);
    WS2812_1_5Line(green,1);
    WS2812_1_5Line(red,2);
    WS2812_1_5Line(blue,3);
    WS2812_1_5Line(white,4);
    Delay100Ms(5);
    WS2812_1_5Line(green,1);
    WS2812_1_5Line(red,2);
    WS2812_1_5Line(blue,3);
    WS2812_1_5Line(white,4);
    WS2812_1_5Line(org,5);
    Delay100Ms(5);
}
//-------------------------------------------------------------------------------
//子程序名称:Flower_In(void)
//功能:一圈圈整体点亮,内部颜色不变
//参数:无
//说明:
//-------------------------------------------------------------------------------
void Flower_In(void)
{
        WS2812_1_5Line_In(color,1);
        Delay100Ms(5);
        WS2812_1_5Line_In(color,2);
        Delay100Ms(5);
        WS2812_1_5Line_In(color,3);
        Delay100Ms(5);
        WS2812_1_5Line_In(color,4);
        Delay100Ms(5);
        WS2812_1_5Line_In(color,5);
        Delay100Ms(5);
}

//-------------------------------------------------------------------------------
//子程序名称:Gradual_change(unsigned char *p)
//功能:渐变亮
//参数:指针参数是颜色的数组
//说明:
//-------------------------------------------------------------------------------
void Gradual_change(unsigned char *p)
{
    unsigned char i,j,count;
    unsigned char x[3];

         for(j=0;j<3;j++)
        {
            x[j]=p[j];
        }
//     for(i=0;i<50;i++)
//     {
//         for(j=0;j<3;j++)
//         {
//             x[j]++;
//         }
        for(count=0;count<37;count++)
        {
            for(j=0;j<3;j++)
            {
                x[j]++;
            }
            SendOnePix(x);
        }
        ResetDataFlow();
}

//-------------------------------------------------------------------------------
//子程序名称:Breathing_WS2812(unsigned char level,unsigned char Color)
//功能:渐变亮
//参数:level表示一个颜色0即为白色,1时,由Color参数决定为R,G,B中的哪个颜色渐变
//说明:
//-------------------------------------------------------------------------------
void Breathing_WS2812(unsigned char level,unsigned char Color)//呼吸渐变,两个参数,第一个表示集中小颜色,第二个表示颜色
{
    unsigned char i,j,count;
    unsigned char x[3]={0,0,0};
    switch(level)
    {
            case 0:
                for(i=0;i<50;i++)
                {
                    for(j=0;j<3;j++)
                    {
                        x[j]++;
                    }
                    for(count=0;count<37;count++)
                    {
                        SendOnePix(x);
                    }
                    Delay100Ms(1);
                }       
                break;
            case 1:
                for(i=0;i<50;i++)
                {
                    for(j=0;j<3;j++)
                    {
                        switch(Color)
                        {
                            case Green:
                                x[0]++;
                                break;
                            case Red:
                                x[1]++;
                                break;
                            case Blue:
                                x[2]++;
                                break;
                        }
                    }
                    for(count=0;count<37;count++)
                    {
                        SendOnePix(x);
                    }
                    Delay100Ms(1);
                }       
                break;
    }
}

//-------------------------------------------------------------------------------
//子程序名称:Change_Color(unsigned char *p)
//功能:37个灯一起变色亮
//参数:指针参数是多个颜色的二维数组
//说明:
//-------------------------------------------------------------------------------
void Change_Color(unsigned char *p)
{
    unsigned char count,k;
    for(k=0;k<8;k++)
    {
        for(count=0;count<37;count++)
        {
            SendOnePix(&p[(3*k)]);
        }
        ResetDataFlow();    
        Delay100Ms(5);
        WS2812_Close();
    }
}


//-------------------------------------------------------------------------------
//子程序名称:uart_sever()
//功能:串口中断服务函数,接收数据
//参数:
//说明:
//-------------------------------------------------------------------------------
void uart_sever() interrupt 4
{
    static unsigned int data_temp=0;
    if(RI==1)//数据接收完毕
    {
        RI=0;
        buf_data=SBUF;
        buffer[data_temp]=buf_data;
        data_temp++;
        UART1_SendData(buf_data);
        if(buf_data==0x0D)
        {
            data_temp=0;
        }
    }
}

/************************结束*******************************************************/

实验过程3

导入试验代码1 [3].

#include "STC15W.h"
#include "ws2812.h"          
#include "delay.h"       
#include "uart.h"
void WS2812_Close(void);
void WS2812_1_5Line(unsigned char *p,unsigned char line);
void mine(unsigned char n,unsigned char m);
unsigned char blue_a[3]={5,5,10};
unsigned char blue_b[3]={5,5,15}
unsigned char blue_c[3]={5,5,20};
unsigned char blue_d[3]={5,5,25};
unsigned char close[3]={0,0,0};
xdata unsigned char buffer[64];
unsigned char buf_data=0x00;
unsigned char m=0x01;
void  main()
{
       DelayMs(1000);                   
       UartInit();
       UART1_SendString("STC15W204S\r\nUart is ok !\r\n");
       DelayMs(1000);   
      ResetDataFlow();
      WS2812_Close();
       while(1)
       {
              mine(buf_data,m);
       }
}
void mine(unsigned char n,unsigned char m)
{
       switch(n)
       {
              case 0x00:
                     if (m)
                     {
                     WS2812_1_5Line(blue_a,1);
                Delay100Ms(5);
                WS2812_Close();
                WS2812_1_5Line(blue_b,2);
                Delay100Ms(5);
                WS2812_1_5Line(blue_c,3);
                Delay100Ms(5);
                WS2812_1_5Line(blue_d,4);
            Delay100Ms(5);
                WS2812_1_5Line(blue_e,5);
                Delay100Ms(5);
                     }
void WS2812_Close(void)
{
       unsigned char count_sum;
       for(count_sum=0;count_sum<37;count_sum++)
       {
              SendOnePix(close);
       }
       ResetDataFlow();
}
void WS2812_1_5Line(unsigned char *p,unsigned char line)
{
       unsigned char count_sum;
       unsigned char m=1;
       switch(line)
       {
              case 1:
                     for(count_sum=0;count_sum<=36;count_sum++)
                     {
                            if(count_sum==36)
                            {
                                   SendOnePix(p);
                            }
                            else
                                   SendOnePix(close);
                     }
                     ResetDataFlow();  
                     break;
              case 2:
                     for(count_sum=0;count_sum<36;count_sum++)
                     {
                            if(count_sum%6==0)
                            {
                                   SendOnePix(p);
                            }
                            else
                                   SendOnePix(close);
                     }
                     ResetDataFlow();  
                     break;
              case 3:
                     for(count_sum=0;count_sum<36;count_sum++)
                     {
                            if(count_sum%6==1)
                            {
                                   SendOnePix(p);
                            }
                            else
                                   SendOnePix(close);
                     }
                     ResetDataFlow();  
                     break;
              case 4:
                     for(count_sum=0;count_sum<36;count_sum++)//36¸öµÆÑ­»·
                     {
                            if(count_sum%6==2)
                            {
                                   SendOnePix(p);
                            }
                            else
                                   SendOnePix(close);
                     }
                     ResetDataFlow();  
                     break;
              case 5:
                     for(count_sum=0;count_sum<36;count_sum++)//36¸öµÆÑ­»·
                     {
                            if(count_sum==3*m)
                            {
                                   SendOnePix(p);
                            }
                            else if(count_sum==(3*m)+1)
                            {
                                   SendOnePix(p);
                            }
                            else if(count_sum==(3*m)+2)
                            {
                                   SendOnePix(p);
                                   m+=2;
                            }
                            else
                                   SendOnePix(close);     
                     }
                     m=1;
                     ResetDataFlow();  
                     break;
       }
}

实验结果

实验结果1

明天十点后

实验结果2

明天十点后

实验结果3

明天十点后

总结和未来展望

总结

人在做事情的时候,要问自己,自己有什么,想要做什么,这个目标的达成需要几个步骤?我能实现其中的几个步骤,这些作为一个迭代,我们再去准备下一个迭代。在这个实验中,我要承认我有几个地方做的不够好,列表如下

  • 没有上上机实操的课程
  • 在12月23日的课程上和同学快速把这个软件进行调试和组装,而把时间放在了概念理解上面(本可以更快的结束这个过程)
  • 没有很早的认识到,我们的目标是尽快的把我们能够做到的东西,先做好,之后,再去寻找其他的帮助,来实现下一个level的跨越!强调一下,把自己能够做好的事情做好,作为基础,然后进一步做下一个level的事情。

未来展望

  • 调试更多的程序,点亮更多的灯

疑惑的点

  • STC的51的灯和stm32的灯的区别
  • keil4和keil5的区别大么?
  • 如何使用单片机做到几百ns的延时?
  • SCON是干什么的?
  • 我们要哪一种工作方式?
  • SCON寄存器信息SCON寄存器信息
  • PCON是做什么的?
  • 这两个程序分别在哪里写?
  • UART初始化和通信信息UART初始化和通信信息
  • 所有的UART的协议的波特率都是一样的么?
  • 这个页面的配置是对的么?
  • Keil4编译配置1Keil4编译配置1
  • 这个页面的配置是对的么?
  • Keil编译配置2Keil编译配置2
  • 如果对的话,咋点了没有反应?

要做的事

  • 把我的报告发给老师
  • 明天上午十点和老师约一下这个自定义程序和接口的实现

引用

[1]https://www.omnisci.com/technical-glossary/embedded-systems#:~:text=An%20embedded%20system%20is%20a%20microprocessor%2Dbased%20computer%20hardware%20system,computation%20for%20real%2Dtime%20operations.

[2]https://www.eet-china.com/mp/a32983.html

[3]https://www.eetree.cn/project/detail/40

硬禾学堂!

感谢苏老师!

感谢苏老师!感谢苏老师!

附录1:雪花灯PCB文件

LED原理图LED原理图 控制电路原理控制电路原理 模块关系图模块关系图

附录2:指令机械码

:03000000020AF3FE
:0C0AF300787FE4F6D8FD75817B020B3A99
:03002000000000DD
:100D4E00030A320000032C00320003280000320395
:100D5E0025191919032F055000030D000000151059
:100D6E0000320019FF0064FF003200000000320064
:0C0D7E00E6E6323232012B0002080000D1
:100E7A00759850438E01438E0475D7A575D6FC43E9
:070E8A008E10D2ACD2AF22A2
:080ECD008F993099FDC29922B2
:100E3D008B768A778978AB76AA77A978120789603D
:100E4D00130578E5787002057714F9120789FF12FA
:050E5D000ECD80E22231
:100EA8007FE8120E91120EBE120E627B007A007954
:060EB8000A120B7F80FE10
:1007CF00EFB40A0040030208F09007DFF8282873FF
:1007DF000207FD0208860208920208980208B70273
:1007EF0008C30208C90208D50208E10208ED7B0020
:1007FF007A0079101208F17F32120003120E627B19
:10080F00007A007925120D8B120EBE7B007A0079CB
:10081F0025120DEA120EBE120E627F051200037B27
:10082F00007A007910120E15120E627F0512000366
:10083F00120BE1120E62120CCD120E627B007A00C7
:10084F007910120D11120E627B007A007928120CAA
:10085F00377F32120003120E627D01E4FF1209C2CC
:10086F007D017F011209C27D027F011209C2E4FDE1
:10087F007F011209C28067120E627B007A00791025
:10088F000208F1120E62020CCD120E627D01E4FF1E
:10089F001209C27D017F011209C27D027F01120977
:1008AF00C2E4FD7F010209C2120E627B007A007959
:1008BF002F020C37120E62020BE1120E627B007ACE
:1008CF0000792C020D11120E627B007A0079100252
:1008DF000E15120E627B007A007925020DEA120EB8
:0208EF00622283
:100E6200E4F5727B007A00790D120B7F0572E57250
:080E7200C3942540EE020EBE00
:080555007B007A00790A7D01A8
:06055D008B5B8A5C895DE6
:10056300755F01ED24FE603B1460621470030205A5
:10057300FB14700302062524046003020692E4F5CB
:100583005EE55EB42408AB5BAA5CA95D80067B00D4
:100593007A00790D120B7F055EE55ED3942440E16A
:1005A30002068FE4F55EE55E75F00684E5F07008FB
:1005B300AB5BAA5CA95D80067B007A00790D120B08
:1005C3007F055EE55EC3942440DC02068FE4F55E9E
:1005D300E55E75F00684AFF0BF0108AB5BAA5CA9CA
:1005E3005D80067B007A00790D120B7F055EE55E68
:1005F300C3942440DB02068FE4F55EE55E75F006E6
:1006030084AFF0BF0208AB5BAA5CA95D80067B00E8
:100613007A00790D120B7F055EE55EC3942440DBFF
:10062300806AE4F55EE55F75F003A4B55E06E4B5A4
:10063300F0028016E55F75F003A42401FFE435F0B2
:10064300FEE55EB5070CE4B50608AB5BAA5CA95DE5
:10065300802BE55F75F003A42402FFE435F0FEE58B
:100663005EB50713E4B5060FAB5BAA5CA95D120B7D
:100673007F055F055F80097B007A00790D120B7F90
:0F068300055EE55EC39424409C755F01120EBEB8
:010692002245
:060026007B007A00791056
:06002C008B438A44894564
:10003200754701E4F548ED24FE60451460791470BB
:100042000302010014700302015724046003020238
:1000520013E4F546E546B42412E54875F003A4AB73
:10006200432545F9E54435F0FA80067B007A0079AC
:100072000D120B7F0546E546D3942440D7020210A9
:10008200E4F546754801E54675F00684E5F0701220
:10009200E54875F003A4AB432545F9E54435F0FA8C
:1000A20080067B007A00790D120B7F0546E546C378
:1000B200942440CF020210E4F546E54675F006842A
:1000C200AFF0BF0105754802800DE54675F0068464
:1000D200E5F07015754801E54875F003A4AB4325BA
:1000E20045F9E54435F0FA80067B007A00790D1275
:1000F2000B7F0546E546C3942440BF020210E4F597
:1001020046E54675F00684AFF0BF020575480380E8
:100112001DE54675F00684AFF0BF01057548028003
:100122000DE54675F00684E5F07015754801E54861
:1001320075F003A4AB432545F9E54435F0FA800692
:100142007B007A00790D120B7F0546E546C39424A5
:1001520040AF020210E4F546E54775F003A4B54648
:1001620009E4B5F005754804807AE54775F003A403
:100172002401FFE435F0FEE546B50709E4B50605BE
:10018200754805805FE54775F003A42402FFE43556
:10019200F0FEE546B50720E4B5061C754806E548BD
:1001A20075F003A4AB432545F9E54435F0FA120B8B
:1001B2007F054705478048E54675F00684AFF0BFE6
:1001C2000205754803801DE54675F00684AFF0BF51
:1001D2000105754802800DE54675F00684E5F0706C
:1001E20015754801E54875F003A4AB432545F9E5CB
:1001F2004435F0FA80067B007A00790D120B7F05F8
:1002020046E546C39424500302015A754701120E73
:01021200BE2D
:0102130022C8
:0603C7008B498A4A894BB4
:1003CD00E4F54D754E01ED24FE604014607A147015
:1003DD00030204931470030204D124046003020584
:1003ED0054E4F54CE54CB42408AB49AA4AA94B801A
:1003FD00067B007A00790D120B7F054CE54CC394FA
:10040D002540E17F02120003020551E4F54CE4F5AD
:10041D004DE54DD3954C501FE54D75F00684E5F037
:10042D007008AB49AA4AA94B80067B007A00790D6A
:10043D00120B7F054D80DA7F0A120E91054CE54CAB
:10044D00C3942440C9020551E4F54CE4F54DE54D46
:10045D00D3954C5020E54D75F00684AFF0BF0108E3
:10046D00AB49AA4AA94B80067B007A00790D120B85
:10047D007F054D80D97F0A120E91054CE54CC39432
:10048D002440C8020551E4F54CE4F54DE54DD395F6
:10049D004C5020E54D75F00684AFF0BF0208AB4916
:1004AD00AA4AA94B80067B007A00790D120B7F05B5
:1004BD004D80D97F0A120E91054CE54CC394244012
:1004CD00C8020551E4F54CE4F54DE54DD3954C507E
:1004DD005FE54E75F003A4B54D06E4B5F002801648
:1004ED00E54E75F003A42401FFE435F0FEE54DB5AE
:1004FD00070CE4B50608AB49AA4AA94B802BE54E7B
:10050D0075F003A42402FFE435F0FEE54DB50713A5
:10051D00E4B5060FAB49AA4AA94B120B7F054E0550
:10052D004E80097B007A00790D120B7F054D809A64
:10053D00120EBE7F01120003754E01054CE54CC332
:07054D0094244083120EBE4E
:010554002284
:06021400AB79AA7AA97B78
:06021A008B4F8A50895150
:10022000755401ED24FD60501470030202C2147075
:1002300003020319240360030203C6E4F553E4F543
:1002400052E552D39553501FE55275F00684E5F000
:100250007008AB4FAA50A95180067B007A00790D37
:10026000120B7F055280DA7F14120E910553E5536D
:10027000C3942540C90203C3E4F553E4F552E552A3
:10028000D39553502CE55275F00684AFF0BF0102B0
:10029000800AE55275F00684E5F07008AB4FAA506D
:1002A000A95180067B007A00790D120B7F055280E0
:1002B000CD7F14120E910553E553C3942440BC0224
:1002C00003C3E4F553E4F552E552D395535039E5B1
:1002D0005275F00684AFF0BF02028017E55275F048
:1002E0000684AFF0BF0102800AE55275F00684E58E
:1002F000F07008AB4FAA50A95180067B007A0079B4
:100300000D120B7F055280C07F14120E910553E52C
:1003100053C3942440AF0203C3E4F553E4F552E51C
:1003200052D3955340030203AFE55475F003A4B5CF
:100330005206E4B5F0028061E55475F003A424018F
:10034000FFE435F0FEE552B50706E4B50602804944
:10035000E55475F003A42402FFE435F0FEE552B540
:100360000713E4B5060FAB4FAA50A951120B7F0536
:100370005405548035E55275F00684AFF0BF020293
:100380008017E55275F00684AFF0BF0102800AE5E0
:100390005275F00684E5F07008AB4FAA50A9518061
:1003A000067B007A00790D120B7F055202031F7F36
:1003B00046120E917554010553E553C3942450031E
:0603C00002031C120EBE38
:0103C6002214
:100DBF008B798A7A897B7D011203C7AB79AA7AA9CD
:100DCF007B7D021203C77D031202147D04120214ED
:0B0DDF00AB79AA7AA97B7D0502021AFD
:060E15008B6A8A6B896CF8
:100E1B00E4F56DF56DE56D75F003A4AB6A256CF922
:100E2B00E56B35F0FA120DBF056DE56DC394074008
:010E3B00E4D2
:010E3C002293
:100BE1007B007A00790A7D011203C77F32120E91D0
:100BF100120E627B007A00792C7D021203C77F32CC
:100C0100120E917B007A0079287D031203C77F328F
:100C1100120E917B007A00792F7D041203C77F3277
:100C2100120E917B007A0079257D051203C77F148E
:060C3100120E91020E629A
:060DEA008B6E8A6F897018
:100DF000120E62120EBE7F05120003E4F571AB6E97
:100E0000AA6FA970120B7F0571E571C3942540EE9E
:050E10007F0502000354
:0608F1008B558A56895761
:1008F700755901E4F55AF558E55975F003A4B5584B
:1009070006E4B5F0028074E55975F003A42401FFED
:10091700E435F0FEE558B50706E4B50602805CE568
:100927005975F003A42402FFE435F0FEE558B50736
:100937001DE4B50619E55A75F003A4AB552557F91B
:10094700E55635F0FA120B7F055905598040E558F1
:1009570075F00684AFF0BF0205755A01801DE55892
:1009670075F00684AFF0BF0105755A02800DE55892
:1009770075F00684E5F07016755A03E55A75F003AD
:10098700A4AB552557F9E55635F0FA120B7F0558F4
:10099700E558C3942450030208FFE558B42416759C
:1009A7005A04E55A75F003A4AB552557F9E55635B2
:0B09B700F0FA120B7F755901020EBE12
:060D8B008B608A618962A1
:100D9100E4F564E4F563E563D39564500DAB60AAB3
:100DA10061A962120B7F056380EC120EBE7F3212C5
:0E0DB1000E910564E564C3942540D8020EBE81
:100A5D001205557F051200031205557B007A0079AA
:100A6D002C7D0212055D7F051200031205557B00DA
:100A7D007A00792C7D0212055D7B007A0079287D44
:100A8D000312055D7F051200031205557B007A00E8
:100A9D00792C7D0212055D7B007A0079287D031289
:100AAD00055D7B007A0079257D0412055D7F0512B9
:100ABD0000031205557B007A00792C7D0212055D2D
:100ACD007B007A0079287D0312055D7B007A007921
:100ADD00257D0412055D7B007A00792F7D051205B9
:060AED005D7F050200031D
:100CCD007D011200267F051200037D021200267F92
:100CDD00051200037B007A0079107D0312002C7F32
:100CED00051200037B007A0079107D0412002C7F21
:100CFD00051200037B007A0079107D0512002C7F10
:040D0D0005020003D8
:060C37008B328A33893480
:100C3D00E4F536AB32AA33A93485368275830012BA
:100C4D0007A2FF74382536F8A6070536E536B40336
:100C5D00E2E4F537E4F53674382536F8060536E561
:100C6D0036B403F37B007A007938120B7F0537E534
:090C7D0037C3942540DE020EBECF
:0409C2008F3B8D3C9E
:1009C60078407C007D007BFF7A0079207E007F03E3
:1009D600120763E53B14603A04707BE4F53DE4F5E9
:1009E6003E7440253EF806053EE53EB403F3E4F5C5
:1009F6003F7B007A007940120B7F053FE53FC394A9
:100A06002540EE7F01120003053DE53DC3943240CB
:100A1600CD22E4F53DE4F53EE53C600E1460071496
:100A2600700A05408006054180020542053EE53E06
:100A3600B403E5E4F53F7B007A007940120B7F05AD
:100A46003FE53FC3942540EE7F01120003053DE5D7
:060A56003DC3943240BFD5
:010A5C002277
:060D11008B658A6689670C
:100D1700E4F569E4F568E56975F003A4AB65256753
:100D2700F9E56635F0FA120B7F0568E568C3942587
:100D370040E4120EBE7F05120003120E620569E53C
:060D470069C3940840CDD1
:010D4D002283
:03002300020C8646
:0D0C8600C0E0C083C082C0D075D000C007A0
:100C930030982CC29885992B74002509F58274002D
:100CA3003508F583E52BF00509E50970020508AF62
:0F0CB3002B120ECDE52BB40D0675080075090048
:0B0CC200D007D0D0D082D083D0E03229
:0E0EBE00C2CDE4FFE4FE0EBE14FC0FBF32F600
:010ECC002203
:060B7F008B738A74897576
:100B8500E4FFAB73AA74A9758F827583001207A25F
:100B9500FEE4FDEE30E71AD2CD00000000000000B3
:100BA50000000000000000000000000000C2CD8031
:100BB5000FD2CD00000000000000C2CD00000000F3
:100BC500000000000000000000000000000000EE32
:0B0BD50025E0FE0DBD08BC0FBF03A70C
:010BE00022F2
:100E9100E4FEEEC39F500FE4FDE4FC0CBC4EFC0DE0
:060EA100BD3CF60E80ECE2
:010EA7002228
:10000300E4FEEEC39F5015E4FDE4FCE4FB0BBB4EA2
:0C001300FC0CBC3CF60DBD62F00E80E65B
:01001F0022BE
:100AFF00020EA8E493A3F8E493A34003F68001F257
:100B0F0008DFF48029E493A3F85407240CC8C333F7
:100B1F00C4540F4420C8834004F456800146F6DFC6
:100B2F00E4800B0102040810204080900D4EE47EFB
:100B3F00019360BCA3FF543F30E509541FFEE493BB
:100B4F00A360010ECF54C025E060A840B8E493A382
:100B5F00FAE493A3F8E493A3C8C582C8CAC583CAAD
:100B6F00F0A3C8C582C8CAC583CADFE9DEE780BE65
:010D8A000068
:10069300E709F608DFFA8046E709F208DFFA803E49
:1006A30088828C83E709F0A3DFFA8032E309F60836
:1006B300DFFA8078E309F208DFFA807088828C839E
:1006C300E309F0A3DFFA806489828A83E0A3F60852
:1006D300DFFA805889828A83E0A3F208DFFA804C2C
:1006E30080D280FA80C680D4806980F28033801003
:1006F30080A680EA809A80A880DA80E280CA80336C
:1007030089828A83ECFAE493A3C8C582C8CCC583E3
:10071300CCF0A3C8C582C8CCC583CCDFE9DEE780B3
:100723000D89828A83E493A3F608DFF9ECFAA9F032
:10073300EDFB2289828A83ECFAE0A3C8C582C8CC88
:10074300C583CCF0A3C8C582C8CCC583CCDFEADEA1
:10075300E880DB89828A83E493A3F208DFF980CC03
:1007630088F0EF60010E4E60C388F0ED2402B404FC
:100773000050B9F582EB2402B4040050AF232345A3
:0607830082239006E373DF
:10078900BB010689828A83E0225002E722BBFE026E
:09079900E32289828A83E49322A1
:1007A200BB010CE58229F582E5833AF583E022500C
:1007B20006E92582F8E622BBFE06E92582F8E22256
:0D07C200E58229F582E5833AF583E4932270
:00000001FF

eetreeassignment1's People

Contributors

syncstudy avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.