快速掌握—— LCD1602液晶显示

  • 一、 LCD1602 简介
    • 实物图:
    • Proteus器件图:
    • 简介:
      • 引脚介绍:
      • 指令集(11条指令):
  • 二、显示原理
    • 字模库:
  • 三、显示位置
  • 四、LCD1602 操作
    • ①写操作时序图:
    • ②读操作时序图:
    • ③时序时间参数:
    • 1、忙检测
      • 为什么需要忙检测??
      • 代码:
    • 2、初始化
      • 为什么初始化?
      • 代码:
    • 3、写命令
      • 代码:
    • 4、写数据
      • 代码:
  • 实验一:显示Hello World !
    • 结果展示:
    • 代码:
  • 实验二:两行显示
    • 结果展示:
    • 代码:
  • 实验三:温度单位显示
    • 确定字模:
    • 结果展示:
    • 代码:
  • 实验四:单行滚动显示
    • 结果展示:
    • 代码:
  • 实验五:一行不动,一行动
    • 结果展示:
    • 代码:
  • 实验六:自定义字模显示
    • 确定字模:
    • 结果展示:
    • 代码:

一、 LCD1602 简介

简介部分资料来源于百度百科:

实物图:

Proteus器件图:

器件号: LM016L

简介:

LCD1602

16——表示每行显示16个字符
02——表示显示两行

LCD1602是一种字符点阵型显示模块,如下图 ,每个字符是由 5X8 的点阵组成。

引脚介绍:

引脚1:VSS为地电源。
引脚2:VDD接5V正电源。
引脚3:VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高。

引脚4:RS为寄存器选择脚,高电平时选择数据寄存器、低电平时选择指令寄存器

引脚5:R/W为读/写信号线,高电平时进行读操作,低电平时进行写操作
当RS和R/W共同 为低电平时可以写入指令或显示地址;当RS为低电平,R/W为高电平时,可以读忙信号;当 RS为高电平,R/W为低电平时,可以写入数据。

引脚6:E端为使能端,当E端由高电平跳变为低电平时(下降沿有效),液晶模块执行命令。

引脚7 ~ 14:D0~D7为8位双向数据线。

引脚15:背光源正极。
引脚16:背光源负极

指令集(11条指令):

表1

(1)指令1:清屏。指令码01H,光标复位到地址00H。

(2)指令2:光标复位。光标复位到地址00H。

(3)指令3:输入方式设置。
其中,I/D表示光标的移动方向,高电平右移,低电平左移;S表示显示屏上所有文字是否左移或右移,高电平表示有效,低电平表示无效。

(4)指令4:显示开关控制。
其中,D用于控制整体显示的开与关,高电平表示开显示,低电平表示关显示;C用于控制光标的开与关,高电平表示有光标,低电平表示无光标;B用于控制光标是否闪烁,高电平闪烁,低电平不闪烁。

(5)指令5:光标或字符移位控制。
其中,S/C表示在高电平时移动显示的文字,低电平时移动光标。

(6)指令6:功能设置命令。
其中,DL表示在高电平时为4位总线,低电平时为8位总线;N表示在低电平时为单行显示,高电平时双行显示;F表示在低电平时显示5×7的点阵字符,高电平时显示5×10的点阵字符。

(7)指令7:字符发生器RAM地址设置。

(8)指令8:DDRAM地址设置。

(9)指令9:读忙信号和光标地址。
其中,BF为忙标志位,高电平表示忙,此时模块不能接收命令或数据,如果为低电平则表示不忙。

(10)指令10:写数据。

(11)指令11:读数据。

常用指令:

0x80+0xdd:dd为地址,这条命令用于设置显示起点坐标

0x0c :开显示,无光标,光标不闪烁 。一般做带键盘输入的才加入光标,如计算器。常用的计量显示不显示光标。

0x06 :写一个数据,地址指针加1,由1602地址表可以看出,实际上就是设置成从左往右写数据而已。

0x38 : 设置显示模式,16x2显示 5x7点阵,8位数据接口。端口不够用时,这个命令也可以换用4位数据接口的。

0x01 :清屏。

表2

二、显示原理

如上图,每个字符由 5X8 点阵组成(也可选用 5X10),想要实现显示,只需如下图:

例:以 5X7 点阵为例, 显示字符 A

0 代表灭,1 代表亮
只需将想要显示的字符的对应位置1,就能显示该字符

