英创信息技术EM335x支持低成本单色LCD显示介绍

网友投稿 270 2022-11-25

英创信息技术EM335x支持低成本单色LCD显示介绍

1、简述

EM335x板卡的标准应用是采用的raster模式LCD驱动,支持多种分辨率彩色液晶显示接口,最高分辨率到1024X768。在此基础上英创公司在EM335x上还实现了基于LIDD模式的LCD驱动,可满足部分工业场合对于单色点阵屏的需求。本文以单色点阵屏160X160 LCD为例,介绍该屏在EM335x上的应用。

2、单色LCD接线

EM335x的LCD接口请参见EM335x数据手册中CN3的信号定义。下面是通过EM335x CN3连接HGO160160 LCD模块(UC1698U控制器,160x160点阵)的信号对应表:

3、单色屏LCD应用程序开发

// 功能描述: 启动对LCD屏的操作功能,并初始化LCD显示屏 // 返回值 > 0: 启动LCD成功 // = -1: 启动LCD失败 int LCD_Init( ); // 功能描述: 释放对LCD显示屏的操作功能 // 输入参数: 无 // 返回值 > 0: 初始化LCD成功,并返回LCD的类型 // = -1: 初始化LCD失败 int LCD_DeInit( ); // 功能描述: 对LCD显示屏的清屏操作 // 输入参数: 无 // 返回值 = 0: LCD清屏成功 // <0 : LCD清屏失败 int LCD_Clearup( ); // 功能描述: 获取LCD显示屏的X方向最大分辨率 // 输入参数: 无 // 返回值 : LCD显示屏的X方向最大分辨率 int LCD_GetMaxX( ); // 功能描述: 获取LCD显示屏的Y方向最大分辨率 // 输入参数: 无 // 返回值 : LCD显示屏的Y方向最大分辨率 int LCD_GetMaxY( ); // 功能描述: 设置LCD显示汉字字模:16点阵、12点阵 // 输入参数: FontWidth = 16 : 16点阵汉字 // FontWidth = 12 : 12点阵汉字 // 返回值 : 字模的类型16或12 int LCD_SetFont( int FontWidth ); // 功能描述: 对LCD显示屏进行描点操作 // 输入参数: // int x0: 描点的列坐标(x坐标),范围0~(MaxX-1) // int y0: 描点的行坐标(y坐标),范围0~(MaxY-1) // int color: 描点的颜色:BK_COLOR或者TEXT_COLOR // 返回值 0: 成功 int LCD_PutPixel( int x0, int y0, int color ); // 功能描述: 对LCD显示屏进行写多个字节操作 // 输入参数: // int x: 写字节的列坐标(x坐标),范围0~(MaxX-1),不可大于或等于MaxX // int y: 写字节的行坐标(y坐标),范围0~(MaxY-1),不可大于或等于MaxY // unsigned char* hfont: 需要写的字节组 // int xsize: x方向的大小,最大不超过8 // int NumOfBytes: 需要写的字节数,最大不超过16 // 返回值 0: 成功 int LCD_WriteByteBlock( int x, int y, unsigned char* hfont, int xsize, int NumOfBytes ); // 功能描述: 对LCD显示屏画直线操作 // 输入参数: // int x0: 直线开始列坐标(x坐标),范围0~(MaxX-1),不可大于或等于MaxX // int y0: 直线开始行坐标(y坐标),范围0~(MaxY-1),不可大于或等于MaxY // int x1: 直线结束列坐标(x坐标),范围0~(MaxX-1),不可大于或等于MaxX // int y1: 直线结束行坐标(y坐标),范围0~(MaxY-1),不可大于或等于MaxY // int color: 颜色设置:BK_COLOR或者TEXT_COLOR int LCD_DrawLine( int x0, int y0, int x1, int y1, int color ); // 功能描述: 对LCD显示屏画Bar条操作 // 输入参数: // int x0: 直线开始列坐标(x坐标),范围0~(MaxX-1),不可大于或等于MaxX // int y0: 直线开始行坐标(y坐标),范围0~(MaxY-1),不可大于或等于MaxY // int x1: 直线结束列坐标(x坐标),范围0~(MaxX-1),不可大于或等于MaxX // int y1: 直线结束行坐标(y坐标),范围0~(MaxY-1),不可大于或等于MaxY // int color: 颜色设置:BK_COLOR或者TEXT_COLOR int LCD_FillBar( int x0, int y0, int x1, int y1, int color ); // 功能描述: 对LCD显示屏进行写字符串的操作 // 输入参数: // int x0: 字符写入的列坐标(x坐标),范围0~(MaxX-1) // int y0: 字符写入的行坐标(y坐标),范围0~(MaxY-1) // int color: 字符写入的颜色设置:BK_COLOR或者TEXT_COLOR // 返回值 0: 成功 int LCD_WriteString( int x0, int y0, char* pStr, int color );

以test_lcd为例,介绍利用eclipse / Sourcery G++工具进行应用程序开发时,如何使用lcd_api.h函数库来实现对LCD的显示操作。

首先需要在应用工程项目文件test_lcd中导入API函数相关的几个文件:lcd_api.h、lcd_api.cpp 以及DotLib.CPP(主要实现了西文、汉字显示功能)。在eclipse / Sourcery G++ IDE下导入不仅仅是将这些文件加入到项目工程中,同时也会把这几个文件复制到项目工程所在的目录下。以下为测试代码:

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

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:大数据就业前景如何?现在学习大数据已经晚了吗?
下一篇:Java中的abstract和interface
相关文章

 发表评论

暂时没有评论,来抢沙发吧~