探索S5U13781R01C100 Shield图形库:从安装到应用

电子说

1.4w人已加入

描述

探索S5U13781R01C100 Shield图形库:从安装到应用

在电子设计领域,图形显示功能的实现一直是一个重要的环节。今天,我们将深入探讨Seiko Epson的S5U13781R01C100 Shield图形库,它能极大地简化图形和文本显示到连接在S5U13781R01C100 Shield上的面板的过程。

文件下载:S5U13781R01C100.pdf

一、引言

S5U13781R01C100 Shield图形库是专门为Arduino Due微控制器板设计的软件库。Arduino Due是一款广受欢迎的开发板,而这个图形库为其增添了强大的图形显示能力。该库可以让我们轻松地在连接的LCD面板上显示图形和文本。同时,S5U13781R01C100 Shield TFT板还可用于评估低成本的S1D13L01 LCD控制器,它与S1D13781有相似的功能集,但也存在一些差异。

S1D13781与S1D13L01的对比

特性差异 S1D13L01 S1D13781
显示接口 仅支持有源TFT显示器 支持无源STN和有源TFT显示器
BitBLT支持 软件BitBLT 硬件BitBLT引擎(移动BitBLT、实心填充BitBLT)
温度范围 -40至85°C -40至85°C或 -40至105°C
封装 QFP15 128引脚 QFP15 100引脚

二、系统要求

在安装S5U13781R01C100 Shield图形库之前,我们需要准备好以下硬件和软件:

  1. 硬件:S5U13781R01C100 Shield TFT板、Arduino Due控制器板、LCD面板(默认配置为480x272 @ 24bpp)、Micro USB电缆(为Arduino Due供电并可用于串口调试)。
  2. 软件:Arduino Sketch IDE软件v1.6.2或更高版本、S5U13781R01C100图形库包。

需要注意的是,Arduino Sketch IDE软件需要在Windows、Mac OS X或Linux平台上运行。

三、安装步骤

硬件安装

  1. 连接S5U13781R01C100 Shield到Arduino Due
    • 将S5U13781R01C100 Shield的J1 Header连接到Arduino Due的“Power” Socket。
    • 将S5U13781R01C100 Shield的J2 Header连接到Arduino Due的SPI Socket。
    • 将S5U13781R01C100 Shield的J3 Header连接到Arduino Due的“Digital” (PWML) Socket。
    • 正确对齐两块板,然后轻轻按压,直到引脚完全插入对应的插座。
  2. 连接LCD面板
    • 打开S5U13781R01C100 Shield板上的FPC连接器CN1,方法是轻轻拉动深色标签向板边缘。
    • 将平板电缆滑入连接器CN1。
    • 推动深色标签回到原位关闭连接器。
  3. 连接Arduino Due到开发平台
    • 使用Micro USB电缆将开发平台与Arduino Due的编程端口连接,这样既可以为Arduino Due供电,也可以使用串口监视器进行调试。

软件安装

  1. 安装Arduino Sketch IDE
    • 访问Arduino网站,下载与操作系统兼容的Sketch版本。安装完成后,就可以进行下一步。
  2. 安装Arduino SAM板(包括Due)
    • 在Sketch菜单中点击“Tools->Board->Boards Manager...”,确认“Arduino SAM Boards (32 - bits ARM Cortex - M3)”板包是否安装。如果未安装,安装与Sketch IDE版本匹配的包。
  3. 安装S5U13781R01C100图形库和示例草图
    • 将S5U13781R01C100 Shield图形库的.zip存档解压到开发平台的临时位置。
    • 在Sketch菜单中点击“Sketch->Include Library->Add .ZIP Library...”,选择解压后的“S1d13781.zip”文件进行安装。
    • 确认库是否安装成功,可以点击“Sketch->Include Library”,查看列表底部是否有“S1d13781”条目。
  4. 使用Sketch IDE编译示例草图并上传到Arduino Due
    • 设置Sketch IDE的Board和Port设置。点击“Tools->Board->Arduino Due (Programming Port)”设置Board,点击“Tools->Port->Arduino Due (Programming Port)”设置Port。
    • 打开“781_gltest”示例草图,点击“File->Open…”,选择解压后的示例草图文件夹中的“781_gltest.ino”文件。
    • 点击“Verify”按钮检查代码错误,点击“Upload”按钮将应用程序上传到Arduino Due。

四、使用图形库