LCD1602 固化了字模寄存器,即 CGROM 和 CGRAM,存储了192个常用字符的字模。

字模库:

该表 行是低四位,列是高四位

想要显示哪个字符,只需查表,换算为十六进制,写入LCD1602即可。

例: 想要显示字符 A

需要向 LCD1602 写入 0x41(0100 0001)

三、显示位置

LCD1602 实际有80个字节的DDRAM,

只不过 LCD1602 只有 16X2 个位置,后面很多位置显示不出来,可以使用 指令5“光标或显示移动指令” 使字符慢慢移动到可见的显示范围内,看到字符的移动效果。

所以LCD1602的实际显示位置是,第一行:00 ~ 0F,第二行:40 ~ 4F

注意:

如图, 指令8,D7位恒为 1,

在实际向LCD1602传入数据显示地址时,需要 < 地址+0x80 >

例:向LCD1602的第一行第一列写数据,传入的地址应为: (0x00+0x80)

四、LCD1602 操作

①写操作时序图:

②读操作时序图:

③时序时间参数:

1、忙检测

为什么需要忙检测??

单片机和 LCD1602 的工作速度存在差异,单片机速度快,所以单片机向 LCD1602 传数据时,LCD1602 可能正在处理上一次的数据,处在忙状态,为了防止数据丢失或出错,所以单片机就需要等待,待 LCD1602 处理完时在进行下一次数据的传送。

代码:

由指令9,需判断 BF 的状态

/****************** 忙检测 *********************
LCD_Data 与 0x80 进行或运算,判断 bit7 位状态若 LCD_Data 的 bit7 位是 0,则 LCD 不忙
若 LCD_Data 的 bit7 位是 1,则 LCD 忙
***********************************************/
void LCD_Check_Busy(){uchar temp;LCD_Data = 0xff  // 十六进制:1111 1111LCD_RS = 0;  // 0 指令LCD_RW = 1;     // 1 读do{LCD_E = 1;         // 拉高temp = LCD_Data;  // 将 LCD 状态保存在 temp 中,用于判忙LCD_E = 0;        // 负跳变使能 }while(temp & 0x80);  // 结果为 1,LCD 忙,继续循环;结果为 0,LCD 不忙,可以进行后面的操作
}

2、初始化

为什么初始化?

在 LCD1602 进行显示前,需要进行输入方式设置,显示开关设置,光标、画面移位设置,功能设置等,确定 LCD1602 的工作方式。

代码:

/****************** 初始化 *********************
指令1 ——清屏
指令3 ——AC加1,画面不动
指令4 ——显示开,光标关,闪烁关
指令6 ——8位数据接口,两行显示,5X7点阵
指令8 ——从第一行第一列开始显示
***********************************************/
void LCD_Init(){LCD_Write_Cmd(0x01); // 指令1 ——清屏LCD_Write_Cmd(0x06); // 指令3 ——AC加1,画面不动 LCD_Write_Cmd(0x0c); // 指令4 ——显示开,光标关,闪烁关 LCD_Write_Cmd(0x38); // 指令6 ——8位数据接口,两行显示,5X7点阵LCD_Write_Cmd(0x80); // 指令8 ——从第一行第一列开始显示
}

3、写命令

代码:

/****************** 写命令 *********************
RS=0 指令
RW=0 写操作
E=0 开始为 0
写入指令(给单片机 P3 端口)
延时 2ms
E=1 拉高
延时5ms,写入指令有效
E=0 负跳变,指令写入LCD
***********************************************/
void LCD_Write_Cmd(uchar Cmd){LCD_Check_Busy();  // 判忙LCD_RS = 0;  // 0 指令LCD_RW = 0;  // 0 写LCD_E = 0;LCD_Data = Cmd;  // 送指令delay_1ms(2);LCD_E = 1;  // 拉高delay_1ms(5);LCD_E = 0;
}

4、写数据

代码:

/****************** 写数据 *********************
RS=1 数据
RW=0 写操作
E=0 开始为 0
写入数据(给单片机 P3 端口)
延时 2ms
E=1 拉高
延时 7ms,写入数据有效
E=0 负跳变,数据写入LCD
***********************************************/
void LCD_Write_Data(uchar Data){LCD_Check_Busy();  // 判忙LCD_RS = 1;  // 1 数据LCD_RW = 0;  // 0 写LCD_E = 0;LCD_Data = Data;  // 送数据delay_1ms(2);LCD_E = 1;  // 拉高delay_1ms(7);LCD_E = 0;
}

