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

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

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

低成本的單色LCD構(gòu)建菜單界面的方案介紹

英創(chuàng)信息技術(shù) ? 作者:英創(chuàng)信息技術(shù) ? 2019-09-28 02:49 ? 次閱讀

低成本的單色LCD在工業(yè)領(lǐng)域應(yīng)用非常廣泛,英創(chuàng)公司提供的基于WinCE平臺(tái)的EM9X60系列板卡均支持外接單色LCD屏,目前應(yīng)用得比較多的規(guī)格包括有LCD320X240、LCD240X128、LCD128X64等。在實(shí)際應(yīng)用中有許多對(duì)于菜單界面操作的需求,由于EM9X60系列板沒(méi)有支持標(biāo)準(zhǔn)的Windows桌面顯示,因此應(yīng)用程序無(wú)法直接利用WindowsCE的窗口界面、或者基于MFC的對(duì)話框作為應(yīng)用程序的操作界面,而是需要客戶根據(jù)應(yīng)用的具體要求自行構(gòu)建菜單界面,本文將重點(diǎn)介紹這方面的內(nèi)容。
基于菜單界面操作過(guò)程實(shí)質(zhì)一個(gè)簡(jiǎn)單的交互式操作,需要實(shí)時(shí)響應(yīng)鍵盤(pán)消息、定時(shí)消息等。WinCE操作系統(tǒng)內(nèi)部具備有完善的消息處理機(jī)制,來(lái)實(shí)現(xiàn)應(yīng)用請(qǐng)求消息的實(shí)時(shí)響應(yīng)。因此本案例是一個(gè)具有Windows風(fēng)格的應(yīng)用例程,通過(guò)窗口的消息傳遞來(lái)實(shí)現(xiàn)對(duì)于鍵盤(pán)、定時(shí)任務(wù)的實(shí)時(shí)響應(yīng),從而實(shí)現(xiàn)對(duì)于菜單界面的操作。
下面分兩個(gè)部分來(lái)介紹該例程:

1、應(yīng)用程序框架
在Windows下進(jìn)行窗口應(yīng)用程序編程的優(yōu)點(diǎn),程序只對(duì)操作系統(tǒng)發(fā)給它的通知進(jìn)行響應(yīng),比如收到鍵盤(pán)被按下、定時(shí)任務(wù)等,而不需要應(yīng)用程序不斷地查詢窗口的請(qǐng)求輸入。在支持單色LCD的WinCE系統(tǒng)下也是如此,操作系統(tǒng)在有輸入發(fā)生時(shí)會(huì)通知應(yīng)用程序,操作系統(tǒng)是通過(guò)發(fā)送消息到應(yīng)用程序窗口的方式來(lái)完成這個(gè)通知,雖然該“應(yīng)用程序窗口”無(wú)法正常顯示,但是可以通過(guò)它來(lái)完成消息的傳遞。本例程采用傳統(tǒng)的Windows窗口應(yīng)用程序編程的框架,以方便實(shí)現(xiàn)對(duì)于外界請(qǐng)求輸入的響應(yīng),從而實(shí)現(xiàn)在單色LCD上菜單界面的操作顯示。
在該程序例程中WinMain(…)函數(shù)也是按照窗口應(yīng)用程序的過(guò)程,首先進(jìn)行初始化操作,包括對(duì)于LCD屏的初始化、菜單界面的初始化操作、加載矩陣鍵盤(pán)驅(qū)動(dòng)等操作;然后是創(chuàng)建窗口;再進(jìn)入消息循環(huán)。如下圖所示:

低成本的單色LCD構(gòu)建菜單界面的方案介紹

// LCD初始化操作以及加載缺省的菜單界面
i1 = LCD_Init( LCD_12864 );
LCD_LoadSmallFnt( );
LCD_SetMode( 1 ); // set to XOR mode
status = MenuManager.LoadMenu( );
if( status < 0 ) return status;
MenuManager.Show( );
// 激活基于EM9x60板卡ISA的矩陣鍵盤(pán)驅(qū)動(dòng)
hDevice = ActivateDevice( TEXT('Drivers\\isa_keypad'), 0);

// 初始化本程序?qū)嵗?,主要是?chuàng)建窗口等工作
hwndMain = InitInstance( hInstance, lpCmdLine, nCmdShow );
if( hwndMain == 0 )
return 0x10;// init fail!
// 設(shè)置定時(shí)器的時(shí)間間隔為2秒
SetTimer( hwndMain, 1, 2000, NULL );

