在一块LED显示模块上发现了这个MC2302D控制芯片,查了一下,功能比较强大,控制使用也是比较简单,鉴于一开始没有找到太多的相关资料,故决定分享下来。

可以看到这个模块有很多的LED,都可以单独控制的哦,,控制芯片有两个MC2302D,控制线有4根,分别对应公共数据(DIN),公共时钟(CLK),片选1(STB1),片选2(STB2),VCC,GND不用说,电源引脚,供电范围2.7 - 5.5V。用来制作多功能仪表盘是再合适不过了,当然了,做个时钟也不错,不过只能用12小时制(为啥?因为最大18:88),配合功能窗指示上午,下午。

这里我用的STM32主控,以下是具体引脚

介绍MC2302D

首先去官网把相应的数据手册下载下来,看一下相关功能,引脚等

前面介绍就这么多,大家可以看看,也没什么解释的,很容易理解

驱动时序

说白了和SPI一样,片选拉低,DIN数据在时钟线拉低时候赋值就写入,DOUT平时拉高,DIN写入一个字节后芯片输出DOUT数据,具体细节可看SPI协议。DIN是写命令和数据的,DOUT只是用来读按键状态的,如果未接按键,可不用管DOUT引脚。

协议说明

一共4条命令,分别对应显示设置命令,数据设置命令,地址设置命令,显示控制命令。

