0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

英创信息技术 来源:英创信息技术 作者:英创信息技术 2020-02-03 10:04 次阅读

1、简述

英创公司嵌入式板卡EM335x是一款高性能的Cortex-A8硬件平台,板卡带有丰富的硬件接口,非常适用于工业应用开发。

EM335x板卡CPU采用了Ti公司的AM3354,AM3354的LCD控制器包括有两种独立的控制器:一种是行扫(raster)模式,一种是LCD接口驱动(LIDD)模式,raster 模式用于处理同步LCD,用于支持彩色液晶显示屏,而LIDD模式可以用来支持低成本的单色点阵LCD模块。

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

2、单色LCD接线

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

LCD的第19脚为背光电源正,EM335x CN3的第30脚为PWM信号输出,低电平有效。这两个引脚在物理上并不是直接相连,而是应该将PWM作为LCD的背光控制信号,通过控制一个电子开关实现LCD背光的打开与关闭,具体连接可参考下图。

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

Linux操作系统中,与彩色屏的设备节点不同,对于单色LCD的设备节点定义为:'/dev/em335x_lcd',因此Linux应用程序操作单色LCD时,一般为以下几个步骤:

1、打开LCD设备文件:
fd = open('/dev/em335x_lcd', O_RDWR);
2、调用标准的write( )函数对LCD屏进行操作。
3、关闭LCD设备文件。

为了方便客户使用,我们设计了一套通用的汉字及LCD显示接口函数,这些接口函数定义和实现分别在lcd_api.h lcd_api.cpp中,函数中包括画点、画线、画Bar条、写块数据、输出汉字及字符等操作。关于各个函数的定义说明,可参见lcd_api.h头文件中的中文注释。其中的汉字支持为标准一级全汉字,为16×16点阵字模,西文(字母、数字和符号)为8×14点阵字模,这两个字模文件分别为cclib、cclib12.fnt、ascii.chr,放置在EM335x嵌入式主板的根文件系统“/usr”目录中。各个函数定义如下:

// 功能描述: 启动对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( );

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    87

    文章

    11285

    浏览量

    209275
  • 嵌入式主板
    +关注

    关注

    7

    文章

    6085

    浏览量

    35292
收藏 人收藏

    评论

    相关推荐

    AM335x和AMIC110 Sitara™处理器技术参考手册

    电子发烧友网站提供《AM335x和AMIC110 Sitara™处理器技术参考手册.pdf》资料免费下载
    发表于 11-14 15:07 0次下载
    AM<b class='flag-5'>335x</b>和AMIC110 Sitara™处理器<b class='flag-5'>技术</b>参考手册

    中科达荣获2024年软件和信息技术服务优秀企业

    及前百家企业”名单。中科达凭借非凡的技术实力与持续的创新能力,成功入选“2024年度软件和信息技术服务竞争力百强企业”以及“2024年软件和信息技术服务优秀企业”。
    的头像 发表于 10-30 11:44 451次阅读

    在饱和状态下运行UCC2888x离线降压以降低成本

    电子发烧友网站提供《在饱和状态下运行UCC2888x离线降压以降低成本.pdf》资料免费下载
    发表于 10-14 09:47 0次下载
    在饱和状态下运行UCC2888<b class='flag-5'>x</b>离线降压以降<b class='flag-5'>低成本</b>

    AM335x功耗估算工具

    电子发烧友网站提供《AM335x功耗估算工具.pdf》资料免费下载
    发表于 10-12 11:46 0次下载
    AM<b class='flag-5'>335x</b>功耗估算工具

    锐恩科技,以实力打造国产单片机替代品牌!

    今天我们要介绍的深圳锐恩科技的单片机。 鉴于我国集成电路产业起步较晚,核心研发技术非常的短缺,导致了我国芯片需要依赖进口。而可替代进口MCU的国产芯片,产品性能必须要稳定。 深圳
    发表于 09-25 09:49

    AM335x硬件设计指南

    电子发烧友网站提供《AM335x硬件设计指南.pdf》资料免费下载
    发表于 09-19 11:05 0次下载
    AM<b class='flag-5'>335x</b>硬件设计指南

    AM335x原理图核对表

    电子发烧友网站提供《AM335x原理图核对表.pdf》资料免费下载
    发表于 09-19 11:03 0次下载
    AM<b class='flag-5'>335x</b>原理图核对表

    如何使用低成本TMP6x线性热敏电阻实现±1°C或更高的温度精度

    电子发烧友网站提供《如何使用低成本TMP6x线性热敏电阻实现±1°C或更高的温度精度.pdf》资料免费下载
    发表于 09-10 10:02 0次下载
    如何使用<b class='flag-5'>低成本</b>TMP6<b class='flag-5'>x</b>线性热敏电阻实现±1°C或更高的温度精度

    梯度科技入选2023年信息技术应用创新解决方案名单

    日前,工业和信息化部网络安全产业发展中心(工业和信息化部信息中心)在天津举办2024信息技术应用创新发展大会暨解决方案应用推广大会。会上正式公布了2023年
    的头像 发表于 09-09 16:29 411次阅读

    龙芯中科突破“卡脖子”难题,构建新型信息技术体系

    胡伟武强调,在Wintel和AA体系主导全球电子产业的环境下,中国需建立独立于X86和ARM的第三套信息技术体系和产业生态,解决关键技术被封锁的困境,加速形成新质生产力,从而创造新的竞争优势。
    的头像 发表于 05-20 16:12 578次阅读

    探寻未来显示技术LCD、LED、OLED谁将引领潮流?

    随着科技的不断进步,显示技术也在不断演进,LCD、LED和OLED显示技术作为主流,各自展现出独特的特点和优势。那么在未来,谁将引领
    的头像 发表于 03-18 09:44 1079次阅读
    探寻未来<b class='flag-5'>显示</b><b class='flag-5'>技术</b>:<b class='flag-5'>LCD</b>、LED、OLED谁将引领潮流?

    龙芯中科三项信方案入围工信部2023年信息技术应用创新应用示范案例名单

    近日,工业和信息化部通报了2023年信息技术应用创新解决方案征集遴选结果,本次共评选出典型解决方案173个、应用示范案例83个、单项创新案例64个。
    的头像 发表于 03-07 16:45 911次阅读
    龙芯中科三项信<b class='flag-5'>创</b>方案入围工信部2023年<b class='flag-5'>信息技术</b>应用创新应用示范案例名单

    单色液晶显示龙头晶讯光电撤回IPO

    湖南晶讯光电股份有限公司(以下简称晶讯光电),作为国内单色液晶显示领域的佼佼者,其单色液晶显示产品生产规模、销量、收入连续三年(2020年—2022年)保持全国领先地位。然而,日前该公
    的头像 发表于 03-01 15:03 552次阅读

    光伏户用如何做到低成本获客?

    光伏户用如何做到低成本获客? 随着可再生能源的日益普及和技术的不断进步,光伏系统正逐渐走进千家万户。然而,对于光伏企业来说,如何在激烈的市场竞争中低成本地获取客户,成为了他们面临的一大挑战。本文将
    发表于 02-27 10:33

    【全志T113-i】OK113i-S开发板-2适配10寸LCD显示

    前言本文介绍如何在OK113i-S开发板上适配一个自己的10寸LCD。OK113i-S 是一个优秀的开发板,支持lvds 单8,双8显示,最大分辨率1280
    发表于 12-20 10:31