




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 课程设计报告 电子点菜系统 班级: 20090613 2009061313 : 学号 姓任欧名 : 教师评语: 教师签名: 2012年10月 课程设计题目开始Flie System 基于ARM 的电子点菜系统 开始目标版初始主要内容 程序启动进入主界面是否进入点菜模式是菜单设置 近年来,随着我国人民生活水平的提高和生活方式的转变,餐饮业得以迅速发展。然而,在竞争愈演愈烈的今天,信息科技在各行各业广泛应用的时候,餐饮业却一直徘徊在信息科技的边缘地域。不容忽视的是,在这些众多的餐馆中,上规模的却不多,更多的只是街头小店。越来越多的餐饮业管理者达成了一种共识:传统的由人工来传递菜单的点菜方式已经不
2、能满足市场的需求。不仅浪费时间、效率低下,而且很容易出现错误,从而大大降低服务质量,给企业带来不必要的损失。针对上述问题,本文介绍了一种全新的电子点菜系统。该系统的使用将大大降低人力资源成本,解决了传统点菜方式的弊端,也同时实现了餐饮并且综合ARM处理器来解决实现,业利润的最大化。此系统运用了运用液晶屏、触摸屏、键盘和消息循环等知识,实现了无线电子 点菜系统。化显示初始界面等待系统消息存入消息队列判断消息类型否采用的工具方法 结账菜色显示退出关闭系统结束ARM7 、用于硬件:嵌入式开发平台博创UP-NET ARM3000 以上。仿真器、PC处理器Pentium100TDMI 软件:PC操作系统
3、Windows 98、Windows 2000或Windows XP、ARM ADS 1.2集成开发环境、仿真器驱动程序、超级终端通信程序。 键盘处理程序触摸屏处理程序结束 进度安排第一次和第二次课程实验是了解该系统的需求分析,了解该系统的需要实现的大体内容。第三次和第四次课程实验开始研究实现的代码,完成初步的编译。第五次和第六次课程实验是完善代码,并且运行到实验台上。第七次和第八次实验是研究在试验台上的运行过程和改善并且添加界面等。第九次和第十次课就是最后的答辩。 参考资料1武俊鹏、张国印、姚爱红、赵国东.基于ARM的嵌入式系统设计实验与实践教程.清华大学出版社.2011. 2王琳,余震虹,
4、李鑫等.基于ARM 的嵌入式电子点菜系统的设计 .2009.微计算机信息J. 1. 题目 基于ARM的电子点菜系统 2. 系统简介 随着我国的餐饮企业的蓬勃发展,餐饮行业成为国内最早的一个完 全市场化的行业,个体民营占绝对优势和主导的行业,市场竞争非常充分,在广大的餐饮企业的经营者的不懈努力下,餐饮行业取得了非常突出的发展和进步。传统的点菜方式由人工来传递菜单,不仅浪费时间、效率低下;一旦生意火热,单据多,信息量大时,分单、传菜等环节很容易出现错误,从而直接影响服务质量。导致企业造成不必要的损失。而本文介绍的电子点菜系统,大大降低人力资源成本,加快各环节之间的数据流通,对企业软环境的档次有较大
5、提高。在以特色服务吸引客户的同时,有效提高餐饮机构的服务质量和工作效率,为餐饮业创造更多利润。本系统就是通过无线连接达到了点菜的效果,在电脑终端显示顾客点的菜,省时省力。随着我国的餐饮企业的蓬勃发展,餐饮行业成为国内最早的一个完 全市场化的行业,个体民营占绝对优势和主导的行业,市场竞争非常充分,在广大的餐饮企业的经营者的不懈努力下,餐饮行业取得了非常突出的发展和进步。 传统的点菜方式由人工来传递菜单,不仅浪费时间、效率低下;一旦生意火热,单据多,信息量大时,分单、传菜等环节很容易出现错误,从而直接影响服务质量。导致企业造成不必要的损失。 而本文介绍的电子点菜系统,大大降低人力资源成本,加快各环
6、节之间的数据流通,对企业软环境的档次有较大提高。在以特色服务吸引客户的同时,有效提高餐饮机构的服务质量和工作效率,为餐饮业创造更多利润。 3. 系统设计 本实验要求实现部分: 1 按键处理函数OnKey()函数 2 创建串口处理任务Serial_Receive_Task(void *Id) 3 实现串口消息换取,处理(在LCD或数码管上显示)函数OnReceive(char nRdata) - 1 - 消息运行的流程图 3.2 3.1系统运行流程图 菜单记录的设计实现1在最开始初始化完成之后,创建了文本框在点菜界面右下角用来记录菜单,具体代码 如下:CTRL_STYLE_FRAME, &rec
7、t, FONTSIZE_MIDDLE, pTextCtrl=CreateTextCtrl(101, NULL, NULL); 设置文本框内容/SetTextCtrlText(pTextCtrl, str,TRUE); 在定义图片之前设置了每道菜的单价:int price6=50,50,80,280,180,80; 之后每点一道菜,系统自动判断类别并进行菜单记录,增删菜价。SetTextCtrlText(pTextCtrl, str,TRUE); 初始化操作 2 初始化操作系统的图形界面 void initOSGUI()/ initOSMessage(); - 2 - initOSList();
8、 initOSDC(); initOSCtrl(); initOSFile(); / / Main function. / / int main(void) ARMTargetInit(); /开发板初始化 OSInit(); /操作系统初始化 uHALr_ResetMMU();/复位MMU LCD_Init(); /初始化LCD模块 LCD_printf(LCD initialization is OKn);/向液晶屏输出数据 LCD_printf(D x 240 Text Moden); initOSGUI();/初始化图形界面 LoadFont();/调Unicode字库 LoadCon
9、figSys();/使用config.sys文件配置系统设置 LCD_printf(Create task on uCOS-II.n); OSTaskCreate(Main_Task,(void*)0,(OS_STK*)&Main_StackSTACKSIZE*8-1, Main_Task_Prio);/ 创建系统任务 设计思想是让LCD 显示屏每页显示六道菜,触摸实现点菜确认,所以在触摸屏上安排了九个区间的触摸功能用以下代码完成触摸区域。 recta.left=0; recta.top=0; recta.right=320; recta.bottom=30; /定义触摸区域大小 pTouch
10、_Position=&Touch_Position; prect=▭ precta=&recta; prectb=&rectb; prectc=&rectc; prectd=&rectd; precte=&recte; prectf=&rectf; 如上,定义上下左右四个区间的大小来完成触摸区域,六道菜六个触摸区域 区域大小根据图片大小而定。 触摸区域完成后,就是实现触摸点菜功能了,在这里,我们用到了消息循环,即在进入点菜界面之前有一个欢迎界面,需要通过按键进入点菜界面,这里使用for循环用来判断。 - 3 - for(;) pMsg=WaitMessage(0); /等待消息 sw
11、itch(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(
12、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(号桌点了小鸡炖蘑菇t); sysnumber=sysnumber+pr
13、ice0; 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; - 4 - Uart_Printf(号桌取消您点了小鸡炖蘑菇t); sysnumber=sysnumber-price0; Int2Unicode(sysnumber,str); SetTextCtrlTe
14、xt(pTextCtrl, str,TRUE); num=sysnumber; else if(IsInRect2(prectb, pTouch_Position) DeleteMessage(pMsg);/删除消息,释放资源 OSTimeDly(200); DestoryDC(pdc); 用消息循环来实现点菜和取消点菜的过程,点一下图片为点菜,再点一下就取消了点菜。judge=1表示发生了这个事件,进入点菜界面。 进入点菜界面后,可以看见每排2道菜,一共六道菜,这是用到了消息循环,同时用用了一次if judge来进行点菜判断,同时定义IsInRect2(prect1,pTouch_Posit
15、ion)函数来判断prect1指向的区域是否有触摸动作,有则同样跳转到菜单画面,case OSM_TOUCH_SCREEN:表示触摸屏动作后系统需响应的进程。 4. 系统实现 在本次系统实现的过程中,所要做到的就是实现触摸屏点菜和键盘点菜功能,并且 灯上显示所点菜的总价格。LED实现计算所点菜的总价格,在 1 初始化界面 /*事件定义*/ OS_EVENT *Nand_Rw_Sem; /Nand_Flash读写控制权旗语 /and you can use it as folloeing: / Nand_Rw_Sem=OSSemCreate(1); /创建Nand-Flash读写控制权旗语,初值
16、为1满足互斥条件/ / OSSemPend(Nand_Rw_Sem,0,&err); / OSSemPost(Nand_Rw_Sem); OS_EVENT *Uart_Rw_Sem; /Uart读写控制权旗语 - 5 - /and you can use it as folloeing: / Uart_Rw_Sem=OSSemCreate(1); /创建Uart读写控制权旗语,初值为1满足互斥条件/ / OSSemPend(Uart_Rw_Sem,0,&err); / OSSemPost(Uart_Rw_Sem); / int main(void) ARMTargetInit(); /开发板初
17、始化 OSInit(); /操作系统初始化 uHALr_ResetMMU();/复位MMU LCD_Init(); /初始化LCD模块 LCD_printf(LCD initialization is OKn);/向液晶屏输出数据 LCD_printf(D x 240 Text Moden); initOSGUI();/初始化图形界面 LoadFont();/调Unicode字库 LoadConfigSys();/使用config.sys文件配置系统设置 LCD_printf(Create task on uCOS-II.n); OSTaskCreate(Main_Task, (void *)
18、0, (OS_STK *)&Main_StackSTACKSIZE*8-1, Main_Task_Prio);/ 创建系统任务 / / 创建串口任务 /OSTaskCreate(Dynamic_Display_Task,(void *)0,(OS_STK *)&Dynamic_Display_Task_StackSTACKSIZE*8-1,Dynamic_Display_Task_Prio); / OSAddTask_Init();/创建系统附加任务 LCD_printf(Starting uCOS-II.n); LCD_printf(Entering graph mode.n); LCD_C
19、hangeMode(DspGraMode);/变LCD显示模式为文本模式 InitRtc();/初始化系统时钟 Nand_Rw_Sem=OSSemCreate(1); /创建Nand-Flash读写控制权旗语,初值为1满足互斥条件/ OSStart();/操作系统任务调度开始 /不会执行到这里 return 0; /*char *KeyTable=NumLock,/,*,-,_x0007_,8,9,+,_x0005_,Enter,; void onKey(int nkey, int fnkey) - 6 - PDC pdc;/创建绘图设备上下文结构 U16 ch10; ClearScreen(
20、);/清屏 pdc=CreateDC();/创建绘图设备上下文 Uart_Printf(key=%sn, KeyTablenkey); strChar2Unicode(ch, KeyTablenkey); 主函数 2 慕瑲偟楲瑮?这是01号桌); /消息循环 for(;) pMsg=WaitMessage(0); /等待消息 switch(pMsg-Message) case OSM_KEY: /Uart_Printf(%d,pMsg-WParam); if(judge=0) num=0; state=0; statea=0; stateb=0; statec=0; stated=0; sta
21、tee=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
22、(100); SetRect(&rect, 180,205,260,225); /设置PID参数轴1P的文本框 pTextCtrl=CreateTextCtrl(101, &rect, FONTSIZE_MIDDLE, CTRL_STYLE_FRAME, NULL, NULL);/创建文本框 Int2Unicode(sysnumber,str);/将整形数据转换为Unicode数据 /SetWndCtrlFocus(NULL, ID_MainTextCtrl);/将焦点移到文本框中 SetTextCtrlText(pTextCtrl, str,TRUE);/设置文本框内容 /EXIO_8255
23、A_CTRL=0x80; /EXIO_8255A_PORTC=0xff; OSTaskCreate(Dynamic_Display_Task, (void *)0, - 7 - (OS_ST*)&Dynamic_Display_Task_StackSTACKSIZE*8-1, 触摸屏控制点菜的代码实现 3Dynamic_Display_Task_Prio);/ 1 else if(judge=1) /Uart_Printf(%d,pMsg-WParam); switch(pMsg-WParam) case 15: if(statea=0) ShowBmp(pdc,dj_Pict, 20,5);
24、 statea=1; t); Uart_Printf(号桌点了小鸡炖蘑菇 sysnumber=sysnumber+price0; Int2Unicode(sysnumber,str); SetTextCtrlText(pTextCtrl, str,TRUE); num=sysnumber; else GRAPH_MODE_NORMAL, pdc, 20,5,40,25, FillRect( COLOR_WHITE); DrawRectFrame(pdc, 20, 5, 40, 25); statea=0; t); 号桌取消了小鸡炖蘑菇 Uart_Printf(sysnumber=sysnumb
25、er-price0; Int2Unicode(sysnumber,str); SetTextCtrlText(pTextCtrl, str,TRUE); num=sysnumber; break; case 11: if(stateb=0) ShowBmp(pdc,dj_Pict, 20,37); stateb=1; t); Uart_Printf(号桌点了酸菜炖粉条 sysnumber=sysnumber+price1; Int2Unicode(sysnumber,str); SetTextCtrlText(pTextCtrl, str,TRUE); num=sysnumber; else
26、GRAPH_MODE_NORMAL, 20,37,40,57, FillRect( pdc, COLOR_WHITE); - 8 - DrawRectFrame(pdc, 20, 37, 40, 57); stateb=0; Uart_Printf(号桌取消了酸菜炖粉条t); sysnumber=sysnumber-price1; Int2Unicode(sysnumber,str); SetTextCtrlText(pTextCtrl, str,TRUE); num=sysnumber; break; case 14:ClearScreen(); ShowBmp(pdc,dj_Pict1,
27、60,40); judge=2; OSTimeDly(1500); ClearScreen(); ShowBmp(pdc,dj_Pict2, 0,0); judge=0; sysnumber=0; break; default: break; break; 键盘控制点菜的代码实现 4 case OSM_LISTCTRL2_SELCHANGE: onListCtrl2SelChange(pMsg-WParam,pMsg-LParam); break; case OSM_MENU_SELCHANGE: onMenuSelChange(pMsg-WParam,pMsg-LParam); break;
28、 case OSM_TOUCH_SCREEN:/OSM_TOUCH_SCREEN: Touch_Position.x=pMsg-WParam&0xffff; Touch_Position.y=pMsg-WParam16; if(judge=1) if(IsInRect2(precta, pTouch_Position) if(statec=0) ShowBmp(pdc,dj_Pict, 20,69); statec=1; Uart_Printf(号桌点了红烧狮子头t); sysnumber=sysnumber+price2; - 9 - Int2Unicode(sysnumber,str);
29、SetTextCtrlText(pTextCtrl, str,TRUE); num=sysnumber; else FillRect( pdc, 20,69,40,89, GRAPH_MODE_NORMAL, COLOR_WHITE); DrawRectFrame(pdc, 20, 69, 40, 89); statec=0; Uart_Printf(号桌取消了红烧狮子头t); sysnumber=sysnumber-price2; Int2Unicode(sysnumber,str); SetTextCtrlText(pTextCtrl, str,TRUE); num=sysnumber;
30、else if(IsInRect2(prectd, pTouch_Position) if(stated=0) ShowBmp(pdc,dj_Pict, 20,101); stated=1; Uart_Printf(号桌点了烤乳猪t); sysnumber=sysnumber+price3; Int2Unicode(sysnumber,str); SetTextCtrlText(pTextCtrl, str,TRUE); num=sysnumber; else FillRect( pdc, 20,101,40,121, GRAPH_MODE_NORMAL, COLOR_WHITE); Draw
31、RectFrame(pdc, 20, 101, 40, 121); stated=0; Uart_Printf(号桌取消了烤乳猪t); sysnumber=sysnumber-price3; Int2Unicode(sysnumber,str); SetTextCtrlText(pTextCtrl, str,TRUE); num=sysnumber; default: OSOnSysMessage(pMsg); break; - 10 - DeleteMessage(pMsg);/删除消息,释放资源 OSTimeDly(200); DestoryDC(pdc); / void Dynamic_Display_Task(void *Id) U32 key; for(;) key=num; /PDC pdc;/创建绘图设备上下文结构 5. 总结 在本次嵌入式课程设计课程中,我们学习了基
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030智慧农业传感器网络技术应用调研与市场推广策略报告
- 2025-2030智慧农业产业投资环境研判与资金配置
- 2025-2030智慧养老行业市场前景分析及社会福利制度完善研究
- 2025-2030智慧停车场行业用户需求分析及市场运营模式创新与发展计划报告
- 2025-2030智慧仓储机器人应用现状及自动化升级与物流成本控制策略研究
- 2025-2030智慧交通行业市场调研及行业创新机遇与融资规划
- 2025-2030智慧交通系统深化改革与产业升级分析研究评估报告
- 2025-2030智慧乡村旅游系统(RVS)行业市场供需分析及投资评估规划分析研究报告
- 2025-2030智利葡萄酒正方形瓶包装创新市场分析消费者偏好评估
- 2025-2030晶振与时钟芯片一体化封装技术专利布局分析
- 2025及未来5年中国超市周转筐市场调查、数据监测研究报告
- TCNAS49-2025成人泌尿造口护理学习解读课件附送标准全文可编辑版
- DB61∕T 1305-2019 生态环境监测质量管理技术规范
- 课题3物质组成的表示第1课时(导学案)
- 八上英语每日一练【空白】
- 2025年成人高考专升本政治模拟试题及答案
- 2025年全国成人高等学校招生考试(英语-高起点)经典试题及答案五
- 环保设备运营维护管理手册
- 体系管理从产品需求到产品规划课件
- 2025新闻记者资格证及新闻写作相关知识考试题库附含参考答案
- 数据安全dsg题库及答案解析
评论
0/150
提交评论