电子点餐点菜系统.doc

上传人:sccc 文档编号:5059677 上传时间:2023-06-01 格式:DOC 页数:37 大小:378.02KB
返回 下载 相关 举报
电子点餐点菜系统.doc_第1页
第1页 / 共37页
电子点餐点菜系统.doc_第2页
第2页 / 共37页
电子点餐点菜系统.doc_第3页
第3页 / 共37页
电子点餐点菜系统.doc_第4页
第4页 / 共37页
电子点餐点菜系统.doc_第5页
第5页 / 共37页
点击查看更多>>
资源描述

《电子点餐点菜系统.doc》由会员分享,可在线阅读,更多相关《电子点餐点菜系统.doc(37页珍藏版)》请在三一办公上搜索。

1、理科毕业论文(设计)排版模式教务处编制33分类号 密级 U D C 编号 本科毕业论文(设计) 题 目 电子点菜系统 院 (系) 专 业 年 级 学生姓名 学 号 指导教师 二一 年 五 月 华中师范大学学位论文原创性声明本人郑重声明:所呈交的学位论文是本人在导师指导下独立进行研究工作所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。本人完全意识到本声明的法律后果由本人承担。学位论文作者签名: 日期: 年 月 日.学位论文版权使用授权书本学位论文作者完全了解学校有关保障、使用学位论文的规定,同意学校保留并向有关学位论文管理部门或机构送交

2、论文的复印件和电子版,允许论文被查阅和借阅。本人授权省级优秀学士学位论文评选机构将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。本学位论文属于1、保密 ,在_年解密后适用本授权书。2、不保密 。(请在以上相应方框内打“”)学位论文作者签名: 日期: 年 月 日导师签名: 日期: 年 月 日目录内容摘要1 关 键 词1 Abstract1 Key Words 1 1系统概述与设计原理2 1.1该系统概述 2 1.2系统框图 2 1.3系统设计原理 3 2硬件电路设计与计算4 2.1 AT89C51部分4 2.2 24C1024总线部分7

3、 2.3液晶显和键盘矩阵部示部分8 3系统设计流程11 3.1硬件部分113.2软件部分124. 小结31 参考文献32致 谢 33内容摘要:本电子点菜系统采用AT89C51单片机控制,处理数据并驱动液晶屏来实现对数据的现实。主要过程如下:利用键盘输入对菜号的选择,然后将选择菜号,传送给单片机进行数据处理,从24C1024存储芯片中提取菜名数据信息,并通过液晶屏将提取菜名数据信息显示出来,最后通过串口传输到电脑上面。关 键 词:AT89C51单片机 24C1024存储芯片 12864液晶屏 键盘矩阵Abstract:Electronic ordering device, the key is

4、24 C1024 and AT89C51 two chips, which 24C1024 used to store all the foods information, through the AT89C51, the information will be transmitted to the LCD menu. However, they need customers to choose good dishes, the menu will be automatically stored in the AT89C51, and then can be directly connecte

5、d to the computer through the serial port will be transferred to the database menu, store, and display and print it out. The AT89S52 is mainly used to control 24 C1024 and data transfer between the liquid crystal, liquid crystal display part and the serial communication part. Is the core of block bo

6、ard. He was fired through the C language program into the.Key words:AT89C51 Microcontroller 24C1024 memory chips 12864 LCD Keyboard matrix1系统概述与设计原理1.1该系统概述随着人们的生活水平提高,餐饮业的发展也越来越迅猛。对于人满为患的酒店来说,确保快速、准确的点单是十分必要的,这就需要科学技术做坚强的后盾。在这种情况下,电子点菜系统便应运而生,该系统是一款应用于中大型餐厅,方便顾客和服务员点菜的系统。它打破了传统点菜的方式,顾客只需通过手中小巧的电子点菜

7、器就可以随意点到自己需要的菜肴,并且方便酒店随时刷新菜谱,为消费者提供最新的美食信息。电子点菜系统不仅满足了现代人对快节奏的需要,而且时尚、新颖。相信使用电子点菜系统的酒店肯定备受消费者的青睐。电子点菜系统应用于中大型酒店,无需传统菜单及服务生,顾客只需使用桌上提供的电子点菜器就可以随意挑选自己想吃的菜品,精致小巧的点菜器配上适合眼睛感官视觉的四行中文液晶显示器,免去了您频繁翻阅传统菜单的烦恼。用单片机技术设计、制造的点菜器控制系统,具有集成度高、功能强、体积小、速度快、存储量大、指令丰富,抗干扰性强,性能价格比高,通用性好,推广范围大,工作可靠,指示准确,易于匹配,使用寿命长,标准化系数高等