实验一:显示Hello World !

结果展示:

代码:

#include<reg51.h>#define uchar unsigned char
#define uint unsigned int#define LCD_Data P3  // 数据端口sbit LCD_RS = P2^0;  // 数据(1)/ 指令(0)
sbit LCD_RW = P2^1;  // 读(1) / 写(0)
sbit LCD_E = P2^2;  // 使能(负跳变起作用)void delay_1ms(uint c){  // 延时函数,无误差uchar a,b;for(;c>0;c--){ for(b=199;b>0;b--) { for(a=1;a>0;a--);}}
}/****************** 忙检测 *********************
LCD_Data 与 0x80 进行或运算,判断 bit7 位状态若 LCD_Data 的 bit7 位是 0,则 LCD 不忙
若 LCD_Data 的 bit7 位是 1,则 LCD 忙
***********************************************/
void LCD_Check_Busy(){uchar temp;LCD_Data = 0xff;  // 十六进制:1111 1111LCD_RS = 0;  // 0 指令LCD_RW = 1;    // 1 读do{LCD_E = 1;         // 拉高temp = LCD_Data;  // 将 LCD 状态保存在 temp 中,用于判忙LCD_E = 0;        // 负跳变使能 }while(temp & 0x80);  // 结果为 1,LCD 忙,继续循环;结果为 0,LCD 不忙,可以进行后面的操作
}/****************** 写指令 *********************
RS=0 指令
RW=0 写操作
E=0 开始为 0
写入指令(给单片机 P3 端口)
延时 2ms
E=1 拉高
延时5ms,写入指令有效
E=0 负跳变,指令写入LCD
***********************************************/
void LCD_Write_Cmd(uchar Cmd){LCD_Check_Busy();  // 判忙LCD_RS = 0;  // 0 指令LCD_RW = 0;  // 0 写LCD_E = 0;LCD_Data = Cmd;  // 送指令delay_1ms(2);LCD_E = 1;delay_1ms(5);LCD_E = 0;
}/****************** 写数据 *********************
RS=1 数据
RW=0 写操作
E=0 开始为 0
写入数据(给单片机 P3 端口)
延时 2ms
E=1 拉高
延时 7ms,写入数据有效
E=0 负跳变,数据写入LCD
***********************************************/
void LCD_Write_Data(uchar Data){LCD_Check_Busy();  // 判忙LCD_RS = 1;  // 1 数据LCD_RW = 0;  // 0 写LCD_E = 0;LCD_Data = Data;  // 送数据delay_1ms(2);LCD_E = 1;delay_1ms(7);LCD_E = 0;
}/****************** 初始化 *********************
指令1 ——清屏
指令3 ——AC加1,画面不动
指令4 ——显示开,光标关,闪烁关
指令6 ——8位数据接口,两行显示,5X7点阵
指令8 ——从第一行第一列开始显示
***********************************************/
void LCD_Init(){LCD_Write_Cmd(0x01); // 指令1 ——清屏LCD_Write_Cmd(0x06); // 指令3 ——AC加1,画面不动 LCD_Write_Cmd(0x0c); // 指令4 ——显示开,光标关,闪烁关 LCD_Write_Cmd(0x38); // 指令6 ——8位数据接口,两行显示,5X7点阵LCD_Write_Cmd(0x80); // 指令8 ——从第一行第一列开始显示
}/****************** 主函数 ********************************************************************/
void main()
{uchar code Data[]="Hello World !";  // 要显示的数据uchar i;LCD_Init();  // LCD1602 初始化LCD_Write_Cmd(0x00+0x80);  // 第一行第一列地址,0x00 可以省去,为了讲明白故加上for(i=0; i<16; i++){LCD_Write_Data(Data[i]);}while(1);
}

实验二:两行显示

要求:
第一行显示 0123456789012345
第二行显示 abcdefghABCDEFGH

结果展示:

代码:

