单色屏升级:如何快速升级t5uic1彩屏 -大奖官方网站手机版下载




1.为什么要升级彩屏?

随着科技的日新月异,品质升级已也成为延长产品生命周期的重要因素之一,彩屏替换传统的显示方案也早已是大势所趋。传统显示方案主要包括单色液晶屏(120*120128*64192*64240*128)、断码液晶屏(vatnhtnstn)以及数码管,都可以升级为t5uic1彩屏。

本文主要介绍如何从传统单色显示方案快速升级为t5uic1平台彩屏。


2.t5uic1平台彩屏特点是什么?

何为t5uic1彩屏呢?t5uic1平台是基于迪文科技t5cpu,针对不需要触摸屏、ui功能简单、成本要求苛刻的应用,例如小家电、美容养生、电梯、自动化仪表等。

主要特点包括:

  • t5cpu驱动方案,显示效果好,成本极低;

  • 匹配基本的ui需求,开发简单;

  • 功能齐全:涵盖图标指示、jpeg解压、动态二维码、ascii(6*12-64*64)、汉字库(12*12-64*64gb2312)、绘图。

 

3.如何升级t5uic1平台彩屏?

对于硬件方面,需要在控制部分预留一个串口,并保障电源电压匹配。对于软件部分,t5uic1平台产品为指令集开发模式(具体开发指南可以参照t5uic1应用指南——可在迪文官网“资料下载”栏目的“应用设计参考”子栏目下载压缩文件包《t5cpu智能屏开发指南》,即可从中找到文件“t5uic1应用指南_v20”)。 

本文将mcu指令(以stm32为例)和t5uic1指令做成了库函数的形式(main.c),开发者可直接复制使用。

本文库函数主要涵盖字符串显示、二维码显示、绘图、图标显示、动态图标等功能。文件主要包括头文件dwin.h和库函数main.c

 