修改现有草图

图形库提供了多个示例草图,例如“781_gltest.ino”展示了图形库的一些图形功能,“781_RegisterAccessExample”展示了如何直接读写S1D13781寄存器,“781_MemoryAccessExample”展示了如何直接读写S1D13781内存。要修改草图,只需在Sketch的loop()函数中添加调用图形库函数的新行。例如,要在LCD面板上显示一条从位置(20,20)到位置(100,100)的绿色线,可以添加以下代码:

result = lcdc.drawLine( S1d13781_gfx::window_Main,20,20,100,100,0x0000FF00 );
sleep(2000);

创建新草图

创建新草图时,需要在基本模板中添加以下元素:

#include < SPI.h >
#include < S1d13781_gfx.h >
#include < S1d13781_registers.h >
//create an instance of S1d13781 for us to work with
S1d13781_gfx lcdc;
void setup() {
    //start serial for serial monitor
    Serial.begin(9600);
    //start the S1d13781 library
    lcdc.begin();
    // put your setup code here, to run once:
}
void loop() {
    // put your main code here, to run repeatedly:
}

使用串口监视器

当Arduino Due通过编程端口连接时,可以使用串口监视器。可以通过Sketch工具栏上的“Serial Monitor”按钮或Sketch菜单中的“Tools->Serial Monitor”启动。串口监视器可以显示Arduino Due上运行的应用程序的信息和消息,对于调试修改后的应用程序代码或创建新应用程序非常有帮助。

使用字体

S5U13781R01C100 Shield图形库支持使用可编程字体进行文本绘制。字体依赖于两个组件:一个以.pbm图形文件(二进制)存储的1 bpp图像文件和一个以.pfi文件(二进制)存储的便携式字体索引。图形库包提供了一些示例字体,包括.pbm图像文件和.pfi索引文件。要在草图应用程序中使用字体,可以将二进制.pbm和二进制.pfi文件转换为简单的字节数组,然后在需要时将其传递给S1d13781_gfx::createFont()方法。例如:

extern byte ascii9x13IndexData[]; //test font index data
extern byte ascii9x13ImageData[]; //test font image data
testfont = lcdc.createFont(ascii9x13ImageData, 1453, ascii9x13IndexData, 498);

五、理解图形库

库结构

图形库由以下文件组成:

  1. S1d13781.h:S1d13781类的头文件,包含图形库硬件相关功能的概述和配置SPI接口的常量。
  2. S1d13781.cpp:S1d13781类的源文件,包含访问S1D13781 LCD控制器硬件级功能的方法。
  3. S1d13781_gfx.h:S1d13781_gfx类的头文件,提供图形和文本方法的概述。
  4. S1d13781_gfx.cpp:S1d13781_gfx类的源文件,包含图形和文本显示方法。
  5. S1d13781_init.h:包含用于初始化S1D13781硬件寄存器的值的结构。
  6. S1d13781_registers.h:包含S1D13781硬件寄存器的#define定义,建议在访问寄存器时使用这些定义以避免意外访问未定义的寄存器。
  7. keywords.txt:Arduino Sketch IDE库支持所需的文件,新的类和方法应添加到该文件中。

修改图形库

图形库提供了完整的源代码,允许用户进行定制和修改。建议使用外部代码编辑工具进行修改。安装在Sketch IDE中的图形库可以在“Arduino/libraries/S1d13781”文件夹中直接修改,也可以在“off - tree”修改后重新作为.zip库安装。重新安装时,需要先从“Arduino/libraries”文件夹中移除现有的S1d13781库。

自定义S1D13781初始化值

如果需要自定义S1D13781 LCD控制器的寄存器初始化值,可以更新S1d13781_init.h文件中的结构。可以使用Epson Electronics America网站上的S1d13781windows实用程序“781cfg.exe”生成新的值,然后将生成的S1D13781.h文件中的值更新到S1d13781_init.h文件中,可能需要进行一些小的修改。

六、库参考

图形库分为两个类:S1d13781和S1d13781_gfx。

S1d13781类

