串口屏之------Usart GPU 使用手册
Usart GPU 使用手册
文档更新日期 |
更新内容 |
2014-9-10 |
C编程sprintf问题 |
2014-8-8 |
版本程序1.0,升级了自定义波特率部分 |
------ |
原始版本 |
第一部分:基础应用
概述:
Usart 是串口的意思,GPU 是图形处理器的意思,产品的含义是做一个单片机使用的专用图形处理器,或者称之为串口液晶显示模块。
一、 接线
开箱后,可以将串口输出的4根引脚焊上排插,使用杜邦线将串口接到USB转TTL线上,即可接到电脑USB口上上电,屏幕即会显示第一屏的Hello界面;
说明下:照片中是我调试用的,因此增加了RESET按钮和运行程序刷机切换的BOOT自锁开关,正常使用和产品中不带这两个东东;
主板中使用XC6206接到5V的,6206是一个低压差稳压器,输出3.3V,160mV的低压差,让板子在3.46V即可正常供电,实际使用中,电压低到3V,6206也可以正常输出电压但是不稳压;由于STM32 最低2V即可工作,因此本板子可以直接接单节锂电池即可工作;
二、 上电,观看演示
这是上电后的Hello界面,俗称欢迎界面,此界面属于第一个批界面,可以有上位机程序在PC下自由设计,用户可以在这个界面上设计自己产品的名字和公司的图标;
开机界面十秒种,如果收不到串口命令,就会进入演示状态。正常的量产之后,单片机需要在上电十秒内给串口液晶屏发送指令,只要一发送指令,就自动的进入串口命令状态。
三、 接GpuMaker
将USB转TTL接入计算机,注意由于程序的原因串口号不能超过10,即COM1~COM9方可使用;
从:
http://pan.baidu.com/share/link?shareid=1322038799&uk=3204894695
下载GpuMaker程序,程序是一个ZIP包,绿色软件,解压到硬盘中即可使用;
如果您有多个使用串口屏的项目,请把此软件解压多份,每份一个项目;
运行解开目录中的GpuMaker.exe,系统进入:
选择,左上角的串口号,点击“打开按钮”,串口连接成功;此时点击“发送指令”,液晶屏即可显示表示连接正常;
四、 命令表
命令 |
说明 |
示例 |
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 |
设置屏幕显示的方向;n为0~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; |
五、 定义颜色
颜色是由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号颜色设置成刚才选择的颜色;
六、 截取汉字点阵
系统支持12、16点阵的全GB2312的字库,含符号区;因此12、16点阵无需使用软件截取可以直接使用,但是24、32、48、64点阵需要使用GpuMaker进行点阵的截取转换;
启动GpuMaker 进入:“字体点阵”
可以看到4种字体分全角汉字和半角字符共8类,我们以32点阵汉字为例讲述使用方法:
第一步:点击点阵序号3后面的栏目,进入32点阵汉字的编辑状态:
此时,字体编辑区可选;32点阵那一行后面的状态变为“编辑中”;
第二步:选择字模的属性。
点击“字体”按钮选择相应的字体,点击“测试位置”,右边的显示区就可以显示汉字的点阵:
在测试汉字选择上,我们一般选择“薄、餐”等复杂汉字,以免出界;
如果汉字较小,可以增大图中“大小:”后面34的值,汉字就会放大,反之缩小;
如果汉字偏向一边,可以使用 上下左右 按钮进行调整,使汉字尽可能大的填满方框;
将需要显示的汉字放到“汉字及字符”输入框中,无需查重,系统会自动查重,可以直接输入需要显示的每句话;
调整完成之后;点击“设置”按钮,将设置信息存好;
依次设置完别的字体;当设置半角字体的时候,需要注意:
1、半角可以通过“大小:”标签后的2个参数设置横宽比,这点不同于汉字,汉字只认后一个参数;测试的字符一般使用W等超宽字符;
2、选择半角字体的时候,如果要显示全部字母,建议找等宽字体,否则很难调好比例;
所需的字体可以百度下字体资源网站得到;
第三步:生产点阵;
点击“生产所有抽取式汉字数据”,系统就会将所有汉字循环一边,生成数据;
第四步:上传数据到GPU串口液晶屏
回到串口命令界面,使用USB-TTL串口线接上GPU模块,然后点击“连接”,再点击“上传24~64点阵字库”;如图,系统将字库上传到GPU模块,完成界面如上图;
然后发送命令:
CLS(0);
DS32(10,10,'串口液晶屏',1);
发送完成之后界面:
此时液晶屏显示:
七、 自定义图形
GpuMaker目录如下:
进入pic目录,选择缩略图显示:
这样很容易看出图形对应的序号;
添一张图进去:
使用图形处理软件,将图缩到220*176点以下,如果是别的格式的图,可以用图形处理软件转换下;
启动 GpuMaker,进入:图形处理页面:
点击“生产全部图片的数据”按钮,系统自动将pic目录下的所有图片处理好;
进入“串口命令”界面,连上串口,点击“上传图形信息”按钮,系统将图片信息传入GPU:
输入命令:
CLS(0);
PIC(0,0,9);
液晶屏显示:
八、 使用批界面
我们使用的单片机,大多数都不能提供充足的内存,因此对于复杂一些的UI有时就得考虑内存方面的问题,因此,能不能像DOS下批处理一样,将一群复杂的UI界面语句组合起来,这就是批界面;
在这个界面,右边就是批界面,系统允许有127个批界面,点击右边序号后面的格子,就可以修改描述以及批界面的语句,点击存入列表,就可以将批界面语句存入数据库;点击“上传页面信息”就可以将批界面语句传入GPU中;
使用的时候,可以使用串口传入命令:SPG(批界面序号);即可显示该界面,无需将复杂的UI语句放置在单片机内存,再用串口传到GPU;
另外:序号为1的批界面我们称之为HELLO界面,即GPU上电后立即显示的第一界面,因此此界面需要设计为产品的名称,公司的LOGO之类的,上电后,第一界面会显示10秒中,在这10秒钟内,主系统的单片机需要向GPU传送第一条指令,否则GPU就会进入演示模式,挨个将批界面依次显示,直到接收到串口指令;
技巧:
1、任何一个界面都分为背景元素和前台元素,背景元素是从界面创立起就一成不变的,因此非常适合放在批界面中;显示界面的时候,先使用批界面显示背景界面,再由串口指令刷新前台数据显示;
2、批界面中可以不加CLS清屏指令,这样可以使用多个批界面组合成一个更复杂的UI界面,这种情况下,某几个批界面可以成为某个背景界面的前台元素;比如:锂电池充电界面,左侧是充电数据,右侧是充电进度数据,我们可以使用另外一个批界面将右侧换成电池的图形,显示电池容量;
3、第一个批页面含有初始参数的设置,比如波特率的调整,详见串口波特率调整一节;
九、 界面示例
以上界面使用:
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);
十、 接单片机
接法非常简单,如图接好即可;
TTL电平是0~5V的电平,因此TTL串口不存在5V和3.3V单片机电平转换的问题,可以直接接入使用;但不可直接与RS232的串口接入,因为RS232的串口电平标准是12V以上,直接接入会烧掉GPU上的单片机;
在程序驱动来说,所有的单片机程序对于发送串口指令无在乎就三个要点:
1、初始化串口,由于目前GPU只支持统一的115200的串口波特率,因此初始化得初始化成此波特率,其余的参数均为默认;不熟悉的话,可以按照串口助手默认参数定;
2、将一个BYTE发送到串口发送端;
3、判断发送标示等待发送结束,结束后继续发送下一个字节;
因此,对于STM32来说可以使用下面的语句: