找回密码
 立即注册
查看: 1644|回复: 13

视频讲解:虚拟硬件【调试接口 | STC-ISP】:键盘,LED数码管,OLED/LCD12864

[复制链接]
  • TA的每日心情
    奋斗
    半小时前
  • 签到天数: 128 天

    [LV.7]常住居民III

    26

    主题

    1282

    回帖

    3991

    积分

    论坛元老

    积分
    3991
    发表于 2023-6-27 11:31:32 | 显示全部楼层 |阅读模式
    虚拟硬件:键盘,OLED12864, LCD12864, LED数码管 !视频讲解在二楼
    ===使用【STC-ISP | STC调试接口】
    ===通过【USB-CDC虚拟串口/就是串口】,送电脑端显示,或从电脑往下送
    虚拟硬件:
    通过USB-CDC虚拟串口/就是串口,
    使用【STC-ISP | STC调试接口】的 虚拟键盘,虚拟显示
    ===串口绘图,
    ===虚拟硬件,OLED12864
    ===虚拟硬件,LCD12864
    ===虚拟硬件,LED数码管
    ===虚拟硬件,DIP40跑马灯DIP64跑马灯
    ===虚拟硬件,数字示波器
    ===虚拟硬件,OLED12864, LCD12864, LED数码管,DIP40跑马灯,数字示波器
    通过 USB-CDC虚拟串口/就是串口,使用 【STC-ISP V6.91V 版,STC调试接口】中的 虚拟-1.png

    一、简介
    为了方便用户在使用带硬件USB接口芯片开发过程中,输入/输出一些数据信息进行调试分析,我们提供了一套"stc_usb_cdc_32g.LIB"库文件,配套STC-ISP(V6.90H以后版本)软件,可方便的使用USB接口进行数据通信,在STC-ISP软件上模拟LED灯,数码管,12864屏,OLED屏的显示,以及虚拟键盘的输入功能。

    二、使用说明
    1.添加库文件
    在项目栏程序组上点击鼠标右键,选择”Add Existing Files to Group ‘Source Group 1’…”:
    通过USB-CDC虚拟串口/就是串口,使用【STC-ISP | STC调试接口】的虚拟键盘/显示-1.png
    在弹框里选择库文件,并添加到项目里:
    通过USB-CDC虚拟串口/就是串口,使用【STC-ISP | STC调试接口】的虚拟键盘/显示-2.png
    2. 添加必要程序
    在初始化程序里添加USB时钟源启动,USB模块进行初始化程序:
    1.     usb_init();
    2.     EA = 1;
    复制代码
    主循环里添加USB接收判断以及应答指令:
    1.         if (bUsbOutReady)
    2.         {
    3.             usb_OUT_done();
    4.         }
    复制代码
    至此USB CDC数据输入/输出功能的必要准备工作完成。
    3.功能使用说明
    将例程烧录到芯片里后,通过USB线连接电脑,在串口框里会识别到CDC串行设备,点击STC-ISP软件里的串口助手标签,选择并打开对应的串口设备:
    通过USB-CDC虚拟串口/就是串口,使用【STC-ISP | STC调试接口】的虚拟键盘/显示-3.png
    通过STC-ISP软件的“调试接口”菜单,打开“接口设置”,设置调试接口,选择串口助手:
    通过USB-CDC虚拟串口/就是串口,使用【STC-ISP | STC调试接口】的虚拟键盘/显示-4.png
    通过STC-ISP软件的“调试接口”菜单,打开需要使用的虚拟设备:
    通过USB-CDC虚拟串口/就是串口,使用【STC-ISP | STC调试接口】的虚拟键盘/显示-5.png

    3.1虚拟键盘
    例程通过接收虚拟键盘的按键,判断键值执行相应的功能。打开“虚拟键盘”窗口,点击上面的按钮就可以发送对应的键值给MCU:
    通过USB-CDC虚拟串口/就是串口,使用【STC-ISP | STC调试接口】的虚拟键盘/显示-6.png
    程序里判断接收数据是否来源于虚拟键盘:
    1.             if ((UsbOutBuffer[0] == 'K') &&
    2.                 (UsbOutBuffer[1] == 'E') &&
    3.                 (UsbOutBuffer[2] == 'Y') &&
    4.                 (UsbOutBuffer[3] == 'P'))
    复制代码
    如果接收数据来源于虚拟键盘,判断键值并执行相应的操作:
    1.                 switch (UsbOutBuffer[5])
    2.                 {
    3.                 case VK_DIGIT_1:
    4.                     printf("%08lx", 0x1234abcdL);      //在数码管上显示字符串
    5.                     break;
    6.                 case VK_DIGIT_2:
    7.                     SEG7_ShowLong(0x98765432, 16);     //在数码管上显示4字节长整型数
    8.                     break;
    9.                 case VK_DIGIT_3:
    10.                     SEG7_ShowFloat(3.1415);            //在数码管上显示IEEE754格式单精度浮点数
    11.                     break;
    12.                     //......
    13.                 case VK_NEXT:     //PageDown
    14.                     OLED12864_ShowPicture(0, 0, 128, 8, (BYTE *)&OLED12864_IMG);  //在OLED12864屏幕上显示图片
    15.                     break;
    16.                 }
    复制代码

    3.2 七段数码管
    通过STC-ISP软件的“调试接口”菜单,打开7段数码管虚拟设备。
    显示字符串数据
    收到虚拟键盘键值“1”按键码时演示" printf"函数输出虚拟数码管显示的字符串数据:
    通过USB-CDC虚拟串口/就是串口,使用【STC-ISP | STC调试接口】的虚拟键盘/显示-7.png
    显示长整型数据
    收到虚拟键盘键值“2”按键码时演示"ShowLong"函数输出虚拟数码管显示的长整型数据:
    通过USB-CDC虚拟串口/就是串口,使用【STC-ISP | STC调试接口】的虚拟键盘/显示-8.png
    显示浮点数数据
    收到虚拟键盘键值“3”按键码时演示"ShowFloat"函数输出虚拟数码管显示的浮点数数据:
    通过USB-CDC虚拟串口/就是串口,使用【STC-ISP | STC调试接口】的虚拟键盘/显示-9.png
    显示码值数据
    收到虚拟键盘键值“4”按键码时演示"ShowCode"函数输出虚拟数码管码值数据;
    通过USB-CDC虚拟串口/就是串口,使用【STC-ISP | STC调试接口】的虚拟键盘/显示-10.png
    7段数码管码值参考
    0
    1
    2
    3
    4
    5
    6
    7
    8
    9
    A
    B
    C
    D
    E
    F
    3F
    06
    5B
    4F
    66
    6D
    7D
    27
    7F
    6F
    77
    7C
    39
    5E
    79
    71

    -
    H
    J
    K
    L
    N
    o
    P
    U
    t
    G
    Q
    r
    M
    y
    00
    40
    76
    1E
    70
    38
    37
    5C
    73
    3E
    78
    3D
    67
    50
    37
    6E
    最高位为小数点。

    3.3 LED-DIP40
    通过STC-ISP软件的“调试接口”菜单,打开LED-DIP40虚拟设备。此虚拟设备模拟STC32G12K128核心功能板(降龙棍)的LED显示功能。
    收到虚拟键盘键值“5”按键码时演示P0=0xaa驱动虚拟LED灯显示的状态(输出0时LED亮,输出1时LED灭):
    通过USB-CDC虚拟串口/就是串口,使用【STC-ISP | STC调试接口】的虚拟键盘/显示-11.png
    收到虚拟键盘键值“6”按键码时演示P0=0x12,P1=0x34,P2=0x56,P3=0x78驱动虚拟LED灯显示的状态(输出0时LED亮,输出1时LED灭):
    通过USB-CDC虚拟串口/就是串口,使用【STC-ISP | STC调试接口】的虚拟键盘/显示-12.png

    3.4 LED-DIP64
    通过STC-ISP软件的“调试接口”菜单,打开LED-DIP64虚拟设备。此虚拟设备模拟STC32G12K128核心功能板(屠龙刀)的LED显示功能。
    收到虚拟键盘键值“7”按键码时演示P0=0xaa驱动虚拟LED灯显示的状态(输出0时LED亮,输出1时LED灭):
    通过USB-CDC虚拟串口/就是串口,使用【STC-ISP | STC调试接口】的虚拟键盘/显示-13.png
    收到虚拟键盘键值“8”按键码时演示P0=0x12,P1=0x34,P2=0x56,P3=0x78驱动虚拟LED灯显示的状态(输出0时LED亮,输出1时LED灭):
    通过USB-CDC虚拟串口/就是串口,使用【STC-ISP | STC调试接口】的虚拟键盘/显示-14.png

    3.5 液晶显示12864
    通过STC-ISP软件的“调试接口”菜单,打开液晶显示12864虚拟设备。此虚拟设备模拟12864点阵黑白屏的显示功能。
    关闭LCD12864的显示
    收到虚拟键盘键值“A”按键码时演示关闭LCD12864的显示:
    通过USB-CDC虚拟串口/就是串口,使用【STC-ISP | STC调试接口】的虚拟键盘/显示-15.png
    打开LCD12864的显示
    收到虚拟键盘键值“B”按键码时演示打开LCD12864的显示:
    通过USB-CDC虚拟串口/就是串口,使用【STC-ISP | STC调试接口】的虚拟键盘/显示-16.png
    显示/隐藏LCD12864的光标
    收到虚拟键盘键值“C”按键码时演示隐藏LCD12864的光标;收到虚拟键盘键值“D”按键码时演示显示LCD12864的光标:
    通过USB-CDC虚拟串口/就是串口,使用【STC-ISP | STC调试接口】的虚拟键盘/显示-17.png
    光标左移/右移
    收到虚拟键盘键值“E”按键码时演示光标向左移动一个单位(16个像素);收到虚拟键盘键值“F”按键码时演示光标向右移动一个单位(16个像素):
    通过USB-CDC虚拟串口/就是串口,使用【STC-ISP | STC调试接口】的虚拟键盘/显示-18.png
    光标复位
    收到虚拟键盘键值“G”按键码时演示光标回到左上角初始位置:
    通过USB-CDC虚拟串口/就是串口,使用【STC-ISP | STC调试接口】的虚拟键盘/显示-19.png
    屏幕向左滚动
    收到虚拟键盘键值“H”按键码时演示屏幕向左滚动一个单位(16个像素):
    通过USB-CDC虚拟串口/就是串口,使用【STC-ISP | STC调试接口】的虚拟键盘/显示-20.png
    屏幕向右滚动
    收到虚拟键盘键值“I”按键码时演示屏幕向右滚动一个单位(16个像素):
    通过USB-CDC虚拟串口/就是串口,使用【STC-ISP | STC调试接口】的虚拟键盘/显示-21.png
    屏幕向上滚动
    收到虚拟键盘键值“J”按键码时演示屏幕向上滚动一个单位(16个像素):
    通过USB-CDC虚拟串口/就是串口,使用【STC-ISP | STC调试接口】的虚拟键盘/显示-22.png
    反白显示
    收到虚拟键盘键值“M”按键码时演示反白显示指定的行:
    通过USB-CDC虚拟串口/就是串口,使用【STC-ISP | STC调试接口】的虚拟键盘/显示-23.png
    清除显示
    收到虚拟键盘键值“N”按键码时演示清除显示:
    通过USB-CDC虚拟串口/就是串口,使用【STC-ISP | STC调试接口】的虚拟键盘/显示-24.png
    显示ASCII码和简体中文字符
    收到虚拟键盘键值“O”按键码时演示在LCD12864上显示ASCII码和简体中文字符:
    通过USB-CDC虚拟串口/就是串口,使用【STC-ISP | STC调试接口】的虚拟键盘/显示-25.png
    自动换行开关
    收到虚拟键盘键值“K”按键码时演示关闭自动换行功能;收到虚拟键盘键值“L”按键码时演示开启自动换行功能(先使能自动换行开关,再输出显示字符):
    通过USB-CDC虚拟串口/就是串口,使用【STC-ISP | STC调试接口】的虚拟键盘/显示-26.png
    显示图片
    收到虚拟键盘键值“P”按键码时演示在LCD12864屏幕上显示图片:
    通过USB-CDC虚拟串口/就是串口,使用【STC-ISP | STC调试接口】的虚拟键盘/显示-27.png

    3.6 OLED-12864
    通过STC-ISP软件的“调试接口”菜单,打开OLED-12864虚拟设备。此虚拟设备模拟分辨率为128*64点阵的OLED屏显示功能。
    关闭OLED12864的显示
    收到虚拟键盘键值“Q”按键码时演示关闭OLED12864的显示:
    通过USB-CDC虚拟串口/就是串口,使用【STC-ISP | STC调试接口】的虚拟键盘/显示-28.png
    打开OLED12864的显示
    收到虚拟键盘键值“R”按键码时演示打开OLED12864的显示:
    通过USB-CDC虚拟串口/就是串口,使用【STC-ISP | STC调试接口】的虚拟键盘/显示-29.png
    显示屏幕内容
    收到虚拟键盘键值“S”按键码时演示显示屏幕内容:

    全屏点亮(用于测试)
    收到虚拟键盘键值“T”按键码时演示全屏点亮(用于测试,输入“S”按键码切换显示屏幕内容):
    通过USB-CDC虚拟串口/就是串口,使用【STC-ISP | STC调试接口】的虚拟键盘/显示-1.png
    水平镜像显示
    收到虚拟键盘键值“U”按键码时演示水平镜像显示:
    通过USB-CDC虚拟串口/就是串口,使用【STC-ISP | STC调试接口】的虚拟键盘/显示-2.png
    垂直镜像显示
    收到虚拟键盘键值“V”按键码时演示垂直镜像显示:
    通过USB-CDC虚拟串口/就是串口,使用【STC-ISP | STC调试接口】的虚拟键盘/显示-3.png
    反白显示
    收到虚拟键盘键值“V”按键码时演示反白显示:
    通过USB-CDC虚拟串口/就是串口,使用【STC-ISP | STC调试接口】的虚拟键盘/显示-4.png
    设置亮度值
    收到虚拟键盘键值“X”按键码时演示亮度值=0x10(范围0~255):
    通过USB-CDC虚拟串口/就是串口,使用【STC-ISP | STC调试接口】的虚拟键盘/显示-5.png
    收到虚拟键盘键值“Y”按键码时演示亮度值=0x80(范围0~255):
    通过USB-CDC虚拟串口/就是串口,使用【STC-ISP | STC调试接口】的虚拟键盘/显示-6.png
    收到虚拟键盘键值“Z”按键码时演示亮度值=0xf0(范围0~255):
    通过USB-CDC虚拟串口/就是串口,使用【STC-ISP | STC调试接口】的虚拟键盘/显示-7.png
    滚动功能
    OLED GDDRAM共分为8个Page,每一个Page对应8个COM,每一个COM驱动一行OLED显示,即共64行;而一个COM驱动内有128列(Segment),组成128*64OLED点阵驱动。

    参数1:参与滚屏的起始页(范围0~7);
    参数2:参与滚屏的结束页(范围0~7);
    参数3:滚屏的周期值(周期单位为毫秒)。

    收到虚拟键盘键值“UP”按键码时演示向上滚动功能(设置好方向后通过“OLED12864_ScrollStart”指令开始执行滚动操作):
    通过USB-CDC虚拟串口/就是串口,使用【STC-ISP | STC调试接口】的虚拟键盘/显示-8.png
    收到虚拟键盘键值“LEFT”按键码时演示向左滚动功能(设置好方向后通过“OLED12864_ScrollStart”指令开始执行滚动操作):
    通过USB-CDC虚拟串口/就是串口,使用【STC-ISP | STC调试接口】的虚拟键盘/显示-9.png
    收到虚拟键盘键值“RIGHT”按键码时演示向右滚动功能(设置好方向后通过“OLED12864_ScrollStart”指令开始执行滚动操作):
    通过USB-CDC虚拟串口/就是串口,使用【STC-ISP | STC调试接口】的虚拟键盘/显示-10.png

    收到虚拟键盘键值“DOWN”按键码时开始执行滚动操作。
    收到虚拟键盘键值“PageUp”按键码时停止执行滚动操作。

    寻址模式
    收到虚拟键盘键值“HOME”,“END”按键码时设置寻址模式(0:水平寻址; 1:垂直寻址; 2:页寻址)。
    图片显示
    收到虚拟键盘键值“PageDn”按键码时在OLED12864屏幕上显示图片。设置完寻址模式后再进行图片显示,便可看出不同寻址模式的差异。
    水平寻址显示效果:
    通过USB-CDC虚拟串口/就是串口,使用【STC-ISP | STC调试接口】的虚拟键盘/显示-11.png
    垂直寻址显示效果:
    通过USB-CDC虚拟串口/就是串口,使用【STC-ISP | STC调试接口】的虚拟键盘/显示-12.png

    3.7 数据接收处理
    在程序里可对接收到的数据进行处理,例如将接收数据复制到发送缓冲区,然后调用“usb_IN()”函数发送出来:
    1.             else
    2.             {
    3.                 memcpy(UsbInBuffer, UsbOutBuffer, OutNumber);      //原路返回, 用于测试
    4.                 usb_IN(OutNumber);
    5.             }
    6.             usb_OUT_done();
    复制代码
    测试结果如下:
    通过USB-CDC虚拟串口/就是串口,使用【STC-ISP | STC调试接口】的虚拟键盘/显示-13.png

    3.8 发送指令触发MCU复位并自动下载
    打开STC-ISP软件(V6.90H以上版本),选择芯片型号、打开需要烧录的程序文件、设置好硬件选项后,切换到“收到用户命令后复位到ISP监控程序区”标签:
    如下图所示,选择“串口模式”,设置默认波特率、校验位、停止位;
    设置自定义命令:@STCISP#
    取消 “Hex” 选项,命令应与程序里的定义相同:
    char *USER_STCISPCMD = "@STCISP#";   //设置自动复位到ISP区的用户接口命令
    点击“发送用户自定义命令并开始下载”按钮,或者在勾选“每次下载前都先发送自定义命令”选项情况下也可点击“下载/编程”按钮开始下载。
    (此步骤需要将支持自动下载功能的程序通过手动上电复位的方式下载到芯片后才能使用)
    注意:使用CDC接口触发MCU复位并自动下载功能,需要勾选设置:下次使用 STC HID 接口进行ISP下载:
    通过USB-CDC虚拟串口/就是串口,使用【STC-ISP | STC调试接口】的虚拟键盘/显示-14.png

    正常情况下芯片收到指令后会自动复位到“STC USB Writer (HID1)”模式并开始下载:
    通过USB-CDC虚拟串口/就是串口,使用【STC-ISP | STC调试接口】的虚拟键盘/显示-15.png
    回复 送花

    使用道具 举报

  • TA的每日心情
    开心
    2024-2-28 16:25
  • 签到天数: 2 天

    [LV.1]初来乍到

    0

    主题

    14

    回帖

    166

    积分

    注册会员

    积分
    166
    发表于 2023-7-5 13:49:47 | 显示全部楼层
    下面是讲解 STC-ISP V6.94D 及以后版本软件中的
    STC调试接口虚拟硬件 部分的演示视频
    20:59分处开始:
    截图202403102247173529.jpg
    2023/6/28期USB 实战-STC宣讲会-STC单片机教学视频 - 国芯论坛-STC全球32位8051爱好者互助交流社区 - STC全球32位8051爱好者互助交流社区 (stcaimcu.com)


    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    1

    主题

    3

    回帖

    35

    积分

    新手上路

    积分
    35
    发表于 2023-9-10 17:50:29 | 显示全部楼层
    请问版主,这段代码哪里可以下载呢?
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    半小时前
  • 签到天数: 128 天

    [LV.7]常住居民III

    26

    主题

    1282

    回帖

    3991

    积分

    论坛元老

    积分
    3991
     楼主| 发表于 2023-9-10 18:41:26 | 显示全部楼层
    kbmail 发表于 2023-9-10 17:50
    请问版主,这段代码哪里可以下载呢?

    例子在官网屠龙刀例程包里面
    截图202403211804167609.jpg
    深圳国芯人工智能有限公司-核心功能实验板 (stcai.com)

    截图202403211805054841.jpg
    在 开天斧-STC8H8K64U 核心功能实验板的演示程序包中也有


    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情

    昨天 22:46
  • 签到天数: 95 天

    [LV.6]常住居民II

    7

    主题

    74

    回帖

    615

    积分

    高级会员

    积分
    615
    发表于 2023-12-13 11:19:24 | 显示全部楼层
    mark一下,通过USB-CDC虚拟串口/就是串口,使用【STC-ISP | STC调试接口】的虚拟键盘/显示
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    2023-12-18 09:20
  • 签到天数: 1 天

    [LV.1]初来乍到

    11

    主题

    88

    回帖

    210

    积分

    中级会员

    积分
    210
    发表于 2023-12-13 12:03:19 | 显示全部楼层
    主楼数码管字体挺漂亮的,从哪儿可以下载到?
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    2023-12-18 09:20
  • 签到天数: 1 天

    [LV.1]初来乍到

    11

    主题

    88

    回帖

    210

    积分

    中级会员

    积分
    210
    发表于 2023-12-13 12:23:20 | 显示全部楼层
    网络上找不到带小数点的字体 比如 1. 2. 3.   ----   0. 哪位有可以提供一套,做液晶界面也是挺漂亮的。
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    半小时前
  • 签到天数: 47 天

    [LV.5]常住居民I

    0

    主题

    84

    回帖

    358

    积分

    中级会员

    积分
    358
    发表于 2024-3-5 08:43:34 | 显示全部楼层
    mark一下,
    回复 送花

    使用道具 举报

    该用户从未签到

    550

    主题

    9235

    回帖

    1万

    积分

    管理员

    积分
    13948
    发表于 2024-4-20 08:58:01 | 显示全部楼层

    截图202404200902071007.jpg

    截图202404200857578383.jpg
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    3 天前
  • 签到天数: 4 天

    [LV.2]偶尔看看I

    0

    主题

    6

    回帖

    30

    积分

    新手上路

    积分
    30
    发表于 4 天前 来自手机 | 显示全部楼层
    这个教程是所有板子都能用?怎么我用89c52rc就报错
    回复 支持 反对 送花

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

    GMT+8, 2024-4-30 09:29 , Processed in 0.114094 second(s), 68 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

    快速回复 返回顶部 返回列表