8、一系列优势和特点。1.2 系统框图串口包括:账目管理,编号表,菜谱,信息配置烧录存储窗体控制显示调用菜单串口1.3系统设计原理十二个按键式键盘矩阵,是让顾客可以方便选择菜名,同时可以输入桌号。一个上翻和下翻键方便顾客浏览更多的菜系,一个确定键确认顾客点的菜肴,还有一个按键是选择。在电子点菜器上,主要是24 C1024和AT89C51两块芯片,其中24C1024用来存储所有菜名信息,通过AT89C51,将菜谱信息传输给液晶显示。但顾客选择好自己需要的菜品后,菜单将自动存储到AT89C51中,再可以通过串口与电脑直接相连,将菜单传输到数据库中进行存储,并显示、打印出来。而AT89C51主要是用来控

9、制24 C1024与液晶之间数据传输,液晶显示部分以及串口通讯部分。是整块板的核心部分。他是通过C语言程序烧制进去的。在顾客点菜过程中,顾客可以通过字母按键对菜单进行分类,找出符合自己口味的菜品类。若顾客还想点到固定的菜肴,可以直接通过输入菜名拼音首字母,即可获取菜肴名。全部点完按完成键,上方的中文液晶屏将清晰显示谢谢惠顾和请输入桌号等信息,顾客只需控制按键就可以点到自己所需的菜肴,既方便,又省事。点菜完成后,服务生可以通过电子点菜器上的串口传输点菜信息到总服务台上的电脑中,电脑再对信息加以分类存储、打印,这样避免了传统点菜的手写误差,也方便顾客结账和餐厅管理。2 硬件电路设计与计算2.1 A

10、T89C51单片机2.1.1 描述AT89C51是美国ATMEL公司生产的低电压,高性能CMOS8位单片机,片内含4Kbytes的快速可擦写的只读程序存储器(PEROM)和128 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51产品指令系统,片内置通用8位中央处理器(CPU)和flish存储单元,功能强大AT89C51单片机可为您提供许多高性价比的应用场合,可灵活应用于各种控制领域。AT89C51提供以下标准功能:4K 字节flish闪速存储器,128字节内部RAM,32个I/O口线,两个16位定时计数器,一个5向量两级中断结

11、构,一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89C51可降至0HZ的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。2.1.2电路图引脚功能说明:Vcc:电源电压。GND:地。P0口:P0口是一组8位漏极开路型双向I/O口,也即地址/数据总线复位口。作为输出口用时,每位能吸收电流的方式驱动8个逻辑门电路,对端口写“1”可 作为高阻抗输入端用。P1口:P1是一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动

