原创 嵌入式Linux工控板EM9160的LCD显示编程

2010-7-20 13:24 2934 3 4 分类: MCU/ 嵌入式

嵌入式Linux工控板EM9160的LCD显示


 


嵌入式Linux工控主板EM9160作为一种高效、低成本的产品解决方案,专门针对小型的单色LCD显示模块(分辨率通常在128×64至320×240),设计了一套通用的汉字及图形显示接口函数。这些API函数封装为静态库libLCD_API.a,以C的方式提供给客户,以方便客户的使用。


 


EM9160提供的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_240128                  2                // 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,放置在EM9160嵌入式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,如下图所示。其中的一个窗口用于指定库文件的名称,Linux静态链接库命名的方式为lib+name.a,所以此处需要输入库文件的名称应该只是name,即LCD_API;一个用于指定库文件所在的路径。


选择库文件


 


在Step1_LCDTest中Test_LCD12864.cpp提供了一个调用LCD_API中相关函数进行LCD显示的示例,以下为测试代码:


 


#include <STDIO.H>


#include <STRING.H>


#include <UNISTD.H>


#include <MATH.H>


#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;


}

PARTNER CONTENT

文章评论1条评论)

登录后参与讨论

用户924731 2012-12-24 22:01

我想使用240*64的显示屏(深圳拓普微LM24064FFW),请问EM9160的LCD驱动该如何处理?
相关推荐阅读
用户1552160 2011-01-20 11:12
嵌入式Linux工控板I2C功能应用示例
    I2C总线是一种2线制的主从通讯协议,主要运用于器件之间的数据通讯,在嵌入式系统中得到非常广泛的应用。作为一款高性价比的嵌入式Linux工控板,EM9160的对I2C总线提供了良好的支持,其主...
用户1552160 2011-01-19 12:55
嵌入式Linux工控板中如何同时实现收发GPRS和SMS
    随着移动通讯技术的发展普及,GPRS无线通讯和SMS短信收发越来越多地应用到工业领域的远程数据通讯中。GPSR主要是进行的数据通讯,SMS则是AT指令的操作模式,在不少的无线通讯模块,比如西门...
用户1552160 2010-11-18 10:37
嵌入式Linux工控板GPIO扩展——利用精简ISA总线
1、精简ISA总线GPIO扩展原理        在工业领域,GPIO的应用非常广泛,英利嵌入式Linux工控板上自带有16路GPIO。然而在实际应用中,经常需要多于16路的GPIO作为控制或者数据信...
用户1552160 2010-11-01 10:31
嵌入式Linux工控主板EM9160的PWM功能
        PWM是指一种周期可调、占空比可调的稳定脉冲输出,即通常所说的脉宽调制脉冲信号。这种信号在工业自动控制中有广泛的应用。英利公司的嵌入式Linux工控板EM9160可支持3路独立的PWM...
用户1552160 2010-09-21 09:51
嵌入式Linux工控板EM9160支持红外通讯
       EM9160是一款高性价比的嵌入式Linux工控主板,具有丰富的通讯接口,适合于各种工控领域。在电力电表的应用中,红外通讯是一种非常重要的串口通讯方式,用户可以通过EM9160的串口实现...
用户1552160 2010-09-14 10:24
嵌入式Linux工控板支持ISO7816通讯协议
       在新的国家电网集抄终端相关标准中,规定了通过嵌入式安全控制模块,即通常所说的ESAM芯片,来保证设备数据安全性的方法,而设备主控单元与ESAM芯片采用了广泛应用的ISO7816通讯协议。...
我要评论
1
3
关闭 站长推荐上一条 /4 下一条