0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

英創(chuàng)信息技術(shù)國家電網(wǎng)智能電力終端標(biāo)準(zhǔn)顯示接口的實(shí)現(xiàn)

英創(chuàng)信息技術(shù) ? 來源:英創(chuàng)信息技術(shù) ? 作者:英創(chuàng)信息技術(shù) ? 2020-01-16 09:16 ? 次閱讀

EM9160是英創(chuàng)公司一款資源豐富、性能穩(wěn)定、簡單易用的高性價(jià)比工控主板,它包含了6個(gè)用戶可用的通用異步串口、一個(gè)網(wǎng)口、16位GPIO、以及英創(chuàng)特有的精簡ISA總線等豐富的硬件資源,支持WinCE5.0、WinCE6.0和Linux系統(tǒng)。目前,EM9160廣泛應(yīng)用于國家電網(wǎng)智能電力終端,如集抄器、充值終端等,出貨量超過10W片。國家電網(wǎng)公司企業(yè)標(biāo)準(zhǔn)對(duì)國家電網(wǎng)智能電力終端的外形接口、人機(jī)界面、通信接口等都做了詳細(xì)的規(guī)定。用戶基于EM9160,在外圍做一定的電路擴(kuò)展后就能滿足國網(wǎng)標(biāo)準(zhǔn)關(guān)于電力終端數(shù)據(jù)通信、電量采集、信息顯示等方面的需求。

國家智能電網(wǎng)己經(jīng)進(jìn)入全面建設(shè)階段,要求電力終端的通訊接口越來越多,應(yīng)用軟件越來越復(fù)雜,對(duì)系統(tǒng)可靠性的要求也越來越高。為此,我們將EM9160 的操作系統(tǒng)WinCE5.0的升級(jí)到了WinCE6.0,系統(tǒng)可靠性進(jìn)一步提高。同時(shí)根據(jù)當(dāng)下對(duì)電力終端的新需求,開發(fā)了EM9160的升級(jí)主板EM9280。

EM9280板載了8個(gè)異步串口,完全滿足當(dāng)下電力智能終端對(duì)通訊接口的需求,根據(jù)電力智能終端特點(diǎn),去掉了ISA總線擴(kuò)展,轉(zhuǎn)而支持多達(dá)32位的GPIO。同時(shí)系統(tǒng)內(nèi)核、Flash、CPU主頻等都有較大升級(jí)。在顯示方面,EM9280支持分辨率從320 X 240到1024 X 768的彩色TFT LCD顯示,為了支持國家智能電網(wǎng)智能電力終端對(duì)顯示的規(guī)定,EM9280專門引出了一個(gè)單色LCD接口。下圖是EM9280連接符合國網(wǎng)標(biāo)準(zhǔn)的單色LCD的效果圖。

圖1:EM9280連接160*160單色液晶

本文就將介紹EM9280如何支持滿足國家電網(wǎng)標(biāo)準(zhǔn)的160 X160單色點(diǎn)陣液晶顯示。

1、EM9280單色LCD硬件接口

EM9280的單色屏接口在主板背面,編號(hào)為CN4,其引腳定義如下:

EM9280_CN4 單色LCD信號(hào)定義及說明
1 GND
2 LCD_RS,LCE命令/數(shù)據(jù)寄存器選擇
3 LCD_WR#,LCD寫信號(hào),低有效,Inter時(shí)序
4 LCD_RD#,LCD讀信號(hào),低有效,Inter時(shí)序
5 LCD_CS#,LCD片選,低有效
6 LCD_REST#,LCD復(fù)位信號(hào),低有效
7 VDD,LCD電源,+3.3V
8 LCD_D0,LCD數(shù)據(jù)總線
9 LCD_D1,LCD數(shù)據(jù)總線
10 LCD_D2,LCD數(shù)據(jù)總線
11 LCD_D3,LCD數(shù)據(jù)總線
12 LCD_D4,LCD數(shù)據(jù)總線
13 LCD_D5,LCD數(shù)據(jù)總線
14 LCD_D6,LCD數(shù)據(jù)總線
15 LCD_D7,LCD數(shù)據(jù)總線
16 LEDK,LCD背光負(fù)極
17 NC
18 LEDA,LCD背光正極

