迪文屏C51开发

尺寸: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内核相关的开发;

剩下的就是缺什么补什么,基本功能已跑通;

相关推荐
硅基手札1 小时前
【I2C 技术系列 11】I2C Linux 驱动框架
linux·驱动开发·stm32·单片机·嵌入式硬件·mcu·计算机外设
wuyk5552 小时前
样章-第03讲-FreeRTOS在16KB-RAM上的裁剪与陷阱
c语言·开发语言·stm32·单片机·嵌入式硬件·物联网·系统架构
zjxtxdy2 小时前
STM32hal库开发-GPIO
stm32·单片机·嵌入式硬件
youcans_12 小时前
【STM32C5教程】(3)GPIO 按键输入实验
stm32·单片机·嵌入式硬件
wuyk55517 小时前
嵌入式驱动开发:量产级工程化实战(第9篇)——低功耗下的通信可靠性
c语言·驱动开发·stm32·单片机·嵌入式硬件
创界工坊工作室17 小时前
24-基于单片机的仓鼠养殖环境监控系统设计
stm32·单片机·嵌入式硬件·proteus
endeavor1219 小时前
can总线(五)
c语言·stm32·单片机·can
硅基手札20 小时前
【I2C 技术系列 08】I2C 控制器寄存器与 IP 架构
驱动开发·stm32·单片机·嵌入式硬件·mcu·架构·计算机外设
新晨单片机设计20 小时前
S027A-基于STM32单片机模拟电梯控制系统【Proteus仿真+Keil程序+原理图】
stm32·单片机·proteus·模拟电梯