硬汉嵌入式论坛

 找回密码
 立即注册
查看: 3152|回复: 0
收起左侧

[客户分享] 单色屏升级:如何快速升级T5UIC1彩屏

[复制链接]

1

主题

0

回帖

3

积分

新手上路

积分
3
发表于 2018-12-7 17:01:31 | 显示全部楼层 |阅读模式
1. 为什么要升级彩屏?
随着科技的日新月异,品质升级也成为延长产品生命周期的重要因素之一,而彩屏替换传统的显示方案早已大势所趋。传统显示方案主要包括单色液晶屏(120*120、128*64、192*64、240*128)、断码液晶屏(VA、TN、HTN、STN)以及数码管,都可以升级为T5UIC1彩屏。本文主要介绍如何从传统单色显示方案快速升级为T5UIC1平台彩屏。
2. T5UIC1平台彩屏特点是什么?
何为T5UIC1彩屏呢?T5UIC1平台是基于迪文科技T5 CPU,针对不需要触摸屏、UI功能简单、成本要求苛刻的应用,例如小家电、美容养生、电梯、自动化仪表等。主要特点包括:
a.T5 CPU驱动方案,显示效果好,成本极低;
b.匹配基本的UI需求,开发简单;
c.功能齐全:涵盖图标指示、JPEG解压、动态二维码、ASCII(6*12-64*64)、汉字库(12*12-64*64 GB2312)、绘图。
3. 如何升级T5UIC1平台彩屏?
对于硬件方面,需要在控制部分预留一个串口,并保障电源电压匹配。对于软件部分,T5UIC1平台产品为指令集开发模式(具体开发指南可以参照T5UIC1应用指南)。 本文将MCU指令(以STM32为例)和T5UIC1指令做成了库函数的形式(MAIN.C),开发者可直接复制使用
本文库函数主要涵盖字符串显示、二维码显示、绘图、图标显示、动态图标等功能。文件主要包括头文件DWIN.H和库函数MAIN.C。
3.1 头文件(DWIN.H)
头文件作为一种包含功能函数、数据接口声明的载体文件,主要用于保存程序的声明。
  1. #ifndef __DWIN_H
  2. #define __DWIN_H
  3. #include<stm32f10x.h>
  4. #include "stm32f10x_conf.h"
  5. void LCD_printf(u8 mode,u16 Color,u16 Bcolor,u16 x,u16 y,const char *format, ...);//显示字符串或者变量
  6. void erweima(u16 x,u16 y,u8 QR_Pixel,const char *format, ...);//生成二维码
  7. void clr(u16 Color);//清屏
  8. void Linear_interpolation(u8 num,u16 Color,...);//绘制直线
  9. void Place_point(u8 num,u16 Color,u16 nx,u16 ny,...);//绘制点
  10. void DIM_Set(u8 Set);//调节背光
  11. void Bode_Set(u16 Set);//调节扩展串口波特率
  12. void disd_ico(u16 x,u16 y,u8 mode,u8 Icon_lib,u8 Icon_IDs,u8 Icon_0IDe,u8 Delay_time);//设置动态图标
  13. void dis_ico(u16 x,u16 y,u8 mode,u8 ids);//显示ico图标
  14. void pic(u8 id);//写数据存储器
  15. #endif
复制代码

