嵌入式Linux主板EM9x60作为一种高效、低成本的产品解决方案,专门针对小型的单色LCD显示模块(分辨率通常在128×64至320×240),设计了一套通用的汉字及图形显示接口函数。这些API函数封装为静态库libLCD_API.a,以C的方式提供给客户,以方便客户的使用。
EM9x60提供的LCD_API函数库包括有两个文件:LCD_API.H和libLCD_API.a。该函数库目前支持的LCD屏类型包括有:
LCD控制器类型 |
显示分辨率 |
简要说明 |
KS0108 | 128×64 | 最常用的LCD模块 |
T6963C | 240×128 | 具有较大的显示窗口 |
SED1335 | 320×240 | |
KS0108 | 192×64 | |
UC1698U | 160×160 | 电力集抄终端标准显示屏 |
在头文件LCD_API.H中的对应定义如下。
#define LCD_12864 1 // LCD 128×64 KS0108控制器
#define LCD_2401282 // LCD 240×128 T6963C控制器
#define LCD_320240 3 // LCD 320×240 SED1335控制器
#define LCD_19264 4 // LCD 192×64 KS0108控制器
#define LCD_160160 5 // LCD 192×64 UC1698U控制器
LCD_API函数库提供了一系列对LCD屏进行画点、画线、画Bar条以及字符串(包括汉字和西文)显示的接口函数,一共包括了14个函数,其中的汉字支持为标准一级全汉字,为16×16点阵字模或者12X12点阵汉字字模,西文(字母、数字和符号)为8×14点阵字模,这两个字模文件分别为cclib、cclib12.fnt、ascii.chr,放置在EM9x60嵌入式Linux主板的根文件系统“/lib”目录中。
在各个功能API函数中,特别是字符串显示函数LCD_WriteString( ),对于显示16点阵的汉字,为了加快显示的速度,实现的方式是通过写一个字节(writebyte)来实现的,所以客户在调用这些函数时所定义的坐标位置最好是8的倍数。如果客户需要显示一些特殊字体的字符,可以利用LCD_API中的画点函数来实现专门的特殊字符显示功能。
下面以Step1_LCDTest为例,介绍利用Sourcery G++工具进行应用程序开发时,如何使用LCD_API函数库来实现对LCD的显示操作。
首先需要在应用工程项目文件Step1_LCDTest中导入LCD_API函数库的这两个文件:LCD_API.H和libLCD_API.a。在Sourcery G++ IDE下导入不仅仅是将这两个文件加入到项目工程中,同时也会把这两个文件复制到项目工程所在的目录下。
然后还需要设置应用工程(Step1_LCDTest)的编译属性,指定编译链接的库文件名称和路径libLCD_API.a,设置的方法如下:
在Project Explorer视窗下,选择Step1_LCDTest工程文件,然后点击鼠标右键,选择Properties项,在窗口中选择C/C++ Build -> Settings -> Tool Settings -> Sourcery G++ C++ Linker -> Libraries,如图5-1所示。其中的一个窗口用于指定库文件的名称,Linux静态链接库命名的方式为lib+name.a,所以此处需要输入库文件的名称应该只是name,即LCD_API;一个用于指定库文件所在的路径。
选择库文件
在Step1_LCDTest中Test_LCD12864.cpp提供了一个调用LCD_API中相关函数进行LCD显示的示例,以下为测试代码:
#include
#include
#include
#include
#include 'lcd_api.h'
int main( )
{
int x, y;
char BufStr[200];
// 对LCD屏进行初始化操作
LCD_Init( LCD_12864 );
// 设置为异或模式
LCD_SetMode( 1 ); // set to XOR mode
// 居中显示中文、字符
strcpy( BufStr, '** 欢迎测试 **' );
x = (128-strlen(BufStr)*8)/2;
y = 8;
LCD_WriteString( x, y, BufStr, TEXT_COLOR );
strcpy( BufStr, '嵌入式网络模块' );
x = (128-strlen(BufStr)*8)/2;
y = 24;
LCD_WriteString( x, y, BufStr, BK_COLOR ); // 反显
sleep( 1 );
// 画线
LCD_DrawLine( 0, 42, 127, 42, TEXT_COLOR );
LCD_DrawLine( 0, 63, 127, 63, TEXT_COLOR );
// 画曲线
for( x=0; x<128; x++ )
{
y = 53 - 10.0*sin( 2.0*M_PI*x/24.0 );
LCD_PutPixel( x, y, TEXT_COLOR );
}
sleep( 1 );
for( x=0; x<128; x++ )
{
y = 53 - 10.0*sin( 2.0*M_PI*x/24.0 );
LCD_PutPixel( x, y, TEXT_COLOR );
}
sleep( 1 );
LCD_FillBar( 0, 42, 127, 63, BK_COLOR );
LCD_FillBar( 0, 42, 127, 63, TEXT_COLOR );
LCD_FillBar( 0, 42, 127, 63, BK_COLOR );
// 退出LCD显示
LCD_DeInit( );
return 0;
}
-
Linux
+关注
关注
87文章
11354浏览量
210670 -
嵌入式主板
+关注
关注
7文章
6087浏览量
35675
发布评论请先 登录
相关推荐
英创信息技术嵌入式工控主板EM9160的PWM功能使用方法
英创信息技术工控主板EM9160L的低功耗应用介绍
英创信息技术嵌入式Linux串口通讯的C++设计概述
![<b class='flag-5'>英</b><b class='flag-5'>创</b><b class='flag-5'>信息技术</b><b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b>串口通讯的C++设计概述](https://file.elecfans.com/web1/M00/A7/DC/o4YBAF2KEeWADwppAAAQHzzxKZU022.gif)
英创信息技术工控主板EM9160对红外通讯用途介绍
![<b class='flag-5'>英</b><b class='flag-5'>创</b><b class='flag-5'>信息技术</b>工控<b class='flag-5'>主板</b><b class='flag-5'>EM9160</b>对红外通讯用途<b class='flag-5'>介绍</b>](https://file.elecfans.com/web1/M00/A8/30/pIYBAF2KEmeAbhWnAAArwSCS8EM127.jpg)
英创信息技术嵌入式Linux主板EM9160支持ISO7816通讯协议介绍
![<b class='flag-5'>英</b><b class='flag-5'>创</b><b class='flag-5'>信息技术</b><b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b><b class='flag-5'>主板</b><b class='flag-5'>EM9160</b>支持ISO7816通讯协议<b class='flag-5'>介绍</b>](https://file.elecfans.com/web1/M00/A7/DD/o4YBAF2KEfWAJolvAAAIiW9aU7k624.gif)
英创信息技术工业主板EM9160介绍
英创信息技术嵌入式Linux工控板EM9160介绍
![<b class='flag-5'>英</b><b class='flag-5'>创</b><b class='flag-5'>信息技术</b><b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b>工控板<b class='flag-5'>EM9160</b><b class='flag-5'>介绍</b>](https://file.elecfans.com/web1/M00/B3/2A/o4YBAF4dLg6APjWiAADIc_PIHEc258.png)
英创信息技术嵌入式Linux工控板EM9160介绍
英创信息技术工控主板EM9160介绍
![<b class='flag-5'>英</b><b class='flag-5'>创</b><b class='flag-5'>信息技术</b>工控<b class='flag-5'>主板</b><b class='flag-5'>EM9160</b><b class='flag-5'>介绍</b>](https://file.elecfans.com/web1/M00/B3/82/pIYBAF4dMoSATTc0AACWceAx29U551.png)
评论