#include<reg51.h>#define uchar unsigned char
#define uint unsigned int#define LCD_Data P3  // 数据端口sbit LCD_RS = P2^0;  // 数据(1)/ 指令(0)
sbit LCD_RW = P2^1;  // 读(1) / 写(0)
sbit LCD_E = P2^2;  // 使能(负跳变起作用)void delay_1ms(uint c){  // 延时函数,无误差uchar a,b;for(;c>0;c--){ for(b=199;b>0;b--) { for(a=1;a>0;a--);}}
}/****************** 忙检测 *********************
LCD_Data 与 0x80 进行或运算,判断 bit7 位状态若 LCD_Data 的 bit7 位是 0,则 LCD 不忙
若 LCD_Data 的 bit7 位是 1,则 LCD 忙
***********************************************/
void LCD_Check_Busy(){uchar temp;LCD_Data = 0xff;  // 十六进制:1111 1111LCD_RS = 0;  // 0 指令LCD_RW = 1;    // 1 读do{LCD_E = 1;         // 拉高temp = LCD_Data;  // 将 LCD 状态保存在 temp 中,用于判忙LCD_E = 0;        // 负跳变使能 }while(temp & 0x80);  // 结果为 1,LCD 忙,继续循环;结果为 0,LCD 不忙,可以进行后面的操作
}/****************** 写指令 *********************
RS=0 指令
RW=0 写操作
E=0 开始为 0
写入指令(给单片机 P3 端口)
延时 2ms
E=1 拉高
延时5ms,写入指令有效
E=0 负跳变,指令写入LCD
***********************************************/
void LCD_Write_Cmd(uchar Cmd){LCD_Check_Busy();  // 判忙LCD_RS = 0;  // 0 指令LCD_RW = 0;  // 0 写LCD_E = 0;LCD_Data = Cmd;  // 送指令delay_1ms(2);LCD_E = 1;delay_1ms(5);LCD_E = 0;
}/****************** 写数据 *********************
RS=1 数据
RW=0 写操作
E=0 开始为 0
写入数据(给单片机 P3 端口)
延时 2ms
E=1 拉高
延时 7ms,写入数据有效
E=0 负跳变,数据写入LCD
***********************************************/
void LCD_Write_Data(uchar Data){LCD_Check_Busy();  // 判忙LCD_RS = 1;  // 1 数据LCD_RW = 0;  // 0 写LCD_E = 0;LCD_Data = Data;  // 送数据delay_1ms(2);LCD_E = 1;delay_1ms(7);LCD_E = 0;
}/****************** 初始化 *********************
指令1 ——清屏
指令3 ——AC加1,画面不动
指令4 ——显示开,光标关,闪烁关
指令6 ——8位数据接口,两行显示,5X7点阵
指令8 ——从第一行第一列开始显示
***********************************************/
void LCD_Init(){LCD_Write_Cmd(0x01); // 指令1 ——清屏LCD_Write_Cmd(0x06); // 指令3 ——AC加1,画面不动 LCD_Write_Cmd(0x0c); // 指令4 ——显示开,光标关,闪烁关 LCD_Write_Cmd(0x38); // 指令6 ——8位数据接口,两行显示,5X7点阵LCD_Write_Cmd(0x80); // 指令8 ——从第一行第一列开始显示
}/****************** 主函数 ********************************************************************/
void main()
{uchar code Data_1[]="0123456789012345";  // 第一行要显示的数据uchar code Data_2[]="abcdefghABCDEFGH";  // 第二行要显示的数据uchar i;LCD_Init();  // LCD1602 初始化LCD_Write_Cmd(0x00+0x80);  // 第一行第一列地址for(i=0; i<16; i++){LCD_Write_Data(Data_1[i]);}LCD_Write_Cmd(0x40+0x80);  // 第二行第一列地址for(i=0; i<16; i++){LCD_Write_Data(Data_2[i]);}while(1);
}

实验三:温度单位显示

确定字模:

如图,查字模表得:
温度单位由 1101 1111 和 0100 0011 组成
换算位十六进制为:0xdf0x43 组成

结果展示:

代码:

直接替换为以下主函数即可


/****************** 主函数 ********************************************************************/
void main()
{LCD_Init();  // LCD1602 初始化LCD_Write_Cmd(0x00+0x80);  // 第一行第一列地址LCD_Write_Data(0xdf);LCD_Write_Data(0x43);while(1);
}

实验四:单行滚动显示

**要求:**在第一行滚动显示字符串 “Good Good Study,Day Day Up !”

需要用到 指令5——0x18 //画面左移一个字符位,光标不动

结果展示:

代码:

直接替换位为以下主函数即可

/****************** 主函数 ********************************************************************/
void main()
{uchar i;uchar code Data[]="Good Good Study,Day Day Up !";LCD_Init();  // LCD1602 初始化LCD_Write_Cmd(0x00+0x80);  // 第一行第一列地址for(i=0; i<28; i++){LCD_Write_Data(Data[i]);}while(1){delay_1ms(500);  // 控制移动速度LCD_Write_Cmd(0x18);  // 指令5 ——画面左移一个字符位,光标不动}
}

