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