该类提供了硬件级支持,包括以下公共方法:

  • S1d13781():类的构造函数。
  • S1d13781::begin():设置SPI接口并配置寄存器。
  • S1d13781::regWrite():向S1D13781寄存器写入一个字(16位无符号整数)。
  • S1d13781::regRead():从S1D13781寄存器读取一个字(16位无符号整数)。
  • S1d13781::regModify():使用位掩码修改S1D13781寄存器的内容。
  • S1d13781::regSetBits():使用位掩码设置S1D13781寄存器中的特定位。
  • S1d13781::regClearBits():使用位掩码清除S1D13781寄存器中的特定位。
  • S1d13781::memWriteByte():向S1D13781视频内存的指定地址偏移写入一个字节(8位)值。
  • S1d13781::memReadByte():从S1D13781视频内存的指定地址偏移读取一个字节(8位)值。
  • S1d13781::memWriteWord():向S1D13781视频内存的指定地址偏移写入一个字(16位)值。
  • S1d13781::memReadWord():从S1D13781视频内存的指定地址偏移读取一个字(16位)值。
  • S1d13781::memBurstWriteBytes():向S1D13781视频内存的指定地址偏移突发写入指定数量的字节(8位)值。
  • S1d13781::memBurstReadBytes():从S1D13781视频内存的指定地址偏移突发读取指定数量的字节(8位)值。
  • S1d13781::memBurstWriteWords():向S1D13781视频内存的指定地址偏移突发写入指定数量的字(16位)值。
  • S1d13781::memBurstReadWords():从S1D13781视频内存的指定地址偏移突发读取指定数量的字(16位)值。
  • S1d13781::lcdSetRotation():设置主层的旋转角度。
  • S1d13781::lcdGetRotation():返回主层的当前旋转角度。
  • S1d13781::lcdSetColorDepth():设置主层的颜色深度。
  • S1d13781::lcdGetColorDepth():返回主层的当前颜色深度。
  • S1d13781::lcdGetBytesPerPixel():返回基于主层颜色深度的每个像素使用的字节数。
  • S1d13781::lcdSetStartAddress():设置主层的内存起始地址。
  • S1d13781::lcdGetStartAddress():返回主层的内存起始地址。
  • S1d13781::lcdSetWidth():设置物理LCD的宽度。
  • S1d13781::lcdGetWidth():返回主层的宽度。
  • S1d13781::lcdSetHeight():设置物理LCD的高度。
  • S1d13781::lcdGetHeight():返回主层的高度。
  • S1d13781::lcdGetStride():返回主层的步幅(每行的字节数)。
  • S1d13781::pipSetDisplayMode():设置PIP窗口的效果(闪烁/淡入淡出)。
  • S1d13781::pipGetDisplayMode():返回PIP窗口的当前效果。
  • S1d13781::pipSetRotation():设置PIP层的旋转角度。
  • S1d13781::pipGetRotation():返回PIP层的当前旋转角度。
  • S1d13781::pipIsOrthogonal():确定主层和PIP层是否具有相同的旋转角度。
  • S1d13781::pipSetColorDepth():设置PIP层的颜色深度。
  • S1d13781::pipGetColorDepth():返回PIP层的当前颜色深度。
  • S1d13781::pipGetBytesPerPixel():返回基于PIP层颜色深度的每个像素使用的字节数。
  • S1d13781::pipSetStartAddress():设置PIP层的内存起始地址。
  • S1d13781::pipGetStartAddress():返回PIP层的内存起始地址。
  • S1d13781::pipSetWidth():设置PIP窗口的宽度。
  • S1d13781::pipGetWidth():返回PIP窗口的宽度。
  • S1d13781::pipSetHeight():设置PIP窗口的高度。
  • S1d13781::pipGetHeight():返回PIP窗口的高度。
  • S1d13781::pipGetStride():返回PIP窗口的步幅(每行的字节数)。
  • S1d13781::pipSetPosition():设置PIP窗口相对于LCD面板左上角的位置。
  • S1d13781::pipGetPosition():获取PIP窗口相对于LCD面板左上角的位置。
  • S1d13781::pipSetFadeRate():设置PIP窗口的闪烁/淡入淡出周期。
  • S1d13781::pipGetFadeRate():返回PIP窗口的当前闪烁/淡入淡出周期。
  • S1d13781::pipWaitForFade():等待当前PIP闪烁/淡入淡出操作完成。
  • S1d13781::pipSetAlphaBlendStep():设置PIP窗口的Alpha混合步长。
  • S1d13781::pipGetAlphaBlendStep():返回PIP窗口的Alpha混合步长。
  • S1d13781::pipSetAphaBlendRatio():设置PIP窗口的Alpha混合比例。
  • **S1d1
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分