实验五:一行不动,一行动

要求:
第一行显示 " I Love You “,固定不动
第二行显示"Good Good Study,Day Day Up !”, 实现向左移动效果

结果展示:

代码:

直接替换位为以下主函数即可

/****************** 主函数 *********************
不使用整屏左移命令使用指针进行右移
***********************************************/
void main()
{uchar i, j=0, n=0;uchar code Data_1[]="   I Love You   ";  // 第一行显示,共十六个字符uchar code Data_2[]="Good Good Study,Day Day Up !";  // 第二行显示,共28个字符LCD_Init();  // LCD1602 初始化LCD_Write_Cmd(0x00+0x80);  // 第一行第一列地址for(i=0; i<16; i++){     LCD_Write_Data(Data_1[i]);  // 显示第一行}while(1){LCD_Check_Busy();  // 判忙,若忙,不继续执行LCD_Write_Cmd(0x40+0x80);  // 第二行第一列地址for(j=n; j<28+n; j++){     LCD_Write_Data(Data_2[j]);  // 显示第二行}n++;if(n >= (28-15)){  // 当数据移动到最后时,n 重置 0,停顿 500 ms,重新开始移动显示n = 0;delay_1ms(500);}delay_1ms(200);  // 控制移动速度}
}

实验六:自定义字模显示

要求:
自定义数模
在第一行第一列显示汉字 ——年
在第一行第三列显示汉字 ——月
在第一行第五列显示汉字 ——日

确定字模:

以 日 字为例

结果展示:

代码:

直接替换位为以下主函数即可

/****************** 主函数 *********************
***********************************************/
void main(){uchar i;uchar code Data_0[]={0x0f, 0x12, 0x0f, 0x0a, 0x1f, 0x02, 0x02, 0x02};  // 汉字 年 的字模uchar code Data_1[]={0x0f, 0x09, 0x0f, 0x09, 0x0f, 0x09, 0x0b, 0x11};  // 汉字 月 的字模  uchar code Data_2[]={0x1f, 0x11, 0x11, 0x1f, 0x11, 0x11, 0x1f, 0x00};  // 汉字 日 的字模LCD_Init();  // LCD1602 初始化LCD_Write_Cmd(0x40);  // 0100 0000; 指令 0x40 向 CGRAM 地址0 写入自定义数据for(i=0; i<8; i++){LCD_Write_Data(Data_0[i]);  // 写入自定义字符字模}LCD_Write_Cmd(0x48);  // 0100 1000; 指令 0x48 向 CGRAM 地址1 写入自定义数据for(i=0; i<8; i++){LCD_Write_Data(Data_1[i]);  // 写入自定义字符字模}LCD_Write_Cmd(0x50);  // 0101 0000; 指令 0x50 向 CGRAM 地址2 写入自定义数据for(i=0; i<8; i++){LCD_Write_Data(Data_2[i]);  // 写入自定义字符字模}LCD_Write_Cmd(0x00+0x80);  // 在第一行第一列显示 第一个字符LCD_Write_Data(0);LCD_Write_Cmd(0x02+0x80);  // 在第一行第三列显示 第二个字符LCD_Write_Data(1);LCD_Write_Cmd(0x04+0x80);  // 在第一行第五列显示 第一个字符LCD_Write_Data(2);while(1);
}

