当前位置: 首页 > news >正文

擎天柱例程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);
常用段码表:
字符段码字符段码字符段码字符段码
00x3f50x6dA0x77F0x71
10x0660x7db0x7c空格0x00
20x5b70x27C0x39  
30x4f80x7fd0x5e  
40x6690x6fE0x79  

 



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被按下
库函数声明:
库函数调用:
键值对应表:
按键键值按键键值按键键值按键键值
数字030H字母E45H字母S53H向上26H
数字131H字母F46H字母T54H向下28H
数字232H字母G47H字母U55H向左25H
数字333H字母H48H字母V56H向右27H
数字434H字母I49H字母W57H起始24H
数字535H字母J4AH字母X58H结束23H
数字636H字母K4BH字母Y59H上页21H
数字737H字母L4CH字母Z5AH下页22H
数字838H字母M4DH加号6BH退出1BH
数字939H字母N4EH减号6DH删除2EH
字母A41H字母O4FH乘号6AH退格08H
字母B42H字母P50H除号6FH空格20H
字母C43H字母Q51H点号6EH回车0DH
字母D44H字母R52H等于号3DH  

 



数字示波器接口
 

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
  

 


http://www.mrgr.cn/news/90243.html

相关文章:

  • 2025-2-10-4.4 双指针(基础题1)
  • elementplus 使用日期时间选择器,设置可选范围为前后大于2年且只能选择历史时间不能大于当前时间点
  • 【大数据安全分析】为什么要用大数据技术进行安全分析?
  • 2025年前端面试题~ 【前端面试】更新
  • 教程 | MySQL 基本指令指南(附MySQL软件包)
  • 基于Kotlin中Flow扩展重试方法
  • 【HarmonyOS Next 自定义可拖拽image】
  • 【生产变更】- 12c及以后 ADG主备切换
  • 2.10学习总结
  • 从零复现DeepSeek R1:从V3中对MoE、MLA、MTP的实现,到Open R1对R1中SFT、GRPO的实现
  • 【Java】多线程和高并发编程(四):阻塞队列(上)基础概念、ArrayBlockingQueue
  • Vue.js 状态管理库Pinia
  • C++类和对象进阶:构造函数和析构函数详解
  • linux部署node服务
  • 使用ThreeJS实现的宇宙大爆炸3D粒子特效思路,原理和关键代码解析
  • 达梦数据库(DM)线程管理
  • 【Java】多线程和高并发编程(三):锁(中)深入ReentrantLock
  • C++ STL汇总
  • C++智能指针的使用
  • 移动(新)魔百盒刷机教程[M301A_YS]