嵌入式系统课程设计报告电子点菜器设计报告.doc

上传人:laozhun 文档编号:4148986 上传时间:2023-04-07 格式:DOC 页数:13 大小:70KB
返回 下载 相关 举报
嵌入式系统课程设计报告电子点菜器设计报告.doc_第1页
第1页 / 共13页
嵌入式系统课程设计报告电子点菜器设计报告.doc_第2页
第2页 / 共13页
嵌入式系统课程设计报告电子点菜器设计报告.doc_第3页
第3页 / 共13页
嵌入式系统课程设计报告电子点菜器设计报告.doc_第4页
第4页 / 共13页
嵌入式系统课程设计报告电子点菜器设计报告.doc_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《嵌入式系统课程设计报告电子点菜器设计报告.doc》由会员分享,可在线阅读,更多相关《嵌入式系统课程设计报告电子点菜器设计报告.doc(13页珍藏版)》请在三一办公上搜索。

1、课程设计报告电子点菜器设计报告班级:20120614学号:2012061411姓名:教师评语:教师签名:2015年9月课程设计题目电子点菜器主要内容本次实验的主要内容是进行电子点菜器的设计,具体实现的功能包括:(1)实现正常显示欢迎界面、菜品选择界面以及菜品编辑界面。(2)在选择菜品界面实现用单击进行菜品信息查看和系统操作,用双击进行菜品选择。(3)在编辑界面实现查看被选择过的菜品信息,可通过删除选择过的菜品达到让用户实现对菜品重新编辑的目的,并且此界面可以和选择菜品界面相互跳转达到让用户重新选择菜品的目的。(4)实现将用户选择菜品的信息通过串口传送到显示器。(5)数码数码管显示已点菜的总价。

2、(6)键盘按键点菜、翻页、查看所有已点菜品的信息等。采用的工具方法硬件:PC机、博创UP-NETARM3000实验台软件:超级终端通讯工具、JTAG仿真器、ADS1.2集成开发环境、仿真器驱动器进度安排1-2学时:分析需求3-28学时:编码实现29-32学时:系统测试并进行完善33-36学时:系统验收及答辩参考资料1、 ARM3000实验指导书2、 基于ARM的嵌入式系统设计实验与实践教程,清华大学出版社,2011. 3、 嵌入式系统开发原理与实践,清华大学出版社,2005.4、 Ucos-II电子版书1. 题目 电子点菜器2. 系统简介 本次课程设计的系统是电子点菜器,它运行的环境是博创UP

3、-NETARM3000实验台,主要使用的是该实验台上的LCD模块和触摸屏模块。 该系统实现功能如下:(1)实现正常显示欢迎界面、菜品选择界面以及菜品编辑界面;(2)在选择菜品界面实现用单击进行菜品信息查看和系统操作,用双击进行菜品选择;(3)在编辑界面实现查看被选择过的菜品信息,可通过删除选择过的菜品达到让用户实现对菜品重新编辑的目的,并且此界面可以和选择菜品界面相互跳转达到让用户重新选择菜品的目的。(4)实现将用户选择菜品的信息通过串口传送到显示器,及时反馈信息给后台。(5)数码数码管显示已点菜的总价。(6)键盘按键点菜、翻页、查看所有已点菜品的信息等。3. 系统设计3.1 系统目标按照本次

4、所选的课程设计的题目,我们小组要实现的是一个电子点菜器,我们首先分析了该电子点菜器的功能。按照其将要实现电子点菜的功能,我们首先确定了我们将要用到的是ARM试验台的LCD模块和触摸屏模块,再根据我们在系统中要实现菜品信息和订单的显示,我们确定了要使用文本框控件及按钮控件,这涉及到ucos-II系统的使用。按照之前的分析,我们首先选取了Exp22电子画板的工程,以此为基础进行了接下来的系统设计。我们对于该电子点菜器设计了三个界面,第一个是欢迎界面,主要显示的是一张背景图片,顾客点击这个界面就会进入到点菜界面。在点菜界面中,主要有三个部分,它们分别是六张菜品图片、五个控制按键和一个信息显示的文本框

