<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 智能移動(dòng)機器人的人機界面設計

智能移動(dòng)機器人的人機界面設計

作者: 時(shí)間:2012-11-10 來(lái)源:網(wǎng)絡(luò ) 收藏

2 窗口顯示

  主要是通過(guò)圖標菜單實(shí)現移動(dòng)機器人運動(dòng)參數的顯示,以及運動(dòng)軌跡的相關(guān)操作,如"打開(kāi)"、"暫停"、"關(guān)閉"等。因此,首先定義一個(gè)窗口的數據結構,并設置窗口的起始坐標、大小、標題等相關(guān)參數;然后調用GUI_WindowsDraw()輸出顯示窗口

/* 設置主窗口并顯示輸出 */

mainwindows.x = 0;

mainwindows.y = 0;

mainwindows.with = 240;

mainwindows.hight = 128;

mainwindows.title = (uint8 *) "Mobile Robot Interface";

mainwindows.state = NULL;

GUI_WindowsDraw(mainwindows); // 繪制主窗口

  圖標菜單也需要定義相關(guān)的數據結構,其中圖標數據和文字顯示可以通過(guò)字模軟件轉化為數據。如對應"打開(kāi)"圖標轉化為數據:

uint8 const menuico1[]={

0x00,0x70,0x00,0x1C,0x00,0x12,0x1C,0x1A,

0x17,0x0A,0x21,0xF1,0x20,0x1A,0x4F,0xFE,

0x58,0x02,0x50,0x02,0x60,0x06,0x60,0x04,

0x60,0x04,0x40,0x08,0x7F,0xF8,0x00,0x00,

}; /*;圖標"打開(kāi)";寬×高(像素) : 16×16*/

  然后,將每一個(gè)圖標菜單項的顯示坐標地址、圖標的數據指針、對應的服務(wù)函數等進(jìn)行設置后,即可調用GUI_MenuIcoDraw()實(shí)現顯示輸出。

mainmenu[0].icodat = (uint8 *) menuico1;

mainmenu[0].title = (uint8 *) "open";

mainmenu[0].Function = (void(*)())Runopen;

另外,主程序需要先調用GUI_SetColor(1,0)函數來(lái)設置前景色及背景色。1表示點(diǎn)顯示,0表示點(diǎn)滅。

3 圖標菜單選擇

  界面中還需實(shí)現對圖標菜單的選擇操作。I2C器件ZLG7290提供了I2C接口功能和鍵盤(pán)中斷信號。I2C總線(xiàn)是Philips推出的芯片間串行傳輸總線(xiàn),它以2根連線(xiàn)實(shí)現了完善的全雙工同步數據傳送,可以方便的構成多機系統和外圍器件擴展系統。I2C總線(xiàn)采用了器件地址的硬件設置方法,通過(guò)軟件尋址完全避免了器件的片選線(xiàn)尋址方法,從而使硬件系統具有最簡(jiǎn)單而靈活的擴展方法。I2C操作模式分為主模式I2C和從模式I2C,分別對應LPC2210作為主機和從機。

  本文采用主模式I2C發(fā)送接收數據,從而控制三個(gè)按鍵S11、S12、S13的掃描并檢測其連擊次數。程序中先設置好默認菜單,再調用函數ZLG7290_GetKey()讀取被按下的鍵值。ZLG7290_GetKey()函數通過(guò)調用IRcvStr (ZLG7290,1,rece,1),直接讀取器件ZLG7290上的按鍵值。若S11被按下,表示指向上一個(gè)圖標菜單;若S12被按下,表示選擇當前的圖標功能;若S13被按下,表示指向下一個(gè)圖標菜單。

key = ZLG7290_GetKey();

if(key==KEY_OK) break; // 點(diǎn)擊OK 鍵選擇

if(key==KEY_NEXT)

{ mainmenu[select].state = 0; // 取消上一選擇

GUI_MenuIcoDraw(mainmenu [select]);

select++; // 指向下一菜單

if(select>2) select=0;

mainmenu[select].state = 1;

GUI_MenuIcoDraw(mainmenu [select]);



if(key==KEY_BACK)

{ mainmenu[select].state = 0; // 取消上一選擇

GUI_MenuIcoDraw(mainmenu [select]);

if(select==0) select=2;

else select——; // 指向下一菜單

mainmenu[select].state = 1;

GUI_MenuIcoDraw(mainmenu [select]);

4 移動(dòng)機器人行使軌跡及相關(guān)參數顯示

  為了能實(shí)時(shí)更新顯示數據及行使軌跡,PC104將移動(dòng)機器人的速度,行駛方向,轉角等信息轉化為液晶屏上的坐標信息,并調用基本繪圖函數GUI_Line(uint32 x0, uint32 y0, uint32 x1, uint32 y1, TCOLOR color),畫(huà)出當前行駛軌跡;同時(shí),將新的速度值及與前方障礙物的距離值更新到相應位置。

5 顯示效果

  整個(gè)顯示窗口大小為240×128;圖標菜單大小為16×16,共有六個(gè)圖標;用戶(hù)可以根據自己需要添加圖標及對應功能。移動(dòng)機器人行駛軌跡顯示窗口大小為160×100;其他運動(dòng)參數顯示窗口大小為80×100,可以顯示當前的速度、障礙物的距離和機器人旋轉角度。圖中小車(chē)位置表示軌跡的起點(diǎn),左下角有坐標顯示和比例尺1:500。

newmaker.com
圖3 實(shí)現效果圖

結 語(yǔ)

  隨著(zhù)嵌入式系統應用的飛速發(fā)展,人機交互系統的開(kāi)發(fā)將更加廣泛。本文闡述的基于嵌入式系統的移動(dòng)機器人人機界面的設計方法,這種方法設計簡(jiǎn)單,成本低,使操作者與機器人的交互更加友好。


上一頁(yè) 1 2 下一頁(yè)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>