太阳能热水器控制器的设计作业_第1页
太阳能热水器控制器的设计作业_第2页
太阳能热水器控制器的设计作业_第3页
太阳能热水器控制器的设计作业_第4页
太阳能热水器控制器的设计作业_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

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

文档简介

太阳能热水器限制器的设计

摘要:本系统是为太阳能热水器水温水位的检测和限制而设计的。在

整个限制系统中,以STC89c52为主控芯片,由DS18B20传感器分别检

测水温柔水位,实现对水温柔水位、上水测量、显示、报警等功能,

并以电磁阀、继电器为阀门开关实现全自动加热、上水。整个系统精

度高,耐高温性强,易于调整,测试便利,达到设计要求。

关键词:STC89C52DS18B20传感器水温水位检测及限制

引言

当前能源紧缺,用电惊慌,太阳能是绿色能源,得到广袤用户的宠

爱。运用太阳能热水器时存在的问题:不行缺水,空晒状况下上水会

爆炸:春、秋天,水温上升蒸发,造成热能损失:冬天水温不够,须

用电等等。采纳太阳能热水器智能仪(也称太阳能热水器水温水位监

控仪),能解决上述问题。运用户省心,运用便利,智能运行,用户

不必作任何操作。

太阳能热水器是一种利用太阳辐射能通过温室效应把水加热的装

置。利用聚积的高温来加热水。太阳能热水器不仅可以为家庭供应低

温用热水(40℃〜60C),还可以为暖房、温室、干燥、蒸镭、制冷等

热动力系统和工农业生产供应较高温度的热水。太阳能热水器由于具

有绿色环保特色而在人民生活和生产中得到了很多应用,它为百姓供

应环保、平安节能、卫生的新型热水器产品,太阳能热水器就是汲

取太阳的辐射热能,加热冷水供应应人们在生活、生产中运用的节

能设备。

进步源于竞争,在我国太阳能拥有广袤的市场,当然也有更大的竞

争,各大商家为了使自己的产品在市场上立足并长远发展,不断提高

太阳能热水器的性能,其中太阳能热水器限制器以其敏捷、贴近客户

成为商家竞争的热点。目前,各大商家纷纷提高太阳能热水器的智能

化程度来满意消费者的需求。很多太阳能热水器的功能有:开机自

检、温控上水、强制上水、水位预置、水质设置、水温指示、低水压

上水、水位显示、防高温空晒、缺水报警、自动防溢流、缺水上水、

手动上水、故障提示等很多贴近客户需求的功能。

一、基本设计框图

本系统的组成框图如图1所示。本系统的主要设计思路是:设计太

阳能热水器限制器,要求实现测温,中学低水位点测(开关量),加

水限制,电加热限制、计算机监控等功能。在此框图中由PC上位矶实

现对限制部分的监控,由单片机实现现场部分的限制。

PC上位机部分由VB监控界面实现实时监控,其中包括太阳能热水

器当前的温度,当前水位,自动/手动限制,起先加水/停止加水,起

先加热/停止加热,设置温度并加热,保温限制等。由单片机实现硬件

电路的限制,从而实现太阳能热水器限制器的限制功能。

图1电路设计框图

二、硬件电路的设计

由单片机实现硬件电路的限制,其中硬件部分主要由DS18B20水温

采集部分,LCD显示水温水位部分,按键限制部分(实现相应的功能限

制),水温水位报警电路等组成。硬件电路设计图见附录一。

1、水温采集部分

1)DS18B20基本学问

DS18B20数字温度计是DALLAS公司生产的l—Wire,即单总线器件,

具有线路简洁,体积小的特点。因此用它来组成一个测温系统,具有

线路简洁,在一根通信线,可以挂很多这样的数字温度计,非常便

利。

(1)DS18B20产品的特点

只要求一个端口即可实现通信;在DS18B20中的每个器件上都有独一

无二的序列号;实际应用中不须要外部任何元器件即可实现测温;测

量温度范围在一55°C到+125°C之间;数字温度计的辨别率用户可

以从9位到12位选择;内部有温度上、下限告警设置。

(2)DS18B20工作原理及应用:

DS18B20的温度检测及数字数据输出全集成于一个芯片之上,从而抗干

