友情提示:380元/半年,儿童学编程,就上码丁实验室。
Arduino 以其易用性及强大的程序控制功能已经迅速吸引了国内外众多电子爱好者和产品开发人员的眼球,人们纷纷试水,用它来制作个性化的小产品,同时随着开源硬件成本的不断下调,使用Arduino开发商用的电子产品将成为可能!
本着生命不息,折腾不止的理念,自己也从TB上面买了一个Arduino UNO开发板,开始捣腾一番。
软件介绍篇
软件的安装就不详细说明,其实也非常简单:‘双击’,‘下一步’,直到‘完成’。
安装完成后打开IDE工具,你会发现它的界面是相当的清新动人,不再有复杂的工程管理窗口,单个文件就是一个工程。

当然,要使UNO开发板跑起来,必须保证IDE能够识别到开发板型号(比如我的板子是Arduino Uno)并编译出可供下载的固件,另外必须保证IDE工具和UNO开发板建立好连接(UNO和IDE的连接使用USB 虚拟COM口的方式,即通过USB转TTL的芯片CH340G建立模拟的串口连接)。
点击‘工具’菜单,把上面两个步骤一次设置到位。

注意:COM端口号(COM46)是安装完CH340G驱动后,WINDOWS系统分配给开发板.如果电脑没有安装CH340G的驱动,IDE是无法显示COM端口号,因此在完成上面两步之前必须保证你的系统已经安装了CH340G的驱动.
设置完成后,点击菜单栏下方的→方向箭头,开始编译固件并上传到开发板中,如软件下方的状态栏提示’上传成功’的信息,软硬件设置OK,下面就可以开始撸代码了。

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


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

实际接线方式

2.波特率设置
厂商提供的Arduino上电串口配置方式

UNO 上电设置

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

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

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

5.在串口屏上面显示变化的参数:
由于这个串口屏是使用字符串模块发送命令的,如果要显示变量的话,需要结合sprintf函数进行转换如:
unsigned char v; for(v=0;v<60;v++) { sprintf(buf,"DCV32(120,240,%2d,19);rn",v); Serial.write(buf); delay(100); }
工程代码:
#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);rn");// 加载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);rn"); delay(200); Serial.write("DC32(30,240,'Time:',1);rn"); delay(200); Serial.write("SBC(0);DC32(172,240,'S',1);rn"); delay(200); for(v=0;v<60;v++) { sprintf(buf,"DCV32(120,240,%2d,19);rn",v); Serial.write(buf); delay(100); } }
显示效果图:

注意事项:
- 串口屏使用的串口是和下载程序的串口是共用的,因此,在下载程序的时候,一定要拔掉串口屏以确保程序能够正常的下载进去。
- 串口屏能够支持GB2312的中文字库,但由于Arduino编译器不支持GB2312,因此在编译器里面输入的中文字符串下载到Arduino会显示乱码,但可以通过直接输入GB2312编码的方式进行处理。