Arduino驱动串口屏(入门)
给Arduino UNO挂上一个彩屏是一件高大上的事情:),因为很多产品都需要用显示屏来显示参数和做用户交互界面,如果用1602这类显示屏,开发出来的产品档次就没那么高,于是从网上找了一些显示屏,比如尺寸在1.8寸~2.8寸之间的小彩屏,价格还是比较亲民,但我发现使用UNO来驱动会很麻烦:需要写初始参数、设定BLOCK等底层函数、如果要显示字体,还得自己做软字库,更要命的是,写个图片什么的,还得找个NorFlash才能存得下(一张240*320分辨率的图片就占用了15360000字节,放在的UNO的主控FLASH空间是吃不消的)。最后我选择了一款2.4寸的串口屏,分辨率240*320,内置字库和图片存储空间,使用UART口二线驱动,下面是实物图。根据串口屏厂家提供的资料,完成如下的软硬件连接:1. 接线原理
①、厂商提供接线原理②、实际接线方式
2. 波特率设置
①、厂家提供的Arduino上电串口配置方式②、Arduino上电设置
3. 如何显示背景图片
①、使用串口屏厂家提供的软件工具( 配合市面上通用的USB转TTL的硬件工具)将背景图片写入到串口屏的FLASH存储空间中,背景图片(绝对地址:2097152,偏移地址:0)
②、通过FSIMG命令,可以将写入的背景图片调出来,显示在屏幕指定的位置
4. 如何显示中英文字符
由于2.4寸串口模块出厂的时候自带中英文字库(字库大小分别为:16点阵大小、24点阵大小、32点阵大小、48点阵大小),因此,用下面的命令进行调用,如24点阵字体:
5. 如何在串口屏上面显示变化的参数:由于这个串口屏是使用字符串模块发送命令的,如果要显示变量的话,需要结合sprintf函数进行转换如:
unsigned char v;
char buf;
for(v=0;v<60;v++)
{
sprintf(buf,"DCV32(120,240,%2d,19);\r\n",v);
Serial.write(buf);
delay(100);
}
工程代码:#include <string.h>
#include <stdlib.h>
char buf;
unsigned char v;
unsigned char c;
void setup(){
Serial.begin(115200);
}
void loop(){
Serial.write("MODE_CFG(2);FSIMG(0,0,0,240,320,0);\r\n");// 加载logo图
delay(400);
Serial.write("SBC(4);DC24(15,0,'2.4 Display Module',1);");
delay(300);
Serial.write("DC24(40,28,'Res:240*320',46);");
delay(200);
Serial.write("DC24(30,62,'Interface:Uart',41);\r\n");
delay(200);
Serial.write("DC32(30,240,'Time:',1);\r\n");
delay(200);
Serial.write("SBC(0);DC32(172,240,'S',1);\r\n");
delay(200);
// Serial.write("DC48(30,272,'Page',1,0);\r\n");
//delay(1000);
for(v=0;v<60;v++)
{
sprintf(buf,"DCV32(120,240,%2d,19);\r\n",v);
Serial.write(buf);
delay(100);
}
}
显示效果图:
注意事项:1. 串口屏使用的串口是和下载程序的串口是共用的,因此,在下载程序的时候,一定要拔掉串口屏以确保程序能够正常的下载进去。
2. 串口屏能够支持GB2312的中文字库,但由于Arduino编译器不支持GB2312,因此在编译器里面输入的中文字符串下载到Arduino会显示乱码,但可以通过直接输入GB2312编码的方式进行处理。
arduino啥时候能支持gbk编码,也就没白瞎大家的热情 如何显示中文呢?直接输入汉字的GB2312 16进制的编码吗?好像这样还是无法显示汉字 记录下,慢慢消化 学习一下。 t3486784401 发表于 2018-6-17 14:26
arduino啥时候能支持gbk编码,也就没白瞎大家的热情
现在铭正同创公司的ATF串口屏,可以把ARDUINO的UFT8编码,直接转成GB码显示。很方便,具体可以看下这个帖子:https://www.arduino.cn/thread-106488-1-1.html
也可以去:mzlcd.taobao.com官方站下载资料。 goodstudy 发表于 2019-5-26 12:24
如何显示中文呢?直接输入汉字的GB2312 16进制的编码吗?好像这样还是无法显示汉字 ...
这个问题也困惑了我很久,后来铭正同创的ATF彩屏把这个问题解决了。
https://www.arduino.cn/data/attachment/forum/202112/17/105600aj4dg299hyck9mim.jpg
https://www.arduino.cn/data/attachment/forum/202112/17/105600xlv70rpy7zeu7lif.jpg
https://www.arduino.cn/data/attachment/forum/202112/17/105600r831z3qk0qwcp41d.jpg
页:
[1]