5、控件。六张菜品图片是对应六道菜,顾客通过单击图片可以在文件框中显示菜品的信息,双击图片表示选择了对应的菜品,并在文本框给出提示信息。五个控制控制按键分别为查看上一页菜品、提交订单、查看订单、返回初始界面和查看下一页菜品。第三个界面是订单信息界面,其左侧是菜品的列表,点击相应的菜品在右侧就会显示该菜品的数量、价格及总价。3.2 系统的体系结构设计针对以上的总体目标,综合考虑硬件环境和实现方法,我们将系统的体系结构分为4个不同的层次:硬件层、功能层、软件层、中间层。整个设计需要完成在不同的层次上完成不同的设计要求。硬件层:选择博创UP-NETARM3000实验平台。功能层:在这一层上要实现电子点菜

6、的应用代码、算法实现等,我们组选择了博创UP-NETARM3000的硬件实验平台,那么主要工作就主要集中在这一层次上,因为其他的层次已经由硬件平台的提供商基本实现了。软件层:提供用户图形几口、实现多任务调度管理,本设计是基于uC/OS这一嵌入式实时操作系统实现的。中间层:硬件抽象层和板级支持包,这一般由硬件平台提供商实现。如果选择从头设计一个俄罗斯方块游戏,自己去实现硬件体系结构,还是需要考虑这一部分的,但我们组的设计不需要这一部分。3.3 系统的工作流程 明确了功能层是我们这次课程设计的主要完成对象后,我们对系统的工作流程进行了讨论,在综合考虑使用情况后,我们将系统的流程分为:系统初始化、绘

7、制系统图形界面、判断消息类型、消息处理和最后的返回结束界面。 实验程序设计流程图 如图1 所示图 1 实验程序设计流程图由于这个结构图比较成熟,我们只需按照自己的功能在进行需求的添加和删除即可,当系统初始化完成之后,通过判断用户给出的消息类型,即可进行不同的处理程序,当完成处理后在显示界面显示处理结果即可。 3.4 各模块设计 3.4.1触摸屏查看菜品信息及点菜 设计思想是让LCD 显示屏每页显示六道菜,并包含上下页翻页键和点菜完毕确认键,所以在触摸屏上安排了九个区间的触摸功能Recta .left=0; rectb .left=0;Recta .top=0; rectb .top=32;Re

8、cta .right=320; rectb .right=320;Recta .bottom=30; rectb .bottom=62;依次类推,对于触摸屏区间的划分,只要确定两点左上方的坐标和右下方的坐标就可确定该区间在触摸屏上的范围。对于该九个区间的控制既可触摸控制也可采用数字小键盘进行操作,这两者其中任何一个动作都会对点菜产生影响,这通过switch (pMsg-Message)语句来选择判断。点击查看菜品信息;双击则“点”此菜品.定义菜品及价格void Main_Task(void *Id) /Main_Test_TaskPOSMSG pMsg=0; int judge=0;int s

9、ysnumber=0;int i=0;int j=0;U16 str20; PDC pdc;int price6=50,50,80,280,180,80;char dj_Pict12=1,2,8,_,3,7, , ,B,M,P,0;char dj_Pict112=1,2,8,_,3,5, , ,B,M,P,0;char dj_Pict212=1,2,8,_,3,6, , ,B,M,P,0;char bmpnamelogo112=0,0,0,_,0,1, , ,B,M,P,0; char bmpnamelogo212=0,0,0,_,0,2, , ,B,M,P,0;char bmpnamelog

