串口屏之------Usart GPU 使用手册

Usart GPU 使用手册html

文档更新日期程序员

更新内容数据库

2014-9-10编程

C编程sprintf问题app

2014-8-8electron

版本程序1.0,升级了自定义波特率部分编辑器

------函数

原始版本测试

 

 

 

 

 

 

 

 

 

第一部分:基础应用字体

 

概述:

Usart 是串口的意思,GPU 是图形处理器的意思,产品的含义是作一个单片机使用的专用图形处理器,或者称之为串口液晶显示模块。

1、 接线

开箱后,能够将串口输出的4根引脚焊上排插,使用杜邦线将串口接到USB转TTL线上,便可接到电脑USB口上上电,屏幕即会显示第一屏的Hello界面;

说明下:照片中是我调试用的,所以增长了RESET按钮和运行程序刷机切换的BOOT自锁开关,正常使用和产品中不带这两个东东;

主板中使用XC6206接到5V的,6206是一个低压差稳压器,输出3.3V,160mV的低压差,让板子在3.46V便可正常供电,实际使用中,电压低到3V,6206也能够正常输出电压可是不稳压;因为STM32 最低2V便可工做,所以本板子能够直接接单节锂电池便可工做;

2、 上电,观看演示

这是上电后的Hello界面,俗称欢迎界面,此界面属于第一个批界面,能够有上位机程序在PC下自由设计,用户能够在这个界面上设计本身产品的名字和公司的图标;

开机界面十秒种,若是收不到串口命令,就会进入演示状态。正常的量产以后,单片机须要在上电十秒内给串口液晶屏发送指令,只要一发送指令,就自动的进入串口命令状态。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3、 接GpuMaker

将USB转TTL接入计算机,注意因为程序的缘由串口号不能超过10,即COM1~COM9方可以使用;

 

从:

http://pan.baidu.com/share/link?shareid=1322038799&uk=3204894695

 下载GpuMaker程序,程序是一个ZIP包,绿色软件,解压到硬盘中便可使用;

若是您有多个使用串口屏的项目,请把此软件解压多份,每份一个项目;

 

运行解开目录中的GpuMaker.exe,系统进入:

选择,左上角的串口号,点击“打开按钮”,串口链接成功;此时点击“发送指令”,液晶屏便可显示表示链接正常;

 

4、 命令表

命令

说明

示例

CLS(c);

c颜色清屏

CLS(0);

SCC(c,n);

自定义c颜色,颜色值n由上位机提供计算

SCC(15,65535);

SBC(c);

设置背景色C,显示汉字等时无点阵时填的颜色

SBC(1);

PS(x,y,c);

(x,y)的地方画一个颜色c的点

PS(100,100,1);

PL(x1,y1,x2,y2,c);

(x1,y1)用颜色c画一条直线到(x2,y2)

PL(0,0,100,0,2);

BOX(x1,y1,x2,y2,c);

用颜色c画一个方框,左上角(x1,y1),右下角(x2,y2)

BOX(0,0,100,100,2);

BOXF(x1,y1,x2,y2,c);

用颜色c画一个实心方框,左上角(x1,y1),右下角(x2,y2)

BOXF(0,0,100,100,2);

PIC(x,y,n);

(x,y)处画第n幅图

PIC(0,0,1);

CIR(x,y,r,c);

(x,y)处用颜色c画一个半径r的园

CIR(100,100,50,1);

SPG(n);

显示第n个批界面

SPG(1);

DS12(x,y,'显示内容字符串',c);

(x,y)处用颜色c显示一行12点阵字

DS12(0,0,'显示字符串',1);

DS16(x,y,'显示内容字符串',c);

(x,y)处用颜色c显示一行16点阵字

DS16(0,0,'显示字符串',1);

DS24(x,y,'显示内容字符串',c);

(x,y)处用颜色c显示一行24点阵字

DS24(0,0,'显示字符串',1);

DS32(x,y,'显示内容字符串',c);

(x,y)处用颜色c显示一行32点阵字

DS32(0,0,'显示字符串',1);

DS48(x,y,'显示内容字符串',c);

(x,y)处用颜色c显示一行48点阵字

DS48(0,0,'显示字符串',1);

DS64(x,y,'显示内容字符串',c);

(x,y)处用颜色c显示一行64点阵字

DS64(0,0,'显示字符串',1);