// 應(yīng)用程序消息循環(huán)
while( GetMessage( &msg, NULL, 0, 0 ) )
{
TranslateMessage( &msg );
DispatchMessage( &msg );
}
KillTimer( hwndMain, 1 );
LCD_UnLoadSmallFnt( );
其中的消息循環(huán)為主線程,循環(huán)很簡(jiǎn)單,調(diào)用GetMessage函數(shù),從應(yīng)用程序的消息隊(duì)列中取得一條來(lái)自系統(tǒng)的消息,如果沒(méi)有消息到來(lái),這個(gè)函數(shù)就是處于等待狀態(tài),相當(dāng)于這個(gè)應(yīng)用主線程就被阻塞直到消息到來(lái)。
菜單例程中響應(yīng)的系統(tǒng)消息包括:鍵盤(pán)消息(WM_KEYUP)和定時(shí)消息(WM_TIMER),WinCE和Windows標(biāo)準(zhǔn)系統(tǒng)一樣使用了相同的鍵盤(pán)消息處理方式。當(dāng)一個(gè)鍵按下時(shí),通常是以WM_KEYDOWN消息起始,如果按下的鍵代表一個(gè)字符,比如一個(gè)字母或數(shù)字,在WM_KEYDOWN之后還會(huì)發(fā)送一個(gè)WM_CHAR消息,當(dāng)鍵被釋放時(shí),最終的WM_KEYUP消息被發(fā)送,在這些消息的參數(shù)wParam指示了按下鍵的虛擬鍵值。為了簡(jiǎn)化程序,在此例程中對(duì)于按鍵的響應(yīng),是等到按鍵釋放的時(shí)候,也就是說(shuō)應(yīng)用程序只響應(yīng)WM_KEYUP消息。定時(shí)消息則可以通過(guò)函數(shù)SetTimer( … )來(lái)實(shí)現(xiàn),該函數(shù)同時(shí)也設(shè)置了定時(shí)事件、以及定時(shí)間隔。
消息的響應(yīng)是通過(guò)定義MainMessage表格,將消息值和消息處理例程函數(shù)關(guān)聯(lián)起來(lái)。如:
const struct decodeUINT MainMessages[] =
{
{ WM_KEYUP, DoKeysMain },
{ WM_TIMER, DoTimerMain },
{ WM_DESTROY, DoDestroyMain }
};