扰力更强。其一个工作周期可分为两个部分,即温度检测和数据处

理。在讲解其工作流程之前我们有必要了解DS18B20的内部存储器资

源。DS18B20共有三种形态的存储器资源,它们分别是:ROM只读存储

器,用于存放DS18B201D编码,其前8位是单线系列编码(DS18B20的

编码是19H),后面48位是芯片唯一的序列号,最终8位是以上56的

位的CRC码(冗余校验)。数据在出产时设置不由用户更改。DS18B20共

64位ROM。RAM数据暂存器,用于内部计算和数据存取,数据在掉电后

丢失,DS18B20共9个字节RAM,每个字节为8位。第1,2个字节是温

度转换后的数据值信息、,第3,4个字节是用户EEPROM(常用于温度报

警值储存)的镜像。在上电复位时其值将被刷新。第5个字节序列是用

户第3个EEPROM的镜像。第6,7,8个字节为计数寄存器,是为了让

用户得到更高的温度辨别率而设计的,同样也是内部温度转换、计算

的暂存单元。第9个字节为前8个字节的CRC码。EEPROM非易失性记

忆体,用于存放长期须要保存的数据,上下限温度报警值和校验数

据,DS18B20共3位EEPROM,并在RAM都存在镜像,以便利用户操作。

第6脚:E端为使能端,当E端由高电平跳变成低电平常,液晶模决执

行吩咐。

第7脚一14脚:D0-D7为8位双向数据线。

第15—16脚:空脚

图3是水温水位显示部分:

图3水温水位显示

在LCD上显示水温,中学低水位,及当前的时间,通过LCD可以实现

实时监控,知道目前太阳能热水器的水温水位的改变。

3、按键限制部分

这部分主要是运用按键实现太阳能热水器的实时限制的一些观测,由

于没有实际的太阳能热水器用于试验,采纳此种方式可以视察是否实

现了预期的效果。通过按键按下推断是手动/自动限制,加水/加热限

制,停止加水/加热限制,中学低水位限制。当按下某一按键时,对应

的二极管亮,表示此功能实现。如图4所示:

图4按键限制部分

4、水温水位报警电路

当水温低于某一设定值时,报警电路发出警告,及要求进行加热,这

是可以采纳电加热的方式实现温度值的提高;当水位高于或低于某一

水位值时,报警电路报警,此时可以采纳自动或手动上水的方式上

水。如图5所示:

图5水温水位报警电路

三、软件部分的设计

软件部分的设计主要是包括两大模块,即主程序的设计和处理程序的

设计。在主程序中首先进行初始化设计:按键的初始化,LCD的初始

化,串口通信的初始化,定时器的初始化。还要进行LCD的清零,接

下来进入大循环,进行按键的处理及相关程序的调用。系统程序流程

图如图6所示:

系统上电后,系统即进行输入输出口的初始化,再等待用户按检测

键,在扫描到用户已经按过检测间后,单片机调用读数子程序,将水

温柔限制温度通过A/D转换后,处理推断水是否须要加热。假如须要

加热测低温灯亮,并等待用户按加热键。用户按加热键后,系统制动

继电器,是加热器通电。再加热过程中,系统循环检测水温,并限制

加热时间。整个系统在上电后将无限循环检测水温,实现实时加热。

如用户须要关闭,则可通过总电源操作。

在软件设计部分,按键处理程序、LCD1602程序、串口通信模块、

DS18B20模块的设计及相应的处理程序部分,这几个模块的编写过程比

较困难,写成的过程中要当心细致,同时也要敢于尝试。详细的程序

设计见附录二。

图6系统流程图

四、太阳能热水器限制器串口通信协议

1、通信模式

电脑和CPU通过串口进行全双工吩咐及数据传递,一方发送数据,另

一方接收数据即可,没有回答。

串口速率:BPS二9600

2、通信协议格式

发送方发送数据/吩咐/状态的协议为:地址,数据。

(1)地址为一字节数据,数值范围80H〜FFH,标记是最高位一定为1

(2)数据长度口」变,但每一个字节的数值肯定小于80H,即字节的最

高位二0

(3)全部吩咐中的数值均为一字节,且小于等于FFH。

吩咐没有应答,且每传一个数据时前面都要有地址。

3、通信协议的内容

下位机传给上位机:

