电子点餐点菜系统_第1页
电子点餐点菜系统_第2页
电子点餐点菜系统_第3页
电子点餐点菜系统_第4页
电子点餐点菜系统_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、资料内容仅供您学习参考,如有不当之处,请联系改正或者删除理科毕业论文(设计)排版模式教务处编制1 / 41资料内容仅供您学习参考,如有不当之处,请联系改正或者删除分类号密级UDC编号算中砰筑火警本科毕业论文(设计)题目电子点菜系统院(系)专业年级学生姓名学号指导教师二O一。年五月华中师范大学学位论文原创性声明本人郑重声明:所呈交的学位论文是本人在导师指导下独立进行研究工作所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。本人完全意识到本声明的法律后果由本人承担。学位论文作者签名:日期:年月日O学位论文版权使用授权书本学位论文作者完全了解

2、学校有关保障、使用学位论文的规定,同意学校保留并向有关学位论文管理部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权省级优秀学士学位论文评选机构将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文.本学位论文属于1、保密口,在年解密后适用本授权书。2、不保密口。(请在以上相应方框内打“)资料内容仅供您学习参考,如有不当之处,请联系改正或者删除学位论文作者签名:日期:年月日# / 41资料内容仅供您学习参考,如有不当之处,请联系改正或者删除导师签名:日期:年月日4 / 41资料内容仅供您学习参考,如有不当之处,请联系改正或者删

3、除目录内容摘要1关键词1Abstract1KeyWords11.系统概述与设计原理2lo1该系统概述2lo2系统框图2lo3系统设计原理32 .硬件电路设计与计算42o1AT89c51部分42o224cl024总线部分7资料内容仅供您学习参考,如有不当之处,请联系改正或者删除2o3液晶显和键盘矩阵部示部分83 .系统设计流程113 .1硬件部分113o2软件部分124 .小结31参考文献32致谢336 / 41资料内容仅供您学习参考,如有不当之处,请联系改正或者删除内容摘要:本电子点菜系统采用AT89c51单片机控制,处理数据并驱动液晶屏来实现对数据的现实。主要过程如下:利用键盘输入对菜号的选

4、择,然后将选择菜号,传送给单片机进行数据处理,从24cl024存储芯片中提取菜名数据信息,并通过液晶屏将提取菜名数据信息显示出来,最后通过串口传输到电脑上面。关键词:AT89c51单片机24cl024存储芯片12864液晶屏键盘矩阵Abstract:Electronicorderingdevice,thekeyis24C1024andAT89C51twochips,which24C1024usedtostoreallthefood,sinformation,throughtheAT89C51,theinformationwillbetransmittedtotheLCDmenu.However

5、,theyneedcustomerstochoosegooddishes,themenuwillbeautomaticallystoredintheAT89C51,andthencanbedirectlyconnectedtothecomputerthroughtheserialportwillbetransferredtothedatabasemenu,store,anddisplayandprintitout。TheAT89S52ismainlyusedtocontrol24C1024anddatatransferbetweentheliquidcrystal,liquidcrystald

6、isplaypartandtheserialcommunicationpart。IsthecoreofblockboardoHewasfiredthroughtheClanguageprogramintotheoKeywords:AT89C51Microcontroller24C1024memorychipsl2864LCDKeyboardmatrix1 / 41资料内容仅供您学习参考,如有不当之处,请联系改正或者删除1系统概述与设计原理lo1该系统概述随着人们的生活水平提高,餐饮业的发展也越来越迅猛。对于人满为患的酒店来说,确保快速、准确的点单是十分必要的,这就需要科学技术做坚强的后盾.在这

7、种情况下,电子点菜系统便应运而生,该系统是一款应用于中大型餐厅,方便顾客和服务员点菜的系统。它打破了传统点菜的方式,顾客只需通过手中小巧的电子点菜器就可以随意点到自己需要的菜肴,并且方便酒店随时刷新菜谱,为消费者提供最新的美食信息。电子点菜系统不仅满足了现代人对快节奏的需要,而且时尚、新颖。相信使用电子点菜系统的酒店肯定备受消费者的青睐.电子点菜系统应用于中大型酒店,无需传统菜单及服务生,顾客只需使用桌上提供的电子点菜器就可以随意挑选自己想吃的菜品,精致小巧的点菜器配上适合眼睛感官视觉的四行中文液晶显示器,免去了您频繁翻阅传统菜单的烦恼。用单片机技术设计、制造的点菜器控制系统,具有集成度高、功

