英创信息技术国家电网智能电力终端标准显示接口的实现

描述

EM9160是英创公司一款资源丰富、性能稳定、简单易用的高性价比工控主板,它包含了6个用户可用的通用异步串口、一个网口、16位GPIO、以及英创特有的精简ISA总线等丰富的硬件资源,支持WinCE5.0、WinCE6.0和Linux系统。目前,EM9160广泛应用于国家电网智能电力终端,如集抄器、充值终端等,出货量超过10W片。国家电网公司企业标准对国家电网智能电力终端的外形接口、人机界面、通信接口等都做了详细的规定。用户基于EM9160,在外围做一定的电路扩展后就能满足国网标准关于电力终端数据通信、电量采集、信息显示等方面的需求。

国家智能电网己经进入全面建设阶段,要求电力终端的通讯接口越来越多,应用软件越来越复杂,对系统可靠性的要求也越来越高。为此,我们将EM9160 的操作系统WinCE5.0的升级到了WinCE6.0,系统可靠性进一步提高。同时根据当下对电力终端的新需求,开发了EM9160的升级主板EM9280。

EM9280板载了8个异步串口,完全满足当下电力智能终端对通讯接口的需求,根据电力智能终端特点,去掉了ISA总线扩展,转而支持多达32位的GPIO。同时系统内核、Flash、CPU主频等都有较大升级。在显示方面,EM9280支持分辨率从320 X 240到1024 X 768的彩色TFT LCD显示,为了支持国家智能电网智能电力终端对显示的规定,EM9280专门引出了一个单色LCD接口。下图是EM9280连接符合国网标准的单色LCD的效果图。

图1:EM9280连接160*160单色液晶

本文就将介绍EM9280如何支持满足国家电网标准的160 X160单色点阵液晶显示。

1、EM9280单色LCD硬件接口

EM9280的单色屏接口在主板背面,编号为CN4,其引脚定义如下:

EM9280_CN4 单色LCD信号定义及说明
1   GND
2   LCD_RS,LCE命令/数据寄存器选择
3   LCD_WR#,LCD写信号,低有效,Inter时序
4   LCD_RD#,LCD读信号,低有效,Inter时序
5   LCD_CS#,LCD片选,低有效
6   LCD_REST#,LCD复位信号,低有效
7   VDD,LCD电源,+3.3V
8   LCD_D0,LCD数据总线
9   LCD_D1,LCD数据总线
10   LCD_D2,LCD数据总线
11   LCD_D3,LCD数据总线
12   LCD_D4,LCD数据总线
13   LCD_D5,LCD数据总线
14   LCD_D6,LCD数据总线
15   LCD_D7,LCD数据总线
16   LEDK,LCD背光负极
17   NC
18   LEDA,LCD背光正极

EM9280单色屏接口详细说明请参考《EM9280工控主板数据手册》。

2、EM9280单色LCD软件接口

EM9280预装了WinCE6.0嵌入式操作系统,本身支持窗口编程,但对于160 X160点阵的单色屏来讲,却并不适合MFC框架的界面编程。针对单色点阵屏的显示特点,我们封装一组高效、简单易用的画点、画线、写块、写字符串等操作屏的API函数。介绍如下:

功能描述: 启动对LCD屏的操作功能,并初始化LCD显示屏,下面的所有函数,应该在LCD_Init()返回成功后再调用。
        输入参数: LCD的类型。
        返回值 > 0: 启动LCD成功,并返回LCD的类型。
               = -1: 启动LCD失败。
        INT LCD_Init( int LCDType );

功能描述: 设置显示字体,本驱动支持12*12和16*16点阵字体,默认字体为16*16点阵
        输入参数: FontWidth = 12:设置12*12点阵
                  FontWidth = 16: 设置16*16点阵(默认设置)
        返回值 > 0: 设置字体成功。
               = -1: 设置字体失败。
        INT LCD_SetFont( unsigned int FontWidth );

功能描述: LCD刷新模式。
        输入参数:
                nRefreshMode = REAL_REFRESH:实现刷新,方便调试
                nRefreshMode = AUTO_REFRESH:自动刷新,刷新时间间隔为50mS.(默认设置)
                nRefreshMode = MANUAL_REFRESH:手动刷新,设置成此模式后,只有调用了LCD_Refresh函数,驱动才会将显存中的数据显示到LCD上。
        返回值 = 0: 设置刷新模式成功。
               = -1: 设置刷新模式失败。
        INT LCD_RefreshMode( unsigned int nRefreshMode );

功能描述: 将显存中的数据更新到LCD
        返回值 = 0: 刷新成功。
               = -1: 刷新失败。
        INT LCD_Refresh(void);

功能描述: 释放对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显示屏的写模式。(不支持)
        输入参数: Mode = 0 : COPY 写模式
                  Mode = 1 : XOR 写模式
        返回值 0: 成功
        INT LCD_SetMode( int Mode );

功能描述: 对LCD显示屏进行描点操作。
        输入参数:
                 x0: 描点的列坐标(x坐标),范围0~(MaxX-1),不可大于或等于MaxX
                 y0: 描点的行坐标(y坐标),范围0~(MaxY-1),不可大于或等于MaxY
                 color: 描点的颜色:BK_COLOR,TEXT_COLOR或XOR_WRITE
        返回值 0: 成功。
        INT LCD_PutPixel( int x0, int y0, int color );