3.2 库函数(MAIN.C)
  1. #include<stm32f10x.h>
  2. #include "stm32f10x_conf.h"
  3. #include "dwin.h"
  4. /****************显示字符串函数*****************/
  5. /*参数:mode:D7********************************/
  6. void LCD_printf(u8 mode,u16 Color,u16 Bcolor,u16 x,u16 y,const char *format, ...)
  7. {
  8.   char tmp[200];
  9.   va_list arg;
  10.   va_start(arg, format);
  11.   vsprintf(tmp,format,arg);
  12.   va_end(arg);
  13. Usart_SendByte(USART1,0xaa);
  14. Usart_SendByte(USART1,0x11);
  15. Usart_SendByte(USART1,mode);//模式
  16. Usart_SendByte(USART1,Color/256);
  17. Usart_SendByte(USART1,Color%256);//前景颜色
  18. Usart_SendByte(USART1,Bcolor/256);
  19. Usart_SendByte(USART1,Bcolor%256);//背景颜色
  20. Usart_SendByte(USART1,x/256);
  21. Usart_SendByte(USART1,x%256);//横坐标
  22. Usart_SendByte(USART1,y/256);
  23. Usart_SendByte(USART1,y%256);//Y坐标
  24.   Usart_SendString(USART1,tmp);
  25. Usart_SendByte(USART1,0xcc);
  26. Usart_SendByte(USART1,0x33);
  27. Usart_SendByte(USART1,0xc3);
  28. Usart_SendByte(USART1,0x3c);
  29. }
  30. /****************显示二维码函数*****************/
  31. /*参数:mode:D7********************************/
  32. void erweima(u16 x,u16 y,u8 QR_Pixel,const char *format, ...)
  33. {
  34.   char tmp[200];
  35.   va_list arg;
  36.   va_start(arg, format);
  37.   vsprintf(tmp,format,arg);
  38.   va_end(arg);
  39. Usart_SendByte(USART1,0xaa);
  40. Usart_SendByte(USART1,0x21);

  41. Usart_SendByte(USART1,x/256);
  42. Usart_SendByte(USART1,x%256);//横坐标
  43. Usart_SendByte(USART1,y/256);
  44. Usart_SendByte(USART1,y%256);//Y坐标
  45. Usart_SendByte(USART1,QR_Pixel);//二维码每个点的大小
  46.   Usart_SendString(USART1,tmp);
  47. Usart_SendByte(USART1,0xcc);
  48. Usart_SendByte(USART1,0x33);
  49. Usart_SendByte(USART1,0xc3);
  50. Usart_SendByte(USART1,0x3c);
  51. }
  52. /****************读存储器***********************/
  53. /*参数:mode:D7********************************/
  54. void read_sram_flsh(u16 Length,u8 Type,u16 Address)//写数据存储器
  55. {
  56.   Usart_SendByte(USART1,0xaa);
  57. Usart_SendByte(USART1,0x32);
  58. Usart_SendByte(USART1,Type);
  59. Usart_SendByte(USART1,Address/256);
  60. Usart_SendByte(USART1,Address%256);
  61. Usart_SendByte(USART1,Length);
  62. Usart_SendByte(USART1,0xcc);
  63. Usart_SendByte(USART1,0x33);
  64. Usart_SendByte(USART1,0xc3);
  65. Usart_SendByte(USART1,0x3c);
  66. }

  67. /****************绘图清屏函数*****************/
  68. /*参数:mode:D7********************************/
  69. void clr(u16 Color)
  70. {

  71. Usart_SendByte(USART1,0xaa);
  72. Usart_SendByte(USART1,0x01);

  73. Usart_SendByte(USART1,Color/256);
  74. Usart_SendByte(USART1,Color%256);//颜色

  75. Usart_SendByte(USART1,0xcc);
  76. Usart_SendByte(USART1,0x33);
  77. Usart_SendByte(USART1,0xc3);
  78. Usart_SendByte(USART1,0x3c);
  79. }
  80. /****************绘图直线插入函数*****************/
  81. /*参数:mode:D7********************************/
  82. void Linear_interpolation(u8 num,u16 Color,...)
  83. {
  84.     va_list arg_ptr;
  85.     int tempValue;
  86. num*=2;
  87.     Usart_SendByte(USART1,0xaa);
  88. Usart_SendByte(USART1,0x03);
  89. Usart_SendByte(USART1,Color/256);
  90. Usart_SendByte(USART1,Color%256);
  91.     va_start(arg_ptr,Color);
  92.     while(num--)
  93.     {
  94.           tempValue=va_arg(arg_ptr,int);
  95.           Usart_SendByte(USART1,tempValue/256);
  96. Usart_SendByte(USART1,tempValue%256);
  97.     }

  98.     va_end(arg_ptr);
  99. Usart_SendByte(USART1,0xcc);
  100. Usart_SendByte(USART1,0x33);
  101. Usart_SendByte(USART1,0xc3);
  102. Usart_SendByte(USART1,0x3c);
  103. }
  104. /****************绘图打点插入函数*****************/
  105. /*参数:mode:D7********************************/
  106. void Place_point(u8 num,u16 Color,u16 nx,u16 ny,...)
  107. {
  108.     va_list arg_ptr;
  109.     int tempValue;
  110. num*=2;
  111.     Usart_SendByte(USART1,0xaa);
  112. Usart_SendByte(USART1,0x02);
  113. Usart_SendByte(USART1,Color/256);
  114. Usart_SendByte(USART1,Color%256);
  115. Usart_SendByte(USART1,nx%256);
  116. Usart_SendByte(USART1,ny%256);
  117.     va_start(arg_ptr,ny);
  118.     while(num--)
  119.     {
  120.           tempValue=va_arg(arg_ptr,int);
  121.           Usart_SendByte(USART1,tempValue/256);
  122. Usart_SendByte(USART1,tempValue%256);
  123.     }

  124.     va_end(arg_ptr);
  125. Usart_SendByte(USART1,0xcc);
  126. Usart_SendByte(USART1,0x33);
  127. Usart_SendByte(USART1,0xc3);
  128. Usart_SendByte(USART1,0x3c);
  129. }
  130. /****************屏幕背光亮度设置*****************/
  131. /*参数:mode:D7********************************/
  132. void DIM_Set(u8 Set)
  133. {

  134.     Usart_SendByte(USART1,0xaa);
  135. Usart_SendByte(USART1,0x30);
  136. Usart_SendByte(USART1,Set);
  137. Usart_SendByte(USART1,0xcc);
  138. Usart_SendByte(USART1,0x33);
  139. Usart_SendByte(USART1,0xc3);
  140. Usart_SendByte(USART1,0x3c);
  141. }
  142. /****************设置扩展串口波特率**************/
  143. /*参数:mode:D7********************************/
  144. void Bode_Set(u16 Set)//调节扩展串口波特率
  145. {
  146.   Usart_SendByte(USART1,0xaa);
  147. Usart_SendByte(USART1,0x38);
  148. Usart_SendByte(USART1,15667200/Set/256);
  149. Usart_SendByte(USART1,15667200/Set%256);
  150. Usart_SendByte(USART1,0xcc);
  151. Usart_SendByte(USART1,0x33);
  152. Usart_SendByte(USART1,0xc3);
  153. Usart_SendByte(USART1,0x3c);
  154. }
  155. /****************从扩展串口发送字符串**************/
  156. /*参数:mode:D7********************************/
  157. void UART_TX(const char *format, ...)//串口发送字符串
  158. {
  159. char tmp[200];
  160. va_list arg;
  161. va_start(arg, format);
  162. vsprintf(tmp,format,arg);
  163. va_end(arg);
  164.   Usart_SendByte(USART1,0xaa);
  165. Usart_SendByte(USART1,0x39);
  166. Usart_SendString(USART1,tmp);
  167. Usart_SendByte(USART1,0xcc);
  168. Usart_SendByte(USART1,0x33);
  169. Usart_SendByte(USART1,0xc3);
  170. Usart_SendByte(USART1,0x3c);
  171. }
  172. /****************显示ICO图标**************/
  173. /*参数:mode:D7********************************/
  174. void dis_ico(u16 x,u16 y,u8 mode,u8 ids)//显示ico图标
  175. {
  176.   Usart_SendByte(USART1,0xaa);
  177. Usart_SendByte(USART1,0x23);
  178. Usart_SendByte(USART1,x/256);
  179. Usart_SendByte(USART1,x%256);
  180. Usart_SendByte(USART1,y/256);
  181. Usart_SendByte(USART1,y%256);
  182.   Usart_SendByte(USART1,mode);
  183. Usart_SendByte(USART1,ids);
  184. Usart_SendByte(USART1,0xcc);
  185. Usart_SendByte(USART1,0x33);
  186. Usart_SendByte(USART1,0xc3);
  187. Usart_SendByte(USART1,0x3c);
  188. }
  189. /****************设置动态图标*******************/
  190. /*参数:mode:D7********************************/
  191. void disd_ico(u16 x,u16 y,u8 mode,u8 Icon_lib,u8 Icon_IDs,u8 Icon_0IDe,u8 Delay_time)//显示ico图标
  192. {
  193.   Usart_SendByte(USART1,0xaa);
  194. Usart_SendByte(USART1,0x28);
  195. Usart_SendByte(USART1,x/256);
  196. Usart_SendByte(USART1,x%256);
  197. Usart_SendByte(USART1,y/256);
  198. Usart_SendByte(USART1,y%256);
  199. Usart_SendByte(USART1,mode);
  200. Usart_SendByte(USART1,Icon_lib);
  201. Usart_SendByte(USART1,Icon_IDs);
  202. Usart_SendByte(USART1,Icon_0IDe);
  203. Usart_SendByte(USART1,Delay_time);
  204. Usart_SendByte(USART1,0xcc);
  205. Usart_SendByte(USART1,0x33);
  206. Usart_SendByte(USART1,0xc3);
  207. Usart_SendByte(USART1,0x3c);
  208. }
  209. /****************控制动态图标*******************/
  210. /*参数:mode:D7********************************/
  211. void disc_ico(u16 set)//控制ico动态图标
  212. {
  213.   Usart_SendByte(USART1,0xaa);
  214. Usart_SendByte(USART1,0x29);
  215. Usart_SendByte(USART1,set/256);
  216. Usart_SendByte(USART1,set%256);

  217. Usart_SendByte(USART1,0xcc);
  218. Usart_SendByte(USART1,0x33);
  219. Usart_SendByte(USART1,0xc3);
  220. Usart_SendByte(USART1,0x3c);
  221. }

  222. /****************写存储器***********************/
  223. /*参数:mode:D7********************************/
  224. void writ_sram_flsh(u16 Length,u8 Type,u16 Address)//写数据存储器
  225. {
  226.   Usart_SendByte(USART1,0xaa);
  227. Usart_SendByte(USART1,0x31);
  228. Usart_SendByte(USART1,Type);
  229. Usart_SendByte(USART1,Address/256);
  230. Usart_SendByte(USART1,Address%256);
  231. while(Length--)
  232. {
  233. Usart_SendByte(USART1,Address++);
  234. }

  235. Usart_SendByte(USART1,0xcc);
  236. Usart_SendByte(USART1,0x33);
  237. Usart_SendByte(USART1,0xc3);
  238. Usart_SendByte(USART1,0x3c);
  239. }

  240. /****************读存储器***********************/
  241. /*参数:mode:D7********************************/
  242. void pic(u8 id)
  243. {
  244.   Usart_SendByte(USART1,0xaa);
  245. Usart_SendByte(USART1,0x22);
  246. Usart_SendByte(USART1,0x00);
  247. Usart_SendByte(USART1,id);
  248. \
  249. Usart_SendByte(USART1,0xcc);
  250. Usart_SendByte(USART1,0x33);
  251. Usart_SendByte(USART1,0xc3);
  252. Usart_SendByte(USART1,0x3c);
  253. }