// 鍵盤(pán)消息WM_KEYUP ..處理函數(shù)
LRESULT DoKeysMain( HWND hWnd, UINT wMsg, WPARAM wParam, LPARAM lParam )
{
switch( wParam )
{
case 0x33:// 移動(dòng)鍵
MenuManager.Key_SHIFT( );
break;
case 0x36:// 確認(rèn)鍵
MenuManager.Key_ENTER( );
break;
}
return 0;
}
// 定時(shí)消息WM_TIMER處理函數(shù)
LRESULT DoTimerMain( HWND hWnd, UINT wMsg, WPARAM wParam, LPARAM lParam )
{
MenuManager.Update( );
return 0;
}
2、菜單界面設(shè)計(jì)
在本例程中主要是針對(duì)一個(gè)基于LCD128X64顯示終端所設(shè)計(jì)的二級(jí)菜單顯示界面,功能鍵有兩個(gè):移動(dòng)鍵(Key_Shift)和確認(rèn)鍵(Key_Enter),通過(guò)移動(dòng)鍵選擇菜單項(xiàng),確認(rèn)鍵來(lái)進(jìn)入下一級(jí),或者返回上一級(jí)菜單。
菜單的顯示和管理是通過(guò)C++方式來(lái)實(shí)現(xiàn),Class Item定義菜單中各個(gè)菜單項(xiàng)的顯示特性以及操作特性;Class Menu定義了菜單的特性,其中包含又對(duì)于菜單中各個(gè)菜單項(xiàng)管理的功能;Class MenuManager是一個(gè)菜單管理類,這個(gè)類實(shí)現(xiàn)了對(duì)于各個(gè)菜單的管理和操作特性,相當(dāng)于一個(gè)人機(jī)交互界面的功能。它們定義分別在 Item.h Menu.h文件中。
為了增加菜單設(shè)計(jì)的靈活性,對(duì)于各個(gè)菜單界面的顯示內(nèi)容采用了讀取配置文件的方式,即在配置文件中定義各個(gè)菜單的顯示名稱和顯示位置,如:
// item的類型 顯示名稱 X位置 Y位置 下一級(jí)菜單名稱
item=301 終端參數(shù) 0 0 MENU1
item=301 實(shí)時(shí)數(shù)據(jù) 0 16 MENU2
item=301 終端狀態(tài) 0 32 MENU3
item=301 顯示配置 0 48 MENU4
item=301 擴(kuò)展菜單 64 0 MENU5
item=301 擴(kuò)展菜單 64 16 MENU6
item=301 擴(kuò)展菜單 64 32 MENU7
item=301 擴(kuò)展菜單 64 48 MENU8
根據(jù)該配置文件所形成的菜單如下:

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • WINDOWS
    +關(guān)注

    關(guān)注

    3

    文章

    3503

    瀏覽量

    87881
  • 嵌入式主板
    +關(guān)注

    關(guān)注

    7

    文章

    6081

    瀏覽量

    34938
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    一款低成本高性能的LCD移動(dòng)電源設(shè)計(jì)方案

    據(jù)統(tǒng)計(jì),市面上80%以上的產(chǎn)品采用的粗略的電量計(jì)量方式,同質(zhì)化嚴(yán)重。為了讓消費(fèi)者有更好的用戶體驗(yàn),攜帶多重優(yōu)秀品質(zhì)的高性價(jià)比LCD移動(dòng)電源應(yīng)運(yùn)而生。本文介紹一款低成本高性能的LCD移動(dòng)
    發(fā)表于 10-20 11:08 ?2355次閱讀

    具有觸摸感應(yīng)接口的觸摸界面的應(yīng)用

    遷移到觸摸傳感接口的應(yīng)用設(shè)計(jì)人員(圖1)正在尋找易于集成的相當(dāng)堅(jiān)固,低成本和低功耗的解決方案。分段式LCD歷來(lái)是一種流行的選擇,并且在各種醫(yī)療和工業(yè)應(yīng)用中繼續(xù)發(fā)展。然而,近年來(lái),使用TFT,OLED
    的頭像 發(fā)表于 01-23 08:39 ?6525次閱讀

    EM335x支持低成本單色LCD顯示方案

    LCD控制器包括有兩種獨(dú)立的控制器:一種是行掃(raster)模式,一種是LCD接口驅(qū)動(dòng)(LIDD)模式,raster 模式用于處理同步LCD,用于支持彩色液晶顯示屏,而LIDD模式可以用來(lái)支持
    發(fā)表于 07-11 11:00

    低成本LCD偏置電源分立式解決方案

    描述此參考設(shè)計(jì)使用升壓轉(zhuǎn)換器 IC TPS61085 提供低成本 LCD 偏置電源電路。此解決方案提供薄膜晶體管 (TFT) LCD 顯示屏所需的所有四個(gè)電壓。TPS61085 升壓轉(zhuǎn)
    發(fā)表于 11-19 14:54

    圖形LCD模塊的菜單方式人機(jī)交互界面

    在以單片機(jī)為核心的嵌入式應(yīng)用中,友好的人機(jī)交互界面起著十分重要的作用。筆者在設(shè)計(jì)中使用WGM-12864B 圖形LCD 模塊實(shí)現(xiàn)一種中文窗口菜單界面,設(shè)計(jì)中使用的方法具有普遍性意
    發(fā)表于 04-16 13:57 ?43次下載

    低成本LCD驅(qū)動(dòng)控制的ASIC實(shí)現(xiàn)方案

    低成本LCD驅(qū)動(dòng)控制的ASIC實(shí)現(xiàn)方案深圳集成電路設(shè)計(jì)產(chǎn)業(yè)化基地管理中心劉 奇LCD驅(qū)動(dòng)控制是顯示驅(qū)動(dòng)信號(hào),進(jìn)而驅(qū)動(dòng)LCD顯示器的核心部件。
    發(fā)表于 12-20 09:32 ?56次下載

    圖形點(diǎn)陣LCD液晶模塊顯示界面的可視化編程方案與實(shí)踐

    圖形點(diǎn)陣LCD液晶模塊顯示界面的可視化編程方案與實(shí)踐 隨著圖形點(diǎn)陣LCD液晶顯示模塊在各行各業(yè)的逐步使用,使得人機(jī)界面變得越來(lái)越直觀,尤其
    發(fā)表于 11-05 09:16 ?1044次閱讀
    圖形點(diǎn)陣<b class='flag-5'>LCD</b>液晶模塊顯示<b class='flag-5'>界面的</b>可視化編程<b class='flag-5'>方案</b>與實(shí)踐

    基于MAX17014的低成本LCD TV電源解決方案

    基于MAX17014的低成本LCD TV電源解決方案 Maxim 公司的MAX17014是低成本多輸出的LCD TV電源控制器,能
    發(fā)表于 03-24 17:53 ?941次閱讀
    基于MAX17014的<b class='flag-5'>低成本</b><b class='flag-5'>LCD</b> TV電源解決<b class='flag-5'>方案</b>

    WinCE下單色LCD菜單界面設(shè)計(jì)方案

    低成本單色 LCD 在工業(yè)領(lǐng)域應(yīng)用非常廣泛,英創(chuàng)公司提供的基于WinCE平臺(tái)的EM9X60系列板卡均支持外接單色LCD屏,目前應(yīng)用得比較多
    發(fā)表于 06-09 15:49 ?49次下載
    WinCE下<b class='flag-5'>單色</b><b class='flag-5'>LCD</b>屏<b class='flag-5'>菜單</b><b class='flag-5'>界面設(shè)計(jì)方案</b>

    適用于單片機(jī)LCD12864的界面菜單設(shè)計(jì)思路資料免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是適用于單片機(jī)LCD12864的界面菜單設(shè)計(jì)思路資料免費(fèi)下載。
    發(fā)表于 07-02 16:06 ?43次下載
    適用于單片機(jī)<b class='flag-5'>LCD</b>12864的<b class='flag-5'>界面</b><b class='flag-5'>菜單</b>設(shè)計(jì)思路資料免費(fèi)下載

    英創(chuàng)信息技術(shù)ARM9 Linux智能終端菜單界面設(shè)計(jì)介紹

    240x128、LCD128x64、LCD160x160等。在實(shí)際應(yīng)用中有許多對(duì)于菜單界面操作的需求,需要客戶根據(jù)應(yīng)用的具體要求自行構(gòu)建
    的頭像 發(fā)表于 11-18 10:04 ?1257次閱讀
    英創(chuàng)信息技術(shù)ARM9 Linux智能終端<b class='flag-5'>菜單</b><b class='flag-5'>界面</b>設(shè)計(jì)<b class='flag-5'>介紹</b>

    英創(chuàng)信息技術(shù)EM335x支持低成本單色LCD顯示介紹

    LCD控制器包括有兩種獨(dú)立的控制器:一種是行掃(raster)模式,一種是LCD接口驅(qū)動(dòng)(LIDD)模式,raster 模式用于處理同步LCD,用于支持彩色液晶顯示屏,而LIDD模式可以用來(lái)支持
    的頭像 發(fā)表于 02-03 10:04 ?1839次閱讀

    英創(chuàng)信息技術(shù)ESM335x主板支持單色LCD屏顯示簡(jiǎn)介

    英創(chuàng)公司曾經(jīng)在EM335x主板上推出了一套支持低成本單色LCD屏的方案,詳細(xì)的介紹請(qǐng)參考文章《EM335x支持
    的頭像 發(fā)表于 02-07 11:05 ?1371次閱讀
    英創(chuàng)信息技術(shù)ESM335x主板支持<b class='flag-5'>單色</b><b class='flag-5'>LCD</b>屏顯示簡(jiǎn)介

    低成本的醫(yī)療檢測(cè)與監(jiān)測(cè)方案

    介紹最新的低成本的醫(yī)療檢測(cè)與監(jiān)測(cè)方案。
    發(fā)表于 03-16 15:38 ?8次下載
    <b class='flag-5'>低成本</b>的醫(yī)療檢測(cè)與監(jiān)測(cè)<b class='flag-5'>方案</b>

    基于AVR單片機(jī)的樹(shù)狀菜單界面的設(shè)計(jì)

    電子發(fā)燒友網(wǎng)站提供《基于AVR單片機(jī)的樹(shù)狀菜單界面的設(shè)計(jì).pdf》資料免費(fèi)下載
    發(fā)表于 10-30 11:10 ?0次下載
    基于AVR單片機(jī)的樹(shù)狀<b class='flag-5'>菜單</b><b class='flag-5'>界面的</b>設(shè)計(jì)