在工控領(lǐng)域的實(shí)際應(yīng)用中,客戶經(jīng)常需要使用LCD顯示屏進(jìn)行一些簡(jiǎn)單的文字和圖形顯示操作,如顯示公司的LOGO和開(kāi)機(jī)畫(huà)面、顯示一些重要的參數(shù)指標(biāo)等。英利嵌入式Linux工控主板可以直接支持6種單色點(diǎn)陣LCD顯示屏,分別是KS0108控制器的128x64點(diǎn)陣LCD、T6963C控制器的240x128點(diǎn)陣LCD、SED1335控制器的320x240點(diǎn)陣LCD、KS0108控制器的192x64點(diǎn)陣LCD、UC1698U控制器的160x160點(diǎn)陣LCD、YXD控制器的128x64點(diǎn)陣LCD。
對(duì)于文字的顯示,英利公司已有例程進(jìn)行介紹,本文將詳細(xì)介紹單色BMP位圖的顯示方法。
1、制作符合顯示需要的單色BMP位圖
使用圖形編輯軟件制作用來(lái)顯示的圖片,并保存為位圖格式,然后使用Windows中的“畫(huà)圖”工具打開(kāi)該圖片,另存為單色位圖(注:一定要存為單色位圖,否則無(wú)法顯示)。注意圖形的尺寸大小,如果待顯示圖形大于LCD的尺寸,則無(wú)法正確顯示。
2、使用英利提供的示例程序進(jìn)行圖形顯示
英利提供了一個(gè)名為“test_bmp”的測(cè)試?yán)?,其中包括了測(cè)試程序“test_bmp”以及用于圖形顯示的API函數(shù)。其中,API函數(shù)DisplayBmp( . . )中實(shí)現(xiàn)了對(duì)BMP文件的讀取、解析和顯示操作,客戶將制作好的圖片和測(cè)試程序test_bmp一同放在英利工控主板的/mnt/nandflash目錄中,通過(guò)命令行輸入如下命令:
[root@EM9X60 /mnt/nandflash]# ./test_bmp logo.bmp 3 30 10
即可以在LCD顯示屏上看到顯示效果。
該命令的4個(gè)參數(shù)說(shuō)明如下:
logo.bmp:英利測(cè)試時(shí)使用的圖片??蛻魧?shí)際使用的時(shí)候填寫(xiě)自己的圖片名字
3:英利測(cè)試使用的是320x240點(diǎn)陣的顯示屏,定義為3號(hào)屏,因此此處的參數(shù)為3。如果使用其他分辨率的LCD,則填寫(xiě)相應(yīng)的
參數(shù),參數(shù)與LCD對(duì)應(yīng)關(guān)系如下:
1:KS0108控制器的128x64點(diǎn)陣LCD
2:T6963C控制器的240x128點(diǎn)陣LCD
3:SEED1335控制器的320x240點(diǎn)陣LCD
4:KS0108控制器的192x64點(diǎn)陣LCD
5:UC1698U控制器的160x160點(diǎn)陣LCD
6:YXD控制器的128x64點(diǎn)陣LCD
30:顯示屏x方向的起始顯示位置。如果不填,默認(rèn)為0
10:顯示屏y方向的起始顯示位置。如果不填,默認(rèn)為0
需注意的是:
1、用于顯示的圖片必須是單色位圖,且圖片的長(zhǎng)寬尺寸必須小于LCD相應(yīng)方向(x和y軸)的點(diǎn)陣數(shù),否則無(wú)法顯示。
2、前兩個(gè)參數(shù)(圖片名、顯示屏分辨率)必須設(shè)置,否則系統(tǒng)報(bào)錯(cuò)退出。
3、顯示屏參數(shù)中,只有數(shù)字1-6有效,其余輸入均視為無(wú)效參數(shù),系統(tǒng)報(bào)錯(cuò)退出。
4、后兩個(gè)參數(shù)是用于控制圖片顯示位置的,如果都不設(shè)置,則默認(rèn)從左上角第一個(gè)點(diǎn)開(kāi)始顯示。這兩個(gè)參數(shù)必須同時(shí)設(shè)置或者
留空,不能只設(shè)置一個(gè)。同時(shí),如果設(shè)置的起始位置造成了圖片的溢出(即如果從起始位置開(kāi)始顯示,圖片在x或者y軸方向的
尺寸已經(jīng)大于了該方向剩余的LCD點(diǎn)陣數(shù)),也無(wú)法正確顯示。
3、圖形顯示示例程序說(shuō)明
能夠使用示例程序進(jìn)行單色位圖顯示以后,客戶可以以測(cè)試程序?yàn)樗{(lán)本,針對(duì)自己的應(yīng)用設(shè)計(jì)自己的圖形顯示程序。test_bmp的代碼和說(shuō)明如下:
#include
#include
#include
#include 'lcd_api.h'
#include 'bmpdisplay.h'
int main( int argc, char** argv )
{
// 如果只設(shè)置了圖片名和顯示屏尺寸,則默認(rèn)從左上角第一個(gè)點(diǎn)開(kāi)始顯示
if( argc == 3 )
{
InitLcd( atoi(argv[2]) );
DisplayBmp( argv[1], 0, 0 );
}
// 如果設(shè)置了4個(gè)參數(shù),則完全按照參數(shù)設(shè)置進(jìn)行配置
else if( argc == 5 )
{
InitLcd( atoi(argv[2]) );
DisplayBmp( argv[1], atoi(argv[3]), atoi(argv[4]) );
}
else
{
printf( 'Parameter fail!\n' );
return -1;
}
sleep( 1 );
LCD_DeInit( );
return 0;
}
該例程很簡(jiǎn)單,解析命令行傳入的參數(shù)以后調(diào)用英利提供的函數(shù)DisplayBmp即可以進(jìn)行顯示。實(shí)際應(yīng)用中,客戶用于顯示的圖片有可能只是一個(gè),顯示屏也會(huì)固定一種型號(hào),并不需要從命令行傳入?yún)?shù)進(jìn)行解析,此時(shí)可以簡(jiǎn)化上述程序,整個(gè)過(guò)程只需要如下四條語(yǔ)句:
InitLcd( 3 );
DisplayBmp( 'logo.bmp', 0, 0 );
sleep( 1 );
LCD_DeInit( );
對(duì)該示例程序感興趣的英利公司客戶可以來(lái)電或通過(guò)電子郵件索取相關(guān)代碼。
-
WINDOWS
+關(guān)注
關(guān)注
4文章
3613瀏覽量
91394 -
嵌入式主板
+關(guān)注
關(guān)注
7文章
6101瀏覽量
36300
發(fā)布評(píng)論請(qǐng)先 登錄
【安富萊】【STemWin教程】第11章 BMP圖片顯示
第11章 BMP圖片顯示
【emWin實(shí)戰(zhàn)教程V2.0】第46章 BUTTON-按鈕控件顯示位圖和流位圖
請(qǐng)教下,讀取sd卡,u盤(pán)里面的bmp圖片解碼顯示 ?
位圖顯示問(wèn)題如何解決
怎樣在OLED或其他單色屏上顯示圖片
MDA顯示接口引腳定義圖(單色)

BMPtoPCB軟件的免費(fèi)下載(bmp位圖轉(zhuǎn)PCB文件工具)

嵌入式linux操作framebuffer顯示bmp圖片

stm32單片機(jī)OLED顯示圖片 位圖轉(zhuǎn)換 Image2Lcd使用

Linux下BMP圖片添加水印

評(píng)論