EM9280單色屏接口詳細(xì)說明請(qǐng)參考《EM9280工控主板數(shù)據(jù)手冊(cè)》。

2、EM9280單色LCD軟件接口

EM9280預(yù)裝了WinCE6.0嵌入式操作系統(tǒng),本身支持窗口編程,但對(duì)于160 X160點(diǎn)陣的單色屏來講,卻并不適合MFC框架的界面編程。針對(duì)單色點(diǎn)陣屏的顯示特點(diǎn),我們封裝一組高效、簡單易用的畫點(diǎn)、畫線、寫塊、寫字符串等操作屏的API函數(shù)。介紹如下:

功能描述: 啟動(dòng)對(duì)LCD屏的操作功能,并初始化LCD顯示屏,下面的所有函數(shù),應(yīng)該在LCD_Init()返回成功后再調(diào)用。
輸入參數(shù): LCD的類型。
返回值 > 0: 啟動(dòng)LCD成功,并返回LCD的類型。
= -1: 啟動(dòng)LCD失敗。
INT LCD_Init( int LCDType );

功能描述: 設(shè)置顯示字體,本驅(qū)動(dòng)支持12*12和16*16點(diǎn)陣字體,默認(rèn)字體為16*16點(diǎn)陣
輸入?yún)?shù): FontWidth = 12:設(shè)置12*12點(diǎn)陣
FontWidth = 16: 設(shè)置16*16點(diǎn)陣(默認(rèn)設(shè)置)
返回值 > 0: 設(shè)置字體成功。
= -1: 設(shè)置字體失敗。
INT LCD_SetFont( unsigned int FontWidth );

功能描述: LCD刷新模式。
輸入?yún)?shù):
nRefreshMode = REAL_REFRESH:實(shí)現(xiàn)刷新,方便調(diào)試
nRefreshMode = AUTO_REFRESH:自動(dòng)刷新,刷新時(shí)間間隔為50mS.(默認(rèn)設(shè)置)
nRefreshMode = MANUAL_REFRESH:手動(dòng)刷新,設(shè)置成此模式后,只有調(diào)用了LCD_Refresh函數(shù),驅(qū)動(dòng)才會(huì)將顯存中的數(shù)據(jù)顯示到LCD上。
返回值 = 0: 設(shè)置刷新模式成功。
= -1: 設(shè)置刷新模式失敗。
INT LCD_RefreshMode( unsigned int nRefreshMode );

功能描述: 將顯存中的數(shù)據(jù)更新到LCD
返回值 = 0: 刷新成功。
= -1: 刷新失敗。
INT LCD_Refresh(void);

功能描述: 釋放對(duì)LCD顯示屏的操作功能,釋放相關(guān)資源。
輸入?yún)?shù): 無。
返回值 > 0: 初始化LCD成功,并返回LCD的類型。
= -1: 初始化LCD失敗。
INT LCD_DeInit( );

功能描述: 對(duì)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顯示屏的寫模式。(不支持)
輸入?yún)?shù): Mode = 0 : COPY 寫模式
Mode = 1 : XOR 寫模式
返回值 0: 成功
INT LCD_SetMode( int Mode );

功能描述: 對(duì)LCD顯示屏進(jìn)行描點(diǎn)操作。
輸入?yún)?shù):
x0: 描點(diǎn)的列坐標(biāo)(x坐標(biāo)),范圍0~(MaxX-1),不可大于或等于MaxX
y0: 描點(diǎn)的行坐標(biāo)(y坐標(biāo)),范圍0~(MaxY-1),不可大于或等于MaxY
color: 描點(diǎn)的顏色:BK_COLOR,TEXT_COLOR或XOR_WRITE
返回值 0: 成功。
INT LCD_PutPixel( int x0, int y0, int color );

功能描述: 對(duì)LCD顯示屏進(jìn)行寫字節(jié)操作。
輸入?yún)?shù):
x0: 寫字節(jié)的列坐標(biāo)(x坐標(biāo)),范圍0~(MaxX-1)
y0: 寫字節(jié)的行坐標(biāo)(y坐標(biāo)),范圍0~(MaxY-1)
byte: 寫的字節(jié)
返回值 0: 成功。
INT LCD_WriteByte( int x0, int y0, UCHAR byte );

