尺寸:115.2mm86.4mm
分辨率:640 480
实物图:
屏开发方式简介:
1)串口屏常规方式:DGUS上位机配置好UI后,设备的mcu串口与串口屏的串口连接,通过串口指令(配合预先设置的控件和图片)在设备的mcu端通过串口交互实现业务设计;
//这种方式修改起来可能不够灵活,不好迭代;
2)串口屏内部的T5L芯片是双核的,一个核用来实现UI的OS,另一个核开放出来(C51),用户可以根据例程开发编译吧bin放到SD卡为迪文内核升级程序(原先由设备端mcu发送串口指令的设计被省略改为直接开发迪文屏内核,通过迪文屏自身完成数据交互和业务)
3)一种不常见的用法
本次使用方法2:通过改屏C51代码实现业务逻辑;

开发步骤如下:
1)找获取资料包
2)配置C51开发环境(keil安装、复制粘贴T5Ld的库到C51的安装路径(后面讲))【用于开发C51代码】
3)安装DGUS tool上位机用于UI界面配置【用于UI设计】
4)安装AGDI驱动、安装串口驱动
省流版:
其中,C51代码编译后,可以把bin放到SD卡,通过SD卡升级到迪文屏的51内核里;
注意:

开发流程简介:

接下来进入正式环节,
前提:
开发C51的方式是:DGUS像往常一样配置UI,生成的文件通过SD卡升级到迪文屏后会运行在双核中的负责UI的核;
开发者配置完DGUS后,需要打开C51工程,调用接口实现C51单片机通过共享内存和UI核心的互动,实现页面切换/按钮/文字等业务;
解决以下疑问,就可以完成开发。
一、DGUS tool上位机上怎么配置实现图片/文本/进度条/按键以及其他控件,以及整体的配置和生成可执行文件的步骤是什么
二、拿到C51的例程后需要调用哪些接口完成开发?(读取指定控件的值/向指定控件写值/串口发送和串口接收)
一、DGUS tool上位机上怎么配置实现图片/文本/进度条/按键以及其他控件,以及整体的配置和生成可执行文件的步骤是什么

1-下载指定版本的DGUS tool软件,并打开DGUS软件(我把软件放在这个路径了)


打开软件后,先创建工程(点击新建)

根据屏幕型号/分辨率创建UI工程(我把在DGUS tool里创建的工程称为UI工程)

创建工程遇到1个问题:没有640*480分辨率选项


可以在输入框直接输入640*480

点击"确定",创建工程
本次为了做实验,要求创建的Demo具备以下功能:
1)有2个页面(可以实现切换页面)
2)有文本框(用于显示文本)
3)有进度条(用于显示进度)
4)有按钮(用于+ - 切换页面)
实现这4样配合C51开发,就具备基本的迪文屏C51开发方法;
接下来先把DGUS部分处理完
关于DGUS有几个注意点:
1)准备的图片素材要求:名称保持数字开头、图片名称格式可以是以下几种(数字、数字+汉语、数字+英语)
2)、、、、在另一个章节提过这些细节,不赘述
1、用AI创建2个页面,然后把图片按要求放到页面1和页面2



点击欢迎使用

点击 ICL生成(目的是将背景图片生成为地文屏能解析的格式)


背景图的ICL文件,其名称前缀为32

补充一句:
背景页面的图片素材的首张图片前缀必须是0

现在页面创建好了,在SDk卡根目录里创建 DWIN_SET文件夹并放置两个内容 1个是背景图的ICL文件 另一个是该屏幕的CFG文件




通过SD卡升级之后,发现这个屏幕里有其他人通过的痕迹;
我需要通过更新所有的ICL文件把内容替换掉

把出厂固件放到SD卡


接着生成一些 变量图标(41开头)



重命名

生成按键控件



找到生成的控件的bin
放入SD卡

升级后ok


/////////////////////////讲到这里只是把DGUS初步配置///////
为了能满足demo需求,还需要至少把按钮控件和文本显示控件加上

这是文本控件的地址

这是按钮控件的配置

二、拿到C51的例程后需要调用哪些接口完成开发?(读取指定控件的值/向指定控件写值/串口发送和串口接收)**
接下来:处理C51开发的几个基本内容:
1-能够是文本控件的内容被C51改变
2-能够读取到按键点击事件
3-能够与外部实现串口通信(收发)
////等填坑
已经2026年了,再不用AI就落伍了





c
#include "t5los8051.h"
#include "sys.h"
#include "stdlib.h"
#include "uart.h"
#include "led.h"
#include "save_data_dgus.h"
#include "i2c.h"
#define Dgus_Send_Page_Time_Set 0x7000
#define DISP_NUM_ADDR 0x2000 // ← 改成你 DGUS 里"变量地址"的实际值
u16 Send_Page_Time_Count = 0, Pop_Time_Count = 0xFFFF;
u16 disp_num = 0; // 当前要显示的数字
u16 last_tick = 0; // 上次更新时刻(1ms 计数)
u8 use_sed[4]={0x12,0x13,0x23,0x1};
void main(){
INIT_CPU();
PORT_Init();
T0_Init();
// T1_Init();
T2_Init();
// WDT_ON();
uart_init();
ws2812_writ_byte(8);
data_save_init();
Uart2_Tx_write2buff(0x78);
uart_send_str(4,use_sed,4);
Write_Dgus(0x0084,0x01);
while(1){
Uart_Handle_all();
Read_0xF00();
data_change_sava();
Clock();
// ===== 新增:文本数字 0~999 循环变化 =====
if((u16)(Send_Page_Time_Count - last_tick) >= 200) // 每 200ms 变一次
{
last_tick = Send_Page_Time_Count;
Write_Dgus(DISP_NUM_ADDR, disp_num);
disp_num++;
if(disp_num > 999) disp_num = 0;
}
}
}
说结论AI写的这个代码,测试起来功能OK;演示视频就不放了;
这个是本次使用的函数接口:

再补充以下其他的可能用到的接口:



C51内核常规函数接口调用实例
搭配这些接口和控件地址和开发者想要实现的业务逻辑(面向对象的设计),就可以完成C51内核相关的开发;
剩下的就是缺什么补什么,基本功能已跑通;