擎天柱例程35 串口绘图
/************* 功能说明 **************
本例程基于Ai8051U核心转接板(擎天柱)进行编写测试。
程序演示STC-ISP(V6.91P)推出的串口绘图功能。
通过串口1输出数据给串口绘图调试接口,串口1配置(P3.0, P3.1):115200,N,8,1。
下载时, 选择默认时钟 22.1184MHz (用户可自行修改频率)。
测试流程:
1.烧录演示程序到屠龙刀核心板,使用USB转串口工具连接电脑与屠龙刀J4接口。
2.打开STC-ISP软件,选择“STC调试接口”菜单里的“接口设置”选项,选择“将所有调试接口绑定到USB-CDC/串口助手”。
3.打开“USB-CDC/串口助手”标签页面,选择串口工具对应的串口号,设置好波特率,并打开串口。
4.打开STC-ISP软件,选择“STC调试接口”菜单里的“串口绘图”功能,通过设置菜单勾选“通道1”、“通道2”,数据格式设置“单字节”。
正常情况就可以看到通道1与通道2产生的曲线图。
******************************************/
#define PRINTF_HID
#include "../comm/Ai8051U.h" //包含此头文件后,不需要再包含"reg51.h"头文件
#include "../comm/usb.h" //USB调试及复位所需头文件
#include "stdio.h"
//USB调试及复位所需定义
char *USER_DEVICEDESC = NULL;
char *USER_PRODUCTDESC = NULL;
char *USER_STCISPCMD = "@STCISP#"; //设置自动复位到ISP区的用户接口命令
#define MAIN_Fosc 24000000UL //定义主时钟
#define Timer0_Reload (MAIN_Fosc / 1000) //Timer 0 中断频率, 1000次/秒
uchar code SIN_TAB[256] =
{
100, 102, 105, 107, 110, 112, 115, 117, 120, 122, 124, 127, 129, 131, 134, 136,
138, 141, 143, 145, 147, 149, 151, 153, 156, 158, 160, 162, 163, 165, 167, 169,
171, 172, 174, 176, 177, 179, 180, 182, 183, 184, 186, 187, 188, 189, 190, 191,
192, 193, 194, 195, 196, 196, 197, 198, 198, 199, 199, 199, 200, 200, 200, 200,
200, 200, 200, 200, 200, 199, 199, 199, 198, 198, 197, 196, 196, 195, 194, 193,
192, 191, 190, 189, 188, 187, 186, 184, 183, 182, 180, 179, 177, 176, 174, 172,
171, 169, 167, 165, 163, 162, 160, 158, 156, 153, 151, 149, 147, 145, 143, 141,
138, 136, 134, 131, 129, 127, 124, 122, 120, 117, 115, 112, 110, 107, 105, 102,
100, 98, 95, 93, 90, 88, 85, 83, 80, 78, 76, 73, 71, 69, 66, 64,
62, 59, 57, 55, 53, 51, 49, 47, 44, 42, 40, 38, 37, 35, 33, 31,
29, 28, 26, 24, 23, 21, 20, 18, 17, 16, 14, 13, 12, 11, 10, 9,
8, 7, 6, 5, 4, 4, 3, 2, 2, 1, 1, 1, 0, 0, 0, 0,
0, 0, 0, 0, 0, 1, 1, 1, 2, 2, 3, 4, 4, 5, 6, 7,
8, 9, 10, 11, 12, 13, 14, 16, 17, 18, 20, 21, 23, 24, 26, 28,
29, 31, 33, 35, 37, 38, 40, 42, 44, 47, 49, 51, 53, 55, 57, 59,
62, 64, 66, 69, 71, 73, 76, 78, 80, 83, 85, 88, 90, 93, 95, 98,
};
bit f1ms;
uchar dat;
//========================================================================
// 函数: void Timer0_init(void)
// 描述: timer0初始化函数.
// 参数: none.
// 返回: none.
// 版本: V1.0, 2015-1-12
//========================================================================
void Timer0_init(void)
{
TR0 = 0; //停止计数
#if (Timer0_Reload < 64) // 如果用户设置值不合适, 则不启动定时器
#error "Timer0设置的中断过快!"
#elif ((Timer0_Reload/12) < 65536UL) // 如果用户设置值不合适, 则不启动定时器
ET0 = 1; //允许中断
// PT0 = 1; //高优先级中断
TMOD &= ~0x03;
TMOD |= 0; //工作模式, 0: 16位自动重装, 1: 16位定时/计数, 2: 8位自动重装, 3: 16位自动重装, 不可屏蔽中断
// TMOD |= T0_CT; //计数
TMOD &= ~T0_CT; //定时
// INTCLKO |= T0CLKO; //输出时钟
INTCLKO &= ~T0CLKO; //不输出时钟
#if (Timer0_Reload < 65536UL)
AUXR |= T0x12; //1T mode
TH0 = (u8)((65536UL - Timer0_Reload) / 256);
TL0 = (u8)((65536UL - Timer0_Reload) % 256);
#else
AUXR &= ~T0x12; //12T mode
TH0 = (u8)((65536UL - Timer0_Reload/12) / 256);
TL0 = (u8)((65536UL - Timer0_Reload/12) % 256);
#endif
TR0 = 1; //开始运行
#else
#error "Timer0设置的中断过慢!"
#endif
}
void main()
{
WTST = 0; //设置程序指令延时参数,赋值为0可将CPU执行指令的速度设置为最快
P_SW2 |= EAXFR; //扩展寄存器(XFR)访问使能
CKCON = 0; //提高访问XRAM速度
P0M0 = 0x00; P0M1 = 0x00;
P1M0 = 0x00; P1M1 = 0x00;
P2M0 = 0x00; P2M1 = 0x00;
P3M0 = 0x00; P3M1 = 0x00;
P4M0 = 0x00; P4M1 = 0x00;
P5M0 = 0x00; P5M1 = 0x00;
P6M0 = 0x00; P6M1 = 0x00;
P7M0 = 0x00; P7M1 = 0x00;
usb_init();
Timer0_init();
IE2 |= 0x80; //IE2相关的中断位操作使能后,需要重新设置EUSB
EA = 1;
while(DeviceState != DEVSTATE_CONFIGURED); //等待USB完成配置
f1ms = 0;
dat = 0;
printf("Serial Test Programme!\r\n");
while (1)
{
if (bUsbOutReady) //USB调试及复位所需代码
{
//USB_SendData(UsbOutBuffer,64); //发送数据缓冲区,长度(接收数据原样返回, 用于测试HID)
usb_OUT_done();
}
if (f1ms)
{
f1ms = 0;
USB_SendData(&dat,1); //发送通道1数据
USB_SendData(&SIN_TAB[dat],1); //发送通道2数据
dat++;
}
}
}
void tm0_isr() interrupt 1
{
f1ms = 1;
}
通讯接口说明:
1、若使用USB-HID设备进行通讯,通过HID的中断端点发送或接收数据
2、若使用USB-CDC串口进行通讯,则直接通过串口发送或接收数据
3、发送和接收数据参考每个功能的命令格式
4、强烈建议使用使用USB-HID和USB-CDC的库。
用户只需要将LIB文件添加到项目中,并在主函数中包含库函数的头文件
就可以直接调用库函数。
5、包含库函数后,所有的库函数用户只需要直接调用,库函数会自动解析参数
下载USB-HID/USB-CDC库文件及范例程序
7段数码管接口 | DIP40封装LED接口 | DIP64封装LED接口 | LCD12864接口 |
OLED12864接口 | VOLED320240接口 | VOLED480320接口 | VOLED640480接口 |
虚拟键盘接口 | 数字示波器接口 | 串口绘图接口 | FFT绘图接口 |
7段数码管接口
功能1: | 在数码管上显示字符串 |
命令格式: | 37H 53H 45H 47H 53H 00H 00H 00H s1 s2 s3 s4 ... |
命令说明: | |
第1~4字节: | 命令头 |
第5字节: | 功能选择(53H显示字符串) |
第6~8字节: | 保留 |
第9~n字节: | 字符的ASCII码,字符串必须以‘\0’结尾 |
示例: | 发送37H 53H 45H 47H 53H 00H 00H 00H 31H 32H 2EH 33H 00H |
在数码管上会显示“12.3” | |
库函数声明: | int SEG7_ShowString(const char *fmt, ...); |
库函数调用: | SEG7_ShowString("%08lx", 0x1234abcdL); |
功能2: | 在数码管上显示4字节长整型数 |
命令格式: | 37H 53H 45H 47H 4CH x1 x2 00H d1 d2 d3 d4 |
命令说明: | |
第1~4字节: | 命令头 |
第5字节: | 功能选择(4CH显示长整型数) |
第6字节: | 数据存储格式(0:LE, 1:BE) |
第7字节: | 显示进制(02H:二进制, 0AH:十进制, 10H:十六进制) |
第8字节: | 保留 |
第9~12字节: | 长整型数的存储数据 |
示例1: | 发送37H 53H 45H 47H 4CH 00H 10H 00H 12H 34H 56H 78H |
在数码管上会显示78564312 | |
示例2: | 发送37H 53H 45H 47H 4CH 01H 10H 00H 12H 34H 56H 78H |
在数码管上会显示12345678 | |
库函数声明: | void SEG7_ShowLong(long n, char radix);//n:长整型数 radix:进制 |
库函数调用: | SEG7_ShowLong(0x98765432, 16); |
注: | 当超出显示范围时自动转为科学计数法进行显示 |
功能3: | 在数码管上显示IEEE754格式单精度浮点数 |
命令格式: | 37H 53H 45H 47H 44H x1 00H 00H d1 d2 d3 d4 |
命令说明: | |
第1~4字节: | 命令头 |
第5字节: | 功能选择(44H显示单精度浮点数) |
第6字节: | 数据存储格式(0:LE, 1:BE) |
第7~8字节: | 保留 |
第9~12字节: | 单精度浮点数的存储数据 |
示例1: | 发送37H 53H 45H 47H 44H 00H 00H 00H D0H 0FH 49H 40H |
在数码管上会显示3.14159 | |
示例2: | 发送37H 53H 45H 47H 44H 01H 00H 00H 40H 49H 0FH D0H |
在数码管上会显示3.14159 | |
库函数声明: | void SEG7_ShowFloat(float f);//f:浮点数 |
库函数调用: | SEG7_ShowFloat(3.14159); |
注: | 当超出显示范围时自动转为科学计数法进行显示 |
功能4: | 在数码管上直接显示所给的段码 | ||||||||||||||||||||||||||||||||||||||||||||||||
命令格式: | 37H 53H 45H 47H 43H 00H 00H 00H d1 d2 d3 d4 d5 d6 d7 d8 | ||||||||||||||||||||||||||||||||||||||||||||||||
命令说明: | |||||||||||||||||||||||||||||||||||||||||||||||||
第1~4字节: | 命令头 | ||||||||||||||||||||||||||||||||||||||||||||||||
第5字节: | 功能选择(43H显示段码) | ||||||||||||||||||||||||||||||||||||||||||||||||
第6~8字节: | 保留 | ||||||||||||||||||||||||||||||||||||||||||||||||
第9~16字节: | 8个数码管的段码 | ||||||||||||||||||||||||||||||||||||||||||||||||
示例: | 发送37H 53H 45H 47H 43H 00H 00H 00H 3FH 06H 5BH 4FH 66H 6DH 7DH 27H | ||||||||||||||||||||||||||||||||||||||||||||||||
在数码管上会显示01234567 | |||||||||||||||||||||||||||||||||||||||||||||||||
库函数声明: | void SEG7_ShowCode(BYTE *cod);//cod:段码 | ||||||||||||||||||||||||||||||||||||||||||||||||
库函数调用: | BYTE cod[8]; cod[0] = 0x3f; cod[1] = 0x06; cod[2] = 0x5b; cod[3] = 0x4f; cod[4] = 0x66; cod[5] = 0x6d; cod[6] = 0x7d; cod[7] = 0x27; SEG7_ShowCode(cod); | ||||||||||||||||||||||||||||||||||||||||||||||||
常用段码表: |
|
DIP40封装LED接口
功能1: | 控制DIP40的各个管脚上LED的状态 |
命令格式: | 4CH 45H 44H 28H x1 x2 px ... |
命令说明: | |
第1~4字节: | 命令头 |
第5字节: | 后面有效数据长度 |
第6字节: | P0~P5端口的屏蔽位(bit0:P0, bit1:P1, ...) |
第7~n字节: | P0~P5端口的状态 |
使用串口通讯请参考下面的示例发送串口数据 | |
示例1: | 发送4CH 45H 44H 28H 02H 01H 55H |
修改P0口的状态为55H | |
示例2: | 发送4CH 45H 44H 28H 03H 09H 55H AAH |
修改P0口的状态为55H,P3口为AAH | |
示例3: | 发送4CH 45H 44H 28H 05H 0FH 11H 22H 33H 44H |
修改P0口的状态为11H,P1口为22H,P2口为33H, P3口为44H | |
库函数声明: | void LED40_SendData(BYTE *dat, BYTE size); *** 包含库函数的头文件后,不用另外声明 *** |
项目中包含库函数后,可直接调用下面的库函数 | |
库函数调用: | BYTE cod[8]; cod[0] = 0x0f; cod[1] = 0x12; cod[2] = 0x34; cod[3] = 0x56; cod[4] = 0x78; LED40_SendData(cod, 5); |
功能2: | 控制DIP40的指定组管脚上LED的状态 |
命令格式: | 4CH 45H 44H 28H 02H x1 px |
命令说明: | |
第1~4字节: | 命令头 |
第5字节: | 后面有效数据长度 |
第6字节: | P0~P5端口的屏蔽位 (01H:P0, 02H:P1, 04H:P2, 08H:P3, 10H:P4, 20H:P5) |
第7字节: | 端口的状态 |
使用串口通讯请参考下面的示例发送串口数据 | |
示例1: | 发送4CH 45H 44H 28H 02H 01H 55H |
设置P0口的状态为55H | |
示例2: | 发送4CH 45H 44H 28H 02H 04H AAH |
设置P2口的状态为AAH | |
库函数声明: | void LED40_SetPort(BYTE port, BYTE dat); *** 包含库函数的头文件后,不用另外声明 *** |
项目中包含库函数后,可直接调用下面的库函数 | |
库函数调用: | LED40_SetPort(0, 0x55); //设置P0口输出55H LED40_SetPort(1, 0xaa); //设置P1口输出AAH |
功能3: | 控制DIP40的指定管脚输出高电平 |
命令格式: | 4CH 45H 44H 28H 02H 00H px ... |
命令说明: | |
第1~4字节: | 命令头 |
第5字节: | 后面有效数据长度 |
第6字节: | 固定为00H |
第7字节: | 端口的状态数据px px的bit7:固定为1 px的bit6~bit3:指定第几组管脚(0:P0,1:P1,2:P2,...) px的bit2~bit0:指定管脚的第几位(0:bit0,1:bit1,...) |
使用串口通讯请参考下面的示例发送串口数据 | |
示例1: | 发送4CH 45H 44H 28H 02H 00H 83H |
设置P0.3口输出高电平 | |
示例2: | 发送4CH 45H 44H 28H 02H 00H a5H |
设置P4.5口输出高电平 | |
库函数声明: | void LED40_SetBit(BYTE port, BYTE bt); *** 包含库函数的头文件后,不用另外声明 *** |
项目中包含库函数后,可直接调用下面的库函数 | |
库函数调用: | LED40_SetBit(0, 3); //设置P0.3口输出高电平 LED40_SetBit(4, 5); //设置P4.5口输出高电平 |
功能4: | 控制DIP40的指定管脚输出低电平 |
命令格式: | 4CH 45H 44H 28H 02H 00H px ... |
命令说明: | |
第1~4字节: | 命令头 |
第5字节: | 后面有效数据长度 |
第6字节: | 固定为00H |
第7字节: | 端口的状态数据px px的bit7:固定为0 px的bit6~bit3:指定第几组管脚(0:P0,1:P1,2:P2,...) px的bit2~bit0:指定管脚的第几位(0:bit0,1:bit1,...) |
使用串口通讯请参考下面的示例发送串口数据 | |
示例1: | 发送4CH 45H 44H 28H 02H 00H 03H |
设置P0.3口输出低电平 | |
示例2: | 发送4CH 45H 44H 28H 02H 00H 25H |
设置P4.5口输出低电平 | |
库函数声明: | void LED40_ClrBit(BYTE port, BYTE bt); *** 包含库函数的头文件后,不用另外声明 *** |
项目中包含库函数后,可直接调用下面的库函数 | |
库函数调用: | LED40_ClrBit(0, 3); //设置P0.3口输出低电平 LED40_ClrBit(4, 5); //设置P4.5口输出低电平 |
DIP64封装LED接口
功能: | 控制DIP64的各个管脚上LED的状态 |
命令格式: | 4CH 45H 44H 40H x1 x2 px ... |
命令说明: | |
第1~4字节: | 命令头 |
第5字节: | 后面有效数据长度 |
第6字节: | P0~P7端口的屏蔽位(bit0:P0, bit1:P1, ...) |
第7~n字节: | P0~P7端口的状态 |
使用串口通讯请参考下面的示例发送串口数据 | |
示例1: | 发送4CH 45H 44H 40H 02H 01H 55H |
修改P0口的状态为55H | |
示例2: | 发送4CH 45H 44H 40H 03H 09H 55H AAH |
修改P0口的状态为55H,P3口为AAH | |
示例3: | 发送4CH 45H 44H 40H 09H FFH 11H 22H 33H 44H 55H 66H 77H 88H |
修改P0口的状态为11H,P1口为22H,P2口为33H, P3口为44H,P4口为55H,P5口为66H,P6口为77H,P7口为88H | |
库函数声明: | void LED64_SendData(BYTE *dat, BYTE size); *** 包含库函数的头文件后,不用另外声明 *** |
项目中包含库函数后,可直接调用下面的库函数 | |
库函数调用: | BYTE cod[8]; cod[0] = 0x0f; cod[1] = 0x12; cod[2] = 0x34; cod[3] = 0x56; cod[4] = 0x78; LED64_SendData(cod, 5); |
功能2: | 控制DIP64的指定组管脚上LED的状态 |
命令格式: | 4CH 45H 44H 40H 02H x1 px |
命令说明: | |
第1~4字节: | 命令头 |
第5字节: | 后面有效数据长度 |
第6字节: | P0~P7端口的屏蔽位 ( 01H:P0, 02H:P1, 04H:P2, 08H:P3, 10H:P4, 20H:P5, 40H:P6, 80H:P7 ) |
第7字节: | 端口的状态 |
使用串口通讯请参考下面的示例发送串口数据 | |
示例1: | 发送4CH 45H 44H 40H 02H 01H 55H |
设置P0口的状态为55H | |
示例2: | 发送4CH 45H 44H 40H 02H 04H AAH |
设置P2口的状态为AAH | |
库函数声明: | void LED64_SetPort(BYTE port, BYTE dat); *** 包含库函数的头文件后,不用另外声明 *** |
项目中包含库函数后,可直接调用下面的库函数 | |
库函数调用: | LED64_SetPort(0, 0x55); //设置P0口输出55H LED64_SetPort(4, 0xAA); //设置P4口输出AAH |
功能3: | 控制DIP64的指定管脚输出高电平 |
命令格式: | 4CH 45H 44H 40H 02H 00H px ... |
命令说明: | |
第1~4字节: | 命令头 |
第5字节: | 后面有效数据长度 |
第6字节: | 00H |
第7字节: | 端口的状态数据px px的bit7:固定为1 px的bit6~bit3:指定第几组管脚(0:P0,1:P1,2:P2,...) px的bit2~bit0:指定管脚的第几位(0:bit0,1:bit1,...) |
使用串口通讯请参考下面的示例发送串口数据 | |
示例1: | 发送4CH 45H 44H 40H 02H 00H 83H |
设置P0.3口输出高电平 | |
示例2: | 发送4CH 45H 44H 40H 02H 00H a5H |
设置P4.5口输出高电平 | |
库函数声明: | void LED64_SetBit(BYTE port, BYTE bt); *** 包含库函数的头文件后,不用另外声明 *** |
项目中包含库函数后,可直接调用下面的库函数 | |
库函数调用: | LED64_SetBit(0, 3); //设置P0.3口输出高电平 LED64_SetBit(4, 5); //设置P4.5口输出高电平 |
功能4: | 控制DIP64的指定管脚输出低电平 |
命令格式: | 4CH 45H 44H 40H 02H 00H px ... |
命令说明: | |
第1~4字节: | 命令头 |
第5字节: | 后面有效数据长度 |
第6字节: | 00H |
第7字节: | 端口的状态数据px px的bit7:固定为0 px的bit6~bit3:指定第几组管脚(0:P0,1:P1,2:P2,...) px的bit2~bit0:指定管脚的第几位(0:bit0,1:bit1,...) |
使用串口通讯请参考下面的示例发送串口数据 | |
示例1: | 发送4CH 45H 44H 40H 02H 00H 03H |
设置P0.3口输出低电平 | |
示例2: | 发送4CH 45H 44H 40H 02H 00H 25H |
设置P4.5口输出低电平 | |
库函数声明: | void LED64_ClrBit(BYTE port, BYTE bt); *** 包含库函数的头文件后,不用另外声明 *** |
项目中包含库函数后,可直接调用下面的库函数 | |
库函数调用: | LED64_ClrBit(0, 3); //设置P0.3口输出低电平 LED64_ClrBit(4, 5); //设置P4.5口输出低电平 |
LCD12864接口
本接口模拟的是以ST7920为控制芯片的LCD12864,器件本身自带字库,
所以本接口也相应的加入了字库的支持
功能1: | 关闭LCD12864的显示 |
命令格式: | 4CH 43H 44H 80H 02H A0H 00H |
命令说明: | |
第1~4字节: | 命令头 |
第5字节: | 后面有效数据长度 |
第6字节: | 功能选择(A0H显示功能) |
第7字节: | 固定为00 |
示例: | 发送4CH 43H 44H 80H 02H A0H 00H |
关闭LCD12864的显示 | |
库函数声明: | void LCD12864_DisplayOff(); |
库函数调用: | LCD12864_DisplayOff(); |
功能2: | 打开LCD12864的显示 |
命令格式: | 4CH 43H 44H 80H 02H A0H 01H |
命令说明: | |
第1~4字节: | 命令头 |
第5字节: | 后面有效数据长度 |
第6字节: | 功能选择(A0H显示功能) |
第7字节: | 固定为01 |
示例: | 发送4CH 43H 44H 80H 02H A0H 01H |
打开LCD12864的显示 | |
库函数声明: | void LCD12864_DisplayOn(); |
库函数调用: | LCD12864_DisplayOn(); |
功能3: | 隐藏LCD12864的光标 |
命令格式: | 4CH 43H 44H 80H 02H A1H 00H |
命令说明: | |
第1~4字节: | 命令头 |
第5字节: | 后面有效数据长度 |
第6字节: | 功能选择(A1H光标功能) |
第7字节: | 固定为00 |
示例: | 发送4CH 43H 44H 80H 02H A1H 00H |
隐藏LCD12864的光标 | |
库函数声明: | void LCD12864_CursorOff(); |
库函数调用: | LCD12864_CursorOff(); |
功能4: | 显示LCD12864的光标 |
命令格式: | 4CH 43H 44H 80H 02H A1H 01H |
命令说明: | |
第1~4字节: | 命令头 |
第5字节: | 后面有效数据长度 |
第6字节: | 功能选择(A1H光标功能) |
第7字节: | 固定为01 |
示例: | 发送4CH 43H 44H 80H 02H A1H 01H |
显示LCD12864的光标 | |
库函数声明: | void LCD12864_CursorOn(); |
库函数调用: | LCD12864_CursorOn(); |
功能5: | 光标向左移动一个单位(16个像素) |
命令格式: | 4CH 43H 44H 80H 02H A2H 00H |
命令说明: | |
第1~4字节: | 命令头 |
第5字节: | 后面有效数据长度 |
第6字节: | 功能选择(A2H光标移动功能) |
第7字节: | 固定为00 |
示例: | 发送4CH 43H 44H 80H 02H A2H 00H |
LCD12864的光标向左移动一个单位 | |
库函数声明: | void LCD12864_CursorMoveLeft(); |
库函数调用: | LCD12864_CursorMoveLeft(); |
功能6: | 光标向右移动一个单位(16个像素) |
命令格式: | 4CH 43H 44H 80H 02H A2H 01H |
命令说明: | |
第1~4字节: | 命令头 |
第5字节: | 后面有效数据长度 |
第6字节: | 功能选择(A2H光标移动功能) |
第7字节: | 固定为01 |
示例: | 发送4CH 43H 44H 80H 02H A2H 01H |
LCD12864的光标向右移动一个单位 | |
库函数声明: | void LCD12864_CursorMoveRight(); |
库函数调用: | LCD12864_CursorMoveRight(); |
功能7: | 光标回到左上角初始位置 |
命令格式: | 4CH 43H 44H 80H 02H A2H 02H |
命令说明: | |
第1~4字节: | 命令头 |
第5字节: | 后面有效数据长度 |
第6字节: | 功能选择(A2H光标移动功能) |
第7字节: | 固定为02 |
示例: | 发送4CH 43H 44H 80H 02H A2H 02H |
LCD12864的光标回到左上角初始位置 | |
库函数声明: | void LCD12864_CursorReturnHome(); |
库函数调用: | LCD12864_CursorReturnHome(); |
功能8: | LCD12864向左滚动一个单位(16个像素) |
命令格式: | 4CH 43H 44H 80H 02H A3H 00H |
命令说明: | |
第1~4字节: | 命令头 |
第5字节: | 后面有效数据长度 |
第6字节: | 功能选择(A3H滚屏功能) |
第7字节: | 固定为00 |
示例: | 发送4CH 43H 44H 80H 02H A3H 00H |
LCD12864的屏幕向左滚动一个单位 | |
库函数声明: | void LCD12864_ScrollLeft(); |
库函数调用: | LCD12864_ScrollLeft(); |
功能9: | LCD12864向右滚动一个单位(16个像素) |
命令格式: | CH 43H 44H 80H 02H A3H 01H |
命令说明: | |
第1~4字节: | 命令头 |
第5字节: | 后面有效数据长度 |
第6字节: | 功能选择(A3H滚屏功能) |
第7字节: | 固定为01 |
示例: | 发送4CH 43H 44H 80H 02H A3H 01H |
LCD12864的屏幕向右滚动一个单位 | |
库函数声明: | void LCD12864_ScrollRight(); |
库函数调用: | LCD12864_ScrollRight(); |
功能10: | LCD12864向上滚动 |
命令格式: | 4CH 43H 44H 80H 03H A3H 02H x1 |
命令说明: | |
第1~4字节: | 命令头 |
第5字节: | 后面有效数据长度 |
第6字节: | 功能选择(A3H滚屏功能) |
第7字节: | 固定为02 |
第8字节: | 滚动像素个数 |
示例: | 发送4CH 43H 44H 80H 03H A3H 02H 10H |
LCD12864的屏幕向上滚动16个像素 | |
库函数声明: | void LCD12864_ScrollUp(BYTE line);//line:滚动像素个数 |
库函数调用: | LCD12864_ScrollUp(0x10); |
功能11: | LCD12864显示字符串超出一行时自动丢弃 |
命令格式: | 4CH 43H 44H 80H 02H A4H 00H |
命令说明: | |
第1~4字节: | 命令头 |
第5字节: | 后面有效数据长度 |
第6字节: | 功能选择(A4H换行功能) |
第7字节: | 固定为00 |
示例: | 发送4CH 43H 44H 80H 02H A4H 00H |
关闭自动换行 | |
库函数声明: | void LCD12864_AutoWrapOff(); |
库函数调用: | LCD12864_AutoWrapOff(); |
功能12: | LCD12864显示字符串超出一行时自动换行 |
命令格式: | 4CH 43H 44H 80H 02H A4H 01H |
命令说明: | |
第1~4字节: | 命令头 |
第5字节: | 后面有效数据长度 |
第6字节: | 功能选择(A4H换行功能) |
第7字节: | 固定为01 |
示例: | 发送4CH 43H 44H 80H 02H A4H 01H |
开启自动换行功能 | |
库函数声明: | void LCD12864_AutoWrapOn(); |
库函数调用: | LCD12864_AutoWrapOn(); |
功能13: | 反白显示指定的行 |
命令格式: | 4CH 43H 44H 80H 02H A5H x1 |
命令说明: | |
第1~4字节: | 命令头 |
第5字节: | 后面有效数据长度 |
第6字节: | 功能选择(A5H反白显示) |
第7字节: | 指定行(范围0~3) |
示例: | 发送4CH 43H 44H 80H 02H A5H 02H |
第2行反白显示 | |
库函数声明: | void LCD12864_ReverseLine(BYTE line);//line:行数 |
库函数调用: | LCD12864_ReverseLine(2); |
功能14: | 清除显示 |
命令格式: | 4CH 43H 44H 80H 01H A6H |
命令说明: | |
第1~4字节: | 命令头 |
第5字节: | 后面有效数据长度 |
第6字节: | 功能选择(A6H清除显示) |
示例: | 发送4CH 43H 44H 80H 01H A6H |
清除显示 | |
库函数声明: | void LCD12864_DisplayClear(); |
库函数调用: | LCD12864_DisplayClear(); |
功能15: | 在LCD12864上显示ASCII码和简体中文字符 |
命令格式: | 4CH 43H 44H 80H 03H A7H x y |
命令说明: | |
第1~4字节: | 命令头 |
第5字节: | 后面有效数据长度 |
第6字节: | 功能选择(A7H显示字符串) |
第7字节: | 开始显示字符串的X坐标(列号,范围0~7) |
第8字节: | 开始显示字符串的Y坐标(行号,范围0~3) |
示例: | 发送4CH 43H 44H 80H 03H A7H 01H 02H |
从(1,2)的坐标位置开始显示字符串 | |
库函数声明: | void LCD12864_ShowString(BYTE x, BYTE y, char *str); |
库函数调用: | LCD12864_ShowString(0, 0, "深圳国芯人工智能"); |
注意: | 发送显示命令前,需要先使用AFH命令将需要显示的内容发送到缓冲区。 若调用库函数则库函数会自动处理。 |
功能16: | 在LCD12864屏幕上显示图片 |
命令格式: | 4CH 43H 44H 80H 05H A8H x y cx cy |
命令说明: | |
第1~4字节: | 命令头 |
第5字节: | 后面有效数据长度 |
第6字节: | 功能选择(A8H显示图片) |
第7字节: | 开始显示图片的X坐标(列号,范围0~7) |
第8字节: | 开始显示图片的Y坐标(行号,范围0~3) |
第9字节: | 图片的宽度(列数,范围1~8) |
第10字节: | 图片的高度(行数,范围1~64) |
示例: | 发送4CH 43H 44H 80H 05H A8H 01H 02H 02H 02H |
从(1,2)的坐标位置开始显示2个单位宽、2个单位高的图片 | |
库函数声明: | void LCD12864_ShowPicture( BYTE x, BYTE y, BYTE cx, BYTE cy, BYTE *dat); |
库函数调用: | LCD12864_ShowPicture(0, 0, 8, 64, (BYTE *)&LCD12864_IMG); |
注意: | 发送显示命令前,需要先使用AFH命令将需要显示的内容发送到缓冲区。 若调用库函数则库函数会自动处理。 |
功能17: | 上传数据到缓冲区 |
命令格式: | 4CH 43H 44H 80H x1 AFH ah al xx ... |
命令说明: | |
第1~4字节: | 命令头 |
第5字节: | 后面有效数据长度 |
第6字节: | 功能选择(AFH缓存数据) |
第7字节: | 目标缓冲区地址高字节 |
第8字节: | 目标缓冲区地址低字节 |
第9~n字节: | 需缓存的数据 |
示例: | 发送4CH 43H 44H 80H 07H AFH 01H 00H 12H 34H 56H 78H |
数据12H、34H、56H、78H缓存到缓冲区地址的0100H~0103H | |
库函数声明: | 无(使用库函数时,库函数会自动使用AFH命令缓存数据) |
库函数调用: | 无 |
注1: | 数据发送到缓冲区,并没有发送到LCD12864 |
注2: | 缓冲区大小1024字节 |
注3: | 每个数据包最多可缓存56个字节,若数据大于56,则需分多次缓存 |
OLED12864接口
目前流行的OLED12864基本没有字库支持,本接口暂不支持字库
功能1: | 关闭OLED12864的显示 |
命令格式: | 4FH 4CH 45H 80H 02H C0H 00H |
命令说明: | |
第1~4字节: | 命令头 |
第5字节: | 后面有效数据长度 |
第6字节: | 功能选择(C0H显示功能) |
第7字节: | 固定为00 |
示例: | 发送4FH 4CH 45H 80H 02H C0H 00H |
关闭OLED12864的显示 | |
库函数声明: | void OLED12864_DisplayOff(); |
库函数调用: | OLED12864_DisplayOff(); |
功能2: | 打开OLED12864的显示 |
命令格式: | 4FH 4CH 45H 80H 02H C0H 01H |
命令说明: | |
第1~4字节: | 命令头 |
第5字节: | 后面有效数据长度 |
第6字节: | 功能选择(C0H显示功能) |
第7字节: | 固定为01 |
示例: | 发送4FH 4CH 45H 80H 02H C0H 01H |
打开OLED12864的显示 | |
库函数声明: | void OLED12864_DisplayOn(); |
库函数调用: | OLED12864_DisplayOn(); |
功能3: | OLED12864显示图片内容 |
命令格式: | 4FH 4CH 45H 80H 02H C1H 00H |
命令说明: | |
第1~4字节: | 命令头 |
第5字节: | 后面有效数据长度 |
第6字节: | 功能选择(C1H显示内容) |
第7字节: | 固定为00 |
示例: | 发送4FH 4CH 45H 80H 02H C1H 00H |
OLED12864显示图片内容 | |
库函数声明: | void OLED12864_DisplayContent(); |
库函数调用: | OLED12864_DisplayContent(); |
功能4: | OLED12864全屏点亮(用于测试) |
命令格式: | 4FH 4CH 45H 80H 02H C1H 01H |
命令说明: | |
第1~4字节: | 命令头 |
第5字节: | 后面有效数据长度 |
第6字节: | 功能选择(C1H显示内容) |
第7字节: | 固定为01 |
示例: | 发送4FH 4CH 45H 80H 02H C1H 01H |
OLED12864全屏点亮 | |
库函数声明: | void OLED12864_DisplayEntire(); |
库函数调用: | OLED12864_DisplayEntire(); |
功能5: | OLED12864水平镜像显示 |
命令格式: | 4FH 4CH 45H 80H 02H C2H 00H |
命令说明: | |
第1~4字节: | 命令头 |
第5字节: | 后面有效数据长度 |
第6字节: | 功能选择(C2H镜像显示) |
第7字节: | 固定为00 |
示例: | 发送4FH 4CH 45H 80H 02H C2H 00H |
OLED12864水平镜像显示 | |
库函数声明: | void OLED12864_HorizontalMirror(); |
库函数调用: | OLED12864_HorizontalMirror(); |
功能6: | OLED12864垂直镜像显示 |
命令格式: | 4FH 4CH 45H 80H 02H C2H 01H |
命令说明: | |
第1~4字节: | 命令头 |
第5字节: | 后面有效数据长度 |
第6字节: | 功能选择(C2H镜像显示) |
第7字节: | 固定为01 |
示例: | 发送4FH 4CH 45H 80H 02H C2H 01H |
OLED12864垂直镜像显示 | |
库函数声明: | void OLED12864_VerticalMirror(); |
库函数调用: | OLED12864_VerticalMirror(); |
功能7: | OLED12864反白显示 |
命令格式: | 4FH 4CH 45H 80H 01H C3H |
命令说明: | |
第1~4字节: | 命令头 |
第5字节: | 后面有效数据长度 |
第6字节: | 功能选择(C3H反白显示) |
示例: | 发送4FH 4CH 45H 80H 01H C3H |
OLED12864反白显示 | |
库函数声明: | void OLED12864_DisplayReverse(); |
库函数调用: | OLED12864_DisplayReverse(); |
功能8: | 设置OLED12864的显示亮度 |
命令格式: | 4FH 4CH 45H 80H 02H C4H xx |
命令说明: | |
第1~4字节: | 命令头 |
第5字节: | 后面有效数据长度 |
第6字节: | 功能选择(C4H显示亮度) |
第7字节: | 亮度值(范围0~255) |
示例: | 发送4FH 4CH 45H 80H 02H C4H FFH |
OLED12864显示亮度为最亮 | |
库函数声明: | void OLED12864_SetContrast(BYTE bContrast);//bContrast:亮度 |
库函数调用: | OLED12864_SetContrast(0x7f); |
功能9: | 设置OLED12864连续写数据的寻址模式 |
命令格式: | 4FH 4CH 45H 80H 02H C5H xx |
命令说明: | |
第1~4字节: | 命令头 |
第5字节: | 后面有效数据长度 |
第6字节: | 功能选择(C5H寻址模式) |
第7字节: | 寻址模式(0:水平寻址; 1:垂直寻址; 2:页寻址) |
示例: | 发送4FH 4CH 45H 80H 02H C5H 00H |
OLED12864的数据模式为水平寻址模式 | |
库函数声明: | void OLED12864_SetAddressMode(BYTE bMode);//bMode:模式 |
库函数调用: | OLED12864_SetAddressMode(0x00); |
功能10: | OLED12864显示向左连续滚屏 |
命令格式: | 4FH 4CH 45H 80H 06H C6H 00 x1 x2 x3 x4 |
命令说明: | |
第1~4字节: | 命令头 |
第5字节: | 后面有效数据长度 |
第6字节: | 功能选择(C6H滚屏控制) |
第7字节: | 固定为0 |
第8字节: | 参与滚屏的起始页(范围0~7) |
第9字节: | 参与滚屏的结束页(范围0~7) |
第10字节: | 滚屏周期值的高字节(周期单位为毫秒) |
第11字节: | 滚屏周期值的低字节 |
示例: | 发送4FH 4CH 45H 80H 06H C6H 00H 00H 07H 00H 64H |
每100毫秒OLED12864全屏向左滚动一列 | |
库函数声明: | void OLED12864_ScrollLeft( BYTE bPageStart, BYTE bPageEnd, WORD nInterval);//nInterval:周期 |
库函数调用: | OLED12864_ScrollLeft(0, 7, 100); |
注: | 发送完C6命令后,必须再发送一次C7H 01H命令才会开始滚屏 |
功能11: | OLED12864显示向右连续滚屏 |
命令格式: | 4FH 4CH 45H 80H 06H C6H 01 x1 x2 x3 x4 |
命令说明: | |
第1~4字节: | 命令头 |
第5字节: | 后面有效数据长度 |
第6字节: | 功能选择(C6H滚屏控制) |
第7字节: | 固定为1 |
第8字节: | 参与滚屏的起始页(范围0~7) |
第9字节: | 参与滚屏的结束页(范围0~7) |
第10字节: | 滚屏周期值的高字节(周期单位为毫秒) |
第11字节: | 滚屏周期值的低字节 |
示例: | 发送4FH 4CH 45H 80H 06H C6H 01H 00H 07H 00H 64H |
每100毫秒OLED12864全屏向右滚动一列 | |
库函数声明: | void OLED12864_ScrollRight( BYTE bPageStart, BYTE bPageEnd, WORD nInterval);//nInterval:周期 |
库函数调用: | OLED12864_ScrollRight(0, 7, 100); |
注: | 发送完C6命令后,必须再发送一次C7H 01H命令才会开始滚屏 |
功能12: | OLED12864显示向上连续滚屏 |
命令格式: | 4FH 4CH 45H 80H 06H C6H 02 x1 x2 x3 x4 |
命令说明: | |
第1~4字节: | 命令头 |
第5字节: | 后面有效数据长度 |
第6字节: | 功能选择(C6H滚屏控制) |
第7字节: | 固定为2 |
第8字节: | 参与滚屏的起始页(范围0~7) |
第9字节: | 参与滚屏的结束页(范围0~7) |
第10字节: | 滚屏周期值的高字节(周期单位为毫秒) |
第11字节: | 滚屏周期值的低字节 |
示例: | 发送4FH 4CH 45H 80H 06H C6H 02H 00H 07H 00H 64H |
每100毫秒OLED12864全屏向上滚动一页(8行) | |
库函数声明: | void OLED12864_ScrollUp( BYTE bPageStart, BYTE bPageEnd, WORD nInterval);//nInterval:周期 |
库函数调用: | OLED12864_ScrollUp(0, 7, 100); |
注: | 发送完C6命令后,必须再发送一次C7H 01H命令才会开始滚屏 |
功能13: | OLED12864停止连续滚屏 |
命令格式: | 4FH 4CH 45H 80H 02H C7H 00H |
命令说明: | |
第1~4字节: | 命令头 |
第5字节: | 后面有效数据长度 |
第6字节: | 功能选择(C7H滚屏控制) |
第7字节: | 固定为0 |
示例: | 发送4FH 4CH 45H 80H 02H C7H 00H |
停止滚屏 | |
库函数声明: | void OLED12864_ScrollStop(); |
库函数调用: | OLED12864_ScrollStop(); |
功能14: | OLED12864开始连续滚屏 |
命令格式: | 4FH 4CH 45H 80H 02H C7H 01H |
命令说明: | |
第1~4字节: | 命令头 |
第5字节: | 后面有效数据长度 |
第6字节: | 功能选择(C7H滚屏控制) |
第7字节: | 固定为1 |
示例: | 发送4FH 4CH 45H 80H 02H C7H 01H |
开始滚屏 | |
库函数声明: | void OLED12864_ScrollStart(); |
库函数调用: | OLED12864_ScrollStart(); |
功能15: | 在OLED12864屏幕上显示图片 |
命令格式: | 4FH 4CH 45H 80H 05H C8H x y cx cy |
命令说明: | |
第1~4字节: | 命令头 |
第5字节: | 后面有效数据长度 |
第6字节: | 功能选择(C8H显示图片) |
第7字节: | 开始显示图片的X坐标(列号,范围0~127) |
第8字节: | 开始显示图片的Y坐标(页号,范围0~7) |
第9字节: | 图片的宽度(列数,范围1~128) |
第10字节: | 图片的高度(页数,范围1~8) |
示例: | 发送4FH 4CH 45H 80H 05H C8H 01H 02H 02H 02H |
从(1,2)的坐标位置开始显示2个单位宽、2个单位高的图片 | |
库函数声明: | void OLED12864_ShowPicture( BYTE x, BYTE y, BYTE cx, BYTE cy, BYTE *dat); |
库函数调用: | OLED12864_ShowPicture(0, 0, 128, 8, (BYTE *)&OLED12864_IMG); |
注意: | 发送显示命令前,需要先使用CFH命令将需要显示的内容发送到缓冲区。 若调用库函数则库函数会自动处理。 |
功能16: | 上传数据到缓冲区 |
命令格式: | 4FH 4CH 45H 80H x1 CFH ah al xx ... |
命令说明: | |
第1~4字节: | 命令头 |
第5字节: | 后面有效数据长度 |
第6字节: | 功能选择(CFH缓存数据) |
第7字节: | 目标缓冲区地址高字节 |
第8字节: | 目标缓冲区地址低字节 |
第9~n字节: | 需缓存的数据 |
示例: | 发送4FH 4CH 45H 80H 07H CFH 01H 00H 12H 34H 56H 78H |
数据12H、34H、56H、78H缓存到存储器地址的0100H~0103H | |
库函数声明: | 无(使用库函数时,库函数会自动使用CFH命令缓存数据) |
库函数调用: | 无 |
注1: | 数据发送到缓冲区,并没有发送到OLED12864 |
注2: | 缓冲区大小1024字节 |
注3: | 每个数据包最多可缓存56个字节,若数据大于56,则需分多次缓存 |
VOLED320240接口
目前市面上只有OLED12864的实体屏,VOLED320240为虚拟的OLED接口
功能1: | 关闭OLED320240的显示 |
命令格式: | 4FH 4CH 45H 20H 02H C0H 00H |
命令说明: | |
第1~4字节: | 命令头 |
第5字节: | 后面有效数据长度 |
第6字节: | 功能选择(C0H显示功能) |
第7字节: | 固定为00 |
示例: | 发送4FH 4CH 45H 20H 02H C0H 00H |
关闭OLED320240的显示 | |
库函数声明: | void OLED320240_DisplayOff(); |
库函数调用: | OLED320240_DisplayOff(); |
功能2: | 打开OLED320240的显示 |
命令格式: | 4FH 4CH 45H 20H 02H C0H 01H |
命令说明: | |
第1~4字节: | 命令头 |
第5字节: | 后面有效数据长度 |
第6字节: | 功能选择(C0H显示功能) |
第7字节: | 固定为01 |
示例: | 发送4FH 4CH 45H 20H 02H C0H 01H |
打开OLED320240的显示 | |
库函数声明: | void OLED320240_DisplayOn(); |
库函数调用: | OLED320240_DisplayOn(); |
功能3: | OLED320240显示图片内容 |
命令格式: | 4FH 4CH 45H 20H 02H C1H 00H |
命令说明: | |
第1~4字节: | 命令头 |
第5字节: | 后面有效数据长度 |
第6字节: | 功能选择(C1H显示内容) |
第7字节: | 固定为00 |
示例: | 发送4FH 4CH 45H 20H 02H C1H 00H |
OLED320240显示图片内容 | |
库函数声明: | void OLED320240_DisplayContent(); |
库函数调用: | OLED320240_DisplayContent(); |
功能4: | OLED320240全屏点亮(用于测试) |
命令格式: | 4FH 4CH 45H 20H 02H C1H 01H |
命令说明: | |
第1~4字节: | 命令头 |
第5字节: | 后面有效数据长度 |
第6字节: | 功能选择(C1H显示内容) |
第7字节: | 固定为01 |
示例: | 发送4FH 4CH 45H 20H 02H C1H 01H |
OLED320240全屏点亮 | |
库函数声明: | void OLED320240_DisplayEntire(); |
库函数调用: | OLED320240_DisplayEntire(); |
功能5: | OLED320240水平镜像显示 |
命令格式: | 4FH 4CH 45H 20H 02H C2H 00H |
命令说明: | |
第1~4字节: | 命令头 |
第5字节: | 后面有效数据长度 |
第6字节: | 功能选择(C2H镜像显示) |
第7字节: | 固定为00 |
示例: | 发送4FH 4CH 45H 20H 02H C2H 00H |
OLED320240水平镜像显示 | |
库函数声明: | void OLED320240_HorizontalMirror(); |
库函数调用: | OLED320240_HorizontalMirror(); |
功能6: | OLED320240垂直镜像显示 |
命令格式: | 4FH 4CH 45H 20H 02H C2H 01H |
命令说明: | |
第1~4字节: | 命令头 |
第5字节: | 后面有效数据长度 |
第6字节: | 功能选择(C2H镜像显示) |
第7字节: | 固定为01 |
示例: | 发送4FH 4CH 45H 20H 02H C2H 01H |
OLED320240垂直镜像显示 | |
库函数声明: | void OLED320240_VerticalMirror(); |
库函数调用: | OLED320240_VerticalMirror(); |
功能7: | OLED320240反白显示 |
命令格式: | 4FH 4CH 45H 20H 01H C3H |
命令说明: | |
第1~4字节: | 命令头 |
第5字节: | 后面有效数据长度 |
第6字节: | 功能选择(C3H反白显示) |
示例: | 发送4FH 4CH 45H 20H 01H C3H |
OLED320240反白显示 | |
库函数声明: | void OLED320240_DisplayReverse(); |
库函数调用: | OLED320240_DisplayReverse(); |
功能8: | 设置OLED320240的显示亮度 |
命令格式: | 4FH 4CH 45H 20H 02H C4H xx |
命令说明: | |
第1~4字节: | 命令头 |
第5字节: | 后面有效数据长度 |
第6字节: | 功能选择(C4H显示亮度) |
第7字节: | 亮度值(范围0~255) |
示例: | 发送4FH 4CH 45H 20H 02H C4H FFH |
OLED320240显示亮度为最亮 | |
库函数声明: | void OLED320240_SetContrast(BYTE bContrast);//bContrast:亮度 |
库函数调用: | OLED320240_SetContrast(0x7f); |
功能9: | 设置OLED320240连续写数据的寻址模式 |
命令格式: | 4FH 4CH 45H 20H 02H C5H xx |
命令说明: | |
第1~4字节: | 命令头 |
第5字节: | 后面有效数据长度 |
第6字节: | 功能选择(C5H寻址模式) |
第7字节: | 寻址模式(0:水平寻址; 1:垂直寻址; 2:页寻址) |
示例: | 发送4FH 4CH 45H 20H 02H C5H 00H |
OLED320240的数据模式为水平寻址模式 | |
库函数声明: | void OLED320240_SetAddressMode(BYTE bMode);//bMode:模式 |
库函数调用: | OLED320240_SetAddressMode(0x00); |
功能10: | OLED320240显示向左连续滚屏 |
命令格式: | 4FH 4CH 45H 20H 06H C6H 00 x1 x2 x3 x4 |
命令说明: | |
第1~4字节: | 命令头 |
第5字节: | 后面有效数据长度 |
第6字节: | 功能选择(C6H滚屏控制) |
第7字节: | 固定为0 |
第8字节: | 参与滚屏的起始页(范围0~29) |
第9字节: | 参与滚屏的结束页(范围0~29) |
第10字节: | 滚屏周期值的高字节(周期单位为毫秒) |
第11字节: | 滚屏周期值的低字节 |
示例: | 发送4FH 4CH 45H 20H 06H C6H 00H 00H 07H 00H 64H |
每100毫秒OLED320240全屏向左滚动一列 | |
库函数声明: | void OLED320240_ScrollLeft( BYTE bPageStart, BYTE bPageEnd, WORD nInterval);//nInterval:周期 |
库函数调用: | OLED320240_ScrollLeft(0, 7, 100); |
注: | 发送完C6命令后,必须再发送一次C7H 01H命令才会开始滚屏 |
功能11: | OLED320240显示向右连续滚屏 |
命令格式: | 4FH 4CH 45H 20H 06H C6H 01 x1 x2 x3 x4 |
命令说明: | |
第1~4字节: | 命令头 |
第5字节: | 后面有效数据长度 |
第6字节: | 功能选择(C6H滚屏控制) |
第7字节: | 固定为1 |
第8字节: | 参与滚屏的起始页(范围0~29) |
第9字节: | 参与滚屏的结束页(范围0~29) |
第10字节: | 滚屏周期值的高字节(周期单位为毫秒) |
第11字节: | 滚屏周期值的低字节 |
示例: | 发送4FH 4CH 45H 20H 06H C6H 01H 00H 07H 00H 64H |
每100毫秒OLED320240全屏向右滚动一列 | |
库函数声明: | void OLED320240_ScrollRight( BYTE bPageStart, BYTE bPageEnd, WORD nInterval);//nInterval:周期 |
库函数调用: | OLED320240_ScrollRight(0, 7, 100); |
注: | 发送完C6命令后,必须再发送一次C7H 01H命令才会开始滚屏 |
功能12: | OLED320240显示向上连续滚屏 |
命令格式: | 4FH 4CH 45H 20H 06H C6H 02 x1 x2 x3 x4 |
命令说明: | |
第1~4字节: | 命令头 |
第5字节: | 后面有效数据长度 |
第6字节: | 功能选择(C6H滚屏控制) |
第7字节: | 固定为2 |
第8字节: | 参与滚屏的起始页(范围0~29) |
第9字节: | 参与滚屏的结束页(范围0~29) |
第10字节: | 滚屏周期值的高字节(周期单位为毫秒) |
第11字节: | 滚屏周期值的低字节 |
示例: | 发送4FH 4CH 45H 20H 06H C6H 02H 00H 07H 00H 64H |
每100毫秒OLED320240全屏向上滚动一页(8行) | |
库函数声明: | void OLED320240_ScrollUp( BYTE bPageStart, BYTE bPageEnd, WORD nInterval);//nInterval:周期 |
库函数调用: | OLED320240_ScrollUp(0, 7, 100); |
注: | 发送完C6命令后,必须再发送一次C7H 01H命令才会开始滚屏 |
功能13: | OLED320240停止连续滚屏 |
命令格式: | 4FH 4CH 45H 20H 02H C7H 00H |
命令说明: | |
第1~4字节: | 命令头 |
第5字节: | 后面有效数据长度 |
第6字节: | 功能选择(C7H滚屏控制) |
第7字节: | 固定为0 |
示例: | 发送4FH 4CH 45H 20H 02H C7H 00H |
停止滚屏 | |
库函数声明: | void OLED320240_ScrollStop(); |
库函数调用: | OLED320240_ScrollStop(); |
功能14: | OLED320240开始连续滚屏 |
命令格式: | 4FH 4CH 45H 20H 02H C7H 01H |
命令说明: | |
第1~4字节: | 命令头 |
第5字节: | 后面有效数据长度 |
第6字节: | 功能选择(C7H滚屏控制) |
第7字节: | 固定为1 |
示例: | 发送4FH 4CH 45H 20H 02H C7H 01H |
开始滚屏 | |
库函数声明: | void OLED320240_ScrollStart(); |
库函数调用: | OLED320240_ScrollStart(); |
功能15: | 在OLED320240屏幕上显示图片 |
命令格式: | 4FH 4CH 45H 20H 05H C8H x y cx cy |
命令说明: | |
第1~4字节: | 命令头 |
第5字节: | 后面有效数据长度 |
第6字节: | 功能选择(C8H显示图片) |
第7字节: | 开始显示图片的X坐标(列号,范围0~319) |
第8字节: | 开始显示图片的Y坐标(页号,范围0~29) |
第9字节: | 图片的宽度(列数,范围1~320) |
第10字节: | 图片的高度(页数,范围1~30) |
示例: | 发送4FH 4CH 45H 20H 05H C8H 01H 02H 02H 02H |
从(1,2)的坐标位置开始显示2个单位宽、2个单位高的图片 | |
库函数声明: | void OLED320240_ShowPicture( BYTE x, BYTE y, BYTE cx, BYTE cy, BYTE *dat); |
库函数调用: | OLED320240_ShowPicture(0, 0, 128, 8, (BYTE *)&OLED320240_IMG); |
注意: | 发送显示命令前,需要先使用CFH命令将需要显示的内容发送到缓冲区。 若调用库函数则库函数会自动处理。 |
功能16: | 上传数据到缓冲区 |
命令格式: | 4FH 4CH 45H 20H x1 CFH ah al xx ... |
命令说明: | |
第1~4字节: | 命令头 |
第5字节: | 后面有效数据长度 |
第6字节: | 功能选择(CFH缓存数据) |
第7字节: | 目标缓冲区地址高字节 |
第8字节: | 目标缓冲区地址低字节 |
第9~n字节: | 需缓存的数据 |
示例: | 发送4FH 4CH 45H 20H 07H CFH 01H 00H 12H 34H 56H 78H |
数据12H、34H、56H、78H缓存到存储器地址的0100H~0103H | |
库函数声明: | 无(使用库函数时,库函数会自动使用CFH命令缓存数据) |
库函数调用: | 无 |
注1: | 数据发送到缓冲区,并没有发送到OLED320240 |
注2: | 缓冲区大小9600字节 |
注3: | 每个数据包最多可缓存56个字节,若数据大于56,则需分多次缓存 |
VOLED480320接口
目前市面上只有OLED12864的实体屏,VOLED480320为虚拟的OLED接口
功能1: | 关闭OLED480320的显示 |
命令格式: | 4FH 4CH 45H 30H 02H C0H 00H |
命令说明: | |
第1~4字节: | 命令头 |
第5字节: | 后面有效数据长度 |
第6字节: | 功能选择(C0H显示功能) |
第7字节: | 固定为00 |
示例: | 发送4FH 4CH 45H 30H 02H C0H 00H |
关闭OLED480320的显示 | |
库函数声明: | void OLED480320_DisplayOff(); |
库函数调用: | OLED480320_DisplayOff(); |
功能2: | 打开OLED480320的显示 |
命令格式: | 4FH 4CH 45H 30H 02H C0H 01H |
命令说明: | |
第1~4字节: | 命令头 |
第5字节: | 后面有效数据长度 |
第6字节: | 功能选择(C0H显示功能) |
第7字节: | 固定为01 |
示例: | 发送4FH 4CH 45H 30H 02H C0H 01H |
打开OLED480320的显示 | |
库函数声明: | void OLED480320_DisplayOn(); |
库函数调用: | OLED480320_DisplayOn(); |
功能3: | OLED480320显示图片内容 |
命令格式: | 4FH 4CH 45H 30H 02H C1H 00H |
命令说明: | |
第1~4字节: | 命令头 |
第5字节: | 后面有效数据长度 |
第6字节: | 功能选择(C1H显示内容) |
第7字节: | 固定为00 |
示例: | 发送4FH 4CH 45H 30H 02H C1H 00H |
OLED480320显示图片内容 | |
库函数声明: | void OLED480320_DisplayContent(); |
库函数调用: | OLED480320_DisplayContent(); |
功能4: | OLED480320全屏点亮(用于测试) |
命令格式: | 4FH 4CH 45H 30H 02H C1H 01H |
命令说明: | |
第1~4字节: | 命令头 |
第5字节: | 后面有效数据长度 |
第6字节: | 功能选择(C1H显示内容) |
第7字节: | 固定为01 |
示例: | 发送4FH 4CH 45H 30H 02H C1H 01H |
OLED480320全屏点亮 | |
库函数声明: | void OLED480320_DisplayEntire(); |
库函数调用: | OLED480320_DisplayEntire(); |
功能5: | OLED480320水平镜像显示 |
命令格式: | 4FH 4CH 45H 30H 02H C2H 00H |
命令说明: | |
第1~4字节: | 命令头 |
第5字节: | 后面有效数据长度 |
第6字节: | 功能选择(C2H镜像显示) |
第7字节: | 固定为00 |
示例: | 发送4FH 4CH 45H 30H 02H C2H 00H |
OLED480320水平镜像显示 | |
库函数声明: | void OLED480320_HorizontalMirror(); |
库函数调用: | OLED480320_HorizontalMirror(); |
功能6: | OLED480320垂直镜像显示 |
命令格式: | 4FH 4CH 45H 30H 02H C2H 01H |
命令说明: | |
第1~4字节: | 命令头 |
第5字节: | 后面有效数据长度 |
第6字节: | 功能选择(C2H镜像显示) |
第7字节: | 固定为01 |
示例: | 发送4FH 4CH 45H 30H 02H C2H 01H |
OLED480320垂直镜像显示 | |
库函数声明: | void OLED480320_VerticalMirror(); |
库函数调用: | OLED480320_VerticalMirror(); |
功能7: | OLED480320反白显示 |
命令格式: | 4FH 4CH 45H 30H 01H C3H |
命令说明: | |
第1~4字节: | 命令头 |
第5字节: | 后面有效数据长度 |
第6字节: | 功能选择(C3H反白显示) |
示例: | 发送4FH 4CH 45H 30H 01H C3H |
OLED480320反白显示 | |
库函数声明: | void OLED480320_DisplayReverse(); |
库函数调用: | OLED480320_DisplayReverse(); |
功能8: | 设置OLED480320的显示亮度 |
命令格式: | 4FH 4CH 45H 30H 02H C4H xx |
命令说明: | |
第1~4字节: | 命令头 |
第5字节: | 后面有效数据长度 |
第6字节: | 功能选择(C4H显示亮度) |
第7字节: | 亮度值(范围0~255) |
示例: | 发送4FH 4CH 45H 30H 02H C4H FFH |
OLED480320显示亮度为最亮 | |
库函数声明: | void OLED480320_SetContrast(BYTE bContrast);//bContrast:亮度 |
库函数调用: | OLED480320_SetContrast(0x7f); |
功能9: | 设置OLED480320连续写数据的寻址模式 |
命令格式: | 4FH 4CH 45H 30H 02H C5H xx |
命令说明: | |
第1~4字节: | 命令头 |
第5字节: | 后面有效数据长度 |
第6字节: | 功能选择(C5H寻址模式) |
第7字节: | 寻址模式(0:水平寻址; 1:垂直寻址; 2:页寻址) |
示例: | 发送4FH 4CH 45H 30H 02H C5H 00H |
OLED480320的数据模式为水平寻址模式 | |
库函数声明: | void OLED480320_SetAddressMode(BYTE bMode);//bMode:模式 |
库函数调用: | OLED480320_SetAddressMode(0x00); |
功能10: | OLED480320显示向左连续滚屏 |
命令格式: | 4FH 4CH 45H 30H 06H C6H 00 x1 x2 x3 x4 |
命令说明: | |
第1~4字节: | 命令头 |
第5字节: | 后面有效数据长度 |
第6字节: | 功能选择(C6H滚屏控制) |
第7字节: | 固定为0 |
第8字节: | 参与滚屏的起始页(范围0~39) |
第9字节: | 参与滚屏的结束页(范围0~39) |
第10字节: | 滚屏周期值的高字节(周期单位为毫秒) |
第11字节: | 滚屏周期值的低字节 |
示例: | 发送4FH 4CH 45H 30H 06H C6H 00H 00H 07H 00H 64H |
每100毫秒OLED480320全屏向左滚动一列 | |
库函数声明: | void OLED480320_ScrollLeft( BYTE bPageStart, BYTE bPageEnd, WORD nInterval);//nInterval:周期 |
库函数调用: | OLED480320_ScrollLeft(0, 7, 100); |
注: | 发送完C6命令后,必须再发送一次C7H 01H命令才会开始滚屏 |
功能11: | OLED480320显示向右连续滚屏 |
命令格式: | 4FH 4CH 45H 30H 06H C6H 01 x1 x2 x3 x4 |
命令说明: | |
第1~4字节: | 命令头 |
第5字节: | 后面有效数据长度 |
第6字节: | 功能选择(C6H滚屏控制) |
第7字节: | 固定为1 |
第8字节: | 参与滚屏的起始页(范围0~39) |
第9字节: | 参与滚屏的结束页(范围0~39) |
第10字节: | 滚屏周期值的高字节(周期单位为毫秒) |
第11字节: | 滚屏周期值的低字节 |
示例: | 发送4FH 4CH 45H 30H 06H C6H 01H 00H 07H 00H 64H |
每100毫秒OLED480320全屏向右滚动一列 | |
库函数声明: | void OLED480320_ScrollRight( BYTE bPageStart, BYTE bPageEnd, WORD nInterval);//nInterval:周期 |
库函数调用: | OLED480320_ScrollRight(0, 7, 100); |
注: | 发送完C6命令后,必须再发送一次C7H 01H命令才会开始滚屏 |
功能12: | OLED480320显示向上连续滚屏 |
命令格式: | 4FH 4CH 45H 30H 06H C6H 02 x1 x2 x3 x4 |
命令说明: | |
第1~4字节: | 命令头 |
第5字节: | 后面有效数据长度 |
第6字节: | 功能选择(C6H滚屏控制) |
第7字节: | 固定为2 |
第8字节: | 参与滚屏的起始页(范围0~39) |
第9字节: | 参与滚屏的结束页(范围0~39) |
第10字节: | 滚屏周期值的高字节(周期单位为毫秒) |
第11字节: | 滚屏周期值的低字节 |
示例: | 发送4FH 4CH 45H 30H 06H C6H 02H 00H 07H 00H 64H |
每100毫秒OLED480320全屏向上滚动一页(8行) | |
库函数声明: | void OLED480320_ScrollUp( BYTE bPageStart, BYTE bPageEnd, WORD nInterval);//nInterval:周期 |
库函数调用: | OLED480320_ScrollUp(0, 7, 100); |
注: | 发送完C6命令后,必须再发送一次C7H 01H命令才会开始滚屏 |
功能13: | OLED480320停止连续滚屏 |
命令格式: | 4FH 4CH 45H 30H 02H C7H 00H |
命令说明: | |
第1~4字节: | 命令头 |
第5字节: | 后面有效数据长度 |
第6字节: | 功能选择(C7H滚屏控制) |
第7字节: | 固定为0 |
示例: | 发送4FH 4CH 45H 30H 02H C7H 00H |
停止滚屏 | |
库函数声明: | void OLED480320_ScrollStop(); |
库函数调用: | OLED480320_ScrollStop(); |
功能14: | OLED480320开始连续滚屏 |
命令格式: | 4FH 4CH 45H 30H 02H C7H 01H |
命令说明: | |
第1~4字节: | 命令头 |
第5字节: | 后面有效数据长度 |
第6字节: | 功能选择(C7H滚屏控制) |
第7字节: | 固定为1 |
示例: | 发送4FH 4CH 45H 30H 02H C7H 01H |
开始滚屏 | |
库函数声明: | void OLED480320_ScrollStart(); |
库函数调用: | OLED480320_ScrollStart(); |
功能15: | 在OLED480320屏幕上显示图片 |
命令格式: | 4FH 4CH 45H 30H 05H C8H x y cx cy |
命令说明: | |
第1~4字节: | 命令头 |
第5字节: | 后面有效数据长度 |
第6字节: | 功能选择(C8H显示图片) |
第7字节: | 开始显示图片的X坐标(列号,范围0~479) |
第8字节: | 开始显示图片的Y坐标(页号,范围0~39) |
第9字节: | 图片的宽度(列数,范围1~480) |
第10字节: | 图片的高度(页数,范围1~40) |
示例: | 发送4FH 4CH 45H 30H 05H C8H 01H 02H 02H 02H |
从(1,2)的坐标位置开始显示2个单位宽、2个单位高的图片 | |
库函数声明: | void OLED480320_ShowPicture( BYTE x, BYTE y, BYTE cx, BYTE cy, BYTE *dat); |
库函数调用: | OLED480320_ShowPicture(0, 0, 128, 8, (BYTE *)&OLED480320_IMG); |
注意: | 发送显示命令前,需要先使用CFH命令将需要显示的内容发送到缓冲区。 若调用库函数则库函数会自动处理。 |
功能16: | 上传数据到缓冲区 |
命令格式: | 4FH 4CH 45H 30H x1 CFH ah al xx ... |
命令说明: | |
第1~4字节: | 命令头 |
第5字节: | 后面有效数据长度 |
第6字节: | 功能选择(CFH缓存数据) |
第7字节: | 目标缓冲区地址高字节 |
第8字节: | 目标缓冲区地址低字节 |
第9~n字节: | 需缓存的数据 |
示例: | 发送4FH 4CH 45H 30H 07H CFH 01H 00H 12H 34H 56H 78H |
数据12H、34H、56H、78H缓存到存储器地址的0100H~0103H | |
库函数声明: | 无(使用库函数时,库函数会自动使用CFH命令缓存数据) |
库函数调用: | 无 |
注1: | 数据发送到缓冲区,并没有发送到OLED480320 |
注2: | 缓冲区大小19200字节 |
注3: | 每个数据包最多可缓存56个字节,若数据大于56,则需分多次缓存 |
VOLED640480接口
目前市面上只有OLED12864的实体屏,VOLED640480为虚拟的OLED接口
功能1: | 关闭OLED640480的显示 |
命令格式: | 4FH 4CH 45H 40H 02H C0H 00H |
命令说明: | |
第1~4字节: | 命令头 |
第5字节: | 后面有效数据长度 |
第6字节: | 功能选择(C0H显示功能) |
第7字节: | 固定为00 |
示例: | 发送4FH 4CH 45H 40H 02H C0H 00H |
关闭OLED640480的显示 | |
库函数声明: | void OLED640480_DisplayOff(); |
库函数调用: | OLED640480_DisplayOff(); |
功能2: | 打开OLED640480的显示 |
命令格式: | 4FH 4CH 45H 40H 02H C0H 01H |
命令说明: | |
第1~4字节: | 命令头 |
第5字节: | 后面有效数据长度 |
第6字节: | 功能选择(C0H显示功能) |
第7字节: | 固定为01 |
示例: | 发送4FH 4CH 45H 40H 02H C0H 01H |
打开OLED640480的显示 | |
库函数声明: | void OLED640480_DisplayOn(); |
库函数调用: | OLED640480_DisplayOn(); |
功能3: | OLED640480显示图片内容 |
命令格式: | 4FH 4CH 45H 40H 02H C1H 00H |
命令说明: | |
第1~4字节: | 命令头 |
第5字节: | 后面有效数据长度 |
第6字节: | 功能选择(C1H显示内容) |
第7字节: | 固定为00 |
示例: | 发送4FH 4CH 45H 40H 02H C1H 00H |
OLED640480显示图片内容 | |
库函数声明: | void OLED640480_DisplayContent(); |
库函数调用: | OLED640480_DisplayContent(); |
功能4: | OLED640480全屏点亮(用于测试) |
命令格式: | 4FH 4CH 45H 40H 02H C1H 01H |
命令说明: | |
第1~4字节: | 命令头 |
第5字节: | 后面有效数据长度 |
第6字节: | 功能选择(C1H显示内容) |
第7字节: | 固定为01 |
示例: | 发送4FH 4CH 45H 40H 02H C1H 01H |
OLED640480全屏点亮 | |
库函数声明: | void OLED640480_DisplayEntire(); |
库函数调用: | OLED640480_DisplayEntire(); |
功能5: | OLED640480水平镜像显示 |
命令格式: | 4FH 4CH 45H 40H 02H C2H 00H |
命令说明: | |
第1~4字节: | 命令头 |
第5字节: | 后面有效数据长度 |
第6字节: | 功能选择(C2H镜像显示) |
第7字节: | 固定为00 |
示例: | 发送4FH 4CH 45H 40H 02H C2H 00H |
OLED640480水平镜像显示 | |
库函数声明: | void OLED640480_HorizontalMirror(); |
库函数调用: | OLED640480_HorizontalMirror(); |
功能6: | OLED640480垂直镜像显示 |
命令格式: | 4FH 4CH 45H 40H 02H C2H 01H |
命令说明: | |
第1~4字节: | 命令头 |
第5字节: | 后面有效数据长度 |
第6字节: | 功能选择(C2H镜像显示) |
第7字节: | 固定为01 |
示例: | 发送4FH 4CH 45H 40H 02H C2H 01H |
OLED640480垂直镜像显示 | |
库函数声明: | void OLED640480_VerticalMirror(); |
库函数调用: | OLED640480_VerticalMirror(); |
功能7: | OLED640480反白显示 |
命令格式: | 4FH 4CH 45H 40H 01H C3H |
命令说明: | |
第1~4字节: | 命令头 |
第5字节: | 后面有效数据长度 |
第6字节: | 功能选择(C3H反白显示) |
示例: | 发送4FH 4CH 45H 40H 01H C3H |
OLED640480反白显示 | |
库函数声明: | void OLED640480_DisplayReverse(); |
库函数调用: | OLED640480_DisplayReverse(); |
功能8: | 设置OLED640480的显示亮度 |
命令格式: | 4FH 4CH 45H 40H 02H C4H xx |
命令说明: | |
第1~4字节: | 命令头 |
第5字节: | 后面有效数据长度 |
第6字节: | 功能选择(C4H显示亮度) |
第7字节: | 亮度值(范围0~255) |
示例: | 发送4FH 4CH 45H 40H 02H C4H FFH |
OLED640480显示亮度为最亮 | |
库函数声明: | void OLED640480_SetContrast(BYTE bContrast);//bContrast:亮度 |
库函数调用: | OLED640480_SetContrast(0x7f); |
功能9: | 设置OLED640480连续写数据的寻址模式 |
命令格式: | 4FH 4CH 45H 40H 02H C5H xx |
命令说明: | |
第1~4字节: | 命令头 |
第5字节: | 后面有效数据长度 |
第6字节: | 功能选择(C5H寻址模式) |
第7字节: | 寻址模式(0:水平寻址; 1:垂直寻址; 2:页寻址) |
示例: | 发送4FH 4CH 45H 40H 02H C5H 00H |
OLED640480的数据模式为水平寻址模式 | |
库函数声明: | void OLED640480_SetAddressMode(BYTE bMode);//bMode:模式 |
库函数调用: | OLED640480_SetAddressMode(0x00); |
功能10: | OLED640480显示向左连续滚屏 |
命令格式: | 4FH 4CH 45H 40H 06H C6H 00 x1 x2 x3 x4 |
命令说明: | |
第1~4字节: | 命令头 |
第5字节: | 后面有效数据长度 |
第6字节: | 功能选择(C6H滚屏控制) |
第7字节: | 固定为0 |
第8字节: | 参与滚屏的起始页(范围0~59) |
第9字节: | 参与滚屏的结束页(范围0~59) |
第10字节: | 滚屏周期值的高字节(周期单位为毫秒) |
第11字节: | 滚屏周期值的低字节 |
示例: | 发送4FH 4CH 45H 40H 06H C6H 00H 00H 07H 00H 64H |
每100毫秒OLED640480全屏向左滚动一列 | |
库函数声明: | void OLED640480_ScrollLeft( BYTE bPageStart, BYTE bPageEnd, WORD nInterval);//nInterval:周期 |
库函数调用: | OLED640480_ScrollLeft(0, 7, 100); |
注: | 发送完C6命令后,必须再发送一次C7H 01H命令才会开始滚屏 |
功能11: | OLED640480显示向右连续滚屏 |
命令格式: | 4FH 4CH 45H 40H 06H C6H 01 x1 x2 x3 x4 |
命令说明: | |
第1~4字节: | 命令头 |
第5字节: | 后面有效数据长度 |
第6字节: | 功能选择(C6H滚屏控制) |
第7字节: | 固定为1 |
第8字节: | 参与滚屏的起始页(范围0~59) |
第9字节: | 参与滚屏的结束页(范围0~59) |
第10字节: | 滚屏周期值的高字节(周期单位为毫秒) |
第11字节: | 滚屏周期值的低字节 |
示例: | 发送4FH 4CH 45H 40H 06H C6H 01H 00H 07H 00H 64H |
每100毫秒OLED640480全屏向右滚动一列 | |
库函数声明: | void OLED640480_ScrollRight( BYTE bPageStart, BYTE bPageEnd, WORD nInterval);//nInterval:周期 |
库函数调用: | OLED640480_ScrollRight(0, 7, 100); |
注: | 发送完C6命令后,必须再发送一次C7H 01H命令才会开始滚屏 |
功能12: | OLED640480显示向上连续滚屏 |
命令格式: | 4FH 4CH 45H 40H 06H C6H 02 x1 x2 x3 x4 |
命令说明: | |
第1~4字节: | 命令头 |
第5字节: | 后面有效数据长度 |
第6字节: | 功能选择(C6H滚屏控制) |
第7字节: | 固定为2 |
第8字节: | 参与滚屏的起始页(范围0~59) |
第9字节: | 参与滚屏的结束页(范围0~59) |
第10字节: | 滚屏周期值的高字节(周期单位为毫秒) |
第11字节: | 滚屏周期值的低字节 |
示例: | 发送4FH 4CH 45H 40H 06H C6H 02H 00H 07H 00H 64H |
每100毫秒OLED640480全屏向上滚动一页(8行) | |
库函数声明: | void OLED640480_ScrollUp( BYTE bPageStart, BYTE bPageEnd, WORD nInterval);//nInterval:周期 |
库函数调用: | OLED640480_ScrollUp(0, 7, 100); |
注: | 发送完C6命令后,必须再发送一次C7H 01H命令才会开始滚屏 |
功能13: | OLED640480停止连续滚屏 |
命令格式: | 4FH 4CH 45H 40H 02H C7H 00H |
命令说明: | |
第1~4字节: | 命令头 |
第5字节: | 后面有效数据长度 |
第6字节: | 功能选择(C7H滚屏控制) |
第7字节: | 固定为0 |
示例: | 发送4FH 4CH 45H 40H 02H C7H 00H |
停止滚屏 | |
库函数声明: | void OLED640480_ScrollStop(); |
库函数调用: | OLED640480_ScrollStop(); |
功能14: | OLED640480开始连续滚屏 |
命令格式: | 4FH 4CH 45H 40H 02H C7H 01H |
命令说明: | |
第1~4字节: | 命令头 |
第5字节: | 后面有效数据长度 |
第6字节: | 功能选择(C7H滚屏控制) |
第7字节: | 固定为1 |
示例: | 发送4FH 4CH 45H 40H 02H C7H 01H |
开始滚屏 | |
库函数声明: | void OLED640480_ScrollStart(); |
库函数调用: | OLED640480_ScrollStart(); |
功能15: | 在OLED640480屏幕上显示图片 |
命令格式: | 4FH 4CH 45H 40H 05H C8H x y cx cy |
命令说明: | |
第1~4字节: | 命令头 |
第5字节: | 后面有效数据长度 |
第6字节: | 功能选择(C8H显示图片) |
第7字节: | 开始显示图片的X坐标(列号,范围0~639) |
第8字节: | 开始显示图片的Y坐标(页号,范围0~59) |
第9字节: | 图片的宽度(列数,范围1~640) |
第10字节: | 图片的高度(页数,范围1~60) |
示例: | 发送4FH 4CH 45H 40H 05H C8H 01H 02H 02H 02H |
从(1,2)的坐标位置开始显示2个单位宽、2个单位高的图片 | |
库函数声明: | void OLED640480_ShowPicture( BYTE x, BYTE y, BYTE cx, BYTE cy, BYTE *dat); |
库函数调用: | OLED640480_ShowPicture(0, 0, 128, 8, (BYTE *)&OLED640480_IMG); |
注意: | 发送显示命令前,需要先使用CFH命令将需要显示的内容发送到缓冲区。 若调用库函数则库函数会自动处理。 |
功能16: | 上传数据到缓冲区 |
命令格式: | 4FH 4CH 45H 40H x1 CFH ah al xx ... |
命令说明: | |
第1~4字节: | 命令头 |
第5字节: | 后面有效数据长度 |
第6字节: | 功能选择(CFH缓存数据) |
第7字节: | 目标缓冲区地址高字节 |
第8字节: | 目标缓冲区地址低字节 |
第9~n字节: | 需缓存的数据 |
示例: | 发送4FH 4CH 45H 40H 07H CFH 01H 00H 12H 34H 56H 78H |
数据12H、34H、56H、78H缓存到存储器地址的0100H~0103H | |
库函数声明: | 无(使用库函数时,库函数会自动使用CFH命令缓存数据) |
库函数调用: | 无 |
注1: | 数据发送到缓冲区,并没有发送到OLED640480 |
注2: | 缓冲区大小38400字节 |
注3: | 每个数据包最多可缓存56个字节,若数据大于56,则需分多次缓存 |
虚拟键盘接口
功能: | 在虚拟键盘上按键然后发送相应的键值到设备 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
命令格式: | 4BH 45H 59H 50H 00H x1 00H 00H | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
命令说明: | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
第1~4字节: | 命令头 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
第5字节: | 保留 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
第6字节: | 按键键值 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
第7~8字节: | 保留 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
示例: | 接收到4BH 45H 59H 50H 00H 30H 00H 00H | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
表示数字键0被按下 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
库函数声明: | 无 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
库函数调用: | 无 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
键值对应表: |
|
数字示波器接口
480x320的示波器波形分辨率为:水平400点,垂直250点
网格每5个点显示一点,每25点一排点
数据意义:
0(00H)~250(FAH)为数据。
251(FBH)为帧数据头,后面是400个字节的Y轴数据。
252(FCH)为点数据头,之后是点X、Y的数据。
253(FDH)为转义符,如果收到这个字符,则之后的一个字节要加上0x80。
254(FEH)为命令头,表示后面是命令。
255(FFH)为数据结束标志。
数据传输协议:
功能FB: | 单片机上传数据(400个点的数据) |
命令格式: | FBH DAT0 DAT1 ..... DAT399 FFH |
命令说明: | |
第1字节: | 命令头(帧数据) |
第2~401字节: | 400个Y轴数据(数值为0~250),字节序号0~399就是X轴 |
第402字节: | 命令结束(固定为FFH) |
示例: | |
功能FC: | 单片机上传数据(1个点的数据) |
命令格式: | FCH DAT0 DAT1 DAT2 FFH |
命令说明: | |
第1字节: | 命令头(点数据) |
第2~3字节: | X轴位置(0~399),DAT0为位置高字节,DAT1为位置低字节 |
第4字节: | Y轴数值(0~250) |
第5字节: | 命令结束(固定为FFH) |
示例: | |
功能FE: | 上传设置参数(时基参数02) |
命令格式: | FEH 02H DAT0 DAT1 DAT2 FFH |
命令说明: | |
第1字节: | 命令头(设置参数命令) |
第2字节: | 参数类型(02: 时基参数) |
第3~4字节: | 时基值,高字节在前,低字节在后 |
第5字节: | 时基单位。0:ns,1:us,2:ms,3:s |
第6字节: | 命令结束(固定为FFH) |
示例: | FEH 02H 01H F4H 01H FFH |
01F4H十进制为500,01为us,则为500us/DIV。DIV是水平一个大格 |
功能FE: | 上传设置参数(垂直幅度参数03) |
命令格式: | FEH 03H DAT0 DAT1 DAT2 FFH |
命令说明: | |
第1字节: | 命令头(设置参数命令) |
第2字节: | 参数类型(03: 垂直幅度参数) |
第3~4字节: | 垂直幅度值,高字节在前,低字节在后 |
第5字节: | 幅度单位。0:uV,1:mV,2:V |
第6字节: | 命令结束(固定为FFH) |
示例: | FEH 03H 01H F4H 01H FFH |
01F4H十进制为500,01为mV,则为500mV/DIV。DIV是垂直一个大格 |
功能FE: | 上传设置参数(运行模式参数04) |
命令格式: | FEH 04H DAT0 FFH |
命令说明: | |
第1字节: | 命令头(设置参数命令) |
第2字节: | 参数类型(04: 运行模式参数) |
第3字节: | 运行模式。0:停止,1:运行 |
第4字节: | 命令结束(固定为FFH) |
示例: | FEH 04H 01H FFH |
当前状态为运行 |
功能FE: | 上传设置参数(触发模式参数05) |
命令格式: | FEH 05H DAT0 FFH |
命令说明: | |
第1字节: | 命令头(设置参数命令) |
第2字节: | 参数类型(05: 触发模式参数) |
第3字节: | 触发模式。0:上升沿,1:下降沿 |
第4字节: | 命令结束(固定为FFH) |
示例: | FEH 04H 00H FFH |
当前触发模式为上升沿触发 |
功能FE: | 上传设置参数(触发方式参数06) |
命令格式: | FEH 06H DAT0 FFH |
命令说明: | |
第1字节: | 命令头(设置参数命令) |
第2字节: | 参数类型(06: 触发方式参数) |
第3字节: | 触发方式。0:自动,1:普通(标准),2:单次 |
第4字节: | 命令结束(固定为FFH) |
示例: | FEH 04H 00H FFH |
当前触发方式为自动触发 |
功能FE: | 上传设置参数(自动侦测的频率参数07) |
命令格式: | FEH 07H DAT0 DAT1 DAT2 DAT3 FFH |
命令说明: | |
第1字节: | 命令头(设置参数命令) |
第2字节: | 参数类型(07: 频率参数) |
第3~6字节: | 频率值,高字节在前,低字节在后 |
第7字节: | 命令结束(固定为FFH) |
示例: | FEH 07H 00H 00H 27H 10H FFH |
00002710H十进制为10000,则当前自动侦测到的频率为10000Hz |
功能FE: | 上传设置参数(波形左移时间参数08) |
命令格式: | FEH 08H DAT0 DAT1 DAT2 FFH |
命令说明: | |
第1字节: | 命令头(设置参数命令) |
第2字节: | 参数类型(08: 时间偏移参数) |
第3~4字节: | 时间偏移/左移时间值,高字节在前,低字节在后 |
第5字节: | 时间单位。0:1ns,1:10ns, 2:100ns, 3:1us,4:10us, 5:100us, 6:1ms,7:10ms, 8:100ms, 9:1s |
第6字节: | 命令结束(固定为FFH) |
示例: | FEH 08H 01H F4H 03H FFH |
01F4H十进制为500,03为1us,则波形左移了500us |
功能FE: | 上传设置参数(清屏指令09) |
命令格式: | FEH 09H FFH |
命令说明: | |
第1字节: | 命令头(设置参数命令) |
第2字节: | 参数类型(09: 清屏指令) |
第3字节: | 命令结束(固定为FFH) |
示例: | FEH 09H FFH |
PC收到后,清除波形显示 |
功能FE: | PC下传按键值(下传指令01) |
命令格式: | FEH 01H DAT0 FFH |
命令说明: | |
第1字节: | 命令头(设置参数命令) |
第2字节: | 参数类型(01: 下传按键指令) |
第3字节: | 按键类型。01:时基+,02:时基-,03:垂直幅度+,04:垂直幅度-,05:运行/停止,06:触发模式,07:触发方式,08:波形左移,09:波形右移,0A:波形上移,0B:波形下移, 0C:上传参数 |
第4字节: | 命令结束(固定为FFH) |
示例: | FEH 01H 05H FFH |
PC下传05键值到单片机 |
串口绘图工具协议
数据流格式:
串口绘图工具可支持同时绘制1~8通道的数据,
当使能显示通道后,相应通道的数据需要按通道顺序上传到串口助手。
例如:如果使能了通道1和通道2,则数据流的格式必须如下:
通道1的第1个点的数据、通道2的第1个点的数据、
通道1的第2个点的数据、通道2的第2个点的数据、
...
通道1的第n个点的数据、通道2的第n个点的数据
每个数据点数据位宽可以是8bit或者16bit,
16bit的数据支持LE(低字节在前)和BE(高字节在前)格式。
使能通道和数据格式可在画图界面的右键菜单的“设置”界面进行设置。
注意:数据格式修改、通道使能设置以及加载/保存数据操作必须在
串口助手处于关闭状态时(即画图工具处于空闲状态时)才能进行。
绘图界面键盘/鼠标操作:
目的 | 操作方法 |
整体波形上/下/左/右移动 | 在波形绘制区域按住鼠标左键上/下/左/右移动 |
整体波形仅在水平方向 左/右慢速移动 | 在波形绘制区域上/下滚动鼠标滚轮 |
或按键盘左/右方向键 | |
整体波形仅在垂直方向 上/下慢速移动 | 在左边的垂直刻度区域上/下滚动鼠标滚轮 |
或按键盘PageUp/PageDown键 | |
整体波形仅在水平方向 左/右快速移动 | 在下方的进度条区域用鼠标左键按住进度块左/右移动 |
单通道波形上/下移动 | 在左边的垂直刻度区域用鼠标左键按住相应通道的指示器上/下移动 |
整体波形水平放大/缩小 | 在波形绘制区域按住鼠标左键,然后上/下滚动鼠标滚轮 |
或按键盘上/下方向键 | |
整体波形垂直放大/缩小 | 在左边的垂直刻度区域按住鼠标左键,然后上/下滚动鼠标滚轮 |
移动到波形的头部 | 在下方的进度条区域用鼠标左键将进度块拖到最左边 |
或按键盘Home键 | |
移动到波形的尾部 | 在下方的进度条区域用鼠标左键将进度块拖到最右边 |
或按键盘End键 |
如何动态绘制波形并实时显示最新数据:
在下方的进度条区域用鼠标左键将进度块拖到最右边或按键盘End键
FFT(快速傅立叶)绘图接口
数据意义:
0(00H)~250(FAH)为数据。
251(FBH)为帧数据头,后面是128/64/32个字节的Y轴数据。
255(FFH)为数据结束标志。
数据传输协议:
功能FB: | 单片机上传数据(128个点的数据) |
命令格式: | FBH DAT0 DAT1 ..... DAT127 FFH |
命令说明: | |
第1字节: | 命令头(帧数据) |
第2~129字节: | 128个Y轴数据(数值为0~250),字节序号0~127就是X轴 |
第130字节: | 命令结束(固定为FFH) |
示例: | FBH xxH xxH ... xxH FFH |
功能FB: | 单片机上传数据(64个点的数据) |
命令格式: | FBH DAT0 DAT1 ..... DAT63 FFH |
命令说明: | |
第1字节: | 命令头(帧数据) |
第2~129字节: | 128个Y轴数据(数值为0~250),字节序号0~63就是X轴 |
第130字节: | 命令结束(固定为FFH) |
示例: | FBH xxH xxH ... xxH FFH |
功能FB: | 单片机上传数据(32个点的数据) |
命令格式: | FBH DAT0 DAT1 ..... DAT31 FFH |
命令说明: | |
第1字节: | 命令头(帧数据) |
第2~129字节: | 128个Y轴数据(数值为0~250),字节序号0~31就是X轴 |
第130字节: | 命令结束(固定为FFH) |
示例: | FBH xxH xxH ... xxH FFH |