嵌入式Linux主板EM9x60作為一種高效、低成本的產(chǎn)品解決方案,專門針對(duì)小型的單色LCD顯示模塊(分辨率通常在128×64至320×240),設(shè)計(jì)了一套通用的漢字及圖形顯示接口函數(shù)。這些API函數(shù)封裝為靜態(tài)庫(kù)libLCD_API.a,以C的方式提供給客戶,以方便客戶的使用。
EM9x60提供的LCD_API函數(shù)庫(kù)包括有兩個(gè)文件:LCD_API.H和libLCD_API.a。該函數(shù)庫(kù)目前支持的LCD屏類型包括有:
LCD控制器類型 |
顯示分辨率 |
簡(jiǎn)要說明 |
KS0108 | 128×64 | 最常用的LCD模塊 |
T6963C | 240×128 | 具有較大的顯示窗口 |
SED1335 | 320×240 | |
KS0108 | 192×64 | |
UC1698U | 160×160 | 電力集抄終端標(biāo)準(zhǔn)顯示屏 |
在頭文件LCD_API.H中的對(duì)應(yīng)定義如下。
#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函數(shù)庫(kù)提供了一系列對(duì)LCD屏進(jìn)行畫點(diǎn)、畫線、畫Bar條以及字符串(包括漢字和西文)顯示的接口函數(shù),一共包括了14個(gè)函數(shù),其中的漢字支持為標(biāo)準(zhǔn)一級(jí)全漢字,為16×16點(diǎn)陣字模或者12X12點(diǎn)陣漢字字模,西文(字母、數(shù)字和符號(hào))為8×14點(diǎn)陣字模,這兩個(gè)字模文件分別為cclib、cclib12.fnt、ascii.chr,放置在EM9x60嵌入式Linux主板的根文件系統(tǒng)“/lib”目錄中。
在各個(gè)功能API函數(shù)中,特別是字符串顯示函數(shù)LCD_WriteString( ),對(duì)于顯示16點(diǎn)陣的漢字,為了加快顯示的速度,實(shí)現(xiàn)的方式是通過寫一個(gè)字節(jié)(writebyte)來實(shí)現(xiàn)的,所以客戶在調(diào)用這些函數(shù)時(shí)所定義的坐標(biāo)位置最好是8的倍數(shù)。如果客戶需要顯示一些特殊字體的字符,可以利用LCD_API中的畫點(diǎn)函數(shù)來實(shí)現(xiàn)專門的特殊字符顯示功能。
下面以Step1_LCDTest為例,介紹利用Sourcery G++工具進(jìn)行應(yīng)用程序開發(fā)時(shí),如何使用LCD_API函數(shù)庫(kù)來實(shí)現(xiàn)對(duì)LCD的顯示操作。
首先需要在應(yīng)用工程項(xiàng)目文件Step1_LCDTest中導(dǎo)入LCD_API函數(shù)庫(kù)的這兩個(gè)文件:LCD_API.H和libLCD_API.a。在Sourcery G++ IDE下導(dǎo)入不僅僅是將這兩個(gè)文件加入到項(xiàng)目工程中,同時(shí)也會(huì)把這兩個(gè)文件復(fù)制到項(xiàng)目工程所在的目錄下。
然后還需要設(shè)置應(yīng)用工程(Step1_LCDTest)的編譯屬性,指定編譯鏈接的庫(kù)文件名稱和路徑libLCD_API.a,設(shè)置的方法如下:
在Project Explorer視窗下,選擇Step1_LCDTest工程文件,然后點(diǎn)擊鼠標(biāo)右鍵,選擇Properties項(xiàng),在窗口中選擇C/C++ Build -> Settings -> Tool Settings -> Sourcery G++ C++ Linker -> Libraries,如圖5-1所示。其中的一個(gè)窗口用于指定庫(kù)文件的名稱,Linux靜態(tài)鏈接庫(kù)命名的方式為lib+name.a,所以此處需要輸入庫(kù)文件的名稱應(yīng)該只是name,即LCD_API;一個(gè)用于指定庫(kù)文件所在的路徑。
選擇庫(kù)文件
在Step1_LCDTest中Test_LCD12864.cpp提供了一個(gè)調(diào)用LCD_API中相關(guān)函數(shù)進(jìn)行LCD顯示的示例,以下為測(cè)試代碼:
#include
#include
#include
#include
#include 'lcd_api.h'
int main( )
{
int x, y;
char BufStr[200];
// 對(duì)LCD屏進(jìn)行初始化操作
LCD_Init( LCD_12864 );
// 設(shè)置為異或模式
LCD_SetMode( 1 ); // set to XOR mode
// 居中顯示中文、字符
strcpy( BufStr, '** 歡迎測(cè)試 **' );
x = (128-strlen(BufStr)*8)/2;
y = 8;
LCD_WriteString( x, y, BufStr, TEXT_COLOR );
strcpy( BufStr, '嵌入式網(wǎng)絡(luò)模塊' );
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
+關(guān)注
關(guān)注
87文章
11511瀏覽量
213814 -
嵌入式主板
+關(guān)注
關(guān)注
7文章
6102瀏覽量
36306
發(fā)布評(píng)論請(qǐng)先 登錄
嵌入式工控主板EM9160的PWM功能
英創(chuàng)信息技術(shù)嵌入式工控主板EM9160的PWM功能使用方法
英創(chuàng)信息技術(shù)嵌入式主板EM9160精簡(jiǎn)ISA總線硬件中斷的使用方法

英創(chuàng)信息技術(shù)工控主板EM9160L的低功耗應(yīng)用介紹
英創(chuàng)信息技術(shù)工控主板的復(fù)位管理介紹

英創(chuàng)信息技術(shù)嵌入式Linux串口通訊的C++設(shè)計(jì)概述

英創(chuàng)信息技術(shù)工控主板EM9160對(duì)紅外通訊用途介紹

英創(chuàng)信息技術(shù)嵌入式Linux主板EM9160支持ISO7816通訊協(xié)議介紹

英創(chuàng)信息技術(shù)工業(yè)主板EM9160介紹
英創(chuàng)信息技術(shù)嵌入式Linux工控板EM9160介紹

英創(chuàng)信息技術(shù)嵌入式Linux工控板EM9160介紹
英創(chuàng)信息技術(shù)工控主板EM9160介紹

英創(chuàng)信息技術(shù)主板EM9160硬件介紹
英創(chuàng)信息技術(shù)主板EM9160測(cè)頻功能的使用介紹
英創(chuàng)信息技術(shù)嵌入式主板支持精確延時(shí)操作之二介紹

評(píng)論