0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

英創(chuàng)信息技術(shù)EM335x支持低成本單色LCD顯示介紹

英創(chuàng)信息技術(shù) ? 來(lái)源:英創(chuàng)信息技術(shù) ? 作者:英創(chuàng)信息技術(shù) ? 2020-02-03 10:04 ? 次閱讀

1、簡(jiǎn)述

英創(chuàng)公司嵌入式板卡EM335x是一款高性能的Cortex-A8硬件平臺(tái),板卡帶有豐富的硬件接口,非常適用于工業(yè)應(yīng)用開(kāi)發(fā)。

EM335x板卡CPU采用了Ti公司的AM3354,AM3354的LCD控制器包括有兩種獨(dú)立的控制器:一種是行掃(raster)模式,一種是LCD接口驅(qū)動(dòng)(LIDD)模式,raster 模式用于處理同步LCD,用于支持彩色液晶顯示屏,而LIDD模式可以用來(lái)支持低成本的單色點(diǎn)陣LCD模塊。

EM335x板卡的標(biāo)準(zhǔn)應(yīng)用是采用的raster模式LCD驅(qū)動(dòng),支持多種分辨率彩色液晶顯示接口,最高分辨率到1024X768。在此基礎(chǔ)上英創(chuàng)公司在EM335x上還實(shí)現(xiàn)了基于LIDD模式的LCD驅(qū)動(dòng),可滿足部分工業(yè)場(chǎng)合對(duì)于單色點(diǎn)陣屏的需求。本文以單色點(diǎn)陣屏160X160 LCD為例,介紹該屏在EM335x上的應(yīng)用。

2、單色LCD接線

EM335x的LCD接口請(qǐng)參見(jiàn)EM335x數(shù)據(jù)手冊(cè)中CN3的信號(hào)定義。下面是通過(guò)EM335x CN3連接HGO160160 LCD模塊(UC1698U控制器,160x160點(diǎn)陣)的信號(hào)對(duì)應(yīng)表:

LCD的第19腳為背光電源正,EM335x CN3的第30腳為PWM信號(hào)輸出,低電平有效。這兩個(gè)引腳在物理上并不是直接相連,而是應(yīng)該將PWM作為L(zhǎng)CD的背光控制信號(hào),通過(guò)控制一個(gè)電子開(kāi)關(guān)實(shí)現(xiàn)LCD背光的打開(kāi)與關(guān)閉,具體連接可參考下圖。

3、單色屏LCD應(yīng)用程序開(kāi)發(fā)

Linux操作系統(tǒng)中,與彩色屏的設(shè)備節(jié)點(diǎn)不同,對(duì)于單色LCD的設(shè)備節(jié)點(diǎn)定義為:'/dev/em335x_lcd',因此Linux應(yīng)用程序操作單色LCD時(shí),一般為以下幾個(gè)步驟:

1、打開(kāi)LCD設(shè)備文件:
fd = open('/dev/em335x_lcd', O_RDWR);
2、調(diào)用標(biāo)準(zhǔn)的write( )函數(shù)對(duì)LCD屏進(jìn)行操作。
3、關(guān)閉LCD設(shè)備文件。

為了方便客戶使用,我們?cè)O(shè)計(jì)了一套通用的漢字及LCD顯示接口函數(shù),這些接口函數(shù)定義和實(shí)現(xiàn)分別在lcd_api.h lcd_api.cpp中,函數(shù)中包括畫(huà)點(diǎn)、畫(huà)線、畫(huà)Bar條、寫(xiě)塊數(shù)據(jù)、輸出漢字及字符等操作。關(guān)于各個(gè)函數(shù)的定義說(shuō)明,可參見(jiàn)lcd_api.h頭文件中的中文注釋。其中的漢字支持為標(biāo)準(zhǔn)一級(jí)全漢字,為16×16點(diǎn)陣字模,西文(字母、數(shù)字和符號(hào))為8×14點(diǎn)陣字模,這兩個(gè)字模文件分別為cclib、cclib12.fnt、ascii.chr,放置在EM335x嵌入式主板的根文件系統(tǒng)“/usr”目錄中。各個(gè)函數(shù)定義如下:

// 功能描述: 啟動(dòng)對(duì)LCD屏的操作功能,并初始化LCD顯示屏
// 返回值 > 0: 啟動(dòng)LCD成功
// = -1: 啟動(dòng)LCD失敗
int LCD_Init( );
// 功能描述: 釋放對(duì)LCD顯示屏的操作功能
// 輸入參數(shù): 無(wú)
// 返回值 > 0: 初始化LCD成功,并返回LCD的類型
// = -1: 初始化LCD失敗
int LCD_DeInit( );
// 功能描述: 對(duì)LCD顯示屏的清屏操作
// 輸入?yún)?shù): 無(wú)
// 返回值 = 0: LCD清屏成功
// <0 : LCD清屏失敗
int LCD_Clearup( );
// 功能描述: 獲取LCD顯示屏的X方向最大分辨率
// 輸入?yún)?shù): 無(wú)
// 返回值 : LCD顯示屏的X方向最大分辨率
int LCD_GetMaxX( );
// 功能描述: 獲取LCD顯示屏的Y方向最大分辨率
// 輸入?yún)?shù): 無(wú)
// 返回值 : LCD顯示屏的Y方向最大分辨率
int LCD_GetMaxY( );
// 功能描述: 設(shè)置LCD顯示漢字字模:16點(diǎn)陣、12點(diǎn)陣
// 輸入?yún)?shù): FontWidth = 16 : 16點(diǎn)陣漢字
// FontWidth = 12 : 12點(diǎn)陣漢字
// 返回值 : 字模的類型16或12
int LCD_SetFont( int FontWidth );
// 功能描述: 對(duì)LCD顯示屏進(jìn)行描點(diǎn)操作
// 輸入?yún)?shù):
// int x0: 描點(diǎn)的列坐標(biāo)(x坐標(biāo)),范圍0~(MaxX-1)
// int y0: 描點(diǎn)的行坐標(biāo)(y坐標(biāo)),范圍0~(MaxY-1)
// int color: 描點(diǎn)的顏色:BK_COLOR或者TEXT_COLOR
// 返回值 0: 成功
int LCD_PutPixel( int x0, int y0, int color );
// 功能描述: 對(duì)LCD顯示屏進(jìn)行寫(xiě)多個(gè)字節(jié)操作
// 輸入?yún)?shù):
// int x: 寫(xiě)字節(jié)的列坐標(biāo)(x坐標(biāo)),范圍0~(MaxX-1),不可大于或等于MaxX
// int y: 寫(xiě)字節(jié)的行坐標(biāo)(y坐標(biāo)),范圍0~(MaxY-1),不可大于或等于MaxY
// unsigned char* hfont: 需要寫(xiě)的字節(jié)組
// int xsize: x方向的大小,最大不超過(guò)8
// int NumOfBytes: 需要寫(xiě)的字節(jié)數(shù),最大不超過(guò)16
// 返回值 0: 成功
int LCD_WriteByteBlock( int x, int y, unsigned char* hfont, int xsize,
int NumOfBytes );
// 功能描述: 對(duì)LCD顯示屏畫(huà)直線操作
// 輸入?yún)?shù):
// int x0: 直線開(kāi)始列坐標(biāo)(x坐標(biāo)),范圍0~(MaxX-1),不可大于或等于MaxX
// int y0: 直線開(kāi)始行坐標(biāo)(y坐標(biāo)),范圍0~(MaxY-1),不可大于或等于MaxY
// int x1: 直線結(jié)束列坐標(biāo)(x坐標(biāo)),范圍0~(MaxX-1),不可大于或等于MaxX
// int y1: 直線結(jié)束行坐標(biāo)(y坐標(biāo)),范圍0~(MaxY-1),不可大于或等于MaxY
// int color: 顏色設(shè)置:BK_COLOR或者TEXT_COLOR
int LCD_DrawLine( int x0, int y0, int x1, int y1, int color );
// 功能描述: 對(duì)LCD顯示屏畫(huà)Bar條操作
// 輸入?yún)?shù):
// int x0: 直線開(kāi)始列坐標(biāo)(x坐標(biāo)),范圍0~(MaxX-1),不可大于或等于MaxX
// int y0: 直線開(kāi)始行坐標(biāo)(y坐標(biāo)),范圍0~(MaxY-1),不可大于或等于MaxY
// int x1: 直線結(jié)束列坐標(biāo)(x坐標(biāo)),范圍0~(MaxX-1),不可大于或等于MaxX
// int y1: 直線結(jié)束行坐標(biāo)(y坐標(biāo)),范圍0~(MaxY-1),不可大于或等于MaxY
// int color: 顏色設(shè)置:BK_COLOR或者TEXT_COLOR
int LCD_FillBar( int x0, int y0, int x1, int y1, int color );
// 功能描述: 對(duì)LCD顯示屏進(jìn)行寫(xiě)字符串的操作
// 輸入?yún)?shù):
// int x0: 字符寫(xiě)入的列坐標(biāo)(x坐標(biāo)),范圍0~(MaxX-1)
// int y0: 字符寫(xiě)入的行坐標(biāo)(y坐標(biāo)),范圍0~(MaxY-1)
// int color: 字符寫(xiě)入的顏色設(shè)置:BK_COLOR或者TEXT_COLOR
// 返回值 0: 成功
int LCD_WriteString( int x0, int y0, char* pStr, int color );