10、o312=0,0,0,_,0,3, , ,B,M,P,0; char bmpnamelogo412=0,0,0,_,0,4, , ,B,M,P,0; char bmpnamelogo512=0,0,0,_,0,5, , ,B,M,P,0; char bmpnamelogo612=0,0,0,_,0,6, , ,B,M,P,0;以上是图片的命名格式为bmp格式,并且命名6道菜 定义屏幕图片触摸屏坐标 Recta .left=0;recta .top=0;recta .right=320;recta .bottom=30;rectb .left=0;rectb .top=32;rectb .rig

11、ht=320;rectb .bottom=62;rectc .left=0;rectc .top=64;rectc .right=320;rectc .bottom=94;.(省略)3.4.1.1触屏单击查看此菜品信息 case OSM_TOUCH_SCREEN: Uart_Printf(OSM_TOUCH_SCREENn); mode=TchScr_GetOSXY2(&x, &y); if(mode=TCHSCR_ACTION_CLICK)Touch_Position.x=x;Touch_Position.y=y;Uart_Printf(TCHSCR_ACTION_CLICKn);Uart_

12、Printf(Touch_Position.x=%dn,Touch_Position.x);Uart_Printf(Touch_Position.y=%dn,Touch_Position.y);if(IsInRect2(precta, pTouch_Position) Uart_Printf(an); if(pagenum=1) CreateText(1,recttext); break; else if(pagenum=2) CreateText(7,recttext); break; 3.4.1.2触屏双击选择此菜品if(mode=TCHSCR_ACTION_DBCLICK) Touch_

13、Position.x=x; Touch_Position.y=y; Uart_Printf(TCHSCR_ACTION_DBCLICKn); Uart_Printf(Touch_Position.x=%dn,Touch_Position.x); Uart_Printf(Touch_Position.y=%dn,Touch_Position.y); /对recta到rectf的每个矩形进行检测 /进行CreateText2,也就是显示You orderd dish1之类的。 /并且进行数量的相加,输出每种菜品的已点的数量 if(IsInRect2(precta, pTouch_Position)

14、 Uart_Printf(aaaaaaaaaaan); if(pagenum=1) CreateText2(1,recttext); total = 0;numcount0+; Uart_Printf(num1=%dn,numcount0); for(k=0;k10;k+) total=total+numcountk*unit_pricek; showLED(total); break; 3.4.2.键盘输入数字点菜 case OSM_KEY:表示有键盘操作时系统应作出的反应,系统通过myKey=GetKey2()得到键盘输入的值( 与定义的数组KeyBoard_Map相对应),再根据不同的键

15、值进行相对应的操作。 if(myKey = 1) Uart_Printf(Dish1 for how many pieces?n); /显示菜品价格 Uart_Printf(Price:%dn,unit_pricemyKey-1); iPieces = GetKey2(); /输入点的份数 CreateText2(1,recttext); total = 0; numcount0 = iPieces; Uart_Printf(num1=%dn,numcount0); /输出点的份数 for(k=0;k9)/键值大于9显示十位 WriteSDIO(ZLG7289_CMD_DATA0|1);/发送

16、十位数据 WriteSDIO(unsigned char)(t/10%10); Delay(1);if(t99)WriteSDIO(ZLG7289_CMD_DATA0|2);/发送十位数据 WriteSDIO(unsigned char)(t/100%10); Delay(1); if(t999) .(省略)4.系统实现 在本次系统实现的过程中,所要做到的就是实现触摸屏点菜和键盘点菜功能,并且实现计算所点菜的总价格,在LED灯上显示所点菜的总价格。4.1初始化界面/*事件定义*/OS_EVENT *Nand_Rw_Sem; /Nand_Flash读写控制权旗语/and you can use

17、it as folloeing:/ Nand_Rw_Sem=OSSemCreate(1); /创建Nand-Flash读写控制权旗语,初值为1满足互斥条件/ OSSemPend(Nand_Rw_Sem,0,&err);/ OSSemPost(Nand_Rw_Sem);OS_EVENT *Uart_Rw_Sem; /Uart读写控制权旗语/and you can use it as folloeing:/ Uart_Rw_Sem=OSSemCreate(1); /创建Uart读写控制权旗语,初值为1满足互斥条件/ OSSemPend(Uart_Rw_Sem,0,&err);/ OSSemPost

18、(Uart_Rw_Sem);/int main(void)ARMTargetInit(); /开发板初始化 Zlg7289_Reset();/zlg7289复位OSInit(); /操作系统初始化uHALr_ResetMMU();/复位MMULCD_Init(); /初始化LCD模块LCD_printf(LCD initialization is OKn);/向液晶屏输出数据LCD_printf(320 x 240 Text Moden);initOSGUI();/初始化图形界面LoadFont();/调Unicode字库LoadConfigSys();/使用config.sys文件配置系统设

19、置LCD_printf(Create task on uCOS-II.n);OSTaskCreate(Main_Task, (void *)0, (OS_STK *)&Main_StackSTACKSIZE*8-1, Main_Task_Prio);/ 创建系统任务OSAddTask_Init();/创建系统附加任务LCD_printf(Starting uCOS-II.n);LCD_printf(Entering graph mode.n);LCD_ChangeMode(DspGraMode);/变LCD显示模式为文本模式InitRtc();/初始化系统时钟Nand_Rw_Sem=OSSem

20、Create(1); /创建Nand-Flash读写控制权旗语,初值为1满足互斥条件/OSStart();/操作系统任务调度开始/不会执行到这里return 0;U32 GetKey2()/*/*0-11 1-2 3-184-1 5-9 6-177-0 8-8 9-16num-4 /-12 *-20- - 21 + - 24 enter-26del-19*/*从*顺时针到del计数,12开始,规定0为17*/char KeyBoard_Map=7,4,1,0,10,0,0,0,8,5,2,17,0,0,0,0,9,6,3,16,12,13,0,0,14,0,15,0,0,0,0,0,0,0,0

21、,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0; /64,键值映射表*/U16 key;while(1) Delay(2000);while(rPDATG&(0x10);/有键按下key=Zlg7289_ReadKey();/得到按键扫描码if(key=64)/按键值有效key=KeyBoard_Mapkey;/通过键盘映射表得到按键值Uart_Printf(n%d,key);break;Delay(2000);return key;4.2 获得触摸点坐标及触摸动作U32 TchScr_GetOSXY2(int *x, in

22、t *y)/获得触摸点坐标并返回触摸动作static U32 mode=0;static int oldx,oldy;int i,j;for(;)if(mode!=TCHSCR_ACTION_DOWN) & (mode!=TCHSCR_ACTION_MOVE)if(!TCHSCR_IsPenNotDown)/有触摸动作TchScr_GetScrXY(x, y);/得到触摸点坐标for(i=0;i40;i+)if(TCHSCR_IsPenNotDown)/抬起break;Delay(100);if(i40)/在规定的双击时间之内抬起,检测是不是及时按下for(i=0;i60;i+)if(!TCH

23、SCR_IsPenNotDown) if (i10) i=60;break;/如果单击后很短时间内按下,不视为双击mode=TCHSCR_ACTION_DBCLICK;for(j=0;j4 |abs( oldy-*y)4)/有移动动作mode=TCHSCR_ACTION_MOVE;break;Delay(50);oldx=*x;oldy=*y;return mode;4.3主任务函数Main_TaskUart_Printf(这是01号桌);/消息循环for(;)pMsg=WaitMessage(0); /等待消息switch(pMsg-Message)case OSM_KEY:/Uart_Pr

24、intf(%d,pMsg-WParam);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, 20

25、0, 80); ShowBmp(pdc,bmpnamelogo5, 70, 160); ShowBmp(pdc,bmpnamelogo6, 200, 160); OSTimeDly(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(N

26、ULL, ID_MainTextCtrl);/将焦点移到文本框中 SetTextCtrlText(pTextCtrl, str,TRUE);/设置文本框内容 /EXIO_8255A_CTRL=0x80; /EXIO_8255A_PORTC=0xff;OSTaskCreate(Dynamic_Display_Task, (void *)0, (OS_ST*)&Dynamic_Display_Task_StackSTACKSIZE*8-1, 4.4触摸屏控制点菜的代码实现 if(mode=TCHSCR_ACTION_DBCLICK) /触屏双击选择此菜品 Touch_Position.x=x; T

27、ouch_Position.y=y; Uart_Printf(TCHSCR_ACTION_DBCLICKn); Uart_Printf(Touch_Position.x=%dn,Touch_Position.x); Uart_Printf(Touch_Position.y=%dn,Touch_Position.y); /对recta到rectf的每个矩形进行检测 /进行CreateText2,也就是显示You orderd dish1之类的。 /并且进行数量的相加,输出每种菜品的已点的数量 if(IsInRect2(precta, pTouch_Position) /所点击的菜品位置 Uart

28、_Printf(aaaaaaaaaaan); if(pagenum=1) CreateText2(1,recttext); total = 0;numcount0+; Uart_Printf(num1=%dn,numcount0); for(k=0;k10;k+) total=total+numcountk*unit_pricek; showLED(total); break; 4.5键盘控制点菜的代码实现 case OSM_KEY: myKey=GetKey2(); Uart_Printf(nOSM_KEYn); if(myKey = 1 | myKey = 2 | myKey = 3 |

29、myKey = 4 | myKey = 5 | myKey = 6 ) if(pagenum = 2) ClearScreen(); ShowBmp(pdc,dj_Pict,0,0); /图片显示的地点可以自行决定,与画的矩形框范围相匹配 ShowBmp(pdc,dj_Pict1,16,20); ShowBmp(pdc,dj_Pict2,116,20); ShowBmp(pdc,dj_Pict3,216,20); ShowBmp(pdc,dj_Pict4,16,100); ShowBmp(pdc,dj_Pict5,116,100); ShowBmp(pdc,dj_Pict6,216,100);

30、 ShowBmp(pdc,dj_Pictleft,25,170); ShowBmp(pdc,dj_Pictsubmit,145,170); ShowBmp(pdc,dj_Pictlook,85,170); ShowBmp(pdc,dj_Pictquit,205,170); ShowBmp(pdc,dj_Pictright,265,170);CreateText(11,recttext); OSTimeDly(100); pagenum=1; if(myKey = 1) Uart_Printf(Dish1 for how many pieces?n); Uart_Printf(Price:%dn

31、,unit_pricemyKey-1); iPieces = GetKey2(); CreateText2(1,recttext); total = 0; numcount0 = iPieces; Uart_Printf(num1=%dn,numcount0); for(k=0;k10;k+) total=total+numcountk*unit_pricek; showLED(total); break; if(myKey = 2) .(省略)5. 总结通过本次实验,我们最终实现了电子点菜器。在功能上,该系统能够通过图片的形式显示菜品,并通过单击显示菜品信息,通过双击进行菜品选择;能够进行上

32、下翻页查看菜品;能够进行查看订单的详情,并对其进行管理;能够提交订单,并在PC端显示订单。此外,在实现该系统时,我们也遇到了各种各样的问题,如因逻辑问题而导致的无法得到得到预期的运行结果和添加新功能时产生不能顺利与之前的程序融合的问题。但是最终经过我们的一起讨论研究,实现了原先设计的基本功能。并且,我们的解决问题的能力在实验中也得到了锻炼,硬件相关的开发经验也得到了增加。6. 参考文献1 王琳,余震虹, 李鑫, 于大为. 基于ARM的嵌入式电子点菜系统的设计j.微计算机信息,2009,(045):105-107.2 闵华松,钱丽. 基于ARM的嵌入式无线点菜系统j.计算机与信息技术,2005,(04):24-263 陈果,冯静.ucos系统及其消息队列详析j.电子元器件应用,2011,(03):38-42+46

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号