嵌入式Linux工控板的LCD驱动应用示例

嵌入式Linux工控板EM9160主要应用之一就是可以作为智能终端的核心平台,智能终端总是带有一种显示单元。EM9160作为一种高效、低成本的产品解决方案,专门针对小型的单色LCD显示模块(分辨率通常在128×64至320×240),在嵌入式Linux下完成了LCD驱动程序,以实现对LCD屏读写操作,驱动程序可以实现直接对硬件访问、操作的功能,从而可以大大地加快了LCD屏的显示速度。

嵌入式Linux下LCD驱动简介

     在嵌入式Linux环境下,LCD的驱动已自动加载,其设备文件名为“/dev/em9x60_lcd”。应用程序通过调用5个IOCTL命令来实现对于LCD屏的操作。

EM9X60_LCD_IOCTL_TYPE: 用于设置LCD屏类型。 
      EM9X60_LCD_IOCTL_LINE: 图形方式的操作,包括画点、画线以及画Bar条。 
      EM9X60_LCD_IOCTL_BLOCK:数据块显示操作,主要用于字模的显示。 
      EM9X60_LCD_IOCTL_CLEAR:清屏操作。 
      EM9X60_LCD_IOCTL_UPDATE:用于刷新LCD屏数据。

针对于画点、画线、画Bar条命令EM9X60_LCD_IOCTL_LINE需要用到以下结构:

struct lcd_line 
      { 
              unsigned int type; // = 0: point; = 1: line; = 2: bar 
              unsigned int x0; 
              unsigned int y0; 
              unsigned int x1; 
              unsigned int y1; 
              unsigned int color; // = 0: write '0'; = 1: write '1', = 2: xor operation 
      };

数据块显示操作命令EM9X60_LCD_IOCTL_BLOCK会用到struct lcd_block结构,该结构中的数据data[16]中每个data[n] 值是按照x方向排列的,x 方向的大小最多为8个bit;数据data[0] ~ data[15]是按照y方向排列的,一次最多写16个字节大小的数据。这种数据块结构可应用在写字模,或是公司专用图形LOGO上。

struct lcd_block 
      { 
              unsigned int x0; 
              unsigned int y0; 
              unsigned int xsize; // = 1 - 8; left alignment 
              unsigned int ysize; // = 1 - 16; 
              unsigned char data[16]; // block data to be copied 
      };

如写一个汉字字模为16X16点阵的数据,汉字模为ffont[32],可以用如下代码来实现:

LCD_WriteByteBlock( x, y, ffont, 16 ); 
      LCD_WriteByteBlock( x+8, y, &ffont[16], 16 );

intLCD_WriteByteBlock( int x, inty, unsigned char* hfont, intNumOfBytes ) 
      { 
              int rc; 
              unsigned int cmd; 
              structlcd_block block; 
              inti1;

block.x0 = x; 
              block.y0 = y; 
              block.xsize = 8; 
              block.ysize = NumOfBytes; 
              for( i1=0; i1<NumOfBytes; )
              { 
                      block.data[i1]= hfont[i1]; 
              } 
              cmd = EM9X60_LCD_IOCTL_BLOCK;

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/25323.html