DRn

设置屏幕显示的方向;n0~3,分别对应屏的4个方向,可使用此调整横竖屏显示;另外此命令不清屏,所以能够显示在横屏下显示部分竖显汉字。

DR0;   横屏显示

DR1;   竖屏显示

DR2;   横屏倒立

DR3;   竖屏倒立

BS12(x1,y1,x2,lw,'显示内容',c);

(x1,y1)处,显示12点阵字符串,在x2处自动折行,行间距lw,颜色c;

BS12(0,0,219,4,'显示内容...不少字',c);

BS16(x1,y1,x2,lw,'显示内容',c);

(x1,y1)处,显示16点阵字符串,在x2处自动折行,行间距lw,颜色c;

BS16(0,0,219,4,'显示内容...不少字',c);

INF;

传回系统序列号等信息

INF;

           

 

5、 定义颜色

 

 

颜色是由RGB构成的,系统支持的64K色实际上是65536中颜色,使用16位二进制(2字节)组成,16位,分红:R红色5位;G绿色6位;B蓝色5位,就是俗称RGB565模式;常规的计算机颜色描述是由3字节组成,每字节一色,好比红色描述为:0xFF0000;绿色描述为0x00FF00;而蓝色描述为0x0000FF

看不懂也不要紧,只须要进入GpuMaker,到“帮助与说明”找到:

点击“颜色”就能够出现:

 

选择一个颜色:点击肯定,系统就会显示颜色的16进制值;点击“转换”

 

 

选中的颜色就可被计算出GPU的颜色值,如上例是13507;

您就可使用SCC(1,13507);命令将1号颜色设置成刚才选择的颜色;

 

 

 

 

6、 截取汉字点阵

系统支持十二、16点阵的全GB2312的字库,含符号区;所以十二、16点阵无需使用软件截取能够直接使用,可是2四、3二、4八、64点阵须要使用GpuMaker进行点阵的截取转换;

启动GpuMaker 进入:“字体点阵”

 

能够看到4种字体分全角汉字和半角字符共8类,咱们以32点阵汉字为例讲述使用方法:

 

第一步:点击点阵序号3后面的栏目,进入32点阵汉字的编辑状态:

 

此时,字体编辑区可选;32点阵那一行后面的状态变为“编辑中”;

 

第二步:选择字模的属性。

点击“字体”按钮选择相应的字体,点击“测试位置”,右边的显示区就能够显示汉字的点阵:

 

在测试汉字选择上,咱们通常选择“薄、餐”等复杂汉字,以避免出界;

若是汉字较小,能够增大图中“大小:”后面34的值,汉字就会放大,反之缩小;

若是汉字偏向一边,可使用 上下左右 按钮进行调整,使汉字尽量大的填满方框;

将须要显示的汉字放到“汉字及字符”输入框中,无需查重,系统会自动查重,能够直接输入须要显示的每句话;

调整完成以后;点击“设置”按钮,将设置信息存好;

依次设置完别的字体;当设置半角字体的时候,须要注意:

一、半角能够经过“大小:”标签后的2个参数设置横宽比,这点不一样于汉字,汉字只认后一个参数;测试的字符通常使用W等超宽字符;

二、选择半角字体的时候,若是要显示所有字母,建议找等宽字体,不然很难调比如例;

 

所需的字体能够百度下字体资源网站获得;

 

第三步:生产点阵;

 

点击“生产全部抽取式汉字数据”,系统就会将全部汉字循环一边,生成数据;

 

第四步:上传数据到GPU串口液晶屏

回到串口命令界面,使用USB-TTL串口线接上GPU模块,而后点击“链接”,再点击“上传24~64点阵字库”;如图,系统将字库上传到GPU模块,完成界面如上图;

 

而后发送命令:

CLS(0);

DS32(10,10,'串口液晶屏',1);

发送完成以后界面:

 

此时液晶屏显示:

 

7、 自定义图形

GpuMaker目录以下:

进入pic目录,选择缩略图显示:

 

这样很容易看出图形对应的序号;

添一张图进去:

 

 

使用图形处理软件,将图缩到220*176点如下,若是是别的格式的图,能够用图形处理软件转换下;

启动 GpuMaker,进入:图形处理页面:

 

点击“生产所有图片的数据”按钮,系统自动将pic目录下的全部图片处理好;