功能描述: 對(duì)LCD顯示屏進(jìn)行寫多個(gè)字節(jié)操作,兼容原有LCD庫。
輸入?yún)?shù):
x0: 寫字節(jié)的列坐標(biāo)(x坐標(biāo)),范圍0~(MaxX-1)
y0: 寫字節(jié)的行坐標(biāo)(y坐標(biāo)),范圍0~(MaxY-1)
pHfont: 需要寫的字節(jié)組
NumOfBytes: 需要寫的字節(jié)數(shù)
返回值 0: 成功。
INT LCD_WriteByteBlock( int x0, int y0, PBYTE pHfont, int nNumOfBytes );

功能描述: 對(duì)LCD顯示屏進(jìn)行寫多個(gè)字節(jié)操作
輸入?yún)?shù):
x0: 寫字節(jié)的列坐標(biāo)(x坐標(biāo)),范圍0~(MaxX-1)
y0: 寫字節(jié)的行坐標(biāo)(y坐標(biāo)),范圍0~(MaxY-1)
x1: 寫字節(jié)的列坐標(biāo)(x坐標(biāo)),范圍0~(MaxX-1)
pHfont: 需要寫的字節(jié)組
NumOfBytes: 需要寫的字節(jié)數(shù)
返回值 0: 成功。
INT LCD_WriteBlock( int x0, int y0, int x1, PBYTE pHfont, int NumOfBytes );

功能描述: 對(duì)LCD顯示屏進(jìn)行讀字節(jié)操作。
輸入?yún)?shù):
x: 寫字節(jié)的列坐標(biāo)(x坐標(biāo)),范圍0~(MaxX-1)
y: 寫字節(jié)的行坐標(biāo)(y坐標(biāo)),范圍0~(MaxY-1)
返回值 : 讀取的字節(jié)。
INT LCD_ReadByte( int x0, int y0 );

功能描述: 對(duì)LCD顯示屏畫直線操作。
輸入?yún)?shù):
x0: 直線開始列坐標(biāo)(x坐標(biāo)),范圍0~(MaxX-1),不可大于或等于MaxX
y0: 直線開始行坐標(biāo)(y坐標(biāo)),范圍0~(MaxY-1),不可大于或等于MaxY
x1: 直線結(jié)束列坐標(biāo)(x坐標(biāo)),范圍0~(MaxX-1),不可大于或等于MaxX
y1: 直線結(jié)束行坐標(biāo)(y坐標(biāo)),范圍0~(MaxY-1),不可大于或等于MaxY
color: 顏色設(shè)置:BK_COLOR,TEXT_COLOR或XOR_WRITE
INT LCD_DrawLine( int x0, int y0, int x1, int y1, int color );

功能描述: 對(duì)LCD顯示屏畫Bar條操作。
輸入?yún)?shù):
x0: 直線開始列坐標(biāo)(x坐標(biāo)),范圍0~(MaxX-1),不可大于或等于MaxX
y0: 直線開始行坐標(biāo)(y坐標(biāo)),范圍0~(MaxY-1),不可大于或等于MaxY
x1: 直線結(jié)束列坐標(biāo)(x坐標(biāo)),范圍0~(MaxX-1),不可大于或等于MaxX
y1: 直線結(jié)束行坐標(biāo)(y坐標(biāo)),范圍0~(MaxY-1),不可大于或等于MaxY
color: 顏色設(shè)置:BK_COLOR,TEXT_COLOR或XOR_WRITE
INT LCD_FillBar( int x0, int y0, int x1, int y1, int color );

功能描述: 對(duì)LCD顯示屏進(jìn)行寫字符串的操作。
輸入?yún)?shù):
x0: 字符寫入的列坐標(biāo)(x坐標(biāo)),范圍0~(MaxX-1)
y0: 字符寫入的行坐標(biāo)(y坐標(biāo)),范圍0~(MaxY-1)
pStr:以'