功能描述: 对LCD显示屏进行写字节操作。
        输入参数:
                 x0: 写字节的列坐标(x坐标),范围0~(MaxX-1)
                 y0: 写字节的行坐标(y坐标),范围0~(MaxY-1)
                 byte: 写的字节 
        返回值 0: 成功。
        INT LCD_WriteByte( int x0, int y0, UCHAR byte );

功能描述: 对LCD显示屏进行写多个字节操作,兼容原有LCD库。
        输入参数:
                 x0: 写字节的列坐标(x坐标),范围0~(MaxX-1)
                 y0: 写字节的行坐标(y坐标),范围0~(MaxY-1) 
                 pHfont: 需要写的字节组
                 NumOfBytes: 需要写的字节数
        返回值 0: 成功。
        INT LCD_WriteByteBlock( int x0, int y0, PBYTE pHfont, int nNumOfBytes );

功能描述: 对LCD显示屏进行写多个字节操作
        输入参数:
                x0: 写字节的列坐标(x坐标),范围0~(MaxX-1)
                y0: 写字节的行坐标(y坐标),范围0~(MaxY-1)
                x1: 写字节的列坐标(x坐标),范围0~(MaxX-1)
                pHfont: 需要写的字节组
                NumOfBytes: 需要写的字节数
        返回值 0: 成功。
        INT LCD_WriteBlock( int x0, int y0, int x1, PBYTE pHfont, int NumOfBytes );

功能描述: 对LCD显示屏进行读字节操作。
        输入参数:
                 x: 写字节的列坐标(x坐标),范围0~(MaxX-1)
                 y: 写字节的行坐标(y坐标),范围0~(MaxY-1)
        返回值 : 读取的字节。
        INT LCD_ReadByte( int x0, int y0 );

功能描述: 对LCD显示屏画直线操作。
        输入参数:
                 x0: 直线开始列坐标(x坐标),范围0~(MaxX-1),不可大于或等于MaxX
                 y0: 直线开始行坐标(y坐标),范围0~(MaxY-1),不可大于或等于MaxY
                 x1: 直线结束列坐标(x坐标),范围0~(MaxX-1),不可大于或等于MaxX
                 y1: 直线结束行坐标(y坐标),范围0~(MaxY-1),不可大于或等于MaxY
                 color: 颜色设置:BK_COLOR,TEXT_COLOR或XOR_WRITE
        INT LCD_DrawLine( int x0, int y0, int x1, int y1, int color );

功能描述: 对LCD显示屏画Bar条操作。 
        输入参数:
                 x0: 直线开始列坐标(x坐标),范围0~(MaxX-1),不可大于或等于MaxX
                 y0: 直线开始行坐标(y坐标),范围0~(MaxY-1),不可大于或等于MaxY
                 x1: 直线结束列坐标(x坐标),范围0~(MaxX-1),不可大于或等于MaxX
                 y1: 直线结束行坐标(y坐标),范围0~(MaxY-1),不可大于或等于MaxY
                 color: 颜色设置:BK_COLOR,TEXT_COLOR或XOR_WRITE 
        INT LCD_FillBar( int x0, int y0, int x1, int y1, int color );

功能描述: 对LCD显示屏进行写字符串的操作。
        输入参数:
                 x0: 字符写入的列坐标(x坐标),范围0~(MaxX-1)
                 y0: 字符写入的行坐标(y坐标),范围0~(MaxY-1)
                 pStr:以''结尾的字符串
                 color: 字符写入的颜色设置:BK_COLOR或者TEXT_COLOR
        返回值 0: 成功。
        INT LCD_WriteString( int x0, int y0, LPSTR pStr, int color );

上面的函数申明在头文件“LCD_API.H”中,对应的库文件是“EM9280LcdDev.lib”用户在使用时,需要将这两个文件包含到自己的工程中。

使用EM9280作为智能电力终端的核心平台,能够减少用户外围电路的扩展,简化系统设计,降低整机成本。同时相对于EM9160,EM9280具有更快的运行速度,更多的系统存储空间和系统内存。EM9280的售价与EM9160保持一致,100价格为¥350/片。下表是EM9160与EM9280功能对比。

功能接口 EM9160 EM9280
UART异步串口 6 8
10M/100M网口 1 1
USB OTG   1
USG HOST 1 1
USB Device 1  
I2C接口 1 1
SPI同步串口 1 1
精简ISA总线 1  
GPIO通用数字IO 16位 32位
AD模拟通道 3路(10位) 2路(12位)
PWM脉冲输出 3路 4路
WDT看门狗 1 1
独立的RTC 1 1
Micro SD接口 1  
显示接口 单色点阵液晶 单色点阵液晶 / 彩色TFT LCD 电阻触摸屏
系统Flash 64MB NandFlash 128MB NandFlash
系统内存 64MB SDRAM 128M DDR2
CPU主频 200MHz 454MHz
系统供电 +5V / 235mA +5V / 170mA
操作系统 WinCE 5.0 / WinCE 6.0 / Linux WinCE 6.0 / Linux
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分