进入“串口命令”界面,连上串口,点击“上传图形信息”按钮,系统将图片信息传入GPU:

 

 

输入命令:

CLS(0);

PIC(0,0,9);

 

液晶屏显示:

 

8、 使用批界面

咱们使用的单片机,大多数都不能提供充足的内存,所以对于复杂一些的UI有时就得考虑内存方面的问题,所以,能不能像DOS下批处理同样,将一群复杂的UI界面语句组合起来,这就是批界面;

 

在这个界面,右边就是批界面,系统容许有127个批界面,点击右边序号后面的格子,就能够修改描述以及批界面的语句,点击存入列表,就能够将批界面语句存入数据库;点击“上传页面信息”就能够将批界面语句传入GPU中;

使用的时候,可使用串口传入命令:SPG(批界面序号);便可显示该界面,无需将复杂的UI语句放置在单片机内存,再用串口传到GPU;

另外:序号为1的批界面咱们称之为HELLO界面,即GPU上电后当即显示的第一界面,所以此界面须要设计为产品的名称,公司的LOGO之类的,上电后,第一界面会显示10秒中,在这10秒钟内,主系统的单片机须要向GPU传送第一条指令,不然GPU就会进入演示模式,挨个将批界面依次显示,直到接收到串口指令;

 

技巧:

一、任何一个界面都分为背景元素和前台元素,背景元素是从界面创立起就一成不变的,所以很是适合放在批界面中;显示界面的时候,先使用批界面显示背景界面,再由串口指令刷新前台数据显示;

二、批界面中能够不加CLS清屏指令,这样可使用多个批界面组合成一个更复杂的UI界面,这种状况下,某几个批界面能够成为某个背景界面的前台元素;好比:锂电池充电界面,左侧是充电数据,右侧是充电进度数据,咱们可使用另一个批界面将右侧换成电池的图形,显示电池容量;

三、第一个批页面含有初始参数的设置,好比波特率的调整,详见串口波特率调整一节;

9、 界面示例

 

 

以上界面使用:

CLS(15);

BOX(0,0,219,175,15);

BOX(1,1,218,174,0);

BOXF(2,2,217,17,3);

PL(2,18,218,18,0);

SBC(3);

DS12(60,4,'菜单演示界面',15);

SBC(15);

PIC(20,40,1);DS12(25,75,'电压',0);

PIC(70,40,2);DS12(75,75,'电流',0);

PIC(120,40,3);DS12(125,75,'充电',0);

PIC(170,40,4);DS12(175,75,'输入',0);

PIC(20,110,5);DS12(25,145,'输出',0);

PIC(70,110,6);DS12(75,145,'测试',0);

PIC(120,110,7);DS12(125,145,'关闭',0);

PIC(170,110,8);DS12(175,145,'设置',0);

 

10、 接单片机

 

接法很是简单,如图接好便可;

TTL电平是0~5V的电平,所以TTL串口不存在5V和3.3V单片机电平转换的问题,能够直接接入使用;但不可直接与RS232的串口接入,由于RS232的串口电平标准是12V以上,直接接入会烧掉GPU上的单片机;

 

在程序驱动来讲,全部的单片机程序对于发送串口指令无在意就三个要点:

一、初始化串口,因为目前GPU只支持统一的115200的串口波特率,所以初始化得初始化成此波特率,其他的参数均为默认;不熟悉的话,能够按照串口助手默认参数定;

二、将一个BYTE发送到串口发送端;

三、判断发送标示等待发送结束,结束后继续发送下一个字节;

所以,对于STM32来讲可使用下面的语句:

 1 GpuSend("CLS(13);BOX(0,0,219,175,15);BOX(1,1,218,174,0);BOXF(2,2,217,17,3);PL(2,18,218,18,0);\r\n");
 2  
 3 void GpuSend(char * buf1)
 4 {  u8 i=0;
 5    while (1)
 6    {  if (buf1[i]!=0)
 7      {  USART_SendData(USART1, buf1[i]);  //发送一个byte到串口
 8         while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET){}; //等待发送结束
 9         i++;
10      }
11      else return;
12    }

其余单片机请参考单片机手册自行书写相应语句;通常来讲单片机对串口编程的例子是不少的,能够baidu下或直接参考开发板例程;

 

