|
回复: ARM2210的智能移动机器人人机界面设计
图2 内置T6963C的240*128点阵液晶模块原理图
数据传输
接收上位机PC104发送的数据时,使能UART0的FIFO进行数据发送/接收,接收采用中断处理方式。其中,UART0的串口模式和数据结构设置为:通信波特率9600,8位数据位,1位停止位,无奇偶校验。其主要程序如下:
/*定义串口模式及数据结构*/
typedef struct Uart0Mode
{ uint8 datb; // 字长度
uint8 stpb; // 停止位
uint8 parity; // 奇偶校验位
} UART0MODE;
/*初始化串口*/
uart0_set.datb= 8; // 8位数据位
uart0_set.stpb = 1; // 1位停止位
uart0_set.parity = 0; // 无奇偶校验UART0_Ini(9600, uart0_set); // 初始化串口模式
/*串口UART0接收中断*/
void __irq IRQ_UART0(void)
{ uint8 i;
if( 0x04==(U0IIR&0x0F) ) rcv_new = 1; // 置新数据标志
for(i=0; i<8; i++)
{ rcv_buf = U0RBR; // 读FIFO数据,清除中断标志}
VICVectAddr = 0x00; // 中断处理结束
}
窗口显示
人机界面主要是通过图标菜单实现移动机器人运动参数的显示,以及运动轨迹的相关操作,如"打开"、"暂停"、"关闭"等。因此,首先定义一个窗口的数据结构,并设置窗口的起始坐标、大小、标题等相关参数;然后调用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); // 绘制主窗口
图标菜单也需要定义相关的数据结构,其中图标数据和文字显示可以通过字模软件转化为数据。如对应"打开"图标转化为数据:
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,
}; /*;图标"打开";宽×高(像素) : 16×16*/
然后,将每一个图标菜单项的显示坐标地址、图标的数据指针、对应的服务函数等进行设置后,即可调用GUI_MenuIcoDraw()实现显示输出。
mainmenu[0].icodat = (uint8 *) menuico1;
mainmenu[0].title = (uint8 *) "open";
mainmenu[0].Function = (void(*)())Runopen;
另外,主程序需要先调用GUI_SetColor(1,0)函数来设置前景色及背景色。1表示点显示,0表示点灭。 |
|