




免费预览已结束,剩余43页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
天津电子信息职业技术学院毕 业 设 计课题名称 无叶风扇控制器 姓 名 周鑫 学 号 28 班 级 电子s10-2 专 业 应用电子 所 在 系 电子技术系 指导教师 张智彬 徐书雨 完成日期 2013-1-25 无叶风扇控制器摘 要无叶风扇也叫空气增倍机,它能产生自然持续的凉风,因无叶片,不会覆盖尘土或伤到好奇儿童手指。更奇妙的是其造型奇特,外表既流线又清爽。产品灵感源于空气叶片干手器。干手器的原理是迫使空气经过一个小口“刷”干手上的水,空气增倍机是让空气从一个1.3毫米宽、绕着圆环转动的切口里吹出来。因空气是被强制从这一圆圈里吹出来的,通过的空气量可增到15倍,时速可增至35公里。本次设计产品的fpga 芯片采用xilinx 公司的xc6slx9作为系统控制核心,完成对无叶风扇的闭环控制,提供了一个带有8位led显示、并使其集中到一块面板上,使得操作方便快捷,直接在led显示实时压强,设定压强,该设计中使用成品压强传感器,对压强进行实时采集,使用红外传感器采集人体信号信息,实现无人自动停机,有人自动开机,使该系统更加人性化、智能化。适宜大多数普通家庭、寝室、办公住所等。 关键词: fpga; 闭环控制; 压强检测; 人体检测目录一、绪 论21概述22特点3二、系统的总体设计41总体设计思想42系统总机构43系统设计原理图5三、系统电路模块71.dcp-100-lx9 fpga核心板72.cgq-002-a 压力检测电路83.显示电路8四、软件部分设计12五、结 论13六、致 谢14七、参考文献15附录161.vhdl程序源码:162.精彩瞬间:25一、绪 论1概述jamesdyson公司历时4年研发了一种神奇的无扇叶风扇,它使用了最新的流体动力工程技术,通过高效率的无刷电机使气流增加15倍,以每秒118加仑的速率释放出来,合1580cfm的风量。dyson公司介绍,为了精确估算各项指标,为了优化开口的翼型弧度,工程师们花了4年时间,经历了数百次模拟实验把气体流动图通过激光多普勒测量仪绘制出来。dyson本人解释说:“风扇开口的弧度设计是无扇叶风扇的关键,我们发现利用这种方式对空气进行引导和放大的效果很好,当然,这也是我们最初打算设计这样一款无扇叶风扇的原因。据了解,“无扇叶电风扇”是吸尘器的发明人戴森爵士的最新发明,因此还被冠名为“戴森空气倍增器”。其吹风原理类似于烘手机。62岁的戴森是英国最知名的发明家之一,他说自己是在发明自动烘手机的时候突然得到灵感。“烘手机是从一个小裂缝吹出气流,把手烘干。于是我想到制造一个不用扇叶的空气推动装置。” 2特点这款风扇(气流放大器)有两个尺寸:10英寸直径和12英寸(25.4cm和30.48cm),10英寸的版本有瓦蓝色和银白色,12英寸的风扇只有银白色。风扇上旋钮可以调整出风量,而且可以调整吹风的角度。这款无叶电风扇的外形像一只巨大的指环,能产生强有力的凉爽空气,也比传统电扇安全。另外,它清洗起来也比传统电风扇方便得多,使用者不需要为清理扇叶上积满的灰尘发愁了。和传统电风扇一样,它能够90度角摆动。它还能通过人为控制发生灯光变化。使用这种无扇叶风扇明显的好处就是你不用担心孩子的手会被扇叶伤到,你也不用操心给扇叶做清洗了。很多人更感兴趣的是这种风扇不存在风扇中心区的“死区”,此外你也不用操心扇叶切割空气产生的噪音了,不过无刷电机工作时依然有噪音,大概和xbox360工作时的差不多。不过这款风扇最大的劣势就是价格,10英寸风扇售价299.9美元,12英寸的为329.99美元,合人民币2046元、2250元。要享受真正的技术革新就得花大价钱。二、系统的总体设计1总体设计思想以fpga为控制中心,外部传感器为检测元件,通过按键控制其无叶风扇的风速与开关,输出由led显示数码管与红外人体电路组成,fpga通过接收各个压力传感器的返回状态值来进行风速的控制,红外人体检测电路判断是否人,来进行风扇的开关控制(该功能可设置是否启用)。控制系统的总体设计框图如图1-1所示:。fpga按键输入显示输出人体检测实际气压压强检测风扇控制图2-1 系统总体设计框图2系统总机构为了实现设计要求的基本功能,本系统必须包含四个基本功能模块:1.fpga控制模块2.压强采集模块3.风扇控制模块4.显示模块其中fpga控制模块主要用于回应传感器信号和进行显示程控;传感器模块主要用于感应是否有物体通过,并形成电平信号输出,对风扇的实时控制;显示模块主要用于显示当前风扇的气压值,及设置的气压值。为完善系统的功能同时能够达到系统的设计指标,本系统必须包含以下功能模块:1.复位电路:实现fpga的复位控制2.振荡电路:提供所需的fpga时钟频率3系统设计原理图本系统基本原理结构图如图图2-2所示。图2-2 原理图图2-3 核心板图2-4 显示部分图2-1由以上系统基本原理框架图可以看出,本系统的外围电路相对比较复杂,功能的实现主要是从外部获取控制信号之后在fpga中进行数据处理,数据处理完毕之后fpga便将控制信号输出到报警电路进行报警,将显示数据输出到显示电路进行显示。所以本系统的fpga数据处理方面的程序相对比较复杂一些,所有的感应信号和显示数据的处理和输入控制都是在fpga中进行处理,这就要求在设计程序的时候要认真思考fpga管脚的分配问题。三、系统电路模块1.dcp-100-lx9 fpga核心板型号:dcp-100-lx9名称:fpga 核心板说明:此模块的fpga 芯片采用xilinx 公司的xc6slx9,配置方式jtag 全部引出,芯片时钟为100mhz。外围器件有:flash 芯片w25q128bv、eeprom 芯片m93c66、串口通讯芯片max3232、usb 转串口芯片pl2303。线路板上以扁平带方式引出72 路io 口分9 组,分别为ja-jg ,方便与外围电路数据地址线连接,如图图3-1所示。图3-1 dcp-100-lx9 fpga核心板2.cgq-002-a 压力检测电路型号:cgq-002-a名称:压力检测电路说明:传感器采用摩托罗拉公司的高性能扩散硅压力传感器mpx53dp 并通过专门的保护支座安装在线路板上。处理电路采用由运放构成的两级放大电路实现对信号的放大、调理。该模块可用dc12v 供电,输出为模拟量信号。图示图3-2 所示:图3-2 cgq-002-a 压力检测电路3.显示电路数码管显示的工理八段led显示器由8个发光二极管组成。基中7个长条形的发光管排列成“日”字形,另一个点形的发光管在显示器的右下角作为显示小数点用,它能显示各种数字及部份英文字母。led显示器有两种不同的形式:一种是8个发光二极管的阳极都连在一起的,称之为共阳极led显示器;另一种是8个发光二极管的阴极都连在一起的,称之为共阴极led显示器。如图4.6所示: 图3-3 数码管显示器共阴极接法七段代码d7 d6 d5 d4 d3 d2 d1 d0dp g f e d c b a 00 0 1 1 1 1 1 13fh10 0 0 0 0 1 1 006h20 1 0 1 1 0 1 15bh30 1 0 0 1 1 1 14fh40 1 1 0 0 1 1 066h50 1 1 0 1 1 0 16dh60 1 1 1 1 1 0 17dh70 0 0 0 0 1 1 107h80 1 1 1 1 1 1 17fh90 1 1 0 1 1 1 16fha0 1 1 1 0 1 1 177hb 0 1 1 1 1 1 0 07chc0 0 1 1 1 0 0 139hd0 1 0 1 1 1 1 05ehe0 1 1 1 1 0 0 179hf0 1 1 1 0 0 0 171hp0 1 1 1 0 0 1 173h在选用共阴的led时,只要在某一个发光二极管加上高电平,该二极管即点亮,反之则暗。而选用共阳极的led时,要使某一个发光二极管发亮,则需加上低电平,反之则暗。为了保护各段led不受损坏,需要外加限流电阻。为了要显示某个字型,则应使此字形段的相应点二极管点亮,也即送一个不同的电平组合代表数据来控制led显示的字型,此数据称为字符的段码。本电路采用共阴极接法。十六进制数字型代码表如表4.1所示: 单片机驱动led显示有很多方法,按显示方式可以分为静态显示和动态显示。静态显示就是显示驱动电路具有输出锁存功能,单片机将要显示的数据送出后就不再控制led,直到下一次显示时再传送一次新的数据。只要当前显示的数据没有变化,就无须理睬数码显示管。静态显示的数据稳定,占用的cpu时间少。静态显示中,每一个显示器都要占用单独具有锁存功能的型代码。这样单片机只要把显表3.1 十六进制数字型代码表示的字型数据代码发送到接口电路,该字段就可以显示要发送的字型。当需要要显示新的数据时,单片机再发送新的字型码。另一种方法是动态扫描显示。动态扫描方法是用其接口电路把所有显示器的8个笔画字段(ag和dp)同名端连在一起,而每一个显示器的公共极com各自独立接受i/o线控制。cpu向字段输出端口输出字型码时,所有显示器接受相同的字型码,但究竟使哪一位则由i/o线决定。动态扫描用分时的方法轮流控制每个显示器的com端,使每个显示器轮流电亮。在轮流点亮过程中,每位显示器的点亮时间极为短暂,但由于人的视觉暂留现象及发光二极管的余辉效应,给人的印象就是一组稳定的显示数据。dcp-102-a 数码管显示和键盘电路型号:dcp-102-a名称:数码管显示和键盘电路说明:该模块包括八位数码管显示单元、查询式键盘、矩阵式键盘所组成。该线路板配合fpga 核心板可以完成数码管的静态和动态扫描实验,完成查询式和矩阵式键盘实验。图3-4 数码管显示和键盘电路本设计中使用动态扫描的方式对数码管进行控制扫描,其电路图如图4.7所示,图中srd2为上拉电阻排,电阻值为10k,驱动芯片用74hc573作为驱动使用,u2为位选驱动,u3为段码驱动,单片机的p0口接led的段码驱动,单片机的p2口接led的位选码驱动,该器件驱动电流可以达到100ma,而led数码管全亮时,最大电流可以达到32ma,如果全部驱动输出会将数码管烧坏,所以在程序中使用pwm输出的控制,在消隐时,也就是禁止数码管的输出,之后加上一段时间的延时,要确保加入的时间与显示时间和不能超过20ms,同时74hc573具有锁存功能,在本设计中没有使用该功能。四、软件部分设计主程序完成控制、执行,流程图如图图4.1所示。图4.1 主程序流程图五、结 论我们在设计调试过程中也遇到了一些问题,但我们牢记指导老师在平时训练中教给我们的“定位准确、机理清楚、故障复现、措施有效、举一反三”的技术归零方针,并严格按照技术归零方针来查找和解决问题。最后,通过团队的共同努力,完成了无叶风扇控制器的设计及制作。在这次毕设中,我们不但将学校所学的模拟电子技术、数字电子技术、电子产品组装工艺、pcb设计等专业知识应用到比赛中,实现了学以致用,而且专业知识和技能得到了大幅度的提升,同时锻炼和提高了独立分析问题、解决问题的能力、沟通能力及团队协作能力。从整套系统的设计,调试和实现的过程中,我学到了许多很有意义的东西: 首先:使用的开发语言有vhdl语言,使我的编程能力得到了很大的锻炼和提高。其次:设计和实现各种功能,可以说是对软件工程中的软件开发方法一次又一次的实践。每次的成功和失败,都给我深刻的启示,指导我怎样更好的进行软件开发,应该避免哪些问题。再次:调试的时候,充分体验了一次工程现场调试的氛围,与各位实验室同学一起的场景至今仍然历历在目。再这里,我要再次的感谢我的指导老师张美英。毕业论文从十月份开始入手,到现在已经三个月了。这份大学期间最后的作业,是对我的又一次挑战。虽然在旁人看来这工作可能微不足道,但我却从中学到了不少东西;体会到了工作中的酸甜苦辣,也认识到了自己的不足之处。这对我今后的工作和学习都是大有裨益的。遗憾的是,限于时间和能力,没能将工作做得更好。 最后,再次感谢所有关心和帮助过我的老师和朋友们。六、致 谢首先,也是最主要感谢的是我的指导老师,张智彬和徐书雨两位老师。在整个过程中他给了我很大的帮助,在论文题目制定时,他首先肯定了我的题目大方向,让我在写作时有了具体方向。在论文提纲制定时,我的思路不是很清晰,经过老师的帮忙,让我具体写作时思路顿时清晰。在完成初稿后,老师认真查看了我的文章,指出了我存在的很多问题。在此十分感谢张老师的细心指导,才能让我顺利完成毕业论文。最后要感谢在整个论文写作过程中帮助过我的每一位人。七、参考文献1 华兵.mcs-51单片机原理应用.武汉:武汉华中科技大学出版社,2002 .52 李华.mcu-51系列单片机实用接口技术.北京:北京航空航天大学出版社, 1993. 63 陈光东.单片机微型计算机原理与接口技术(第二版).武汉:华中理工大学出版社,1999.44 徐淑华,程退安,姚万生.单片机微型机原理及应用.哈尔滨:哈尔滨工业大学出版社,1999. 6.5 九州.放大电路实用设计手册.沈阳:辽宁科学技术出版社,2002.56 樊昌元,丁义元. 高精度雷达研究.电子测量与仪器学报,2000.107 苏伟,巩壁建.误差分析.传感器技术,2004.8 永学等.1-wire总线数字温度传感器ds18b20及应用.电子产品世界,2003.12附录1. vhdl程序源码:注:每部分函数应单独建立文件 ,有顶层 文件电泳子函数-顶层函数library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity wendu isport(clk : in std_logic;-100mhz,系统时钟reset : in std_logic; ren: in std_logic;-人体红外控制 pwm_out:out std_logic; -电机控制信号sda : inout std_logic;-串行总线双向数据scl : out std_logic;-串行总线时钟-switch: out std_logic; -小数点控制keyin: in std_logic_vector(3 downto 0 );data_in_ce: in std_logic_vector(11 downto 0);dot: out std_logic; -小数点控制led7 : out std_logic_vector(6 downto 0);-断码(不包含小数点)bit8 : out std_logic_vector(0 to 7)-位码);end wendu;architecture behavioral of wendu is-气压 信号 采集component ack_checkport( clk : in std_logic;reset : in std_logic;sda : inout std_logic;-串行总线双向数据scl : out std_logic;-串行总线时钟data_shi : out std_logic_vector(11 downto 0)- );end component;-显示 控制component displayport(clk : in std_logic;-100mhz,系统时钟reset : in std_logic; ren: in std_logic;pwm_out:out std_logic;-电机控制信号-switch: out std_logic; -小数点控制keyin: in std_logic_vector(3 downto 0 );data_in_ce: in std_logic_vector(11 downto 0);-mode: in std_logic;dot: out std_logic; -小数点控制led7 : out std_logic_vector(6 downto 0);-断码(不包含小数点)bit8 : out std_logic_vector(0 to 7)-位码);end component;signal data_r:std_logic_vector(11 downto 0);signal fu_hao:std_logic;beginu1: ack_check port map(clk=clk,reset=reset,sda=sda,scl=scl,data_shi=data_r-ad气压值 输出);u2:display port map(clk=clk,reset=reset,ren=ren,-人体红外控制pwm_out=pwm_out,-电机控制信号-switch=switch,keyin=keyin,data_in_ce=data_r,-ad采集后的气压值dot=dot,led7=led7,bit8=bit8);end behavioral;-pwm 无叶风扇 控制 部分代码library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity display isport( clk : in std_logic;-100mhz,系统时钟 reset : in std_logic; ren: in std_logic; pwm_out : out std_logic;-电机控制信号 keyin: in std_logic_vector(3 downto 0 ); data_in_ce: in std_logic_vector(11 downto 0); - dot: out std_logic; -小数点控制 led7 : out std_logic_vector(6 downto 0);-断码(不包含小数点) bit8 : out std_logic_vector(0 to 7)-位码);end display;architecture behavioral of display issignal data0_se,data1_se,data2_se: std_logic_vector(3 downto 0); -直接掉 设置 显示的,每一位的bcd吗signal data0_ce,data1_ce,data2_ce: std_logic_vector(3 downto 0); -直接掉 设置 显示的,每一位的bcd吗signal clk_scan : std_logic ;-位码扫描时钟signal dispcnt : std_logic_vector(5 downto 0);-每一位的显示扫描signal dis_data : integer range 0 to 17;-直接调用用于显示的断码signal key_reg: std_logic_vector(3 downto 0); -直接掉显示的,每一位的bcd吗type process_state is (st0,st1,st2);-测试显示 十进制转bcd码信号状态定义signal current_state : process_state;type process_state_se is (st0_se,st1_se,st2_se);-设置显示 十进制转bcd码信号状态定义signal current_state_se : process_state_se;signal clk100hz :std_logic;signal switch: std_logic:=0;signal se : integer range 0 to 400:=0;-设置数据signal ce : integer range 0 to 400:=0;-设置数据signal data_in_se: std_logic_vector(11 downto 0);-设定 的 bcd码 signal data_in_ce_r: std_logic_vector(11 downto 0);-测试 的 bcd码 signal zhuan1:std_logic;signal pw : integer range 0 to 100000:=0;-设置数据-调用按键程序-component key_controlport( clk : in std_logic;-100mhz reset : in std_logic;-cpu reset keyin : in std_logic_vector(3 downto 0);-输入按键 keyout : out std_logic_vector(3 downto 0)-按键输出指示);end component;beginu1: key_control port map(clk=clk,reset=reset,keyin=keyin,keyout(0)=key_reg(0),keyout(1)=key_reg(1),keyout(2)=key_reg(2),keyout(3)=key_reg(3);-分频 按键延时process(clk)variable count:integer range 0 to 500000;begin if reset=0 then count:=0;clk100hz=0; elsif rising_edge(clk) then if count=500000-4 then count:=0;clk100hz=not clk100hz; else count:=count+1; end if; end if; end process;- 启动 停止 按键 状态process(key_reg(0),key_reg(1),clk100hz,clk)beginif rising_edge(clk) then if key_reg(0)=1 then switch=1;-启动 信号 elsif key_reg(1)=1 then switch=0;-pwm_out=0;-停止 信号end if;end if;end process;-设置 按键process(key_reg(2),key_reg(3),clk100hz,clk)beginif rising_edge(clk) then if key_reg(2)=1 thenif rising_edge (clk100hz) then-按键延时时钟 防止10hz 高电平多加if se=400 then se=0; -增加 设定 压强else se=se+5;end if;end if;elsif key_reg(3)=1 then if rising_edge (clk100hz) thenif se=0 then se=400; -减小 设定 压强else se=10 then count1:=0; zhuan1=not zhuan1;pw=1500 then pw=0; end if; else count1:=count1+1; end if; end if;if switch=1 then ce=conv_integer(data_in_ce);-将输入的 二进制 强制转换 为 十进制-mode=0;-or data_in=10 and ce=se) then if pw100 thenpwm_out=100 then-低电平时间为100pwm_out50 and ce=se) then if pw500 thenpwm_out=500 then-低电平时间为100pwm_out100 and ce=se) then if pw1000 thenpwm_out=1000 then-低电平时间为100pwm_out=0;end if;end if;else pwm_out=1;-人体红外 控制 (无人)end if;elsif switch=0 then ce=0;-将输入的 二进制 强制转换 为 十进制-modewen_outpwm_out=1;end if;end if;end process;-设定显示 十进制bcd码转换_;process(clk,reset)variable d0 : std_logic_vector(3 downto 0);variable d1 : std_logic_vector(3 downto 0);variable d2 : std_logic_vector(3 downto 0);variable memory_data:integer range 0 to 10000;begin if reset=0 then d0:=0000;d1:=0000;d2:=0000;current_state_se memory_data:=se;-将要转换的 十进制数 d0:=0000; d1:=0000; d2:=0000; current_state_se if memory_data 99 then memory_data:= memory_data-100; d2:=d2+1; elsif memory_data 9 then memory_data:= memory_data-10; d1:=d1+1; else d0:= conv_std_logic_vector(memory_data,4); current_state_se data_in_se=d2&d1&d0; current_state_se current_state_se=st0_se; end case;end if;end process;-测试显示 十进制bcd码转换_;process(clk,reset)variable d0 : std_logic_vector(3 downto 0);variable d1 : std_logic_vector(3 downto 0);variable d2 : std_logic_vector(3 downto 0);variable memory_data:integer range 0 to 10000;begin if reset=0 then d0:=0000;d1:=0000;d2:=0000;current_state memory_data:=ce;-将要转换的 十进制数 d0:=0000; d1:=0000; d2:=0000; current_state if memory_data 99 then memory_data:= memory_data-100; d2:=d2+1; elsif memory_data 9 then memory_data:= memory_data-10; d1:=d1+1; else d0:= conv_std_logic_vector(memory_data,4); current_state data_in_ce_r=d2&d1&d0; current_state current_state=st0; end case;end if;end process;-将整理后的数据送到显示process(clk,reset,data2_se,data1_se,data0_se,data2_ce,data1_ce,data0_ce)beginif rising_edge(clk) thendata2_se= data_in_se(11 downto 8);data1_se= data_in_se(7 downto 4);data0_se= 0000;-data_in_se(3 downto 0);data2_ce= data_in_ce_r(11 downto 8);data1_ce= data_in_ce_r(7 downto 4);data0_ce=20000 then count:=0; clk_scan=not clk_scan; else count:=count+1; end if; end if;end process;-位码扫描控制process(clk_scan,reset) begin if reset=0 then null; elsif rising_edge(clk_scan) then if dispcnt = 100000 then dispcnt = 000000; else dispcnt=dispcnt+1; end if; end if;end process;-显示控制process(dispcnt,reset)begin if reset=0 then bit8dis_data=conv_integer(data2_se); bit8=01111111;dotdis_data=conv_integer(data1_se);bit8=10111111;dotdis_data=conv_integer(data0_se); bit8=11011111;dotdis_data=15; bit8=11101111;dotdis_data=conv_integer(data2_ce); bit8=11110111;dotdis_data=conv_in
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 企业战略管理的核心内容试题及答案
- VB项目开发中团队合作考核题及答案
- 监控与日志管理在应用中的意义试题及答案
- 宁夏银川市兴庆区唐徕回民中学2025届七下数学期末质量跟踪监视模拟试题含解析
- 2025年技术创新与战略转型试题及答案
- 深入探讨软件设计中的功能与非功能属性试题及答案
- 公司战略与社会责任关系探讨试题及答案
- 数据分析与挖掘技巧考题试题及答案
- 法学概论中的法条适用实践试题及答案
- 法学概论学习的长期目标设置试题及答案
- 2025四川爱众集团第一批次招聘10人笔试参考题库附带答案详解
- 工业用地开发项目成本分析与资金筹措方案
- 2025年初中地理学业水平考试模拟试卷:地图与地球知识综合训练试题卷及答案
- (人教2024版)英语七年级下册Unit7.4 Section B 1a-2d课件(新教材)
- 2025闽教版英语三年级下册单词表
- 关键特殊过程监控记录表
- 配电变压器调档施工技术方案
- 预防性健康检管理制度管理办法
- 英汉语法对比研究
- CAAP2008X功能概述PPT课件
- 柴油发电机组检查验收表_word文档免费
评论
0/150
提交评论