显示设置命令,这部分和硬件设计有关,具体选择几位几段根据实际情况来,我这里使用了7位11段 (#0000_0011B)。

数据设置命令,设置数据写入方式设置,地址增量方式设置和方式设置。和功能需求有关,我这里只用到了写(#0100_0000B)。

地址设置命令,显示存储器有地址设置命令寻址,就是寻址偏移量,和硬件设计,以及功能显示有关,我这里从默认的00 开始寻址(#1100_0000B)。接着就是跟14 个8位数据,(根据官方给的程序,最多14段)。

显示控制命令,就是用来开启或关闭显示器,同时可以设8级脉冲宽度(其实是7级,000时候关闭显示),对应不同的亮度,2/16最暗,14/16最亮。

官方示例代码

void Make_Signal()
{STB=1;CLK=1;for(i=0; i<8; i++)                                //command 1 (#0000_0011B) {  STB=0;  CLK=0;if(i==1 || i==0)DIN=1;elseDIN=0;CLK=1;}STB=1;for(i=0; i<8; i++)               //command 2 (#0100_0000B){STB=0;CLK=0;if(i==6)DIN=1;elseDIN=0;CLK=1;}STB=1;for(i=0; i<8; i++)             //command 3 (#1100_0000B){STB=0;CLK=0;if(i==6 || i==7)DIN=1;elseDIN=0;CLK=1;}
/*for(i=0; i<112; i++)                //data  14*8个,初始化赋0值{STB=0;CLK=0;DIN=0;CLK=1;}STB=1;
*/for(i=0; i<14; i++)         //显示数据,操作seg_data[14]这个数组,即可进行相应的显示。     {for(j=0; j<8; j++){STB=0;CLK=0;DIN=seg_data[i] & comp_seg;CLK=1;seg_data[i]=seg_data[i]/2;}}STB=1;for(i=0; i<8; i++)                 //command 4 (#1000_0100B){STB=0;CLK=0;switch(f_dimming) //PWM亮度调节  f_dimming  0-7  0默认最亮{case(0):if(i==3 || i==7|| i==2 || i==1|| i==0)DIN=1;elseDIN=0;break;case(1):if(i==0 || i==3 ||i==7)DIN=1;elseDIN=0;break;case(2):if(i==1 || i==3 ||i==7)DIN=1;elseDIN=0;break;case(3):if(i==1 || i==0 || i==3 ||i==7)DIN=1;elseDIN=0;break;case(4):if(i==2 ||i==3 || i==7)DIN=1;elseDIN=0;break;case(5):if(i==2 || i==0 || i==3 ||i==7)DIN=1;elseDIN=0;break;case(6):if(i==2 || i==1 ||i==3 || i==7)DIN=1;elseDIN=0;break;case(7):if(i==2 || i==1 || i==0 ||i==7)DIN=1;elseDIN=0;break;}CLK=1;}STB=1;
}

修改驱动代码

其实挺简单的,就是发送 cmd_1 ,cmd_2, cmd_3   14*8数据,cmd_4。稍加修改如下:

void Make_Signal_1(void)
{
uchar i, j;
uchar dis_data = 0;STB_1=1;CLK=1;for(i=0; i<8; i++)                                //command 1 (#0000_0011B) { STB_1=0;  CLK=0;if(i==1 || i==0)DIN=1;elseDIN=0;CLK=1;}STB_1=1;for(i=0; i<8; i++)               //command 2 (#0100_0000B){STB_1=0;CLK=0;if(i==6)DIN=1;elseDIN=0;CLK=1;}STB_1=1;for(i=0; i<8; i++)             //command 3 (#1100_0000B){STB_1=0;CLK=0;if(i==6 || i==7)DIN=1;elseDIN=0;CLK=1;}
/*for(i=0; i<112; i++)                //data{STB_1=0;CLK=0;DIN=0;CLK=1;}STB_1=1;
*/for(i=0; i<14; i++)                 {dis_data = seg_data_1[i];for(j=0; j<8; j++){STB_1=0;CLK=0;DIN=dis_data & 0x01;CLK=1;dis_data =  dis_data>>1;//右移一位}}STB_1=1;for(i=0; i<8; i++)                //command 4 (#1000_0100B){STB_1=0;CLK=0;switch(f_dimming_1)  //显示亮度模式{case(0):if(i==3 || i==7|| i==2 || i==1|| i==0)DIN=1;elseDIN=0;break;case(1):if(i==0 || i==3 ||i==7)DIN=1;elseDIN=0;break;case(2):if(i==1 || i==3 ||i==7)DIN=1;elseDIN=0;break;case(3):if(i==1 || i==0 || i==3 ||i==7)DIN=1;elseDIN=0;break;case(4):if(i==2 ||i==3 || i==7)DIN=1;elseDIN=0;break;case(5):if(i==2 || i==0 || i==3 ||i==7)DIN=1;elseDIN=0;break;case(6):if(i==2 || i==1 ||i==3 || i==7)DIN=1;elseDIN=0;break;case(7):if(i==2 || i==1 || i==0 ||i==7)DIN=1;elseDIN=0;break;}CLK=1;}STB_1=1;
}

结合模块进行显示

具体断码显示不再赘述,整理如下

uchar f_dimming_1 = 0;  //亮度可调  1-7级   0默认 最亮
uchar f_dimming_2 = 0;  //亮度可调  1-7级   0默认 最亮uchar Font_Data[10]={0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F};  //数码管
uchar Font_point[4]={0x00, 0x03, 0x01, 0x02};  //数码管 点
uchar RGY_DIS[6]={0x00, 0x00, 0x00, 0x00, 0x00, 0x00};  //红1绿1黄1  红2绿2黄2 uchar seg_data_1[14]={0};//缓存数组
uchar seg_data_2[14]={0};//缓存数组

数码管部分使用Font_Data,和Font_point,进行显示,对于杂点,则进行了重新分布设置,这样使用宏定义即可实现对其控制亮灭。

//置位  点亮
//中间杂点
#define DIS1_SET_1    seg_data_1[10]=(seg_data_1[10]|0X01)
#define DIS1_SET_2    seg_data_1[10]=(seg_data_1[10]|0X02)
#define DIS1_SET_3    seg_data_1[7] =(seg_data_1[7] |0X04)
#define DIS1_SET_4    seg_data_1[10]=(seg_data_1[10]|0X04)
#define DIS1_SET_5    seg_data_1[10]=(seg_data_1[10]|0X08)
#define DIS1_SET_6    seg_data_1[9] =(seg_data_1[9] |0X04)
#define DIS1_SET_7    seg_data_1[0] =(seg_data_1[0] |0X80)
#define DIS1_SET_8    seg_data_1[2] =(seg_data_1[2] |0X80)
#define DIS1_SET_9    seg_data_1[4] =(seg_data_1[4] |0X80)
#define DIS1_SET_10   seg_data_1[5] =(seg_data_1[5] |0X01)
#define DIS1_SET_11   seg_data_1[11]=(seg_data_1[11]|0X04)
#define DIS1_SET_12   seg_data_1[5] =(seg_data_1[5] |0X02)
#define DIS1_SET_13   seg_data_1[10]=(seg_data_1[10]|0X10)
#define DIS1_SET_14   seg_data_1[10]=(seg_data_1[10]|0X20)
#define DIS1_SET_15   seg_data_1[10]=(seg_data_1[10]|0X40)
#define DIS1_SET_16   seg_data_1[10]=(seg_data_1[10]|0X80)
#define DIS1_SET_17   seg_data_1[11]=(seg_data_1[11]|0X01)
#define DIS1_SET_18   seg_data_1[11]=(seg_data_1[11]|0X02)//左右点
#define DIS2_SET_1    seg_data_1[6]=(seg_data_1[6] |0X01)
#define DIS2_SET_2    seg_data_1[6]=(seg_data_1[6] |0X02)
#define DIS2_SET_3    seg_data_1[6]=(seg_data_1[6] |0X04)
#define DIS2_SET_4    seg_data_1[6]=(seg_data_1[6] |0X08)
#define DIS2_SET_5    seg_data_1[6]=(seg_data_1[6] |0X10)
#define DIS2_SET_6    seg_data_1[6]=(seg_data_1[6] |0X20)
#define DIS2_SET_7    seg_data_1[6]=(seg_data_1[6] |0X40)
#define DIS2_SET_8    seg_data_1[6]=(seg_data_1[6] |0X80)
#define DIS2_SET_9    seg_data_1[7]=(seg_data_1[7] |0X01)
#define DIS2_SET_10   seg_data_1[7]=(seg_data_1[7] |0X02)
#define DIS2_SET_11   seg_data_1[8]=(seg_data_1[8] |0X01)
#define DIS2_SET_12   seg_data_1[8]=(seg_data_1[8] |0X02)
#define DIS2_SET_13   seg_data_1[8]=(seg_data_1[8] |0X04)
#define DIS2_SET_14   seg_data_1[8]=(seg_data_1[8] |0X08)
#define DIS2_SET_15   seg_data_1[8]=(seg_data_1[8] |0X10)
#define DIS2_SET_16   seg_data_1[8]=(seg_data_1[8] |0X20)
#define DIS2_SET_17   seg_data_1[8]=(seg_data_1[8] |0X40)
#define DIS2_SET_18   seg_data_1[8]=(seg_data_1[8] |0X80)
#define DIS2_SET_19   seg_data_1[9]=(seg_data_1[9] |0X01)
#define DIS2_SET_20   seg_data_1[9]=(seg_data_1[9] |0X02) //置0  熄灭
//中间杂点
#define DIS1_CLR_1    seg_data_1[10]=(seg_data_1[10]&(~0X01))
#define DIS1_CLR_2    seg_data_1[10]=(seg_data_1[10]&(~0X02))
#define DIS1_CLR_3    seg_data_1[7] =(seg_data_1[7] &(~0X04))
#define DIS1_CLR_4    seg_data_1[10]=(seg_data_1[10]&(~0X04))
#define DIS1_CLR_5    seg_data_1[10]=(seg_data_1[10]&(~0X08))
#define DIS1_CLR_6    seg_data_1[9] =(seg_data_1[9] &(~0X04))
#define DIS1_CLR_7    seg_data_1[0] =(seg_data_1[0] &(~0X80))
#define DIS1_CLR_8    seg_data_1[2] =(seg_data_1[2] &(~0X80))
#define DIS1_CLR_9    seg_data_1[4] =(seg_data_1[4] &(~0X80))
#define DIS1_CLR_10   seg_data_1[5] =(seg_data_1[5] &(~0X01))
#define DIS1_CLR_11   seg_data_1[11]=(seg_data_1[11]&(~0X04))
#define DIS1_CLR_12   seg_data_1[5] =(seg_data_1[5] &(~0X02))
#define DIS1_CLR_13   seg_data_1[10]=(seg_data_1[10]&(~0X10))
#define DIS1_CLR_14   seg_data_1[10]=(seg_data_1[10]&(~0X20))
#define DIS1_CLR_15   seg_data_1[10]=(seg_data_1[10]&(~0X40))
#define DIS1_CLR_16   seg_data_1[10]=(seg_data_1[10]&(~0X80))
#define DIS1_CLR_17   seg_data_1[11]=(seg_data_1[11]&(~0X01))
#define DIS1_CLR_18   seg_data_1[11]=(seg_data_1[11]&(~0X02))//左右点
#define DIS2_CLR_1    seg_data_1[6]=(seg_data_1[6] &(~0X01))
#define DIS2_CLR_2    seg_data_1[6]=(seg_data_1[6] &(~0X02))
#define DIS2_CLR_3    seg_data_1[6]=(seg_data_1[6] &(~0X04))
#define DIS2_CLR_4    seg_data_1[6]=(seg_data_1[6] &(~0X08))
#define DIS2_CLR_5    seg_data_1[6]=(seg_data_1[6] &(~0X10))
#define DIS2_CLR_6    seg_data_1[6]=(seg_data_1[6] &(~0X20))
#define DIS2_CLR_7    seg_data_1[6]=(seg_data_1[6] &(~0X40))
#define DIS2_CLR_8    seg_data_1[6]=(seg_data_1[6] &(~0X80))
#define DIS2_CLR_9    seg_data_1[7]=(seg_data_1[7] &(~0X01))
#define DIS2_CLR_10   seg_data_1[7]=(seg_data_1[7] &(~0X02))
#define DIS2_CLR_11   seg_data_1[8]=(seg_data_1[8] &(~0X01))
#define DIS2_CLR_12   seg_data_1[8]=(seg_data_1[8] &(~0X02))
#define DIS2_CLR_13   seg_data_1[8]=(seg_data_1[8] &(~0X04))
#define DIS2_CLR_14   seg_data_1[8]=(seg_data_1[8] &(~0X08))
#define DIS2_CLR_15   seg_data_1[8]=(seg_data_1[8] &(~0X10))
#define DIS2_CLR_16   seg_data_1[8]=(seg_data_1[8] &(~0X20))
#define DIS2_CLR_17   seg_data_1[8]=(seg_data_1[8] &(~0X40))
#define DIS2_CLR_18   seg_data_1[8]=(seg_data_1[8] &(~0X80))
#define DIS2_CLR_19   seg_data_1[9]=(seg_data_1[9] &(~0X01))
#define DIS2_CLR_20   seg_data_1[9]=(seg_data_1[9] &(~0X02)) 

如代码,除去数码管,全部点亮

具体驱动应用

到了这一步,驱动显示部分已经完了,接下来驱动显示时间即可,值得注意的是,第一个芯片使用seg_data_1[]数组的每个数据控制不同的显示,0-5为数码管使用和中间杂点7 8 9号这3个使用,具体 ,0 2 4 为3个完整数码管和杂点7 8 9号(,数码管使用7段,杂点一段,如果不使用这3个点,忽略即可),1为第一位“1”使用,3为中间“:”使用,6-11则为中间杂点和两侧使用,12,13未使用。

四周RGY彩灯使用第二个芯片,seg_data_2[]数组,

0   Red1  ,2   Green1  ,4   Yellow1  ,6   Red2  ,8   Green1  ,10   Yellow2 ,其他未使用 。

 seg_data_1[1]=Font_point[time_data.hour/10];   //时的十位seg_data_1[0]=Font_Data[time_data.hour%10];    //时的个位seg_data_1[2]=Font_Data[time_data.min/10];    //分的十位seg_data_1[4]=Font_Data[time_data.min%10];    //分的个位if(time_data.AM_PM) //上午
{
DIS1_CLR_1 ;
DIS1_CLR_2 ;
DIS1_CLR_3 ;DIS1_SET_4 ;
DIS1_SET_5 ;
DIS1_SET_6 ;
}
else        //下午
{
DIS1_SET_1 ;
DIS1_SET_2 ;
DIS1_SET_3 ;DIS1_CLR_4 ;
DIS1_CLR_5 ;
DIS1_CLR_6 ;
}if(sec1 != time_data.sec) //时分之间的点,每隔一秒闪烁{sec_point = 1 - sec_point;seg_data_1[3]=Font_point[sec_point];sec1 = time_data.sec;   }Make_Signal_1(); //显示数据

加上彩灯

至于控制彩色流水灯,相关代码例程很多,不再赘述,如下随便截取一点

uchar RGY_DIS[6]={0x00, 0x00, 0x00, 0x00, 0x00, 0x00};  //红1绿1黄1  红2绿2黄2 uchar  table0[] = {0xfe, 0xfd, 0xfb, 0xf7, 0xef, 0xdf, 0xbf, 0x7f}; //LED从低位往高位移
uchar  table1[] = {0x7f, 0xbf, 0xdf, 0xef, 0xf7, 0xfb, 0xfd, 0xfe}; //LED从高位往低位移
uchar  table2[] = {0xfe, 0xfc, 0xf8, 0xf0, 0xe0, 0xc0, 0x80, 0x00}; //LED从1个亮到8个都点亮(从低位往高位)
uchar  table3[] = {0x7f, 0x3f, 0x1f, 0x0f, 0x07, 0x03, 0x01, 0x00}; //LED从1个亮到8个都点亮(从高位往低位)
uchar  table4[] = {0x00, 0x01, 0x03, 0x07, 0x0f, 0x1f, 0x3f, 0x7f, 0xff}; //LED从8个全亮到一个都不亮(从低位往高位)
uchar  table5[] = {0x00, 0x80, 0xc0, 0xe0, 0xf0, 0xf8, 0xfc, 0xfe, 0xff}; //LED从8个全亮到一个都不亮(从高位往低位)
uchar  table6[] = {0xfe, 0xfc, 0xfa, 0xf6, 0xee, 0xde, 0xbe, 0x7e}; //LED从低位往高位移(最低位始终为0)
uchar  table7[] = {0x7f, 0x3f, 0x5f, 0x6f, 0x77, 0x7b, 0x7d, 0x7e}; //LED从高位往低位移(最高位始终为0)
uchar i, j;     //定义循环变量
int tt = 70;       //定义时间指数void delay_tim(int time)
{
Make_Signal_2();
delay_ms(time);
seg_data_2[2] = seg_data_2[0];
seg_data_2[8] = seg_data_2[6];
Make_Signal_2();
delay_ms(time);
seg_data_2[4] = seg_data_2[0];
seg_data_2[10] = seg_data_2[6];
Make_Signal_2();
delay_ms(time);
}void disp0()           //状态0 所有LED闪烁3次
{for(i=0;i<3;i++){seg_data_2[0]=0x00; seg_data_2[6]=0x00; delay_tim(300);seg_data_2[0]=0xff; seg_data_2[6]=0xff;delay_tim(300);}
}void disp1()           //状态1 LED顺时针转一圈
{for(i=0;i<8;i++){seg_data_2[0]=table1[i];delay_tim(100);}seg_data_2[0]=0xff;for(i=0;i<8;i++){seg_data_2[6]=table1[i];delay_tim(100);}seg_data_2[6]=0xff;}void disp2()          //状态2 LED逆时针转一圈
{for(i=0;i<8;i++){seg_data_2[6]=table0[i];delay_tim(100);}seg_data_2[6]=0xff;for(i=0;i<8;i++){seg_data_2[0]=table0[i];delay_tim(100);}seg_data_2[0]=0xff;
}void disp3()           //状态3 4个LED同时顺时、逆时针移动1/4圈
{for(i=0;i<8;i++){seg_data_2[0]=table1[i];seg_data_2[6]=table0[i];delay_tim(100);}for(i=0;i<8;i++){seg_data_2[0]=table0[i];seg_data_2[6]=table1[i];delay_tim(100);}seg_data_2[6]=0xff;
}void disp4()           //状态4  2个LED同时顺时针移动半圈
{for(i=0;i<8;i++){seg_data_2[0]=table1[i];delay_tim(100);}seg_data_2[0]=0xff; for(i=0;i<8;i++){seg_data_2[6]=table1[i];delay_tim(100);}seg_data_2[6]=0xff;
}void disp5()           //状态5  2个LED同时逆时针移动半圈
{for(i=0;i<8;i++){seg_data_2[6]=table0[i];delay_tim(100);}seg_data_2[6]=0xff;for(i=0;i<8;i++){seg_data_2[0]=table0[i];delay_tim(100);}
seg_data_2[0]=0xff;
}void disp6()           //状态6 LED自上而下逐渐点亮(一半点亮一半不亮)
{for(i=0;i<8;i++){seg_data_2[0]=table3[i];delay_tim(100);}seg_data_2[0]=0xff;for(i=0;i<8;i++){seg_data_2[6]=table3[i];delay_tim(100);}seg_data_2[6]=0xff;
}void disp7()           //状态7 LED自下而上逐渐点亮(直到全部点亮)
{for(i=0;i<8;i++){seg_data_2[6]=table2[i];delay_tim(100);}for(i=0;i<8;i++){seg_data_2[0]=table2[i];delay_tim(100);}
}void disp8()           //状态8 间断8格的4个LED亮并逆时针旋转
{for(j=0;j<2;j++){for(i=0;i<8;i++){seg_data_2[0]=table0[i];seg_data_2[6]=table0[i];delay_tim(100);}seg_data_2[0]=0xff;  seg_data_2[6]=0xff;for(i=0;i<8;i++){seg_data_2[0]=table0[i];seg_data_2[6]=table0[i];delay_tim(100);}seg_data_2[0]=0xff; seg_data_2[6]=0xff;}
}void disp9()           //状态9 间断8格的4个LED亮,然后逆时针逐渐点亮(直到全部点亮)
{for(i=0;i<8;i++){seg_data_2[0]=table2[i];seg_data_2[6]=table2[i];delay_tim(100);}delay_tim(500);
}

相关资料下载

MC2302D相关资料.zip_mc2302d资料-嵌入式文档类资源-CSDN下载

基于MC2302D的LED显示控制器相关推荐

  1. 基于FPGA的LED点阵系统开发

    LED点阵显示屏被用到很多领域,随着电子技术的发展,LED点阵书写显示屏的广泛应用是一种趋势.传统的LED点阵显示是由微处理器实现的,但是以FPGA做控制器将成为发展趋势.FPGA的结构灵活,其逻辑单 ...

  2. led可见光通信直方图均衡matlab,基于RGB型LED的光学相机通信系统的实现方案

    2019 年第 5 期 基于 RGB 型 LED 的光学相机通信系统的实现方案 Realization scheme of optical camera communication system ba ...

  3. 基于ArduinoNano的LED点阵时钟探索(1)四合一MAX7219+DS3231

    基于ArduinoNano的LED点阵时钟探索(1)四合一MAX7219+DS3231 这篇文章是自己打算做一个LED点阵时钟记录学习进度的,刚完成第一次点亮MAX7219四合一模块,所以先做好学习记 ...

  4. 不写一行代码(一):实现安卓基于GPIO的LED设备驱动

    文章目录 系列文章 一.前言 二.准备工作 2.1 内核版本 2.2 内核文档:bindings->leds 2.3 文档解析: leds-gpio.txt 三.编写DTS 3.1 查原理图,挑 ...

  5. ARM架构与编程--基于STM32F103 (1)LED原理图

    ARM架构与编程–基于STM32F103 (1)LED原理图 前言 学习笔记<硬件知识_LED原理图> 一.点亮一个led的步骤 当我们学习C语言的时候,我们会写个Hello程序.那当我们 ...

  6. 基于HDF的LED驱动程序开发(2)

    引言 本文以小熊派BearPi-HM_Micro_small开发板上的一个LED灯为例,介绍如何基于HDF框架开发一个外设的驱动程序. 在阅读本文之前,建议大家先阅读:<OpenHarmony驱 ...

  7. 基于HDF的LED驱动程序开发(1)

    引言 本文以小熊派BearPi-HM_Micro_small开发板上的一个LED灯为例,介绍如何基于HDF框架开发一个外设的驱动程序. 在阅读本文之前,建议大家先阅读:<OpenHarmony驱 ...

  8. 基于ADXL345的 LED摇摇棒原理

    1.     LED摇摇棒原理 LED摇摇棒可以通过左右摇动而显示出自己定义的字符,这是利用了人的视觉停留原理.基于ADXL345的LED摇摇棒的实现,主要是根据G_sensor所产生的数据来触发显示 ...

  9. 秒上手!使用Arduino控制基于WS2812B的LED灯条

    使用Arduino控制基于WS2812B的LED灯条 一.材料准备 硬件部分 1. Arduino UNO R3 开发板 2. 基于WS2812B的LED灯条 3. 杜邦线若干 软件部分 1. Ard ...

最新文章

  1. HBase的布隆过滤器详解
  2. 初级前端工程师笔试技巧总结,祝你顺利拿高分
  3. Spring实战——通过Java代码装配bean
  4. RedisCrawlSpider
  5. 行内元素 块级元素之间的嵌套
  6. CRLF line terminators导致shell脚本报错:command not found --转载
  7. MSRCR(Multi-Scale Retinex with Color Restore)
  8. TCPIP详解之udp
  9. 基于JAVA的宠物网站的设计与实现
  10. 如何判断是否是webservice接口
  11. 七牛云视频模板 SDK:「剪刀手」是怎样炼成的?
  12. STM32入门(一)
  13. 美国7月份CPI价格指数上涨8.5%不及市场预期 美联储加息的压力减轻
  14. request请求 下载附件
  15. 阿里编程规范(精简版)
  16. ospf配置小实验及安全认证
  17. 学习Java时,要记住的知识点太多,记不住怎么办?
  18. 飞控陀螺仪,磁力计,加速计,四元数姿态结算
  19. 绘画教程:动漫角色中男生女生脸部画法
  20. GitLab-CI持续集成(CI)的介绍与运行机制

热门文章

  1. 华科考研834计算机网络,2017华科834考研真题试卷及答案.pdf
  2. 科技赋能零售,最终还是要消失于无形中
  3. redis从属服务器执行命令 SLAVEOF NO ONE 将使得这个从属服务器关闭复制功能,并从从属服务器转变回主服务器,原来同步所得的数据集不会被丢弃。
  4. 低代码/零代码的敏捷开发框架
  5. 淘宝,tmall,1688,抖音,拼多多等平台商品详情接口(网络爬虫数据接口调用示例)接口对接教程
  6. 需要学习的,学习记录,需要做的事情
  7. SKIL/配置/日志
  8. android 获取mac c语言,获取设备的mac地址和IP地址(android6.0以上专用)
  9. turtle六边形绘制
  10. 0x5的c语言表达式是,0X05 运算符、表达式跟语句