以test_lcd為例,介紹利用eclipse / Sourcery G++工具進(jìn)行應(yīng)用程序開(kāi)發(fā)時(shí),如何使用lcd_api.h函數(shù)庫(kù)來(lái)實(shí)現(xiàn)對(duì)LCD的顯示操作。

首先需要在應(yīng)用工程項(xiàng)目文件test_lcd中導(dǎo)入API函數(shù)相關(guān)的幾個(gè)文件:lcd_api.h、lcd_api.cpp 以及DotLib.CPP(主要實(shí)現(xiàn)了西文、漢字顯示功能)。在eclipse / Sourcery G++ IDE下導(dǎo)入不僅僅是將這些文件加入到項(xiàng)目工程中,同時(shí)也會(huì)把這幾個(gè)文件復(fù)制到項(xiàng)目工程所在的目錄下。以下為測(cè)試代碼:

//對(duì)LCD屏進(jìn)行初始化操作
i1 = LCD_Init( );
if( i1<0 )
{
printf( 'LCD Init fail! ' );
return -1;
}
MaxX = LCD_GetMaxX( );
MaxY = LCD_GetMaxY( );
LCD_Clearup( );
LCD_PutPixel( 0, 0, 1 );
LCD_PutPixel( MaxX-1, 0, 1 );
LCD_PutPixel( 0, MaxY-1, 1 );
LCD_PutPixel( MaxX-1, MaxY-1, 1 );
LCD_SetFont( 12 );
//顯示中文、字符操作
strcpy( BufStr, '** 歡迎測(cè)試 **' );
x = (MaxX-strlen(BufStr)*8)/2;
y = 8;
LCD_WriteString( x, y, BufStr, TEXT_COLOR );
strcpy( BufStr, '嵌入式Linux主板' );
x = (MaxX-strlen(BufStr)*8)/2;
y = 24;
LCD_WriteString( x, y, BufStr, BK_COLOR );
sleep( 2 );
//畫(huà)線
LCD_DrawLine( 0, 42, MaxX-1, 42, TEXT_COLOR );
LCD_DrawLine( 0, 63, MaxX-1, 63, TEXT_COLOR );
//畫(huà)曲線
for( x=0; x{
y = 53 - 10.0*sin( 2.0*M_PI*x/24.0 );
LCD_PutPixel( x, y, XOR_WRITE );
}
sleep( 2 );
for( x=0; x{
y = 53 - 10.0*sin( 2.0*M_PI*x/24.0 );
LCD_PutPixel( x, y, XOR_WRITE );
}
sleep( 2 );
LCD_Clearup( );
LCD_DrawLine( 0, 0, MaxX-1, MaxY-1, TEXT_COLOR );
LCD_DrawLine( 0, MaxY-1, MaxX-1, 0, TEXT_COLOR );
//畫(huà)Bar條
start = time(NULL);
for( i1=0; i1<9; i1++)
{
LCD_FillBar( MaxX/2-20, MaxY/2-20, MaxX/2+20, MaxY/2+20, XOR_WRITE );
sleep(1);
}
end = time(NULL);
printf('The pause used %f seconds. ',difftime(end,start)/10);//
LCD_DeInit( );

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11179

    瀏覽量

    208500
  • 嵌入式主板
    +關(guān)注

    關(guān)注

    7

    文章

    6083

    瀏覽量

    35100
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    AM335x功耗估算工具

    電子發(fā)燒友網(wǎng)站提供《AM335x功耗估算工具.pdf》資料免費(fèi)下載
    發(fā)表于 10-12 11:46 ?0次下載
    AM<b class='flag-5'>335x</b>功耗估算工具

    銳恩科技,以實(shí)力打造國(guó)產(chǎn)單片機(jī)替代品牌!

    今天我們要介紹的深圳銳恩科技的單片機(jī)。 鑒于我國(guó)集成電路產(chǎn)業(yè)起步較晚,核心研發(fā)技術(shù)非常的短缺,導(dǎo)致了我國(guó)芯片需要依賴進(jìn)口。而可替代進(jìn)口MCU的國(guó)產(chǎn)芯片,產(chǎn)品性能必須要穩(wěn)定。 深圳
    發(fā)表于 09-25 09:49

    AM335x硬件設(shè)計(jì)指南

    電子發(fā)燒友網(wǎng)站提供《AM335x硬件設(shè)計(jì)指南.pdf》資料免費(fèi)下載
    發(fā)表于 09-19 11:05 ?0次下載
    AM<b class='flag-5'>335x</b>硬件設(shè)計(jì)指南

    AM335x原理圖核對(duì)表

    電子發(fā)燒友網(wǎng)站提供《AM335x原理圖核對(duì)表.pdf》資料免費(fèi)下載
    發(fā)表于 09-19 11:03 ?0次下載
    AM<b class='flag-5'>335x</b>原理圖核對(duì)表

    梯度科技入選2023年信息技術(shù)應(yīng)用創(chuàng)新解決方案名單

    日前,工業(yè)和信息化部網(wǎng)絡(luò)安全產(chǎn)業(yè)發(fā)展中心(工業(yè)和信息化部信息中心)在天津舉辦2024信息技術(shù)應(yīng)用創(chuàng)新發(fā)展大會(huì)暨解決方案應(yīng)用推廣大會(huì)。會(huì)上正式公布了2023年
    的頭像 發(fā)表于 09-09 16:29 ?331次閱讀

    探尋未來(lái)顯示技術(shù)LCD、LED、OLED誰(shuí)將引領(lǐng)潮流?

    隨著科技的不斷進(jìn)步,顯示技術(shù)也在不斷演進(jìn),LCD、LED和OLED顯示技術(shù)作為主流,各自展現(xiàn)出獨(dú)特的特點(diǎn)和優(yōu)勢(shì)。那么在未來(lái),誰(shuí)將引領(lǐng)
    的頭像 發(fā)表于 03-18 09:44 ?882次閱讀
    探尋未來(lái)<b class='flag-5'>顯示</b><b class='flag-5'>技術(shù)</b>:<b class='flag-5'>LCD</b>、LED、OLED誰(shuí)將引領(lǐng)潮流?

    龍芯中科三項(xiàng)信創(chuàng)方案入圍工信部2023年信息技術(shù)應(yīng)用創(chuàng)新應(yīng)用示范案例名單

    近日,工業(yè)和信息化部通報(bào)了2023年信息技術(shù)應(yīng)用創(chuàng)新解決方案征集遴選結(jié)果,本次共評(píng)選出典型解決方案173個(gè)、應(yīng)用示范案例83個(gè)、單項(xiàng)創(chuàng)新案例64個(gè)。
    的頭像 發(fā)表于 03-07 16:45 ?766次閱讀
    龍芯中科三項(xiàng)信<b class='flag-5'>創(chuàng)</b>方案入圍工信部2023年<b class='flag-5'>信息技術(shù)</b>應(yīng)用創(chuàng)新應(yīng)用示范案例名單

    單色液晶顯示龍頭晶訊光電撤回IPO

    湖南晶訊光電股份有限公司(以下簡(jiǎn)稱晶訊光電),作為國(guó)內(nèi)單色液晶顯示領(lǐng)域的佼佼者,其單色液晶顯示產(chǎn)品生產(chǎn)規(guī)模、銷量、收入連續(xù)三年(2020年—2022年)保持全國(guó)領(lǐng)先地位。然而,日前該公
    的頭像 發(fā)表于 03-01 15:03 ?465次閱讀

    光伏戶用如何做到低成本獲客?

    光伏戶用如何做到低成本獲客? 隨著可再生能源的日益普及和技術(shù)的不斷進(jìn)步,光伏系統(tǒng)正逐漸走進(jìn)千家萬(wàn)戶。然而,對(duì)于光伏企業(yè)來(lái)說(shuō),如何在激烈的市場(chǎng)競(jìng)爭(zhēng)中低成本地獲取客戶,成為了他們面臨的一大挑戰(zhàn)。本文將
    發(fā)表于 02-27 10:33

    【全志T113-i】OK113i-S開(kāi)發(fā)板-2適配10寸LCD顯示

    前言本文介紹如何在OK113i-S開(kāi)發(fā)板上適配一個(gè)自己的10寸LCD。OK113i-S 是一個(gè)優(yōu)秀的開(kāi)發(fā)板,支持lvds 單8,雙8顯示,最大分辨率1280
    發(fā)表于 12-20 10:31

    【全志T113-i】OK113i-S開(kāi)發(fā)板-適配10寸LCD顯示

    前言本文介紹如何在OK113i-S開(kāi)發(fā)板上適配一個(gè)自己的10寸LCD。OK113i-S 是一個(gè)優(yōu)秀的開(kāi)發(fā)板,支持lvds 單8,雙8顯示,最大分辨率1280
    發(fā)表于 12-18 17:07

    闡述量子信息技術(shù)的研究現(xiàn)狀與未來(lái)

    20世紀(jì) 80 年代, 科學(xué)家將量子力學(xué)應(yīng)用到信息領(lǐng)域, 從而誕生了量子信息技術(shù), 諸如量子計(jì)算機(jī)、量子密碼、量子傳感等. 這些技術(shù)的運(yùn)行規(guī)律遵從量子力學(xué), 因此不僅其原理是量子力學(xué), 器件本身也
    發(fā)表于 11-22 11:40 ?737次閱讀
    闡述量子<b class='flag-5'>信息技術(shù)</b>的研究現(xiàn)狀與未來(lái)

    米爾AM62x核心板,高配價(jià)低,AM335x升級(jí)首選

    、醫(yī)療等領(lǐng)域的應(yīng)用面臨迫切的升級(jí)需求,AM62x處理器作為T(mén)I Sitara?產(chǎn)品線新一代MPU產(chǎn)品,相比上一代經(jīng)典處理器AM335x具備更高性能及功能擴(kuò)展性,在內(nèi)核、GPU、存儲(chǔ)、顯示、安全、外設(shè)等6
    的頭像 發(fā)表于 11-20 11:32 ?610次閱讀
    米爾AM62<b class='flag-5'>x</b>核心板,高配價(jià)低,AM<b class='flag-5'>335x</b>升級(jí)首選

    樂(lè)得瑞LDR6020P Type-C PD顯示低成本精簡(jiǎn)方案簡(jiǎn)介

    樂(lè)得瑞LDR6020P Type-C PD顯示低成本精簡(jiǎn)方案簡(jiǎn)介
    的頭像 發(fā)表于 11-10 17:42 ?758次閱讀
    樂(lè)得瑞LDR6020P Type-C PD<b class='flag-5'>顯示</b>器<b class='flag-5'>低成本</b>精簡(jiǎn)方案簡(jiǎn)介

    MCU接口的LCD花屏問(wèn)題如何解決?

    之前用 19264這種單色屏,偶爾會(huì)出現(xiàn)花屏現(xiàn)象,后來(lái)把所有顯示數(shù)據(jù)全緩存在單片機(jī)RAM中,然后不斷刷屏才解決。 現(xiàn)在要換彩色LCD,同樣是MCU接口的,320*240的如果用RAM緩存要160k ram,
    發(fā)表于 11-01 07:47