任欧嵌入式系统课程设计报告

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课程设计报告

电子点菜系统

班级:20090613 学号:2009061313 姓名:任欧

2012年10月

1. 题目

基于ARM的电子点菜系统

2.系统简介

随着我国的餐饮企业的蓬勃发展,餐饮行业成为国内最早的一个完全市场化的行业,个体民营占绝对优势和主导的行业,市场竞争非常充分,在广大的餐饮企业的经营者的不懈努力下,餐饮行业取得了非常突出的发展和进步。传统的点菜方式由人工来传递菜单,不仅浪费时间、效率低下;一旦生意火热,单据多,信息量大时,分单、传菜等环节很容易出现错误,从而直接影响服务质量。导致企业造成不必要的损失。而本文介绍的电子点菜系统,大大降低人力资源成本,加快各环节之间的数据流通,对企业软环境的档次有较大提高。在以特色服务吸引客户的同时,有效提高餐饮机构的服务质量和工作效率,为餐饮业创造更多利润。本系统就是通过无线连接达到了点菜的效果,在电脑终端显示顾客点的菜,省时省力。随着我国的餐饮企业的蓬勃发展,餐饮行业成为国内最早的一个完全市场化的行业,个体民营占绝对优势和主导的行业,市场竞争非常充分,在广大的餐饮企业的经营者的不懈努力下,餐饮行业取得了非常突出的发展和进步。

传统的点菜方式由人工来传递菜单,不仅浪费时间、效率低下;一旦生意火热,单据多,信息量大时,分单、传菜等环节很容易出现错误,从而直接影响服务质量。导致企业造成不必要的损失。

而本文介绍的电子点菜系统,大大降低人力资源成本,加快各环节之间的数据流通,对企业软环境的档次有较大提高。在以特色服务吸引客户的同时,有效提高餐饮机构的服务质量和工作效率,为餐饮业创造更多利润。

3.系统设计

本实验要求实现部分:

1 按键处理函数OnKey()函数

2 创建串口处理任务Serial_Receive_Task(void *Id)

3 实现串口消息换取,处理(在LCD或数码管上显示)函数OnReceive(char nRdata)

3.1系统运行流程图 3.2 消息运行的流程图

1菜单记录的设计实现

在最开始初始化完成之后,创建了文本框在点菜界面右下角用来记录菜单,具体代码如下:

pTextCtrl=CreateTextCtrl(101, &rect, FONTSIZE_MIDDLE, CTRL_STYLE_FRAME, NULL, NULL);

SetTextCtrlText(pTextCtrl, str,TRUE);//设置文本框内容 在定义图片之前设置了每道菜的单价: int price[6]={50,50,80,280,180,80};

之后每点一道菜,系统自动判断类别并进行菜单记录,增删菜价。 SetTextCtrlText(pTextCtrl, str,TRUE); 2初始化操作

void initOSGUI()//初始化操作系统的图形界面

{

initOSMessage();

initOSList();

initOSDC();

initOSCtrl();

initOSFile();

}

/////////////////////////////////////////////////////

// Main function. //

////////////////////////////////////////////////////

int main(void)

{

ARMTargetInit(); //开发板初始化

OSInit(); //操作系统初始化

uHALr_ResetMMU();//复位MMU

LCD_Init(); //初始化LCD模块

LCD_printf("LCD initialization is OK\n");//向液晶屏输出数据

LCD_printf("320 x 240 Text Mode\n");

initOSGUI();//初始化图形界面

LoadFont();//调Unicode字库

LoadConfigSys();//使用config.sys文件配置系统设置

LCD_printf("Create task on uCOS-II...\n");

OSTaskCreate(Main_Task,(void*)0,(OS_STK*)&Main_Stack[STACKSIZE*8-1],

Main_Task_Prio);// 创建系统任务

设计思想是让LCD 显示屏每页显示六道菜,触摸实现点菜确认,所以在触摸屏上安

排了九个区间的触摸功能用以下代码完成触摸区域。

recta.left=0;

recta.top=0;

recta.right=320;

recta.bottom=30;

//定义触摸区域大小

pTouch_Position=&Touch_Position;

prect=▭

precta=&recta;

p rectb=&rectb;

prectc=&rectc;

prectd=&rectd;

precte=&recte;

prectf=&rectf;

如上,定义上下左右四个区间的大小来完成触摸区域,六道菜六个触摸区域

区域大小根据图片大小而定。

触摸区域完成后,就是实现触摸点菜功能了,在这里,我们用到了消息循环,即在进入点菜界面之前有一个欢迎界面,需要通过按键进入点菜界面,这里使用for循环用来判断。

for(;;){

pMsg=WaitMessage(0); //等待消息

switch(pMsg->Message){

case OSM_KEY:

这里的case OSM_KEY表示按键事件,后面用了一个judge函数来进行判断

if(judge==0)

{num=0;

state=0;

statea=0;

stateb=0;

statec=0;

stated=0;

statee=0;

statef=0;

if(onKey(pMsg->WParam,pMsg->LParam))

{

judge=1;

pdc = CreateDC();

ShowBmp(pdc,bmpnamelogo1, 70, 1);

ShowBmp(pdc,bmpnamelogo2, 200, 1);

ShowBmp(pdc,bmpnamelogo3, 70, 80);

ShowBmp(pdc,bmpnamelogo4, 200, 80);

ShowBmp(pdc,bmpnamelogo5, 70, 160);

ShowBmp(pdc,bmpnamelogo6, 200, 160);

OSTimeDly(100);

if(judge==1)

{

if(IsInRect2(precta, pTouch_Position))

{

if(statea==0)

{

ShowBmp(pdc,dj_Pict, 20,5);

statea=1;

Uart_Printf("01号桌点了小鸡炖蘑菇\t");

sysnumber=sysnumber+price[0];

Int2Unicode(sysnumber,str);

SetTextCtrlText(pTextCtrl, str,TRUE);

num=sysnumber;

}

Else

{

FillRect( pdc, 20,5,40,25, GRAPH_MODE_NORMAL, COLOR_WHITE);

DrawRectFrame(pdc, 20, 5, 40, 25);

statea=0;

相关文档
最新文档