复制代码

4.常用功能例程
4.1 显示文本和数据
  1. void LCD_printf(u8 mode,u16 Color,u16 Bcolor,u16 x,u16 y,const char *format, ...);//显示字符串或者变量   
  2. 参数mode:
  3. .7 字符宽度调整设置 1=调整 0=不调整。
  4. .6 背景色显示设置 1=显示 0=不显示。
  5. .5-.4 写 0。 .3-.0:字号大小,0x00-0x09,对应字体大小于下: 0x00=6*12 0x01=8*16 0x02=10*20 0x03=12*24 0x04=14*28 0x05=16*32 0x06=20*40 0x07=24*48 0x08=28*56 0x09=32*64
  6. Color:字符显示颜色。
  7. Bcolor:字符背景显示颜色。
  8. (x,y):字符串显示的左上角坐标。
复制代码

例程:
  1. LCD_printf(0x42,0xffff,0xf00f,10,10,"迪文科技:%04d",x++);
复制代码
如示例的调用形式将显示“迪文科技:x的值的十进制展现形式”

4.2 绘图类
  1. void clr(u16 Color);//清屏
  2. color:颜色
  3. void Linear_interpolation(u8 num,u16 Color,...);// 端点连线
  4. num:点的个数
  5. color:连线的颜色
  6. …:各点坐标
复制代码
  1. void Place_point(u8 num,u16 Color,u16 nx,u16 ny,...);//绘制点
复制代码

例程:
  1. Linear_interpolation(3,0xff00,0x0000,0x0000,0x0100,0x0100,0x0100,0x0000);
复制代码

4.3 二维码显示
  1. void erweima(u16 x,u16 y,u8 QR_Pixel,const char *format, ...);//生成二维码
  2. x,y为二维码左上角坐标。QR_Pixel表示二维码每个点占用的像素点。
  3. …:URL此函数的分钟同样类似printf
复制代码

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

4.4 调节背光亮度
  1. void DIM_Set(u8 Set);//调节背光
  2. set:0x00-0xff
复制代码

例程:
  1. DIM_Set(0xff);//调节背光到最亮
复制代码

4.5 调节串口波特率
  1. void Bode_Set(u16 Set);//调节扩展串口波特率
  2. set:波特率
复制代码

例程:
  1. Bode_Set(9600);//设置波特率为9600
复制代码


单色屏升级:如何快速升级T5UIC1彩屏.zip

21.64 KB, 下载次数: 13

回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-13 07:14 , Processed in 0.148126 second(s), 26 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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