Arduino驱动串口屏(入门)-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 16623|回复: 6

Arduino驱动串口屏(入门)

[复制链接]
发表于 2018-6-8 22:36 | 显示全部楼层 |阅读模式
   给Arduino UNO挂上一个彩屏是一件高大上的事情,因为很多产品都需要用显示屏来显示参数和做用户交互界面,如果用1602这类显示屏,开发出来的产品档次就没那么高,于是从网上找了一些显示屏,比如尺寸在1.8~2.8寸之间的小彩屏,价格还是比较亲民,但我发现使用UNO来驱动会很麻烦:需要写初始参数、设定BLOCK等底层函数、如果要显示字体,还得自己做软字库,更要命的是,写个图片什么的,还得找个NorFlash才能存得下(一张240*320分辨率的图片就占用了15360000字节,放在的UNO的主控FLASH空间是吃不消的)。最后我选择了一款2.4寸的串口屏,分辨率240*320,内置字库和图片存储空间,使用UART口二线驱动,下面是实物图。

微信图片_20180608220208.jpg                          微信图片_20180608220213.jpg

根据串口屏厂家提供的资料,完成如下的软硬件连接:
1.     接线原理

①、厂商提供接线原理
无标题.png
②、实际接线方式
微信图片_20180608221249.jpg


2.     波特率设置

①、厂家提供的Arduino上电串口配置方式
1.png
、Arduino上电设置
5.png

3.     如何显示背景图片

①、使用串口屏厂家提供的软件工具( 配合市面上通用的USB转TTL的硬件工具)将背景图片写入到串口屏的FLASH存储空间中,背景图片(绝对地址:2097152,偏移地址:0)

2.png

②、通过FSIMG命令,可以将写入的背景图片调出来,显示在屏幕指定的位置
3.png

4.     如何显示中英文字符

由于2.4寸串口模块出厂的时候自带中英文字库(字库大小分别为:16点阵大小、24点阵大小、32点阵大小、48点阵大小),因此,用下面的命令进行调用,如24点阵字体:

4.png

5.     如何在串口屏上面显示变化的参数:
由于这个串口屏是使用字符串模块发送命令的,如果要显示变量的话,需要结合sprintf函数进行转换如:

[mw_shl_code=c,true]
unsigned char v;
char buf[64];
   for(v=0;v<60;v++)
   {
    sprintf(buf,"DCV32(120,240,%2d,19);\r\n",v);
    Serial.write(buf);
              delay(100);
         }
[/mw_shl_code]





工程代码:
[mw_shl_code=c,true]#include <string.h>
#include <stdlib.h>
char buf[64];
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);
   }

}[/mw_shl_code]

显示效果图:

1.

1.

注意事项:
1.     串口屏使用的串口是和下载程序的串口是共用的,因此,在下载程序的时候,一定要拔掉串口屏以确保程序能够正常的下载进去。

2.     串口屏能够支持GB2312的中文字库,但由于Arduino编译器不支持GB2312,因此在编译器里面输入的中文字符串下载到Arduino会显示乱码,但可以通过直接输入GB2312编码的方式进行处理。


串口屏资料.zip

700.18 KB, 下载次数: 217

uart_module_demo.zip

775 Bytes, 下载次数: 175

发表于 2018-6-17 14:26 来自手机 | 显示全部楼层
arduino啥时候能支持gbk编码,也就没白瞎大家的热情
发表于 2019-5-26 12:24 | 显示全部楼层
如何显示中文呢?直接输入汉字的GB2312 16进制的编码吗?好像这样还是无法显示汉字
发表于 2021-5-20 17:24 | 显示全部楼层
记录下,慢慢消化
发表于 2022-1-7 09:57 | 显示全部楼层
t3486784401 发表于 2018-6-17 14:26
arduino啥时候能支持gbk编码,也就没白瞎大家的热情

现在铭正同创公司的ATF串口屏,可以把ARDUINO的UFT8编码,直接转成GB码显示。很方便,具体可以看下这个帖子:https://www.arduino.cn/thread-106488-1-1.html

也可以去:mzlcd.taobao.com官方站下载资料。
发表于 2022-1-7 09:59 | 显示全部楼层
goodstudy 发表于 2019-5-26 12:24
如何显示中文呢?直接输入汉字的GB2312 16进制的编码吗?好像这样还是无法显示汉字 ...

这个问题也困惑了我很久,后来铭正同创的ATF彩屏把这个问题解决了。



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

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 09:41 , Processed in 0.114712 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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