1)、太阳能热水器的当前温度

地址:“A0”

吩咐:A000:当前温度为0摄氏度

A001:当前温度为1摄氏度

A002:当前温度为2摄氏度

A099:当前温度为99摄氏度

注:吩咐是以字符的形式传送,每传送温度时都要加上地

址。当前温度大于80摄氏度时报警。

2)、太阳能热水器水位检测:

地址:”A地

吩咐:AU0:水位达到低水位

A111:水位达到中水位

A112:水位达到高水位

注:吩咐传送是以单个字符的形式,每传送一组温度数值时

都要加上地址。水位达到高水位时报警。

上位机传给下位机:

1、太阳能热水器加热吩咐及温度设置、热水器保温

地址:“B0”

吩咐:B014:加热到20度

B015:加热到21度

B016:加热到22度

B017:加热到23度

B04F:加热到79度

B050:加热到80度

地址:B1H:停止加热

吩咐传送是以单个字符的形式,每传送一组温度数值时都要

加上地址。

注:上位机传温度时,把十进制温度数据以十六进制的形式传给

下位机。设置的温度是从20—80度,超此范围,设置温度窗口会报

错。

2)、太阳能热水器加水设置

吩咐:"C0”:起先加水

“C1”:停止加水

3)、太阳能热水器自动/手动设置

吩咐:"DO”:自动

“D1”:手动

VB监控界面见附录三:

五、小结

本系统硬件部分简洁,主要数据都有软件处理,且具有平安性、

牢靠性以及好用性。在此次的设计中,我学到了很多学问,之前单片

机的学问几乎遗忘,经过这次小课题设计,我做到了温故而知新,同

时也熬炼了自己的编程的实力。虽然在这次课题设计中我遇到了很多

难题,通过及同学的探讨,基本上得到了解决,之后会再接再厉,争

取做得更好!在此也要感谢此次设计过程中帮助过我的同学及老师

们。

附录一:整体电路图

附录二:软件设计程序

#includc〃rcg52.h”

#include〃key.h〃

#include,,lcdl602.h,z

#include〃usart.h"

#include〃dsl8b20.h〃

#include"time,h"

#include"dispose.h〃

voidInit(void)

Keylnit();

Lcdlnit();

UsartTnit();

Timelnit();

voidmain(void)

unsignedkey;

Init0;

LcdClr();