8、能强、体积小、速度快、存储量大、指令丰富,抗干扰性强,性能价格比高,通用性好,推广范围大,工作可靠,指示准确,易于匹配,使用寿命长,标准化系数高等一系列优势和特点。1.2系统框图6 / 41/AT89C51控制显示;夜翳“方1.3系统设计原理包括:账目管,理,编号表,菜iS,信BM置Q/I(24cl024芯片,调用菜单十二个按键式键盘矩阵,是让顾客可以方便选择菜名,同时可以输入桌号。一个上翻和下翻键方便顾客浏览更多的菜系,一个确定键确认顾客点的菜肴,还有一个按键是选择。在电子点菜器上,主要是24C1024和AT89c51两块芯片,其中24cl024用来存储所有菜名信息,通过AT89c51,将菜

9、谱信息传输给液晶显示。但顾客选择好自己需要的菜品后,菜单将自动存储到AT89c51中,再可以通过串口与电脑直接相连,将菜单传输到数据库中进行存储,并显示、打印出来。而AT89c51主要是用来控制24cl024与液晶之间数据传输,液晶显示部分以及串口通讯部分。是整块板的核心部分。他是通过C语言程序烧制进去的。在顾客点菜过程中,顾客可以通过字母按键对菜单进行分类,找出符合自己口味的菜品类。若顾客还想点到固定的菜肴,可以直接通过输入菜名拼音首字母,即可获取菜肴名。全部点完按完成键,上方的中文液晶屏将清晰显示谢谢惠顾和请输入桌号等信息,顾客只需控制按键就可以点到自己所需的菜肴,既方便,乂省事。点菜完成

10、后,服务生可以通过电子点菜器上的半口传输点菜信息到总服务台上的电脑中,电脑再对信息加以分类存储、打印,这样避免了传统点菜的手写误差,也方便顾客结账和餐厅管理。2硬件电路设计与计算2。1AT89c51单片机2。lo1描述AT89c51是美国ATMEL公司生产的低电压,高性能CM0S8位单片机,片内含4Kbytes的快速可擦写的只读程序存储器(PEROM)和128bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS51产品指令系统,片内置通用8位中央处理器(CPU)和flish存储单元,功能强大AT89c51单片机可为您提供许多高性价比的应

11、用场合,可灵活应用于各种控制领域。AT89c51提供以下标准功能:4K字节flish闪递存储器,128字节内部RAM,32个I/O口线,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89c51可降至OHZ的静态逻辑操作,并支持两种软件可选的节电工作模式.空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位.2。L2电路图R2 n.7P3 O - n r脚功能说明:Vcc:电源电压。GND:地.P0口:P0口是一组8位漏极开路

12、型双向I/O口,也即地址/数据总线复位口。作为输出口用时.,每位能吸收电流的方式驱动8个逻辑门电路,对端口写“1”可作为高阻抗输入端用。P1口:P1是一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1,通过内部的上拉电阻把端口拉到高电平,此时可做熟出口。做输出口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(lil).资料内容仅供您学习参考,如有不当之处,请联系改正或者删除P2口:P2是一个带有内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写通过内部地山拉电

13、阻把端口拉到高电平,此时可作为输出口,作输出口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(lil)oP3口:P3口是一组带有内部上拉电阻的8位双向I/O口。P3口输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路.对P3口写入“1”时,他们被内部上拉电阻拉高并可作为输出口。做输出端时.,被外部拉低的P3口将用上拉电阻输出电流(lil)oP3口除了作为一般的I/O口线外,更重要的用途是它的第二功能,如下表:端口引脚第二功能P3c0rxd(串行输入口)P3.1txd(串行输出口)P3.2.into(外中断0)P3.3,inti(外中断1)P3c4to(定时/计数器0)

14、P3c5ti(定时/计数器DP3c6(外部数据存储器写选通)P3c7'RD(外部数据存储器读选通)RST:复位输入.当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。ALE/PROG:当访问外部程序存储器或数据存储器时,ALE(地址所存允许)输出脉冲用于所存地址的低8位字节。即使不访问外部存储器,ALE仍以时钟振荡频率的1/6输出固定的正脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲.PSEN:程序存储允许(¥SEN)输出是外部程序存储器的读选通信号,当AT89c51由外部程序存储器取指令(或数据)时,

15、每个机器周期两个TSE1有效,即输出两个脉冲。在此期间,当访问外部数据存储器,这两次有效的TSEN信号不出现。EA/VPP:外部访问允许。欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端必须保持低电平(接地)。需注意的是;如果加密位LB1被编程,复位时内部会锁存EA端状态.XTAL1:振荡器反相放大器的及内部时钟发生器的输出端。XTAL2:振荡器反相放大器的输出端。P89c51特殊功能寄存器。2.224C1024部分(I2C总线技术)2.2.112c总线工作原理总线的构成及信号类型:12c总线是由数据线SDA和时钟SCL构成的串行总线,可发送和接收数据.在CFU与被控IC

16、之间、IC与IC之间进行双向传送,最高传送速率100kbps。各种被控制电路均并联在这条总线上,但就像电话机一样只有拨通各自的号码才能工作,所以每个电路和模块都有唯一的地址,在信息的传输过程中,12c总线上并接的每一模块电路既是主控器(或被控器),乂是发送器(或接收器),这取决于它所要完成的功能.CPU发出的控制信号分为地址码和控制量两部分,地址码用来选址,即接通需要控制的电路,确定控制的种类;控制量决定该调整的类别(如对比度、充度等)及需要调整的量。这样,各控制电路虽然挂在同一条总线上,却彼此独立,互不相关。12c总线在传送数据过程中共有三种类型信号,它们分别是:开始信号、结束信号和应答信号

17、。开始信号:SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据.结束信号:SCL为高电平时,SDA由低电平向高电平跳变,结束传送数据。应答信号:接收数据的IC在接收到8bit数据后,向发送数据的IC发出特定的低电平脉冲,表示已收到数据。CPU向受控单元发出一个信号后,等待受控单元发出一个应答信号,CPU接收到应答信号后,根据实际情况作出是否继续传递信号的判断。若未收到应答信号,由判断为受控单元出现故障。这些信号中,起始信号是必需的,结束信号和应答信号,都可以不要。目前有很多半导体集成电路上都集成了12c接口。带有12c接口的单片机有:CYGNAL的C8051F0XX系列,PHILIPS

18、P87LPC7XX系列,MICROCHIP的PIC16c6XX系列等。很多外围器件如存储器、监控芯片等也提供12c接口。2.2o212c总线操作12c规程运用主/从双向通讯。器件发送数据到总线上,则定义为发送器,器件接收数据则定义为接收器。主器件和从器件都可以工作于接收和发送状态。总线必须由主器件(通常为微控制器)控制,主器件产生串行时钟(SCL)控制总线的传输方向,并产生起始和停止条件.SDA线上的数据状态仅在SCL为低电平的期间才能改变,SCL为高电平的期间,SDA状态的改变被用来表示起始和停止条件.控制字节:在起始条件之后,必须是器件的控制字节,其中高四位为器件类型识别符(不同的芯片类型

19、有不同的定义,EEPROM一般应为1010),接着三位为片选,最后一位为读写位,当为1时为读操作,为0时为写操作。写操作:写操作分为字节写和页面写两种操作,对于页面写根据芯片的一次装载的字节不同有所不同。读操作:读操作有三种基本操作:当前地址读、随机读和顺序读。图4给出的是顺序读的时序图.应当注意的是:最后一个读操作的第9个时钟周期不是“不关心”。为了结束读操作,主机必须在第9个周期间发出停止条件或者在第9个时钟周期内保持SDA为高电平、然后发出停止条件.2.2。 3主要功能在我这个作品中,由于单片机本身存储控件很小,所以24cl024芯片的主要作为一块存储芯片使用的。作用就是存储菜谱信息,用

20、户操作按键选择在液晶屏上显示的菜名信息全部是通过读取24cl024芯片中的菜谱数据。同时24cl024芯片还要实时接收Csharp软件对菜谱的更新.2o312864液晶屏和键盘矩阵2.3。 112864液晶屏简介带中文字库的128X64是一种具有4位/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;其显示分辨率为12864,内置8192个16*16点汉字,和128个16*8点ASCII字符集。利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。可以显示84行1616点阵的汉字.也可完成图形显示。低电压低功耗是其乂一显著特

21、点。由该模块构成的液晶显示方案与同类型的图形点阵液晶显示模块相比,不论硬件电路结构或显示程序都要简洁得多,且该模块的价格也略低于相同点阵的图形液晶模块.基本特性:1 .低电源电压(VDD:+3o0+5.5V2 .显示分辨率:128X64点3 .内置汉字字库,提供8192个16X16点阵汉字(简繁体可选)4o内置128个16X8点阵字符5。2MHz时钟频率6.显示方式:STN、半透、正显7o驱动方式:1/32DUTY,1/5BIAS7o视角方向:6点8o背光方式:侧部高亮白色LED,功耗仅为普通LED的1/5-1/109o通讯方式:串行、并口可选10o内置DC-DC转换电路,无需外加负压Ho无需

22、片选信号,简化软件设计12.工作温度:0-+55C,存储温度:-20一+60C 忙标志:BFBF标志提供内部工作情况。BF二1表示模块在进行内部操作,此时模块不接受外部指令和数据.BF=0时,模块为准备状态,随时可接受外部指令和数据。利用STATUSRD指令,可以将BF读到DB7总线,从而检验模块之工作状态. 字型产生ROM(CGROM)字型产生ROM(CGROM)提供8192个此触发器是用于模块屏幕显示开和关的控制。DFF二1为开显示(DISPLAYON),DDRAM的内容就显示在屏幕上,DFF二。为关显示(DISPLAYOFF)oDFF的状态是指令DISPLAYON/OFF和RST信号控制

23、的。 显示数据RAM(DDRAM)模块内部显示数据RAM提供64义2个位元组的空间,最多可控制4行16字(64个字)的中文字型显示,当写入显示数据RAM时,可分别显示CGROM与CGRAM的字型;此模块可显示三种字型,分别是半角英数字型(16*8)、CGRAM字型及CGROM的中文字型,三种字型的选择,由在DDRAM中写入的编码选择,在0000H0006H的编码中(其代码分别是0000、0002、0004、0006共4个)将选择CGRAM的自定义字型,02H7FH的编码中将选择半角英数字的字型,至于A1以上的编码将自动的结合下一个位元组,组成两个位元组的编码形成中文字型的编码BIG5(A140

24、D75F),GB(A1A0F7FFH). 字型产生RAM(CGRAM)字型产生RAM提供图象定义(造字)功能,可以提供四组16X16点的自定义图象空间,使用者可以将内部字型没有提供的图象字型自行定义到CGRAM中,便可和CGROM中的定义一样地通过DDRAM显示在屏幕中。 地址计数器AC地址计数器是用来贮存DDRAM/CGRAM之一的地址,它可由设定指令暂存器来改变,之后只要读取或是写入DDRAM/CGRAM的值时,地址计数器的值就会自动加一,当RS为“0”时而R/W为“1”时,地址计数器的值会被读取至UDB6DBO中. 光标/闪烁控制电路此模块提供硬体光标及闪烁控制电路,由地址计数器的值来指

25、定DDRAM中的光标或闪烁位置2. 3.2液晶部分主要功能液晶部分主要就是显示功能。将按键对菜谱的操作显示出来,同时为了方便客人点菜,还要将客人点菜信息和消费情况显示出来供客人预览,等客人确定后在传送到Csharp软件中去。2 .3.3键盘部分主要功能十二个按键式键盘矩阵,是让顾客可以方便选择菜名,同时可以输入桌号。一个上翻和一个下翻键方便顾客浏览更多的菜系,一个确定键确认顾客点的菜肴,还有一个按键是选择.顾客可以通过字母按键对菜单进行分类,找出符合自己口味的菜品类。若顾客还想点到固定的菜肴,可以直接通过输入菜名拼音首字母,即可获取菜肴名。12864液晶屏主要是显示作用,把在键盘上的种种操作都

26、通过液晶屏显示出来,方便顾客使用。3 .系统设计流程3.1 硬件部分3。1。1硬件部分功能简介单片机硬件部分包括:键盘矩阵,12863液晶屏,24cl024存储芯片,AT89c51芯片.硬件功能:硬件部分包括电子点菜电路板和一个4*4的键盘矩阵,通过控制电路板上的按键通过单片机使液晶显示自己需要的信息,并保存在单片机中,还有MAX232串口驱动芯片用来驱动吊口,然后就可以通过串口输入或输出信息,并保存到C#数据库中去。硬件部分还包含包括电子点菜器电路板的设计及焊接,24C1024芯片,AT89c51芯片,液晶,串口等部分。其中液晶显示上我选择的是分部显示的原则,就是将我想显示的信息预先存储在我

27、选好的位置上,不同按键按下触发不同内容显示在液晶上,还有个难点就是要将使用者所选择的菜记录下来,我原本的设想是想把所选择的菜名和菜价用一个数组了,可8052的存储空间太小如果点的太多就根本无法存储.于是我想到了另一种办法,就是记录菜名号的方法,我在C#发送菜谱时给每一道菜加上一个唯一固定编号一起放送到24C1024中去,当客人点菜时我就用一个数组来存储被点菜的编号,这样就大大降低了对存储空间的使用也提高了数据传输的安全性。在一个就是对菜的搜索问题,客人有时想点自己喜欢的菜,在点菜器中翻找太麻烦,他可以自己输入菜的索引从而寻找自己想要点的菜,做搜索在C#上很好做但在单片机上时很难做到的,因为单片

28、机空间小,没有现成的控件使用,也不能针对数据库进行操作。我用的办法是将顾客所按按键记录下来当顾客点击查询时将得到按键索引和24C1024固定位置的到的菜名索引进行对比,如果相同就从24C1024的相应位置取出菜名和菜价显示在液晶上,这就要求数据存放要做严格要求。再就是每次点完都要记录菜价,这就要求再点菜我确定是必须同时记录所选菜在24C13 / 41资料内容仅供您学习参考,如有不当之处,请联系改正或者删除1024中存储的位置,再在这个基础上查询菜价进行记录保存,以便传输到C#进行保存和查询。3. Io2硬件电路图通过串口与电脑相连相互传送数据。单片机通过P0口控制液晶显示,通过PI口控制24c

29、l024芯片存储数据,通过串口将菜谱数据写入到24cl024芯片中去,同时调用24cl024芯片数据显示到液晶屏中。按键部分图略。按键选择菜名,客人最后确认后通过串口回传到PC中。3o2软件部分3。2.1软件功能简介Csharp软件程序后台软件部分:C#用于后台程序,酒店内部添加删除菜名及菜名索引,并将顾客所点菜显示在C#上;数据库应用与保存菜谱表,桌号消费统计(桌号,总消费,时间),查询视图。软件功能:包括c,c#,数据库三大部分.其中C用于收集菜谱和存储,用于顾客查找,浏览菜谱并对菜谱进行选择,查看和统计消费总价,并且回传顾客消费信息;C#用于后台程序,酒店内部添加删除菜名及菜名索引,并将

30、顾客所点菜显示在C#上;数据库应用与保存菜谱表,桌号消费统计(桌号,总消费,时间),查询视图.在就是串口的数据收发,由于我在显示和搜索时对数据的格式有很高要求,所以在用串口传输数据时在传输前必须要对数据进行严格的格式转换。在接受数据时,因为接受的数据有很多种,所以在接受时要对数据进行判断然后再进行分类存储。3.2.2软件流程3。2o 3软件主要代码Csharp后台控制部分:菜谱管理:namespace点菜publicpartialclass菜谱管理_当前时间:Form(public菜谱管理当前时间0(InitializeComponent();)privatevoidForml_Load(ob

31、jectsender,EventArgse)(Refresh_Phone_List(”);)voidRefresh_Phone_List(stringliereConditon)(listViewl.Items.Clear();dbClassldbl=newdbClassl();stringscond=nselect*from所有菜名信息视图”;if(WhereConditon!=”“)scond+二"where"+WhereConditon+”"DataTabledt=dbl.GetRecords(scond);向列表视图中添加所有的相关号码记录for(inti

32、=0:i(dt.Rows.Count;i+)(stringsubitem=dtoRowsi”菜名”。ToString(),dt.RowsEi”类型”.ToString(),dt.Rowsi"时价”.ToString(),);listViewl.ItemsoAdd(newListViewItem(subitem);“stringstr=vprovider=microsoft.jetooledbo4,0;datasource二菜谱管理mdb”;privatevoidbuttonl_添力口_Click(objectsender,EventArgse)33 / 41dbClassldbl=n

33、ewdbClassl();菜谱修改newfornFnew菜谱修改();if(newformoShowDialog()=DialogResultoOK)(01eDbConnectioncon=new01eDbConnection(str);01eDbCommandcmd=con.CreateCommand();cmdo(0111111&11(1丁6*1=":111561'1:11110菜谱(分类号,菜名,时价,菜名缩写)values(>+newform.cmh+v','"+newform<>caiming+','

34、;,z+newfornioshijia+,+newform.caimmgsuoxie+);con.Open();cmdoExecuteNonQuery();con.Close();Forml_Load(sender,e);)privatevoidbutton|_Click(objectsender,EventArgse)(for(inti=listViewloSelectedltemsoCount-1;i)=0:i)(OleDbConnectioncon=new01eDbConnection(str);01eDbCommandcmd=con<>CreateCommand();cmd

35、.CommandText二deletefrom菜谱where菜名=,+listViewl.Selectedltemsli.Text+"';con。Open();cmdoExecuteNonQuery();con.Close();listViewloItems.Clear();Forml_Load(sender,e);privatevoidbuttonl_Click(objectsender,EventArgse)(if(listViewloSelectedltems.Count=l)(菜谱修改cfornFnew菜谱修改();cformocaiming=listViewl.Se

36、lectedlterns0.SubItems0oText;cformoshijia=Convert.Tolntl6(listViewloSelectedItemsO.SubItems2.Text);if(cform.ShowDialog()=DialogResult.OK)(OleDbConnectioncon=new01eDbConnection(str);01eDbCommandcmd=con.CreateCommand();cmd.CommandText=Mupdate菜谱setl时价二'+cform.shijia+'where菜名=,z/+listViewl.Selec

37、tedltems0。SubIterns0.Text+“'";cono0pen();cmd.ExecuteNonQuery();con。Close();listViewloItems.Clear();Forml-Load(sender,e);)privatevoidtextBoxl_TextChanged(objectsender,EventArgse)(Refresh_Phone_List(n菜名缩写like'%v+textBoxl.TextoTrim()+"%')privatevoidForml_FormClosing(objectsender,F

38、ormClosingEventArgse)(if(MessageBoXoShow("你真的要退出?,确认,MessageBoxButtonsoOKCancel,MessageBoxIcon.Question,MessageBoxDefaultButton.Button2)=DialogResultoCancel)(e<>Cancel=true;)privatevoidbuttonJL点菜器写入菜谱_Click(objectsender,EventArgse)serialPortl.Open();启用发送数据表记录到串口的函数。Write_Menu_T0_IIC_24C10

39、24();/serialPortloClose();)boolSP_Ready=false:publicintj=0;intcount=0;voidWrite_Menu_T0_IIC_24C1024()(菜谱传输pass=new菜谱传输();pass.Show();intj;/I01eDbConnectionconn=new01eDbConnection(z,provider=microsoft.jet.oledb.4o0;datasource=菜谱管理.mdb");conn.Open();01eDbDataAdapterodapr=new01eDbDataAdapter("

40、;select火from菜谱orderby编号”,conn);/3DataTab1edt=newDataTab1e();odapr.Fill(dt);/4访问所有表行,并发送串口.byteBuffer=newbyte24;for(inti=0;i<dtoRows<>Count;i+)(j=。;序号,分类号,名称,价格,简记4-2-10-4-5byte匚fl二Encoding。DefaultoGetBytes(dt.RowsEi”编号”.ToString();byteLf3=EncodingoDefault.GetBytes(dtoRowsi菜名”ToString();byte

41、f4=EncodingoDefault.GetBytes(dtoRowsi“时价”.ToString();bytef5=Encoding.DefaultoGetBytes(dtoRowsi“菜名缩写"。ToString();passocm=dt.RowsEi”菜名。ToString();将字节缓冲全部清为空格.for(j=0;j<24;j+)Bufferj=0x20;for(j=0;j(fl.Length;j+)Bufferj=flj;for(j=0;j(f3.Length;j+)Bufferj+4=f3j;for(j=0:j(f4.Length:j+)Bufferj+14=f

42、4j;for(j=0;j<f5oLength;j+)Bufferj+18=f5j;Buffer23=(byte)('r);将所有字段内容分解到字节缓冲后,发送Buffer缓冲.serialPortl.Write(Buffer,0,BufferoLength);SP_Ready=false;count+=l;如串口未就绪则等待.。OO.OO.O.Application.DoEvents();while(!SP_Ready);)if(count=dtoRows.Count)(passocn=count;serialPortl.WriteLine(n-");pass,fnr”

43、完成发送”;count=O:)privatevoidserialPortl_DataReceived(objectsender,System.10.PortSoSerialDataReceivedEventArgse)(接受顾客消费信息guest=new接受顾客消费信息();已点菜diancai=new已点菜();stringrs=serialPortloReadLine();stringaccept=rs;stringERecv_MCU_Menu_Info=acceptoSplit(newchar'I');if(rs="Ready!”)(SP_Ready=true;

44、)if(Recv_MCU_Menu_Info0=a)(guest.gu_infor=rs;serialPortl.Close();guestoShowDialog();)if(Recv_MCU_Menu_Info0=b)diancaioCNOSET=rs;serialPortloClose();diancai.ShowDialog();privatevoicQ|ToolStripMenuIteni_Click(objectsender,EventArgse)(buttonl_添加_Click(sender,e);)privatevoid®WrToolStripMenuItem_Cli

45、ck(objectsender,EventArgse)(buttonl_Click(sender,e);)privatevoid册ij除ToolStripMenuItem_Click(objectsender,EventArgse)(button.删除_Click(sender,e);)privatevoid向点菜器写入菜谱ToolStripMenuItem_Click(objectsender,EventArgse)button.向点菜器写入菜谱_Click(sender,e);)privatevoid数据备份ToolStripMenuItem_Click(objectsender,Even

46、tArgse)(,备份compress=new备份();compress.ShowDialog();)privatevoid从点菜器接受菜单ToolStripMenuItem_Click(objectsender,EventArgse)(if(!serialPortloIsOpen)serialPortloOpen();serialPortl.WriteLine("+");)privatevoidbutton_向从点菜器接受菜单_Click(objectsender,EventArgse)(向从点菜器接受菜单ToolStripMenuItem_Click(sender,e)

47、;privatevoid接受点菜菜谱ToolStripMenuItem_Click(objectsender,EventArgse)(serialPortl.Open();serialPortloWriteLine("*");)privatevoidbutton2_Click(objectsender,EventArgse)(接受点菜菜谱ToolStripMenuItem_Click(sender,e);)数据传输:namespace点菜publicpartialclass菜谱传输:Form(public菜谱传输()(InitializeComponent();)publi

48、cintcn=O;publicstringcm,fm;privatevoid菜谱传输_Load(objectsender,EventArgse)()intt=0;privatevoidtimerl_Tick(objectsender,EventArgse)(if(cn=0)(t+=29;if(t)100)t=0;progressBarl.Value=t;textBox_菜名。Text=cm;else(progressBarl.Visible=false;timerloEnabled=false;timer2.Enabled=true;)intx=0;privatevoidtimer2_Tick

49、(objectsender,EventArgse)(x+:textBox_菜名.Text=fm;if(x>2)(timer2.Enabled=false;this.Close();)c语言硬件控制部分:/*>k大*火火火*火*火*/*/*上下翻动菜名文/*/*/*火*火火火*水*水大*火*大*大*大火火*/voidLCD_up_down()(ucharj,1=一1;if(KeyNo=9)(Pl=0x0F;while(Pl!=0x0F);g一;l=f;if(f=0)g二2;LCD_Col42;else)if(KeyNo=10)(Pl=OxOF;while(Pl!=OxOF);x+;g

50、+;l=f;if(f=2)(g二0:LCD_Col+;f二0;LCD=0;elsef+;)if(1!=1)(1cd_wcmd(up_down1);for(j=0;j<2;j+)lcd_wdat(DIS6j);1=1;lcd_wcmd(up_downf);for(j=0:j(2:j+)lcd_wdat(DIS5j);)/*水,k*火火*火火*火*火火火*火*按键控制并显示按键文*火*大火*火*火*/voidKey_col_KeyNo()(if(KeyNo=9IKeyNo=10)LCD_up_down();else(如果是新按键if(Pre_Keyo!=Keyo)(TRO=1;Pre_Key

51、No=KeyNo;Inner_idx=O:t+;s+;否则按下的是同位按键else(短暂时间范围内的重复按键if(tSpan<=40)Inner_idx=(Inner_idx+1)%strlen(KeyPad_CharsKeyXo);)else同一按键间隔超时(Timeout)(Inner_idx=O;t+;s+;tSpan=0;if(s)4)(for(i=0;i<5;i+)data_lcdi=DIS6l;s二一1;delay(20);data_lcds=KeyPad_CharsKeyNoInnejidx;记录按键if(xl=0)lcd_wcmd(0x98);for(i=0;i&l

52、t;5;i+)lcd_wdat(data_lcdi_);xl=0;)else(lcd_wcmd(0x8e);for(i=0;i<5;i+)lcd_wdat(data_lcdi);)从24cl024接收多字节/ucharRecString(ucharSlave,ulongMem_address,uchar*BuffenucharN)(uchari,page;读取时slave设为Oxal,写时为OxaOuintaddrl6;一片24C1024的空间为128K,地址位共17位,其最高位对应设备地址中的P0位page=(uchar)(Mem_address»16)&0x0000

53、0001);page<<=1;在设备地址后是16位的字地址addrl6=(uint)(Mem_address&0x0000FFFF);Start();发送器件地址(含页地址P0位)if(!SendByte(Slavelpage)return(0);先发高字节,后发低字节if(!SendByte(uchar)(addrl6>>8)return(0);if(!SendByte(uchar)(addrl6)return(0);Start();器件地址(读)if(!SendByte(SlaveI0x01)return(0);for(i=0;i<N1;i+)(接收数

54、据Bufferi=RecByte();发送应答位ACK();)接收最后一位BufferNl=RecByte();发送非应答NO_ACK();Stop();)/向24cl024写多字节/ucharWriteString(ucharSlave,ulongMeni_addressAichar*BiiffenucharN)uchari,page;读取时slave设为Oxa1,写时为OxaOuintaddrl6;一片24C1024的空间为128K,地址位共17位,其最高位对应设备地址中的P0位page=(uchar)(Mem_address>>16)&0x00000001);page<<=1;在设备地址后是16位的字地址addrl6=(uint)(Mem_address&OxOOOOFFFF);Start();发送器件地址(含页地址P0位)if(!SendByte(Sl

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论