12、(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可做熟出口。做输出口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(Iil)。P2口:P2是一个带有内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部地山拉电阻把端口拉到高电平,此时可作为输出口,作输出口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(Iil)。P3口:P3口是一组带有内部上拉电阻的8位双向I/O口。P3口输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对P3口写入

13、“1”时,他们被内部上拉电阻拉高并可作为输出口。做输出端时,被外部拉低的P3口将用上拉电阻输出电流(Iil)。P3口除了作为一般的I/O口线外,更重要的用途是它的第二功能,如下表:端口引脚第二功能P3.0rxd (串行输入口)P3.1txd (串行输出口)P3.2int0 (外中断0)P3.3int1 (外中断1)P3.4t0 (定时/计数器0)P3.5t1 (定时/计数器1)P3.6 WR (外部数据存储器写选通)P3.7RD (外部数据存储器读选通)RST:复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。ALE/PROG:当访问外部程序存储器或数据存储器时,A

14、LE(地址所存允许)输出脉冲用于所存地址的低8位字节。即使不访问外部存储器,ALE仍以时钟振荡频率的1/6输出固定的正脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲。PSEN:程序存储允许(PSEN)输出是外部程序存储器的读选通信号,当AT89C51由外部程序存储器取指令(或数据)时,每个机器周期两个PSEN有效,即输出两个脉冲。在此期间,当访问外部数据存储器,这两次有效的PSEN信号不出现。EA/VPP:外部访问允许。欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端必须保持低电平(接地)。需注意的是; 如果加密位L

15、B1被编程,复位时内部会锁存EA端状态。XTAL1: 振荡器反相放大器的及内部时钟发生器的输出端。XTAL2: 振荡器反相放大器的输出端。P89C51 特殊功能寄存器。2.2 24C1024 部分(I2C总线技术)2.2.1 I2C总线工作原理 总线的构成及信号类型: I2C总线是由数据线SDA和时钟SCL构成的串行总线,可发送和接收数据。在CPU与被控IC之间、IC与IC之间进行双向传送,最高传送速率100kbps。各种被控制电路均并联在这条总线上,但就像电话机一样只有拨通各自的号码才能工作,所以每个电路和模块都有唯一的地址,在信息的传输过程中,I2C总线上并接的每一模块电路既是主控器(或被

16、控器),又是发送器(或接收器),这取决于它所要完成的功能。CPU发出的控制信号分为地址码和控制量两部分,地址码用来选址,即接通需要控制的电路,确定控制的种类;控制量决定该调整的类别(如对比度、亮度等)及需要调整的量。这样,各控制电路虽然挂在同一条总线上,却彼此独立,互不相关。 I2C总线在传送数据过程中共有三种类型信号, 它们分别是:开始信号、结束信号和应答信号。 开始信号:SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据。 结束信号:SCL为高电平时,SDA由低电平向高电平跳变,结束传送数据。 应答信号:接收数据的IC在接收到8bit数据后,向发送数据的IC发出特定的低电平脉冲,表

17、示已收到数据。CPU向受控单元发出一个信号后,等待受控单元发出一个应答信号,CPU接收到应答信号后,根据实际情况作出是否继续传递信号的判断。若未收到应答信号,由判断为受控单元出现故障。 这些信号中,起始信号是必需的,结束信号和应答信号,都可以不要。目前有很多半导体集成电路上都集成了I2C接口。带有I2C接口的单片机有:CYGNAL的 C8051F0XX系列,PHILIPSP87LPC7XX系列,MICROCHIP的PIC16C6XX系列等。很多外围器件如存储器、监控芯片等也提供I2C接口。 2.2.2 I2C总线操作 I2C规程运用主/从双向通讯。器件发送数据到总线上,则定义为发送器,器件接收

18、数据则定义为接收器。主器件和从器件都可以工作于接收和发送状态。 总线必须由主器件(通常为微控制器)控制,主器件产生串行时钟(SCL)控制总线的传输方向,并产生起始和停止条件。SDA线上的数据状态仅在SCL为低电平的期间才能改变,SCL为高电平的期间,SDA状态的改变被用来表示起始和停止条件。 控制字节: 在起始条件之后,必须是器件的控制字节,其中高四位为器件类型识别符(不同的芯片类型有不同的定义,EEPROM一般应为1010),接着三位为片选,最后一位为读写位,当为1时为读操作,为0时为写操作。 写操作:写操作分为字节写和页面写两种操作,对于页面写根据芯片的一次装载的字节不同有所不同。 读操作

19、: 读操作有三种基本操作:当前地址读、随机读和顺序读。图4给出的是顺序读的时序图。应当注意的是:最后一个读操作的第9个时钟周期不是“不关心”。为了结束读操作,主机必须在第9个周期间发出停止条件或者在第9个时钟周期内保持SDA为高电平、然后发出停止条件。2.2.3 主要功能在我这个作品中,由于单片机本身存储控件很小,所以24C1024芯片的主要作为一块存储芯片使用的。作用就是存储菜谱信息,用户操作按键选择在液晶屏上显示的菜名信息全部是通过读取24C1024芯片中的菜谱数据。同时24C1024芯片还要实时接收Csharp软件对菜谱的更新。2.3 12864液晶屏和键盘矩阵2.3.1 12864液晶

20、屏简介带中文字库的128X64是一种具有4位/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;其显示分辨率为12864, 内置8192个16*16点汉字,和128个16*8点ASCII字符集.利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。可以显示84行1616点阵的汉字. 也可完成图形显示.低电压低功耗是其又一显著特点。由该模块构成的液晶显示方案与同类型的图形点阵液晶显示模块相比,不论硬件电路结构或显示程序都要简洁得多,且该模块的价格也略低于相同点阵的图形液晶模块。基本特性: 1.低电源电压(VDD:+3.0-+5

21、.5V 2.显示分辨率:12864点 3.内置汉字字库,提供8192个1616点阵汉字(简繁体可选) 4.内置 128个168点阵字符 5.2MHZ时钟频率 6.显示方式:STN、半透、正显 7.驱动方式:1/32DUTY,1/5BIAS 7.视角方向:6点 8.背光方式:侧部高亮白色LED,功耗仅为普通LED的1/51/10 9.通讯方式:串行、并口可选 10.内置DC-DC转换电路,无需外加负压 11.无需片选信号,简化软件设计 12.工作温度: 0 - +55 ,存储温度: -20 - +60 忙标志:BF BF标志提供内部工作情况.BF=1表示模块在进行内部操作,此时模块不接受外部指令

22、和数据.BF=0时,模块为准备状态,随时可接受外部指令和数据.利用STATUS RD 指令,可以将BF读到DB7总线,从而检验模块之工作状态. 字型产生ROM(CGROM) 字型产生ROM(CGROM)提供8192个此触发器是用于模块屏幕显示开和关的控制。DFF=1为开显示(DISPLAY ON),DDRAM的内容就显示在屏幕上,DFF=0为关显示(DISPLAY OFF)。DFF 的状态是指令DISPLAY ON/OFF和RST信号控制的。 显示数据RAM(DDRAM)模块内部显示数据RAM提供642个位元组的空间,最多可控制4行16字(64个字)的中文字型显示,当写入显示数据RAM时,可分

23、别显示CGROM与CGRAM的字型;此模块可显示三种字型,分别是半角英数字型(16*8)、CGRAM字型及CGROM的中文字型,三种字型的选择,由在DDRAM中写入的编码选择,在0000H0006H的编码中(其代码分别是0000、0002、0004、0006共4个)将选择CGRAM的自定义字型,02H7FH的编码中将选择半角英数字的字型,至于A1以上的编码将自动的结合下一个位元组,组成两个位元组的编码形成中文字型的编码BIG5(A140D75F),GB(A1A0-F7FFH)。 字型产生RAM(CGRAM) 字型产生RAM提供图象定义(造字)功能,可以提供四组1616点的自定义图象空间,使用者

24、可以将内部字型没有提供的图象字型自行定义到CGRAM中,便可和CGROM中的定义一样地通过DDRAM显示在屏幕中。 地址计数器AC地址计数器是用来贮存DDRAM/CGRAM之一的地址,它可由设定指令暂存器来改变,之后只要读取或是写入DDRAM/CGRAM的值时,地址计数器的值就会自动加一,当RS为“0”时而R/W为“1”时,地址计数器的值会被读取到DB6DB0中。 光标/闪烁控制电路此模块提供硬体光标及闪烁控制电路,由地址计数器的值来指定DDRAM中的光标或闪烁位置2.3.2 液晶部分主要功能液晶部分主要就是显示功能。将按键对菜谱的操作显示出来,同时为了方便客人点菜,还要将客人点菜信息和消费情

25、况显示出来供客人预览,等客人确定后在传送到Csharp软件中去。2.3.3 键盘部分主要功能十二个按键式键盘矩阵,是让顾客可以方便选择菜名,同时可以输入桌号。一个上翻和一个下翻键方便顾客浏览更多的菜系,一个确定键确认顾客点的菜肴,还有一个按键是选择。顾客可以通过字母按键对菜单进行分类,找出符合自己口味的菜品类。若顾客还想点到固定的菜肴,可以直接通过输入菜名拼音首字母,即可获取菜肴名。12864液晶屏主要是显示作用,把在键盘上的种种操作都通过液晶屏显示出来,方便顾客使用。3系统设计流程3.1 硬件部分3.1.1 硬件部分功能简介 单片机硬件部分包括:键盘矩阵,12863液晶屏,24C1024存储

26、芯片,AT89C51芯片。硬件功能:硬件部分包括电子点菜电路板和一个4*4的键盘矩阵,通过控制电路板上的按键通过单片机使液晶显示自己需要的信息,并保存在单片机中,还有MAX232串口驱动芯片用来驱动串口,然后就可以通过串口输入或输出信息,并保存到C#数据库中去。硬件部分还包含包括电子点菜器电路板的设计及焊接,24C1024芯片,AT89C51芯片,液晶,串口等部分。其中液晶显示上我选择的是分部显示的原则,就是将我想显示的信息预先存储在我选好的位置上,不同按键按下触发不同内容显示在液晶上,还有个难点就是要将使用者所选择的菜记录下来,我原本的设想是想把所选择的菜名和菜价用一个数组了,可8052的存

27、储空间太小如果点的太多就根本无法存储。于是我想到了另一种办法,就是记录菜名号的方法,我在C#发送菜谱时给每一道菜加上一个唯一固定编号一起放送到24C1024中去,当客人点菜时我就用一个数组来存储被点菜的编号,这样就大大降低了对存储空间的使用也提高了数据传输的安全性。在一个就是对菜的搜索问题,客人有时想点自己喜欢的菜,在点菜器中翻找太麻烦,他可以自己输入菜的索引从而寻找自己想要点的菜,做搜索在C#上很好做但在单片机上时很难做到的,因为单片机空间小,没有现成的控件使用,也不能针对数据库进行操作。我用的办法是将顾客所按按键记录下来当顾客点击查询时将得到按键索引和24C1024固定位置的到的菜名索引进

28、行对比,如果相同就从24C1024的相应位置取出菜名和菜价显示在液晶上,这就要求数据存放要做严格要求.再就是每次点完都要记录菜价,这就要求再点菜我确定是必须同时记录所选菜在24C1024中存储的位置,再在这个基础上查询菜价进行记录保存,以便传输到C#进行保存和查询。3.1.2 硬件电路图ED1D1D2D2D3D3D4D4D5D5D6D6D7D7D8D8RSRWD8D7D6D5D4D3D2D1ERWRST1IN11R1OUT12T2IN10R2OUT9T1OUT14R1IN13T2OUT7R2IN8C2+4C2-5C1+1C1-3VS+2VS-6U2MAX232XTAL218XTAL119ALE

29、30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115U180C51C

30、41uFC31uFC11uFC21uFERRORTXD3RXD2CTS8RTS7DSR6DTR4DCD1RI9P1COMPIMP_PORT=COM4V_BAUDRATE=9600V_DATABITS=8V_PARITY=NONEINPUT_BUFFER_SIZE=1024OUTPUT_BUFFER_SIZE=1024D714D613D512D411D310D29D18D07E6RW5RS4VSS1VDD2VEE3LCD1LM016L234567891RP1RESPACK-8SCL6SDA5WP7A12U3AT24C1024 通过串口与电脑相连相互传送数据。单片机通过P0口控制液晶显示,通过PI

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

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

33、ate void Form1_Load(object sender, EventArgs e) Refresh_Phone_List(); void Refresh_Phone_List(string WhereConditon) listView1.Items.Clear(); dbClass1 db1 = new dbClass1(); string scond = select * from 所有菜名信息视图; if (WhereConditon != ) scond += where + WhereConditon + ; DataTable dt = db1.GetRecords(s

34、cond); /向列表视图中添加所有的相关号码记录 for (int i = 0; i = 0; i-) OleDbConnection con = new OleDbConnection(str); OleDbCommand cmd = con.CreateCommand(); cmd.CommandText = delete from 菜谱 where 菜名= + listView1.SelectedItemsi.Text + ; con.Open(); cmd.ExecuteNonQuery(); con.Close(); listView1.Items.Clear(); Form1_L

35、oad(sender, e); private void button1_Click(object sender, EventArgs e) if (listView1.SelectedItems.Count = 1) 菜谱修改 cform = new 菜谱修改(); cform.caiming = listView1.SelectedItems0.SubItems0.Text; cform.shijia = Convert.ToInt16(listView1.SelectedItems0.SubItems2.Text); if (cform.ShowDialog() = DialogResu

36、lt.OK) OleDbConnection con = new OleDbConnection(str); OleDbCommand cmd = con.CreateCommand(); cmd.CommandText = update 菜谱 set 时价= + cform.shijia + where 菜名= + listView1.SelectedItems0.SubItems0.Text + ; con.Open(); cmd.ExecuteNonQuery(); con.Close(); listView1.Items.Clear(); Form1_Load(sender, e); private void textBox1_TextChanged(object sender, EventArgs e) Refresh_Phone_List(菜名缩写 like % + textBox1.Text.Trim() + %

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

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号