基于STC89C52单片机的红外遥控系统.doc

上传人:知****量 文档编号:28097813 上传时间:2022-07-26 格式:DOC 页数:43 大小:3.38MB
返回 下载 相关 举报
基于STC89C52单片机的红外遥控系统.doc_第1页
第1页 / 共43页
基于STC89C52单片机的红外遥控系统.doc_第2页
第2页 / 共43页
点击查看更多>>
资源描述

《基于STC89C52单片机的红外遥控系统.doc》由会员分享,可在线阅读,更多相关《基于STC89C52单片机的红外遥控系统.doc(43页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、信息工程学院电子信息系专业实训报告题目:基于STC89C52单片机的红外遥控系统 专业班级:电子信息工程11级1班学号:1167118115 :郭晓伟 指导教师:李建军题目 基于STC89C52单片机的红外遥控系统实训目的: 通过对基于单片机的课程设计,使我们进一步熟悉和掌握单片机的结构及工作原理,掌握单片机的接口技术及相关外围芯片的特性和控制方法。并且通过对本次的课程实习,掌握以单片机为核心的电路设计的基本方法和技术。在课程设计中,我们亲自动手进行实际应用程序设计和调试,逐步掌握模块化程序设计方法和调试技术,熟练运用DXP、protel99se等类似的画图软件和编程软件keil C等,在设计

2、各自的课题中,每位同学通过完成一个包括电路设计和程序开发的完整过程,使大家了解开发单片机应用系统的全过程,在自己的实践设计中熟练这门技术时,同时排除和解决设计中遇到的各种问题,这是在此次课程设计中,同学们得到的最大的收益,而且为今后从事相应工作打下基础。实训时间、地点: 地点:工程训练中心实验室实训内容:摘要:单片机的广泛应用促进了设备和产品的微型化,数字化,自控化,和智能化。单片机的应用加深了电脑于自动化控制技术的结合,从而在自动控制领域里引发了一场对传统控制技术的革命,也就是单片机正从根本上改变着传统的控制设计思想和设计方法,是以往必须由模拟或数字电路实现的控制功能,现在可以通过软件方法实

3、现了。红外遥控是一种被广泛使用的电脑技术,特别是在家电方面给人们带来了方便快捷的生活。红外遥控用到许多中断技术,电脑系统中,中断可以由各种硬件设备产生,以便请求服务或报告故障报警等。此外,中断也可以由处理器自身产生。外部中断请求有两种信号方式有电平方式和脉冲方式。电平方式的中断请求时低电平有效,脉冲的中断请求是脉冲的下降沿有效。我通过在图书馆查阅有关资料,并且设计出了合适的电路图,经过仔细研究并对电路图做了多次修改,满足了课题的要求,实现了红外遥控的目的。最后通过仿真器输入程序,手动中断,中断结束后,程序从断点处继续执行。中断的应用具有重要的意义,它大大提高了电脑效率。关键词:单片机;遥控器;

4、STC89C52;红外遥控一 引言以单片机为核心的控制系统,因为其实时控制功能强,可靠性高,实用性强,应用范围广等优点,得到了极为广泛的应用。随着人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它所给人带来的方便也是不可否认的,其中红外遥控就是一个典型的例子,但人们对它的要求越来越高,要为现代人工作、科研、生活、提供更好的更方便的设施就需要从单片机技术入手,一切向着数字化控制,智能化控制方向发展。红外线遥控是目前使用最广泛的一种通信和遥控手段。由于红外线遥控装置具有体积小、功耗低、功能强、成本低等特点,因而,继彩电、录像机之后,在录音机、音响设备、空凋机以及玩具等其它小型电器装置上

5、也纷纷采用红外线遥控。工业设备中,在高压、辐射、有毒气体、粉尘等环境下,采用红外线遥控不仅完全可靠而且能有效地隔离电气干扰。它的理论性和实践性都很强,我们在理论课学习中主要学习单片机的基本构造,各部分的工作原理以及指令系统,然而,光是理论的学习是远远不够的,最重要的是把理论和实践相结合。所以此次实习,通过设计一个基于AT89S52单片机的遥控器设计,以增进对单片机电路的感性认识,加深对理论方面的理解和稳固,了解和掌握软硬件设计过程、方法及实现,增强自己的动手和实践能力,为以后在工作和学习中,设计和实现应用系统打下良好基础。二 单片机系统开发与应用工程实习要求及相关知识2.1 单片机系统开发与应

6、用工程实习的重要意义单片机是电脑技术、大规模集成电路技术和控制技术的综合产物。现在,但凡电脑控制的设备和产品,必有单片机嵌入其中,它早已成为人类生活中不可或缺的助手。单片机体积小、重量轻,具有很强的灵活性而且价格廉价。单片机主要用于工业环境的实时控制、智能化仪器仪表、家用电器等各个不同的领域。不同领域对单片机的使用有不同的要求,诸如环境温度、湿度、电源波动、电磁场扰动、噪声、冲击、红外遥控等等,都直接影响着单片机应用系统的总体设计。无论哪一种单片机应用系统,在总体设计中都必须把工作环境的制约当作重要因素对待。单片机应用系统设计不但要熟练掌握单片机程序语言和编程技术,而且还要具备扎实的单片机硬件

7、方面的理论和实践知识。2.2 预期目标设计一种基于AT89S52单片机控制的红外线遥控器,具有以下功能:1适用于编码式红外线遥控型家用电器;2可遥控多台家用电器;3具有一个学习/控制复用键;4可通过一个设备选择键和各个功能控制键实现对多台设备的常用功能的学习和控制;5成本低,抗干扰能力强。2.3 单片机相关知识1 本次实习所使用的单片机是Atmel公司的STC89C52芯片,此芯片的功能强大,可以实现我们日常生活中接触到的大部分家电的自动控制功能和实现对家电的远程遥控。STC89C52的引脚图如2-1所示: 图2-1 STC89C52引脚图单片机最小系统如下列图所示: 图2-2 单片机最小系统

8、2单片机最小系统的复位电路由电容串联电阻构成,由图并结合“电容电压不能突变的性质,可以知道,当系统一上电,RST脚将会出现高电平,并且,这个高电平持续的时间由电路的RC值来决定.典型的51单片机当RST脚的高电平持续两个机器周期以上就将复位,所以,适当组合RC的取值就可以保证可靠的复位.一般教科书推荐C 取10u,R取8.2K.当然也有其他取法的,原则就是要让RC组合可以在RST脚上产生不少于2个机周期的高电平.至于如何具体定量计,可以参考电路分析相关书籍. 图2-3 单片机最小系统复位电路3单片机最小系统的晶振电路单片机的时钟电路由振荡电路和分频电路组成,其振荡电路由反相器以及并联外接的石英

9、晶体和电容组成,用于产生振荡脉冲。分频电路用于把振荡脉冲分频,以的到所需要的时钟信号。振荡电路如图2-2所示: 图2-3 单片机最小系统晶振电路 其输入端为引脚XTAL1,输出端为引脚XTAL2。通过这两个引脚在芯片外并接石英晶体振荡器和两只电容,石英晶体为一感性原件,与电容构成振荡回路,为片内放大器提供正反馈和振荡的相移条件,从而构成一个稳定的自激振荡器。振荡器的频率主要取决于晶体的振荡频率, 一般晶体可在12 MHz之间任选, 电容C1、 C2可在530 pF之间选择, 电容的大小对振荡频率有微小的影响, 可起频率微调作用。 振荡脉冲经二分频后作为系统的时钟信号,时钟信号经过三分频产生AL

10、E信号,ALE信号用于控制把P0口的低8位地址送入锁存器锁起来,以实现低地址和数据的分时传送,ALE还可作为外部时钟或外部脉冲使用。时钟信号经六分频得到机器周期信号。4中断系统A 中断的概念当CPU与外设交换信息时,由于外设的速度比较慢,假设用查询的方式,则CPU就要浪费很多时间去等待外设。这样就存在一个快速的CPU与慢速的外设之间的矛盾。为了解决这个问题,就发展了中断的概念。CPU正在处理某一程序时,发生了另一突发事件请求CPU迅速去处理(中断发生);CPU暂时停止当前的工作,转到需要处理的中断源的服务程序的入口(中断响应),一般在入口处执行一跳转指令转去处理中断事件(中断服务);待CPU将

11、中断事件处理完毕后,再回到原来程序被中断的地方继续处理执行程序(中断返回),这一处理过程称为中断。51单片机的中断系统提供5个中断源:外部中断0和外部中断1,定时/计数器(T0)和(T1)的溢出中断,串行接口的接收和发送中断。本程序中只用到了外部中断1。B 中断控制1 中断允许寄存器IE(A8H)CPU对中断系统所有中断以及某个中断源的开放和屏蔽是由中断允许寄存器(IE)控制的。IE各位的定义如表2-2所示:表 2-1位地址0AFH0AEH0ADH0ACH0ABH0AAH0A9H0A8H位符号EA/ESET1EX1ET0EX0EA中断允许总控制位EA0 中断总禁止,禁止所有中断EA1 中断总允

12、许,总允许后中断的禁止或允许由各中断源的中断允许控制位设置。EX0和EX1外部中断允许控制位EX0EX10 禁止外部中断EX0EX11 允许外部中断ET0和ET1定时器/计数器中断允许控制位ET0ET10 禁止定时器/计数器中断ET0ET11 允许定时器/计数器中断ES串行中断允许控制位ES=0 禁止串行中断ES=1 允许串行中断2中断优先级控制寄存器IP各中断的优先级通过中断优先级控制寄存器IP来设定,其未定义及位地址如表2-3所示:表2-2位地址0BFH0BEH0BDH0BCH0BBH0BAH0B9H0B8H位符号/PSPT1PX1PT0PX0PX0外部中断0优先级设定位;PT0定时中断0

13、优先级设定位;PX1外部中断1优先级设定位;PT1定时中断1优先级设定位; PS串行中断优先级设定位。C定时器控制寄存器TCON该寄存器用于保存外部中断请求以及定时器的计数溢出。进行字节操作时,寄存器地址为88H。按位操作时,各位的地址为88H8FH。寄存器的内容及位地址表示如表2-4所示:表 2-3位地址 8FH 8EH 8DH 8CH 8BH 8AH 89H 88H 位符号 TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 IE0和IE1外中断请求标志位。当CPU采样到 INT0或INT1端出现有效中断请求时,IE0IE1位由硬件置“1”。 当中断响应完成转向中断服务程序时,

14、由硬件把IE0或IE1清零。TR0 和TR1定时器运行控制位:TR0 TR1 0 定时器/计数器不工作TR0 TR1 1 定时器/计数器开始工作TF0和TF1计数溢出标志位。当计数器产生计数溢出时,相应的溢出标志位硬件置“1”。 并自动产生定时中断请求。(5)液晶显示模块1602LCD分为带背光和不带背光两种,基控制器大部分为HD44780,带背光的比不带背光的厚,是否带背光在应用中并无差异,两者尺寸差异如下列图所示:图2-4 1602LCD尺寸图1602LCD主要技术参数:显示容量:162个字符 工作电流:2.0mA(5.0V) 字符尺寸:2.954.35(WH)mm引脚功能说明:1602L

15、CD采用标准的14脚无背光或16脚带背光接口,各引脚接口说明如表所示:编号符号引脚说明编号符号引脚说明1VSS电源地9D2数据2VDD电源正极10D3数据3VL液晶显示偏压11D4数据4RS数据/命令选择12D5数据5R/W读/写选择13D6数据6E使能信号14D7数据7D0数据15BLA背光源正极8D1数据16BLK背光源负极表2-4:引脚接口说明表第1脚:VSS为地电源。第2脚:VDD接5V正电源。第3脚:VL为液晶显示器比照度调整端,接正电源时比照度最弱,接地时比照度最高,比照度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整比照度。第4脚:RS为寄存器选择,高电平时选择数据寄

16、存器、低电平时选择指令寄存器。第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。第714脚:D0D7为8位双向数据线。第15脚:背光源正极。第16脚:背光源负极。6声音提示模块该设计有声音报警,当有病人呼叫时,蜂鸣器就会大声提示,直到护士应答回复,才会停止鸣叫,控制引脚接在P引脚上,利用三极管当做开关电路可以保护单片机,还可以起到放大电流的作用,当三极管基极为高电平时

17、,发射极截止,为低电平时,发射极导通。报警模块如图2-5所示。图2-5声音提示模块三 系统硬件设计3.1 红外遥控系统 通用红外遥控系统由发射和接收两大部分组成,应用编/解码专用集成电路芯片来进行控制操作,如图1所示。发射部分包括键盘矩阵、编码调制、LED红外发送器;接收部分包括光、电转换放大器、解调、解码电路。如下图: 3.2 遥控发射器及其编码 遥控发射器专用芯片很多,根据编码格式可以分成两大类,这里我们以运用比较广泛,解码比较容易的一类来加以说明,现以兼容NEC的uPD6121G芯片发射码格式的芯片组成发射电路为例说明编码原理。当发射器按键按下后,即有遥控码发出,所按的键不同遥控编码也不

18、同。这种遥控码具有以下特征:“0”“1”,其波形如下图: 上述“0”和“1”组成的32位二进制码经38kHz的载频进行二次调制以提高发射效率,到达降低电源功耗的目的。然后再通过红外发射二极管产生红外线向空间发射,如下图:UPD6121G产生的遥控编码是连续的32位二进制码组,其中前16位为用户识别码,能区别不同的电器设备,防止不同机种遥控码互相干扰。芯片厂商把用户识别码固定为十六进制的一组数;后16位为8位操作码功能码及其反码。UPD6121G最多额128种不同组合的编码。遥控器在按键按下后,周期性地发出同一种32位二进制码,周期约为108ms。一组码本身的持续时间随它包含的二进制“0”和“1

19、”的个数不同而不同,大约在4563ms之间,图4为发射波形图。当一个键按下超过36ms,振荡器使芯片激活,将发射一组108ms的编码脉冲,这108ms发射代码由一个起始码9ms,一个结果码4.5ms,低8位地址码9ms18ms,高8位地址码9ms18ms,8位数据码9ms18ms和这8位数据的反码9ms18ms组成。如果键按下超过108ms仍未松开,接下来发射的代码连发代码将仅由起始码9ms和结束码2.5ms组成。3.接收器及解码一体化红外线接收器是一种集红外线接收和放大于一体,不需要任何外接元件,就能完成从红外线接收到输出与TTL电平信号兼容的所有工作,而体积和普通的塑封三极管大小一样,它适

20、合于各种红外线遥控和红外线数据传输。红外接收头将38K载波信号过虑,得到与发射代码反向接收代码,如图:1解码的关键是如何识别“0”和“1”,从位的定义我们可以发现“0”、“1”均以0.56ms的低电平开始,不同的是高电平的宽度不同,“0”为0.56ms,“1”为1.68ms,所以必须根据高电平的宽度区别“0”和“1”。如果从0.56ms低电平过后,开始延时,0.56ms以后,假设读到的电平为低,说明该位为“0”,反之则为“1”,为了可靠起见,延时必须比0.56ms长些,但又不能超过1.12ms,否则如果该位为“0”,读到的已是下一位的高电平,因此取1.12ms+0.56ms/2=0.84ms最

21、为可靠,一般取0.84ms左右均可。2根据码的格式,应该等待9ms的起始码和4.5ms的结果码完成后才能读码。四 电路框图设计 遥控发射单元的框图设计 遥控发射单元由单片机最小系统和按键电路、红外发射器电路等组成,遥控发射单元框图如下图:电源电路STC89C52 单片机红外发射器按键电路复位电路晶振电路 图4-1 红外遥控单元发射框图 遥控接收单元的框图设计遥控接收单元由单片机最小系统和红外接收器、控制对象电路等组成,遥控接收单元框图如图3-2所示:晶振电路STC89C52单片机电源液晶显示器红外接收器复位电路 图4-2 红外遥控接收单元框图五 电路原理图及程序流程图5.1 遥控发射单元原理图

22、遥控发射单元由单片机最小系统和按键电路、红外发射器电路等组成,遥控发射单元原理图如图5-1所示。 图5-1遥控发射单元原理图5.2 遥控接收单元原理图 遥控接收单元由单片机最小系统和红外接收器、控制对象电路等组成,遥控接收单元原理图如图5-2所示。 图5-2 遥控接收单元原理图总PCB图如图5-3所示:图5-3 总PCB图5.4 红外遥控程序流程图1 程序开始是对单片机进行初始化设置,循环扫描判断是否有键按下,如果有键按下就发射相应的红外信号,遥控发射程序流程图如图5-4所示:开始初始化有键按下?查询被按下的键发送红外脉冲个数按键值YN图5-4 遥控发射程序流程图2 程序开始是对单片机进行初始

23、化设置,循环扫描判断是否有键按下,如果有键按下就发射相应的红外信号,遥控发射程序流程图如图5-5所示,中断延时有开始脉冲?接收红外执行相应功能中断返回YN实物图程序附录1:/*名称:红外线遥控发射NEC编码单片机:STC89C52RC晶振:12M*/#include #include MY_SET.h#include LCD1602_6IO.h #define KEY_PORT P1#defineKEY_NULL 80sbit IR = P20; /发射引脚/sbit LED1=P20;sbit LED2=P21;sbit LED3=P22;sbit LED4=P23;sbit KEY1=P1

24、0;sbit KEY2=P11;sbit KEY3=P12;sbit KEY4=P13;sbit KEY5=P14;#define USER_H P2 /用户码高8位#define USER_L P0 /用户码低8位Uint8tab16=0x12,0x05,0x1e,0x55,0x01,0x1b,0x03,0x6b,0x07,0x08,0x09,0x68,0x22,0xE6,0x33,0xe2;/操作码uint16 M = 0;#define m9 (65536-9000) /9mS#define m_56 (65536-560) #define m40 (65536-40000) /40mS

25、#define m56 (65536-56000) /56mSvoid SanZhuan();uint8 KEY(void);void ZZ(uint8 x); /NEC编码发送程序void Z0(uint8 temp); /单帧8位数据发送程序void TT0(bit BT,uint16 x); /38KHz载波发射 + 延时程序char keyscan();void delayk();/*函数:主程序*/void main(void) uchar m; TMOD = 0x01; IE = 0x81; /允许总中断中断,使能 INT0 外部中断 TCON = 0x01; /触发方式为脉冲负边

26、沿触发 IRIN=1; /I/O口初始化 BEEP=1;IR = 1; delay1(10); /延时 lcd_init(); /初始化LCD lcd_pos(0); /设置显示位置为第一行的第1个字符m = 0; while(cdis1m != 0) /显示字符 lcd_wdat(cdis1m); m+; lcd_pos(0x40); /设置显示位置为第二行第1个字符 m = 0; while(cdis2m != 0) lcd_wdat(cdis2m); /显示字符 m+; while(1)if(LED4 = 0)IE = 0x00; elseIE = 0x81; SanZhuan();/*

27、函数:独立键盘*/uint8 KEY(void) uint8 Key = 0xff; if(KEY1 = 0) Key = 0; / LED1 = LED1; if(KEY2 = 0) Key = 1; LED2 = LED2; if(KEY3 = 0) Key = 2; LED3 = LED3; if(KEY4 = 0) Key = 3; LED3 = LED3; if(KEY5 = 0) LED4 = LED4; return Key; /返回键值/*函数:散转程序*/void SanZhuan() uint8 v; /TMOD = 0x01; /v = KEY(); /键盘检测 v =

28、keyscan(); switch(v) case 0:ZZ(tab0);break; case 1:ZZ(tab1);break; case 2:ZZ(tab2);break; case 3:ZZ(tab3);break; case 4:ZZ(tab4);break; case 5:ZZ(tab5);break; case 6:ZZ(tab6);break; case 7:ZZ(tab7);break; case 8:ZZ(tab8);break; case 9:ZZ(tab9);break; case *:ZZ(tab10);break; case #:ZZ(tab11);break; c

29、ase +:ZZ(tab12);break; case -:ZZ(tab13);break;/ case 0xd7:ZZ(tab14);break;/ case 0xe7:ZZ(tab15);break; default:break; v=0;/*函数:NEC编码发送程序 入口:八位操作码*/void ZZ(uint8 Value) TT0(1,m9); /高电平9mS /* 发送4帧数据*/ Z0(USER_H); /用户码高8位 Z0(USER_L); /用户码低8位 Z0(Value); /操作码 Z0(Value); /操作码反码 /* 结束码 */ TT0(1,m_56); TT0(

30、0,m40); /* 重复码 */ while(KEY() != 0xFF) TT0(1,m9); TT0(0,m2_25); TT0(1,m_56); TT0(0,m40);TT0(0,m56); /*函数:单帧8位数据发送程序*/void Z0(uint8 temp) uint8 v; for (v=0;v= 1; /右移一位 /*函数:38KHz载波发射 + 延时程序 入口:是否发射载波,延时约 x (uS)*/void TT0(bit BT,uint16 x) TH0 = x8; /输入T0初始值 TL0 = x; TF0=0; /清0 TR0=1; /启动定时器0 if(BT = 0

31、) while(!TF0); /BT=0时,不发射38KHz载波只延时;B else while(1) /38KHz载波,低电平占空比5:26 IR = 0; if(TF0)break;if(TF0)break; IR = 1; if(TF0)break;if(TF0)break; if(TF0)break;if(TF0)break; if(TF0)break;if(TF0)break; if(TF0)break;if(TF0)break; if(TF0)break;if(TF0)break; TR0=0; /关闭定时器0 TF0=0; /标志位溢出则清0 IR =1; /载波停止后,发射端口

32、常态为高/*函数 :外部中断函数 */void IR_IN(void) interrupt 0 /外部中断服务程序 unsigned char j,k,N=0; EX0 = 0; delay(15); if (IRIN=1) EX0 =1; return; /确认IR信号出现 while (!IRIN) /等IR变为高电平,跳过9ms的前导低电平信号。 delay(1); for (j=0;j4;j+) /收集四组数据 for (k=0;k=30) EX0=1; return; /0.14ms计数过长自动离开。 /高电平计数完毕 IRCOMj=IRCOMj 1; /数据最高位补“0” if (

33、N=8) IRCOMj = IRCOMj | 0x80; /数据最高位补“1” N=0; /end for k /end for j if (IRCOM2!=IRCOM3)/按位取反 EX0=1; return; IRCOM5=IRCOM2 & 0x0F; /取键码的低四位IRCOM6=IRCOM2 4; /右移4次,高四位变为低四位 if(IRCOM59) IRCOM5=IRCOM5+0x37; else IRCOM5=IRCOM5+0x30; if(IRCOM69) IRCOM6=IRCOM6+0x37; else IRCOM6=IRCOM6+0x30; lcd_pos(0x4b); lc

34、d_wdat(IRCOM6); /第一位数显示 lcd_pos(0x4c); lcd_wdat(IRCOM5); /第二位数显示 Y0=0; switch(IRCOM2) case 0x09: Y0=0x01; break; case 0x1D: Y0=0x02; break; case 0x1F: Y0=0x03; break; case 0x0D: Y0=0x04; break; case 0x19: Y0=0x05; break; case 0x1B: Y0=0x06; break; case 0x11: Y0=0x07; break; case 0x15: Y0=0x08; break

35、; case 0x17: Y0=0x09; break; default:break; /case 0x13: RELAY=1; break; / case 0x14: RELAY=1; break; / case 0x51: RELAY=0; break; tabM = IRCOM2;M = (M+1)%4; beep(); EX0 = 1; char keyscan()char temp,key;KEY_PORT = 0x7f;temp = KEY_PORT;temp = KEY_PORT & 0x0f;if(temp != 0x0f)delayk();if(temp != 0x0f)temp = KEY_PORT;switch(temp)case 0x7e: key = A;break;/Acase 0x7d: key = B;break;/Bcase 0x7b: key = C;break;/Ccase 0x77: key = D;break;/Dwhile(temp != 0x0f)temp = KEY_PORT & 0x0f;P1 = key;return key;KEY_PORT = 0xbf;temp = KEY_PORT;temp = KEY_PORT & 0x0f;if(temp != 0x0f)delayk();if(temp != 0x0f)

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 工作计划

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