<rt id="m4md3"></rt>
  • <bdo id="m4md3"><meter id="m4md3"></meter></bdo>
  • <label id="m4md3"></label>
      <center id="m4md3"><optgroup id="m4md3"></optgroup></center>
      產(chǎn)品分類

      當(dāng)前位置: 首頁 > 傳感測量產(chǎn)品 > 信號處理產(chǎn)品 > 信號轉(zhuǎn)換器

      類型分類:
      科普知識
      數(shù)據(jù)分類:
      信號轉(zhuǎn)換器

      EM335x支持低成本單色LCD顯示方案

      發(fā)布日期:2022-04-27 點擊率:168

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

      1、簡述


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


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


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




      2、單色LCD接線


        EM335x的LCD接口請參見EM335x數(shù)據(jù)手冊中CN3的信號定義。下面是通過EM335x CN3連接HGO160160 LCD模塊(UC1698U控制器,160x160點陣)的信號對應(yīng)表:




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




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


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

        1、打開LCD設(shè)備文件:

        fd = open('/dev/em335x_lcd', O_RDWR);

        2、調(diào)用標(biāo)準(zhǔn)的write( )函數(shù)對LCD屏進行操作。

        3、關(guān)閉LCD設(shè)備文件。


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


        // 功能描述: 啟動對LCD屏的操作功能,并初始化LCD顯示屏

        // 返回值 > 0: 啟動LCD成功

        // = -1: 啟動LCD失敗

        int LCD_Init( );


        // 功能描述: 釋放對LCD顯示屏的操作功能

        // 輸入?yún)?shù): 無

        // 返回值 > 0: 初始化LCD成功,并返回LCD的類型

        // = -1: 初始化LCD失敗

        int LCD_DeInit( );


        // 功能描述: 對LCD顯示屏的清屏操作

        // 輸入?yún)?shù): 無

        // 返回值 = 0: LCD清屏成功

        //<0 : LCD清屏失敗

        int LCD_Clearup( );


        // 功能描述: 獲取LCD顯示屏的X方向最大分辨率

        // 輸入?yún)?shù): 無

        // 返回值 : LCD顯示屏的X方向最大分辨率

        int LCD_GetMaxX( );


        // 功能描述: 獲取LCD顯示屏的Y方向最大分辨率

        // 輸入?yún)?shù): 無

        // 返回值 : LCD顯示屏的Y方向最大分辨率

        int LCD_GetMaxY( );


        // 功能描述: 設(shè)置LCD顯示漢字字模:16點陣、12點陣

        // 輸入?yún)?shù): FontWidth = 16 : 16點陣漢字

        // FontWidth = 12 : 12點陣漢字

        // 返回值 : 字模的類型16或12

        int LCD_SetFont( int FontWidth );


        // 功能描述: 對LCD顯示屏進行描點操作

        // 輸入?yún)?shù):

        // int x0: 描點的列坐標(biāo)(x坐標(biāo)),范圍0~(MaxX-1)

        // int y0: 描點的行坐標(biāo)(y坐標(biāo)),范圍0~(MaxY-1)

        // int color: 描點的顏色:BK_COLOR或者TEXT_COLOR

        // 返回值 0: 成功

        int LCD_PutPixel( int x0, int y0, int color );


        // 功能描述: 對LCD顯示屏進行寫多個字節(jié)操作

        // 輸入?yún)?shù):

        // int x: 寫字節(jié)的列坐標(biāo)(x坐標(biāo)),范圍0~(MaxX-1),不可大于或等于MaxX

        // int y: 寫字節(jié)的行坐標(biāo)(y坐標(biāo)),范圍0~(MaxY-1),不可大于或等于MaxY

        // unsigned char* hfont: 需要寫的字節(jié)組

        // int xsize: x方向的大小,最大不超過8

        // int NumOfBytes: 需要寫的字節(jié)數(shù),最大不超過16

        // 返回值 0: 成功

        int LCD_WriteByteBlock( int x, int y, unsigned char* hfont, int xsize,

        int NumOfBytes );


        // 功能描述: 對LCD顯示屏畫直線操作

        // 輸入?yún)?shù):

        // int x0: 直線開始列坐標(biāo)(x坐標(biāo)),范圍0~(MaxX-1),不可大于或等于MaxX

        // int y0: 直線開始行坐標(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 );


        // 功能描述: 對LCD顯示屏畫Bar條操作

        // 輸入?yún)?shù):

        // int x0: 直線開始列坐標(biāo)(x坐標(biāo)),范圍0~(MaxX-1),不可大于或等于MaxX

        // int y0: 直線開始行坐標(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 );


        // 功能描述: 對LCD顯示屏進行寫字符串的操作

        // 輸入?yún)?shù):

        // int x0: 字符寫入的列坐標(biāo)(x坐標(biāo)),范圍0~(MaxX-1)

        // int y0: 字符寫入的行坐標(biāo)(y坐標(biāo)),范圍0~(MaxY-1)

        // int color: 字符寫入的顏色設(shè)置:BK_COLOR或者TEXT_COLOR

        // 返回值 0: 成功

        int LCD_WriteString( int x0, int y0, char* pStr, int color );


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


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


        // 對LCD屏進行初始化操作

        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, '** 歡迎測試 **' );

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


        // 畫線

        LCD_DrawLine( 0, 42, MaxX-1, 42, TEXT_COLOR );

        LCD_DrawLine( 0, 63, MaxX-1, 63, TEXT_COLOR );


        // 畫曲線

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

        // 畫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( );

      下一篇: PLC、DCS、FCS三大控

      上一篇: 索爾維全系列Solef?PV

      推薦產(chǎn)品

      更多
      主站蜘蛛池模板: 日韩综合无码一区二区| 狠狠色色综合网站 | 婷婷综合激六月情网| 亚洲欧洲尹人香蕉综合| 六月婷婷综合激情| 伊人久久亚洲综合| 狠狠色综合网久久久久久| 国产成人亚洲综合无码| 伊人久久大香线蕉综合5g| 一97日本道伊人久久综合影院| 一本大道道无香蕉综合在线| 狼狼综合久久久久综合网| 国产成人精品综合| 色综合久久中文色婷婷| 伊人久久大香线蕉综合电影| 狠狠综合视频精品播放| 亚洲综合丁香婷婷六月香| 国产成人综合亚洲AV第一页| 天天做天天爱天天综合网| 丁香五月综合缴情综合| 久久综合久久美利坚合众国| 国产综合色在线精品| 婷婷六月久久综合丁香可观看| 亚洲av综合色区| 青青青伊人色综合久久| 亚洲国产成人久久综合区| 色偷偷亚洲第一综合网| 一本色道久久综合无码人妻| 狠狠色丁香婷婷综合精品视频| 琪琪五月天综合婷婷| 久久久久久青草大香综合精品| 玖玖爱zh综合伊人久久| 久久婷婷五月综合色奶水99啪| 伊人色综合久久天天人手人婷| 色综合久久88色综合天天 | 国产精品亚洲综合| 国产综合在线观看| 亚洲啪啪综合AV一区| 国产福利电影一区二区三区久久久久成人精品综合 | 伊人色综合视频一区二区三区| 伊人久久婷婷五月综合97色|