3.1头文件(dwin.h

头文件作为一种包含功能函数、数据接口声明的载体文件,主要用于保存程序的声明。

相关内容:

#ifndef__dwin_h

#define__dwin_h

#include

#include"stm32f10x_conf.h"

voidlcd_printf(u8 mode,u16 color,u16 bcolor,u16 x,u16 y,const char*format, ...);//显示字符串或者变量

voiderweima(u16 x,u16 y,u8 qr_pixel,const char *format, ...);//生成二维码

voidclr(u16 color);//清屏

voidlinear_interpolation(u8 num,u16 color,...);//绘制直线

voidplace_point(u8 num,u16 color,u16 nx,u16 ny,...);//绘制点

voiddim_set(u8 set);//调节背光

voidbode_set(u16 set);//调节扩展串口波特率

voiddisd_ico(u16 x,u16 y,u8 mode,u8 icon_lib,u8 icon_ids,u8 icon_0ide,u8delay_time);//设置动态图标

voiddis_ico(u16 x,u16 y,u8 mode,u8 ids);//显示ico图标

voidpic(u8 id);//写数据存储器

#endif

 

3.2库函数(main.c

内容如下:

#include

#include"stm32f10x_conf.h"

#include"dwin.h"

/****************显示字符串函数*****************/

/*参数:mode:d7********************************/

voidlcd_printf(u8 mode,u16 color,u16 bcolor,u16 x,u16 y,const char*format, ...)

{

  chartmp[200];

  va_listarg;

  va_start(arg,format);

  vsprintf(tmp,format,arg);

  va_end(arg);

usart_sendbyte(usart1,0xaa);


usart_sendbyte(usart1,0x11);

usart_sendbyte(usart1,mode);//模式

usart_sendbyte(usart1,color/256);

usart_sendbyte(usart1,color%6);//前景颜色

usart_sendbyte(usart1,bcolor/256);

usart_sendbyte(usart1,bcolor%6);//背景颜色

usart_sendbyte(usart1,x/256);

usart_sendbyte(usart1,x%6);//横坐标

usart_sendbyte(usart1,y/256);

usart_sendbyte(usart1,y%6);//y坐标


  usart_sendstring(usart1,tmp);

usart_sendbyte(usart1,0xcc);

usart_sendbyte(usart1,0x33);

usart_sendbyte(usart1,0xc3);

usart_sendbyte(usart1,0x3c);

}

/****************显示二维码函数*****************/

/*参数:mode:d7********************************/

voiderweima(u16 x,u16 y,u8 qr_pixel,const char *format, ...)

{

  chartmp[200];

  va_listarg;

  va_start(arg,format);

  vsprintf(tmp,format,arg);

  va_end(arg);


usart_sendbyte(usart1,0xaa);


usart_sendbyte(usart1,0x21);

 

usart_sendbyte(usart1,x/256);

usart_sendbyte(usart1,x%6);//横坐标

usart_sendbyte(usart1,y/256);

usart_sendbyte(usart1,y%6);//y坐标

usart_sendbyte(usart1,qr_pixel);//二维码每个点的大小


  usart_sendstring(usart1,tmp);

usart_sendbyte(usart1,0xcc);

usart_sendbyte(usart1,0x33);

usart_sendbyte(usart1,0xc3);

usart_sendbyte(usart1,0x3c);

}

/****************读存储器***********************/

/*参数:mode:d7********************************/

voidread_sram_flsh(u16 length,u8 type,u16 address)//写数据存储器

{

  usart_sendbyte(usart1,0xaa);

usart_sendbyte(usart1,0x32);

usart_sendbyte(usart1,type);

usart_sendbyte(usart1,address/256);

usart_sendbyte(usart1,address%6);

usart_sendbyte(usart1,length);

usart_sendbyte(usart1,0xcc);

usart_sendbyte(usart1,0x33);

usart_sendbyte(usart1,0xc3);

usart_sendbyte(usart1,0x3c);

}

 

/****************绘图清屏函数*****************/

/*参数:mode:d7********************************/

voidclr(u16 color)

{

 

usart_sendbyte(usart1,0xaa);


usart_sendbyte(usart1,0x01);

 

usart_sendbyte(usart1,color/256);

usart_sendbyte(usart1,color%6);//颜色

 


usart_sendbyte(usart1,0xcc);

usart_sendbyte(usart1,0x33);

usart_sendbyte(usart1,0xc3);

usart_sendbyte(usart1,0x3c);

}

/****************绘图直线插入函数*****************/

/*参数:mode:d7********************************/

voidlinear_interpolation(u8 num,u16 color,...)

{

    va_listarg_ptr;

    inttempvalue;

num*=2;

    usart_sendbyte(usart1,0xaa);

usart_sendbyte(usart1,0x03);

usart_sendbyte(usart1,color/256);

usart_sendbyte(usart1,color%6);

    va_start(arg_ptr,color);

    while(num--)

    {

          tempvalue=va_arg(arg_ptr,int);

          usart_sendbyte(usart1,tempvalue/256);

usart_sendbyte(usart1,tempvalue%6);

    }

 

    va_end(arg_ptr);

usart_sendbyte(usart1,0xcc);

usart_sendbyte(usart1,0x33);

usart_sendbyte(usart1,0xc3);

usart_sendbyte(usart1,0x3c);

}

/****************绘图打点插入函数*****************/

/*参数:mode:d7********************************/

voidplace_point(u8 num,u16 color,u16 nx,u16 ny,...)

{

    va_listarg_ptr;

    inttempvalue;

num*=2;

    usart_sendbyte(usart1,0xaa);

usart_sendbyte(usart1,0x02);

usart_sendbyte(usart1,color/256);

usart_sendbyte(usart1,color%6);

usart_sendbyte(usart1,nx%6);

usart_sendbyte(usart1,ny%6);

    va_start(arg_ptr,ny);

    while(num--)

    {

          tempvalue=va_arg(arg_ptr,int);

          usart_sendbyte(usart1,tempvalue/256);

usart_sendbyte(usart1,tempvalue%6);

    }

 

    va_end(arg_ptr);

usart_sendbyte(usart1,0xcc);

usart_sendbyte(usart1,0x33);

usart_sendbyte(usart1,0xc3);

usart_sendbyte(usart1,0x3c);

}

/****************屏幕背光亮度设置*****************/

/*参数:mode:d7********************************/

voiddim_set(u8 set)

{

 

    usart_sendbyte(usart1,0xaa);

usart_sendbyte(usart1,0x30);

usart_sendbyte(usart1,set);

usart_sendbyte(usart1,0xcc);

usart_sendbyte(usart1,0x33);

usart_sendbyte(usart1,0xc3);

usart_sendbyte(usart1,0x3c);

}

/****************设置扩展串口波特率**************/

/*参数:mode:d7********************************/

voidbode_set(u16 set)//调节扩展串口波特率

{

  usart_sendbyte(usart1,0xaa);

usart_sendbyte(usart1,0x38);

usart_sendbyte(usart1,15667200/set/256);

usart_sendbyte(usart1,15667200/set%6);

usart_sendbyte(usart1,0xcc);

usart_sendbyte(usart1,0x33);

usart_sendbyte(usart1,0xc3);

usart_sendbyte(usart1,0x3c);

}

/****************从扩展串口发送字符串**************/

/*参数:mode:d7********************************/

voiduart_tx(const char *format, ...)//串口发送字符串

{

chartmp[200];

va_listarg;

va_start(arg,format);

vsprintf(tmp,format,arg);

va_end(arg);

  usart_sendbyte(usart1,0xaa);

usart_sendbyte(usart1,0x39);

usart_sendstring(usart1,tmp);

usart_sendbyte(usart1,0xcc);

usart_sendbyte(usart1,0x33);

usart_sendbyte(usart1,0xc3);

usart_sendbyte(usart1,0x3c);

}

/****************显示ico图标**************/

/*参数:mode:d7********************************/

voiddis_ico(u16 x,u16 y,u8 mode,u8 ids)//显示ico图标

{

  usart_sendbyte(usart1,0xaa);

usart_sendbyte(usart1,0x23);

usart_sendbyte(usart1,x/256);

usart_sendbyte(usart1,x%6);

usart_sendbyte(usart1,y/256);

usart_sendbyte(usart1,y%6);

  usart_sendbyte(usart1,mode);

usart_sendbyte(usart1,ids);

usart_sendbyte(usart1,0xcc);

usart_sendbyte(usart1,0x33);

usart_sendbyte(usart1,0xc3);

usart_sendbyte(usart1,0x3c);

}

/****************设置动态图标*******************/

/*参数:mode:d7********************************/

voiddisd_ico(u16 x,u16 y,u8 mode,u8 icon_lib,u8 icon_ids,u8 icon_0ide,u8delay_time)//显示ico图标

{

  usart_sendbyte(usart1,0xaa);

usart_sendbyte(usart1,0x28);

usart_sendbyte(usart1,x/256);

usart_sendbyte(usart1,x%6);

usart_sendbyte(usart1,y/256);

usart_sendbyte(usart1,y%6);

usart_sendbyte(usart1,mode);

usart_sendbyte(usart1,icon_lib);

usart_sendbyte(usart1,icon_ids);

usart_sendbyte(usart1,icon_0ide);

usart_sendbyte(usart1,delay_time);


usart_sendbyte(usart1,0xcc);

usart_sendbyte(usart1,0x33);

usart_sendbyte(usart1,0xc3);

usart_sendbyte(usart1,0x3c);

}

/****************控制动态图标*******************/

/*参数:mode:d7********************************/

voiddisc_ico(u16 set)//控制ico动态图标

{

  usart_sendbyte(usart1,0xaa);

usart_sendbyte(usart1,0x29);


usart_sendbyte(usart1,set/256);

usart_sendbyte(usart1,set%6);

 

usart_sendbyte(usart1,0xcc);

usart_sendbyte(usart1,0x33);

usart_sendbyte(usart1,0xc3);

usart_sendbyte(usart1,0x3c);

}

 

/****************写存储器***********************/

/*参数:mode:d7********************************/

voidwrit_sram_flsh(u16 length,u8 type,u16 address)//写数据存储器

{

  usart_sendbyte(usart1,0xaa);

usart_sendbyte(usart1,0x31);

usart_sendbyte(usart1,type);

usart_sendbyte(usart1,address/256);

usart_sendbyte(usart1,address%6);

while(length--)

{

usart_sendbyte(usart1,address );

}

 

usart_sendbyte(usart1,0xcc);

usart_sendbyte(usart1,0x33);

usart_sendbyte(usart1,0xc3);

usart_sendbyte(usart1,0x3c);

}

 

/****************读存储器***********************/

/*参数:mode:d7********************************/

voidpic(u8 id)

{

  usart_sendbyte(usart1,0xaa);

usart_sendbyte(usart1,0x22);

usart_sendbyte(usart1,0x00);

usart_sendbyte(usart1,id);

\

usart_sendbyte(usart1,0xcc);

usart_sendbyte(usart1,0x33);

usart_sendbyte(usart1,0xc3);

usart_sendbyte(usart1,0x3c);

}

 

4.常用功能例程

4.1显示文本和数据

voidlcd_printf(u8 mode,u16 color,u16 bcolor,u16 x,u16 y,const char*format, ...);//显示字符串或者变量  

参数mode:

.7字符宽度调整设置1=调整0=不调整。

.6背景色显示设置1=显示0=不显示。

.5-.4写0。.3-.0:字号大小,0x00-0x09,对应字体大小于下:0x00=6*120x01=8*16 0x02=10*20 0x03=12*24 0x04=14*28 0x05=16*32 0x06=20*400x07=24*48 0x08=28*56 0x09=32*64

color:字符显示颜色。

bcolor:字符背景显示颜色。

x,y):字符串显示的左上角坐标。

 

例程:lcd_printf(0x42,0xffff,0xf00f,10,10,"迪文科技:d",x );

如示例的调用形式将显示“迪文科技:x的值的十进制展现形式”

 

4.2绘图类

voidclr(u16 color);//清屏

color:颜色

voidlinear_interpolation(u8 num,u16 color,...);// 端点连线

num:点的个数

color:连线的颜色

…:各点坐标

 

例程:linear_interpolation(3,0xff00,0x0000,0x0000,0x0100,0x0100,0x0100,0x0000);

 

voidplace_point(u8 num,u16 color,u16 nx,u16 ny,...);//绘制点

 

 

4.3二维码显示

voiderweima(u16 x,u16 y,u8 qr_pixel,const char *format, ...);//生成二维码

x,y为二维码左上角坐标。qr_pixel表示二维码每个点占用的像素点。

…:url此函数的分钟同样类似printf

 

例程:erweima(148,50,0x04,"https://www.dwin.com.cn");

 

4.4调节背光亮度

voiddim_set(u8 set);//调节背光

set:0x00-0xff

 

例程:dim_set(0xff);//调节背光到最亮

 

4.5调节串口波特率

voidbode_set(u16 set);//调节扩展串口波特率

set:波特率

例程:bode_set(9600);//设置波特率为9600

 

5. 文件下载说明

库函数&头文件及升级说明见压缩文件《单色屏升级:如何快速升级t5uic1彩屏》,文件获取方式如下:

迪文大奖官方网站手机版下载官网“资料下载”栏目的“应用设计参考”子栏目下载压缩文件包《单色屏升级:如何快速升级t5uic1彩屏》,即可从中找到有关文件。



(作者/祖晓晨  编辑/孙惠英)




关注迪文及时了解更多产品资讯