【C语言参考】:很多用户都是从汇编语言转到C语言的,对于C语言的字符串处理彻底没有概念,有很多用户都问:AD获取的电压值如何用串口屏显示的问题,在这里统一回答下:

要解决这个问题,要使用C语言的sprintf这个语句,具体语句的详细内容能够自行百度下,这里仅提供简单使用方法:

  1. sprintf 是须要  stdio.h  来声明的,所以须要在程序开头使用:

#include  "stdio.h"

   此函数大约须要3K左右的空间;

  1. 声明一个存储空间,用于存放须要显示的字符串

char buf[100]; //要求命令串长度不超100字符

  1. 假设由AD取回并转换成电压的浮点数 vol

float vol; //vol 变量是浮点数

vol=1.253; //vol为1.253V,可由AD采样在此步赋值

  1. 产生送给gpu的命令字符串

sprintf(buf,"DS12(0,0,'电压:%.3fV',1);\r\n",vol);

  1. 发送给gpu

GpuSend(buf;

 

 

【重要说明】:

一、因为GPU系统容许接收命令组,所以串口传入的名利必须以0x0d,0x0a结束(就是常说的回车换行,字符串中的\r\n),不发送这个,系统会一直等待下去,表现为发送命令不起做用!

二、若是接不通,建议RX TX反一下,有些下载线是指接入单片机端的标志,不是自身标示;

三、GPU执行指令须要时间,所以快速发送指令时,须要按需求区分两种状况处理:

状况一:重要界面确保显示;须要延时足够的时间,或延时到串口收到“OK”字符为止;

状况二:数据刷新,宁丢勿慢;经常使用在UI界面上数值调整,好比有+ - 键,按住不放,数值不停的增长或减小,此时直接不停的发就能够,漏点无所谓,但最后一次传的必定能够正确显示。

 

11、 升级程序

第一步:按本文第一节中将GPU模块与计算机相连;

第二步:认识GPU模块上的和刷机相关的接口:

 

第三步:下载刷机软件:

 

您能够去官网下载V2.6以上的版本,也能够去下我准备的绿色版本:

http://pan.baidu.com/share/link?shareid=1903893858&uk=3204894695

第四步:查看序列号:

在GPUMake中,使用INF命令获取序列号:

1 send:INF; 
2 SN:U53AC89A3 FN:EF14 RC:320X240

U53AC89A3 便是序列号;

备注:早期的版本可能不支持INF命令,能够在接好GPUMake的,短路下GPU上的RESET,GPU即传回:

1 Usart-GPU 2.2B  Ver 0.9b B0617
2 [FFFFXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXFC0]
3 53AC89A3  

其中 53AC89A3  前加U 即U53AC89A3就是序列号;

第五步:下载新ROM;

去网站:http://stm32.sinaapp.com/gpu22b/,有历史的各个版本能够下载,输入序列号,便可下载bin文件;

第六步:拔下USB刷机线(GPUMaker的串口程序可能与刷机软件的自动波特率检测冲突,须要拔下设备,再接入USB刷机线时会初始化串口);跳线帽短路BOOT后,将USB刷机线从新接入电脑;

第七步:运行:

STMicroelectronics flash loader.exe

出现:

点击next:

 

若是不出现此界面,请用镊子短路下RESET,而后再试一次;若是还不行,请检查一下BOOT跳线是否接好;

而后出现:

继续点next:

 

此界面,请按图中设置,选择Download,且文件选择刚下载的ROM文件(BIN后缀的文件),点击next;进度条走2遍,不显示红色进度条的话,表示刷机成功。

第八步:去掉BOOT跳线,从新上电便可启动新版本程序;

 

12、 外形尺寸:

12.2寸外形尺寸:

 

 

定位孔是为ø3mm的螺丝设计,PCB总体长70mm,45mm;

孔间距:横向:63.3mm,垂直:38.2mm; 

液晶屏外框:56X42mm

 

22.8吋外形尺寸

定位孔是为ø3mm的螺丝设计,PCB总体长85mm,45mm;

孔间距:横向:78.5mm,垂直:38.5mm; 

液晶屏外框:72X42.5mm(约,液晶屏为窄边框设计)

 

十3、 量产方案

Usart GPU模块使用的W25Q16存储器数据和MCU芯片无关,所以,当调试好一个样品后,少许的能够经过GPUMaker写入,但量产这个效率很是低;建议直接使用在线编程器在线烧写或从板子上焊下25Q16,直接使用片对片拷贝的方式用编程器烧写;大多数编程器全编程(檫除、写入、校验)能够在20秒内完成;

若是您将串口屏应用到产品上,请先使用标准屏调试,造成产品后,获取存储器数据能够采用OEM订单的方式获取批量产品,甚至可将电路嵌入您产品的PCB中;

 

十4、 QA

1、乱码问题:

程序里书写的汉字到串口屏中,显示乱码,可是英文字母正常;

缘由:你的程序编辑环境是UTF8的,所以写入程序的汉字时UTF8字符集的,须要找到程序编辑器设置为GB2312GBK格式就正常了;或者用外部的编辑器存为普通格式或GBK格式便可;

2、链接没有反应

检测第一串口是否是RX TX接反了;第二检测送的语句是否已0d 0a结尾;

3、上传的数据不正常

表现为:上传的大字体点阵显示不正常或者图片不正常,请上传的时候关注输出:

若是是如图输出:中间出现PGxxxx 就表示正常,若是出现一堆OK,没有PGxxx,表示传输数据中出现丢包致使数据校验不成功,没有写入成功;

SPI Flash是没256字节一页的,咱们每次写1K,也就是4页,连续写时,PG是每次增长4

碰见此问题的童鞋能够换一根TTL线试试,或者换台电脑;TTL线电平较低,不能传输很远距离,且容易受到干扰,通常接线不超过20cm最好;

 

 

 

第二部分:高级应用 

说明:高级应用属于高手使用的部分,这部分会用到比较多的技巧和基本知识,所以咱们没法提供更多客服,请自行参考使用;

 

1、 改变产品的波特率

不少51,52的用户提出,89C51,89C52之类你们熟悉的单片机因为设计过于久远,不能提供115200波特率,最高只能提供9600的波特率,所以,不能使用串口液晶屏;所以对于须要使用9600波特率的用户,须要按下列步骤使用:

  1. 将串口屏刷到V1.0版本,刷机方法参见第一部分 第11节:升级程序;
  2. 下载新版本的GPUmaker,新版本增长了波特率选择;

 

 

 

  1. 1号批界面顶头加U3;(本例中将波特率设置成19200) 三个字母表示设置波特率;

波特率支持:2400,4800,9600,19200,38400,57600,115200,256000 

对应关系:
U0;  //2400
U1;  //4800
U2;  //9600
U3;  //19200
U4;  //38400
U5;  //57600
U6;  //115200
U7;  //256000

 

U3; 请务必第一行顶头书写;

请不要忘记点击:,而后点击

将设置好的上传到GPU

 

  1. 从新给串口屏GPU上电,此时开机界面的序列号后面显示:B:19200  表示当前波特率为19200;此时用单片机的19200的串口就能够正常使用GPU串口液晶屏了;
  2. 从新设置了GPU波特率了,相应的GPUMaker程序也必须使用新的波特率才能正常连通;
  3. 若是波特率设置的较高,超出了电脑TTL串口的波特率限制,没法使用GPUMaker连通以下降波特率,请使用刷机软件刷回0.9版,0.9版本固定波特率115200
  4. 9600下,gpuMaker传输图形等大量数据须要花费更长的时间,请作好内心准备;

 

【重点强调:】U3;不是命令,由于你不能在已经按115200波特率链接下的串口用串口命令修改波特率,U3;只是一个存储标志,GPU是在开机的时候检测这个标志,而后按标志对应的波特率初始化串口,所以须要上传批页面才能起效;

2、 关于asc8 点阵问题

当您升级为V1.0后,对于220X176的版本,会发如今DS16输出英文字符的时候会显示空白方框,此现象为asc8X16点阵缺失致使,解决方法是:

  1. 将新版本的gpumake.exe 覆盖原有目录下的gpumaker.exe;
  2. 将新版本work目录下的asc文件拷入源gpumake/work/ 目录下
  3. 点击:
  4. 点击:

asc8X16点阵数据上传

  1. 重启GPU串口屏

 

3、 关于Arduino如何使用串口屏资料

  

      软件

      串口屏

      厂家

 

  END!

 

欢迎你们一块儿交流 ,分享程序员励志故事。 幸福的程序员 QQ群:幸福的程序员
相关文章
相关标签/搜索