快速掌握——LCD1602液晶显示(多组实验,附带源程序)相关推荐

  1. 1602实现计算机实验报告,LCD1602液晶显示实验报告

    LCD1602液晶显示实验报告 一.实验目的 (1)了解LCD1602的基本原理,掌握其基本的工作流程. (2)学习用Verilog HDL语言编写LCD1602的控制指令程序,能够在液晶屏 上显示出 ...

  2. C语言LCD1602液晶实验报告,LCD1602液晶显示实验报告.doc

    LCD1602液晶显示实验报告 LCD1602液晶显示实验报告 实验目的 (1)了解LCD1602的基本原理,掌握其基本的工作流程. 学习用Verilog HDL语言编写LCD1602的控制指令程序, ...

  3. 51单片机学习:LCD1602液晶显示实验

    实验名称:LCD1602液晶显示实验 接线说明:     实验现象:下载程序后,LCD1602上显示字符信息 注意事项:                                         ...

  4. 【无标题】Ds1302驱动代码编写并在Lcd1602液晶显示

    目录 Ds1302实时时钟芯片简介 一.Ds1302寄存器介绍 二.SPI总线通讯时序与Ds1302时序 1.SPI总线时序 2.Ds1302时序解析以及控制代码 总结 Ds1302实时时钟芯片简介 ...

  5. Micro Python 入门教程-pyboard V1.1控制LCD1602液晶显示模块

    11. LCD1602液晶显示模块 11.1 初识LCD1602液晶模块 LCD1602什么意思,LCD表示Liquid Crystal Display,1602表示一行可以显示16个字符,一共有两行 ...

  6. 微生物组实验手册计划正式启动、诚邀同行共同打造本领域方法百科全书

    <微生物组实验手册>计划正式启动 目标 Bio-protocol杂志社(bio-protocol.org)联合宏基因组公众号联合发起微生物组实验方法(Microbiome Protocol ...

  7. 计算机组成实验六MIPS汇编器,杭电计组实验6-MIPS汇编器与模拟器实验.doc

    <杭电计组实验6-MIPS汇编器与模拟器实验.doc>由会员分享,提供在线免费全文阅读可下载,此文档格式为doc,更多相关<杭电计组实验6-MIPS汇编器与模拟器实验.doc> ...

  8. 基于ATMEGA16单片机,MQ-3酒精传感器,LCD1602液晶显示的酒精浓度检测阈值报警仪

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 本文章为个人单片机课程大作业,代码都是自己写的,只是记录自己的学习过程,不做任何商用. 目录 单片机大作业: 一.使用仪器.材料 二. ...

  9. 西电计组实验一 存储器实验

    FPGA中LPM_ROM定制与读出实验 一.实验目的   1.掌握FPGA中lpm_ROM的设置,作为只读存储器ROM的工作特性和配置方法:   2.用文本编辑器编辑mif文件配置ROM,学习将程序代 ...

  10. 125家单位联合完成微生物组实验手册(Microbiome Protocol eBook)第1版

    微生物组实验手册(Microbiome Protocol eBook) 正式发布 在过去20年里,微生物组学在人类.动物.植物和环境领域均取得了突破进展.迄今为止,每年有数万篇相关研究论文发表,扩展了 ...

最新文章

  1. 中考考试的指令广播_明天FM105.2《朝朝早精神好》推出2017广州中考日特别报道...
  2. 几种常见信号波形变换电路
  3. UIRefreshControl使用总结
  4. C语言精要总结-指针系列(二)
  5. mysql数据每日更新_[每日更新-MySQL]4.记录操作(数据操作)
  6. 怎么在苹果Mac虚拟机上安装Win7
  7. 垂直居中重要方法理解---重点是方法三
  8. activity的启动窗口
  9. 整型关键字的平方探测法散列 (25 分)【详细解析】
  10. 我的世界服务器的文件名叫什么,我的世界 外国服务器叫什么名字 | 手游网游页游攻略大全...
  11. Hive ETL 任务调优(参数篇)
  12. 配置hadoop集群
  13. ❤️力扣线性枚举算法第二题数组中连续为一的最大个数
  14. python 学习笔记(6)-转载
  15. mysql显示行号,通过表名模糊查找,通过列名模糊查找,常用sql
  16. 利用python进行数据分析第二版pdf百度云_利用Python进行数据分析(原书第2版) 中文翻译pdf高清版...
  17. 论文阅读:Action Genome: Actions as Composition of Spatio-temporal Scene Graphs
  18. [unity] unity学习——弹球游戏
  19. 公众平台 python_轻松实现python搭建微信公众平台
  20. TileMap插件学习

热门文章

  1. 玩转华为ENSP模拟器系列 | 合集
  2. Visual Studio 2019 C++实现socket通信,添加ws2_32.lib库,新手代码
  3. 浅析iOSApp签名原理及流程
  4. Windows操作系统 | Visual C++库可不能乱删
  5. quartus仿真13:D触发器和JK触发器
  6. pmp 第六版 模拟卷3疑难问题
  7. python爬淘宝评论源代码_python3爬取淘宝信息代码分析
  8. de4dot不能反编译的混淆工具 ILProtector
  9. 基于TCP协议的摄像头视频网络传输
  10. access tempvars 宏_Access数据库实用教程(第2版)第7章宏.ppt