while(1){

key=KeyScan();

DisposeKey(key);

#include"dispose.h〃

sbitdi=P2P;

sbitzhong=P21;

sbitgao=P2*2;

charRunMode;

charSetTemp;

charSetTempbuf;

charBaojingEn;

unsignedcharshui1iang(void);

voidDisposcAuto(void)

if(temp[i]<SetTempbuf){

jiare=0;

}else{

jiare=1;

if(shuiliangO==0){

jiashui=0;

}elseif((shuiliangO==1)&&(SetTempbuf-tcmpCi]<

30)){

jiashui=0;

}elseif((shuiliangO==2)&&(SetTempbuf-tempEi]<

20))(

jiashui=0;

}elseif((shuiliangO==3)&&(SetTempbuf-tempEi]<

10)){

jiashui=0;

}else{

jiashui=1;

voidDisposcKey(unsignedcharkey)

switch(key)

case8:〃手动/自动

RunMode=!RunMode;

break;

case9:〃加热

if(!RunMode){

jiare=0;

break;

case10:〃+

if(SetTemp){

if(SetTempbuf<100){

SetTempbuf++;

LcdPos(14);

LcdWdat(SetTempbuf/10+48);

LcdWdat(SetTempbuf%10+48);

break;

case11://-

if(SetTemp){

if(SetTempbuf>0){

SetTempbuf一一;

LcdPos(14);

LcdWdat(SetTempbuf/10+48);

LcdWdat(SetTempbuf%10+48);

break;

case12:〃设置温度

SetTemp=!SetTemp;

if(SetTemp){

LcdClr();

LcdPos(0);

LcdWdat('S');

LcdWdat('e');

LcdWdat('t');

LcdWdatCT);

LcdWdat('e');

LcdWdat('m,);

LcdWdat('p');

LcdWdat(':;

LcdPos(14);

LcdWdat(SetTempbuf/10+48);

LcdWdat(SetTempbuf%10+48);

}else{

LcdClr();

LcdPos(0);

LcdWdat('T);

LcdWdat('e');

LcdWdat('m');

LcdWdat('p');

LcdWdat(':;

LcdPos(14);

LcdWdat(temp[i]/10+48);

LcdWdat(temp[i]%10+48):

break;

case13:〃报警音开/关

BaojingEn=!BaojingEn;

break;

case14:〃加水

if(IRunMode){

jiashui=0;

break;

case15:〃停止

if(!RunModc){

jiare=1;

jiashui=1;

break;

default:

break;

unsignedcharshuiliang(void)

staticunsignedcharshuiliang;

di=0;

zhong=0;

gao=0;

//staticunsignedcharj;

P3|=0x38;

//j++;

//if(j>=2){

//j=0;

if(di==1){

shuiliang=0;

}elseif(zhong==1){

shuiliang=1;

}elseif(gao==1){

shuiliang=2;

//if(shuiliang[。]!=shuiliang[l]){

switch(shuiliang){

case0:

LcdPos(0x40);

LcdWdat('甲);

LcdWdat('a');

LcdWdat('t');

LcdWdat('e');

LcdWdat('r');

LcdWdatC');

LcdWdat('L');

LcdWdat('c');

LcdWdat('v');

LcdWdat('e');

LcdWdatD;

LcdWdat(':;

LcdWdat('O');

UsartSendShuiwei(0);

break;

case1:

LcdPos(0x40);

LcdWdat('『);

LcdWdat('a');

LcdWdat('t');

LcdWdat('e');

LcdWdat('r');

LcdWdat');

LcdWdat('L');

LcdWdat('e');

LcdWdat('v');

LcdWdat('e');

LcdWdat(,f);

LcdWdat(':;

LcdWdatCr);;

UsartSendShuiwei(1);

break;

case2:

LcdPos(0x40);

LcdWdat(,W,);

LcdWdat('a');

LcdWdat('t');

LcdWdat('e');

LcdWdat('r');

LcdWdat('');

LcdWdat('L');

LcdWdat('e');

LcdWdat('v');

LcdWdat('e');

LcdWdat(*f);

LcdWdatC:;

LcdWdat(,2,);;

UsartSendShuiwei(2);

break;

case3:

LcdPos(0x40);

LcdWdat('甲);

LcdWdat('a');

LcdWdat('t');

LcdWdat('e');

LcdWdat('r');

LcdWdatC');

LcdWdat('L');

LcdWdat('e');

LcdWdat('v');

LcdWdat('e');

LcdWdatCP);

LcdWdat(':;

LcdWdat('3');;

UsartSendShuiwei(3);

break;

default:

break;

returnshuiliang;

按键处理部分

#include"key.h〃

voidKeyDelay(unsignedintz)

unsignedinti;

while(z--)

for(i=0;i<120;i++)

voidKeylnit(void)

P2=0xfe;

P0-0xff;

ad0=0;

adl=0;

ad2=0;

ad3=l;

unsignedcharKeyScan(void)

unsignedchartemp,num;

num=16;

adO-O;

adl=0;

ad2=l;

ad3=l;

P2=0xfe;〃扫描第一行

P0=0xff;

temp=P0;

if(temp!=0xff)

KeyDelay(5);

temp=PO;

if(temp!=0xff)

switch(temp)

caseOxfe:num=0;break;

caseOxfd:num=l;break;

caseOxfb:num=2;break;

case0xf7:num=3;break;

caseOxef:num=4;break;

caseOxdf:num=5;break;

caseOxbf:num=6;break;

caseOx7f:nurn=7;break;

while(tcmp!=Oxff)

PO=Oxff;

temp=P0;

P2=0xfd;〃扫描其次行

PO=Oxff;

tcmp=P0;

if(temp!=0xff)

KcyDolay(5);

temp=P0;

if(temp!=0xff)

switch(temp)

caseOxfe:num=8;break;

caseOxfd:num=9;break;

caseOxfb:num=10;break;

case0xf7:num=ll;break;

caseOxef:num-12;break;

caseOxdf:num=13;break;

caseOxbf:num=14;break;

case0x7f:num=15;break;

while(temp!=0xff)

P0=0xff;

temp=P0;

ad3=0;

returnnum;

LCD1602程序

#include〃lcdl602.h〃

unsignedcharcodedisl[]={"WelcomeB6〃};〃第一行显示内

unsignedchardispbuf[5];〃其次行显示内容

floatcount1=34.56;

/*延时子程序

voidLcdDelay(intms)

inti;

while(ms-一)

for(i=0;i<250;i++)

_nop_();

_nop_();

_nop_();

_nop_();

/*越查LCD忙状态

*/

ALcdBusy为1时,忙,等待。LcdBusy为0时,闲,可写指令及数

据。*/

bitLcdBusy(void)

bitresult;

lek=0;

LCD_RW=1;

lcd_rs=0;

LCD_EN=l;//0x91;//LCDRS=0;LCDRW=1;LCDEN=1;

lek=1;〃锁存数据到HC574

_nop_();

_nop_();

_nop_();

_nop_();

result=(bit)(P0&0x80);

lek=0;

LCD_EN=0;//LCD_EN=0;

lek=1;

returnresult;

/*写指令数据到LCD

*/

/*RS=L,RW=L,E=上升沿D0-D7=指令码。

*/

voidLcdWcmd(unsignedcharcmd)

while(LcdBusy());

lek=0;

LCDRW=();

lcd_rs=0;

LCD_EN=0://LCD_RS=0;LCDRW=0;LCD_EN=0;

lek=1;

_nop_。

_nop_()

P0=cmd;

_nop_()

_nop_()

_nop_()

_nop_()

lek=0;

LCD_EN=1;//LCD_EN=1;

lek=1;

_nop_()

_nop_()

_nop_()

_nop_()

lek=0;

LCD_EN=0;//LCD_EN=0;

lek=1;

/*写显示数据到LCD

*/

/*RS=HRW二L,E二上升沿,D0-D7二数据。

*/

voidLcdWdat(unsignedchardat)

while(LcdBusy());

lek=0;

lcd_rs=1;

LCDRW=0;

LCDEN=0;//LCDRS=1;LCDRW=0;LCDEN=0;

lek=1;

P0=dat;

_nop_()

_nop_()

_nop_()

_nop_()

lek=0;

LCD_EN二二1;//LCD_EN=1;

lek二1

_nop_()

_nop_()

_nop_()

_nop_()

lek二0

LCD_EN==0;//LCD_EN=0;

lek=1

/*设定显示位置

*/

voidLedPos(unsignedcharpos)

LedWemd(pos10x80);〃数据指针二0x80+地址变量

/*LCD初始化设定

*/

voidLcdlnit(void)

LcdDelay(15);〃等待LCD电源稳定

LedWemd(0x38);〃16*2显示,5*7点阵,8位数据

LedDelay(5);

LedWemd(0x38);

LedDelay(5);

LedWemd(0x38);

LedDelay(5);

LedWemd(0x0c);〃显示开,关光标

LedDelay(5);

LedWemd(0x06);〃移动光标

LedDelay(5);

LcdWcmd(OxOl);〃清除LCD的显示内容

LcdDelay(5);

/*清屏子程序

*/

voidLcdClr(void)

LcdWcmd(0x01);〃清除LCD的显示内容

LcdDelay(5);

/'KC\],.]/

/zTsZTSzfsZ?^ZT^zTsZT*xjs*Ts*Ts结束

*£z*Jz^1*HL^*1Z*£*

^7*^T>XTN"、«、*1XxjxX7XX7X<J^X«>^7*「、«、<1%*1X<7^^T>XT>

串口通信程序

#include〃usart.h"

〃函数名称:Usartlnit

〃函数功能:初始化

voidUsartlnit(void)

TMOD|=0x20;〃定时器1工作方式2

THl=Oxfd;〃频率9600

TLl=Oxfd;

TR1=1;〃定时器1工作

SCON=0x50;〃01010000串口表现为8位UART,串口允许接收位

REN置1

PCONOxOO;〃波特率不加倍

IE=0x90;//10010000开总中断EA,串口中断ES

〃函数名称:UsartSendTemp

〃函数功能:串口发送温度

voidUsartSendTemp(unsignedchartemp)

SBUF='A';

while(TI==0);

TI=0;

SBUF='O';

while(TI==0);

TI=0;

SBUF=temp/10+48;

while(TI==0);

TI=0;

SBUF=temp%10+48;

while(TI==0);

TI=O;

〃函数名称:UsartSendShuiwei

〃函数功能:串口发送水位

voidUsartSendShuiwei(unsignedcharshuiwei)

SBUF='A';

while(TI==0);

TT=O;

SBUF二'1';

while(TI==0);

TI=0;

switch(shuiwei){

case0:

SBUF='O';

while(TI==0);

TI-0;

break;

case1:

SBUF=?r;

while(TI=0);

TI=0;

break;

case2:

SBUF='2';

while(TI=0);

TT=O;

break;

default:

break;

〃函数名称:serial

〃函数功能:串口中断

voidserial()interrupt4

unsignedcharaddr;

staticunsignedchari;

staticunsignedchardat[3];

if(RI)

RI=O;//RI清0

addr=SBUF;〃取数据

switch(addr){

case'B':

i=0;

dat[i]=addr;

i++;

break;

case'C':

i=0;

dat[i]=addr;

i++;

break;

case'D,:

i=0;

dat[i]=addr;

i++;

break;

default:

dat[i]=addr;

i++;

if((dat[0]=='B')&&(dat[1]=='0')){

if(i>=3){

SetTempbuf=(dat[2]-48)*10+dat[3]-

48;

if(!RunMode){

jiare=0;

}elseif((dat[0]=='B')&&(dat[1]=='l')){

if(!RunMode){

jiare=1;

}elseif((dat[0]=='C')&&(dat[1]=='0')){

if(!RunMode){

jiashui=0;

}elseif((dat[0]=='C')&&(dat[1]=='1)){

if(!RunMode){

jiashui=1;

}elseif((dat[0]=='D')&&(dat[1]=='0')){

RunMode=1;

}elseif((dat[0]=='D')&&(dat[1]==T')){

RunMode=0;

break;

else

TI=0;〃TI清0

DS18B20程序

#include〃dsl8b20.h〃

unsignedchartemper[2];〃存放温度的数组

、!,

zTsZTSZTSZTSZTSZTSZTSZTS延时函数

sixdj*sixsXxvjxK1XKIXsixsixsixsixvizvjx

xi%I

voidDsDelay(unsignedintus)

while(us-一);

;K|>KV>KC

^7*复位函数

、>KIXKI^VAXxZxSJ^sXxsizsjzKIZI

*1X*r>/

voidDsReset(void)〃复位

unsignedcharx=0;

DQ=1;

DsDelay(8);〃稍做延时

DQ=0;

DsDelay(80);〃精确延时大于480us

DQ=1;〃拉高总线

DsDelay(14);

x=DQ;

DsDelay(20);

/**********************从DS18B20读一字节***************/

unsignedcharDsReadbyte(void)〃读1字节

unsignedchari=0;

unsignedchardat=0;

for(i=8;i>0;i-)

DQ=0;

dat>>=1;

DQ=1;

if(DQ)

dat|=0x80;

DsDelay(4);

return(dat);

/***********************向DS18B20写字节

*1^*X**X**£**X**1^/

*1**T**T**v»*T**T**T**T»*r»*T*/

voidDsWritebyte(unsignedchardat)//写1字节

unsignedchari=0;

for(i=8;i>0;i-)

DQ=0;

DQ=dat&OxOl;

DsDelay(5);

DQ=1;

dat>>=l;

DsDelay(4);

/***********************CPU读取温度值

\[,xZxsZxvjxKIXKIXxlx%£xxZxKIZvjxKIX

/

unsignedcharDsReadtemp(void)〃读取温度

unsignedchara=0,b=0;

DsReset0;

DsWritebyte(OxCC);//跳过序列号

DsWritebyte(0x44);//启动温度转换

DsReset();

DsWritebyte(OxCC);

DsWritebyte(OxBE);〃读9个寄存器,前两个为温度

a=DsRcadbyte();//低位

b=DsReadbyte();〃高位

temper[0]=a&OxOf;

a=a»4;〃低位右移4位,舍弃小数部分

temper[l]=b«4;〃高位左移4位,舍弃符号位

temper[l]=temper[l]|a;

温馨提示

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

评论

0/150

提交评论