基于MCS51单片机的闹钟提醒器设计报告

上传人:仙*** 文档编号:33938999 上传时间:2021-10-19 格式:DOC 页数:28 大小:346KB
收藏 版权申诉 举报 下载
基于MCS51单片机的闹钟提醒器设计报告_第1页
第1页 / 共28页
基于MCS51单片机的闹钟提醒器设计报告_第2页
第2页 / 共28页
基于MCS51单片机的闹钟提醒器设计报告_第3页
第3页 / 共28页
资源描述:

《基于MCS51单片机的闹钟提醒器设计报告》由会员分享,可在线阅读,更多相关《基于MCS51单片机的闹钟提醒器设计报告(28页珍藏版)》请在装配图网上搜索。

1、淮南师范学院 电气信息工程学院 电子信息工程专业 Proteus课程论文 成绩课程论文题 目: 基于MCS51单片机的闹钟 提醒器设计报告 学生姓名: 陈 浩 敏 学生学号: 1008030204 系 别: 电气信息工程学院 专 业: 电子信息工程 年 级: 10级 任课教师: 张 水 锋 电气信息工程学院制2012年12月目录一、设计方案选定:31.1 前言31.2 实验目的31.3总体设计要求31.3.1、基本要求31.3.2、自由发挥部分31.4 方案选定4二、硬件电路设计42.1 AT89C5242.2 复位电路42.3 晶振电路52.4 时钟显示52.4.1 LCD16026 2.4

2、.2 DS1302:62.5 程序框图62.6 基本电路及工作原理7三、软件设计和仿真83.1 软件设计83.2 Proteus仿真25四、课程设计体会26参考文献27基于MCS51单片机的闹钟提醒器学生:陈浩敏指导教师:张水锋电气信息工程学院 电子信息工程专业一、设计方案选定:1.1 前言:单片计算机即单片微型计算机,(Single-Chip Microcomputer)。是集CPU ,RAM ,ROM,定时,计数和多种接口于一体的微控制器。他体积小,成本低,功能强,广泛应用于智能产品和工业自动化上。而51单片机是各单片机中最为典型和最有代表性的一种。这次课程设计通过对它的学习,应用,从而达

3、到学习、设计、开发软、硬的能力。基于单片机的定时和控制装置在许多行业有着广泛的应用。而数字定时闹钟是其中最基本,也是最有代表性的一个实例。数字定时闹钟的设计方法有许多种,例如,可以用中小规模集成电路组成数字定时闹钟,也可以利用专用的时钟芯片配以显示电路及其所需要的外围电路组成数字定时闹钟,还可以利用单片机来实现数字定时闹钟。这些方法都各有其特点,其中,利用单片机来实现数字定时闹钟具有编程灵活、精度高等特点,便于数字定时闹钟功能的扩充,同时还可以用该数字定时闹钟发出各种控制信号。1.2 实验目的: 1、熟悉集成电路的引脚安排。 2、掌握各芯片的逻辑功能及使用方法。 3、充分认识单片机设计。 4、

4、了解数字钟的组成及工作原理。 5、提高同学们的动手能力和编程技巧。1.3总体设计要求: 1.3.1、基本要求: (1) 显示准确的北京时间(时、分、秒),可用24小时制式; (2) 随时可以调校时间; (3)闹铃功能。 1.3.2、自由发挥部分: (1)秒表功能; (2)增加公历日期显示功能(年、月、日),年号只显示最后两位; (3) 随时可以调校年、月、日; (4) 允许通过转换功能键转换显示时间或日期。1.4 方案选定:思路:基于单片机的数字定时闹钟在设计时需要解决三个方面的主要问题:一是LCD显示模块的驱动和编程,二是有关单片机中定时器的使用,三是如何利用单片机的外中断实现时钟功能和运行

5、模式的转化。在基于单片机系统的数字定时闹钟电路中,除了基本的单片机系统和外围电路外,还需要外部的控制和显示装置。在本设计中,输入装置是按键开关,用于控制数字定时闹钟的运行模式,显示装置是LCD液晶显示器。该数字定时闹钟是由AT89C52单片机控制的,可以达到以下效果:1、能够显示“时时-分分-秒秒”。2、能够设定定时时间、修改定时时间。3、定时时间到能够发出一分钟的报警声。AT89C52的指令系统和引脚与8051完全兼容,片内有128B 的RAM、32条I/O口线、2个16位定时计数器、5个中断源、一个全双工串行口等。显示部分采用六位一体的共阳极数码管。二、硬件电路设计:2.1 AT89C52

6、: AT89C52是51系列单片机的一个型号,它是ATMEL公司生产的。 主要功能特性: 1、兼容MCS51指令系统。2、8k可反复擦写(1000次)Flash ROM。 3、32个双向I/O口。 4、256x8bit内部RAM。 5、3个16位可编程定时/计数器中断。 6、时钟频率0-24MHz 7、2个串行中断,可编程UART串行通道,2个外部中断源,共6个中断源 ,2个读写中断口线,3级加密位,低功耗空闲和掉电模式,软件设置睡眠和唤醒功能。 2.2 复位电路: 为确保微机系统中电路稳定可靠工作,复位电路是必不可少的一部分,复位电路的第一功能是上电复位。一般微机电路正常工作需要供电电源为5

7、V5%,即4.755.25V。由于微机电路是时序数字电路,它需要稳定的时钟信号,因此在电源上电时,只有当VCC超过4.75V低于5.25V以及晶体振荡器稳定工作时,复位信号才被撤除,微机电路开始正常工作。 2.3 晶振电路:晶振在数字电路的基本作用是提供一个时序控制的标准时刻。数字电路的工作是根据电路设计,在某个时刻门完成特定的任务,如果没有一个时序控制的标准时刻,整个数字电路就会成为“聋子”,不知道什么时刻该做什么事情了。晶振的作用是为系统提供基本的时钟信号。通常一个系统共用一个晶振,便于各部分保持同步。有些通讯系统的基频和射频使用不同的晶振,而通过电子调整频率的方法保持同步。晶振的工作原理

8、: 主板时钟芯片即分频器的原始工作振荡频率,由石英晶体多谐振荡器的谐振频率来产生,晶振其实是一个频率产生器,他主要把传进去的电压转化为频率信号。提供给分频率一个基准的14.318MHZ的振荡频率,它是一个多谐振荡器的正回馈环电路,也就是说它把输入作为输出,把输出作为输入的回馈频率,象这样一个永无休止的循环自激过程。2.4 时钟显示 2.4.1 LCD1602:工业字符型液晶,能够同时显示16x02即32个字符。(16列2行) 2.4.2 DS1302: 引脚功能及结构 DS1302的引脚排列,其中Vcc1为后备电源,VCC2为主电源。在主电源关闭的情况下,也能保持时钟的连续运行。DS1302由

9、Vcc1或Vcc2两者中的较大者供电。当Vcc2大于Vcc10.2V时,Vcc2给DS1302供电。当Vcc2小于Vcc1时,DS1302由Vcc1供电。X1和X2是振荡源,外接32.768kHz晶振。RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。 下图为DS1302的引脚功能图: DS1302封装图 要特别说明的是备用电源B1,可以用电池或者超级电容器(0.1F以上)。虽然DS1302在主电源掉电后的耗电很小,但是,如果要长时间保证时钟正常,最好选用小型充电电池。可以用老式电脑主板上的3.6V充电电池。如果断电时间较短(几小时或几天)时,就可以用漏电较小的普通电解电

10、容器代替。100 F就可以保证1小时的正常走时。DS1302在第一次加电后,必须进行初始化操作。初始化后就可以按正常方法调整时间。2.5 程序框图:LCD液晶显示电路复位、时钟等电路单片机 闹钟铃声指示电路按钮电路电源系统电子闹钟的主电路指的是图中的框部分,主要设计到单片机电路和按键按钮电路,主机的设计具体地说有:(1)系统时钟电路设计;(2)系统复位电路设计;(3)按键与按钮电路设计;(4)闹铃声指示电路设计。本设计是定时闹钟的设计,由单片机AT89C52芯片和LCD液晶显示器为核心,辅以时钟芯片等必要电路,构成的一个单片机电子定时闹钟。电子钟设计可以采用数字。初始化2 程序流程图计时时间显

11、示 比较蜂鸣器响Y闹钟?闹钟标志N读键读键判断定时设定值2.6 基本电路及工作原理:定时闹钟的设计,由单片机AT89C52芯片和DS1302和LCD液晶显示器为核心,辅以必要的电路,构成一个单片机电子定时闹钟。电子钟设计可以采用数字电路实现,也可以采用单片机来完成。AT89C52的指令系统和引脚与8051完全兼容,片内有128B 的RAM、32条I/O口线、2个16位定时计数器、5个中断源、一个全双工串行口等。AT89C52结合用LCD液晶显示器设计的简易定时闹钟,可以设置限制的时间及显示闹钟设置时间,若时间一到则发车一阵声响,进一步可以扩充控制电器的启停。定时闹钟包括时间显示,按键电路,复位

12、电路,闹铃指示电路等等几部分。三、软件设计和仿真: 3.1 软件设计:#include #include #include #define uchar unsigned char#define uint unsigned intsbit key_set =P10;sbit key_add =P11;sbit key_sub =P12;sbit key_break =P13;sbit bell =P30;sbit RS=P25;sbit RW=P26;sbit E =P27;sbit T_CLK=P22;sbit T_IO =P21;sbit T_RST=P20;sbit ACC0=ACC0;s

13、bit ACC7=ACC7;uchar alarm_temp2=0,0;/时、分uchar time_temp7=0x00,0x00,0x00,0x19,0x12,0x03,0x12,;/存放初始化时间及从ds1302读取的数据 /数据格式:秒 分 时 日 月 星期 年 /初始时间: 00-00-00-03-19- 12 -12bit m;void InitTimer0(void) /50ms中断,用于产生:的闪烁 TMOD = 0x01; TH0 = 0x3C; TL0 = 0x0B0; EA = 1; ET0 = 1; TR0 = 1; /*定时器延时,n为延时的微秒数,整个程序可用*/v

14、oid delay(uint n) TH1=-n/236; TL1=-n%236; TR1=1; while(!TF1) TF1=0; TR1=0;void delay_4s(void) /误差 0us unsigned char a,b,c; for(c=252;c0;c-) for(b=230;b0;b-) for(a=33;a0;a-); _nop_(); /if Keil,require use intrins.h/* LCD1602驱动程序 *void lcd_wdat(uchar m) RS=1; RW=0; P0=m; delay(1); E=1; delay(1); E=0;

15、void lcd_wcmd(uchar h) RS=0; RW=0; P0=h; delay(1); E=1; delay(1); E=0;void lcd_init(void) delay(15000); lcd_wcmd(0x38); delay(5000); lcd_wcmd(0x38); delay(5000); lcd_wcmd(0x38); delay(5000); lcd_wcmd(0x0c); lcd_wcmd(0x06); lcd_wcmd(0x01);/*-*/*ds1302读写程序*/void RTInputByte(uchar d) /往DS1302写入1Byte数据

16、(内部函数),d 写入的数据 uchar i; ACC = d; for(i=8; i0; i-) T_IO = ACC0; /*相当于汇编中的 RRC */ T_CLK = 1; T_CLK = 0; ACC = ACC 1; uchar RTOutputByte(void) /从DS1302读取1Byte数据 (内部函数) / uchar i; for(i=8; i0; i-) ACC = ACC 1; /*相当于汇编中的 RRC */ ACC7 = T_IO; T_CLK = 1; T_CLK = 0; return(ACC); void W1302(uchar ucAddr, ucha

17、r ucDa)/往DS1302写入数据 /先写地址,后写命令/数据 (内部函数) T_RST = 0; /ucAddr: DS1302地址, ucData: 要写的数据 T_CLK = 0; T_RST = 1; RTInputByte(ucAddr); /* 地址,命令 */ RTInputByte(ucDa); /* 写1Byte数据*/ T_CLK = 1; T_RST = 0;uchar R1302(uchar ucAddr)/读取DS1302某地址的数据,先写地址,后读命令/数据 (内部函数) /ucAddr: DS1302地址 uchar ucData; /ucData :读取的数

18、据 T_RST = 0; T_CLK = 0; T_RST = 1; RTInputByte(ucAddr); /* 地址,命令 */ ucData = RTOutputByte(); /* 读1Byte数据 */ T_CLK = 1; T_RST = 0; return(ucData);void set1302(uchar *pClock) /设置初始时间,先写地址,后读命令/数据(寄存器多字节方式) /簆Clock: 设置时钟数据地址 格式为: 秒 分 时 日 月 星期 年 uchar i; uchar ucAddr = 0x80; W1302(0x8e,0x00); /* 控制命令,WP

19、=0,写操作*/ for(i =7; i0; i-) W1302(ucAddr,*pClock); /* 秒 分 时 日 月 星期 年 */ pClock+; ucAddr +=2; W1302(0x8e,0x80); /* 控制命令,WP=1,写保护*/*-开机显示-*/void display1(void) uchar i; uchar code dis4=week; uchar code p116=Name:Chen haomin; uchar code p216= No:1008030204 ; delay(1000); for(i=0;i16;i+) lcd_wcmd(0x80|i)

20、; lcd_wdat(p1i); for(i=0;i16;i+) lcd_wcmd(0xc0|i); lcd_wdat(p2i); delay_4s(); lcd_init(); delay(1000); delay(1000); lcd_wcmd(0x80);/2 lcd_wdat(0x32); lcd_wcmd(0x81);/0 lcd_wdat(0x30); for(i=0;i4;i+) delay(10);lcd_wcmd(0x80|i+0x0b);lcd_wdat(disi); /*-显示部分-*/void disp(void) /*显示时间*/ lcd_wcmd(0x82); lc

21、d_wdat(R1302(0x8d)/16+0x30);/年 lcd_wcmd(0x83); lcd_wdat(R1302(0x8d)%16+0x30); lcd_wcmd(0x84); /- lcd_wdat(45); lcd_wcmd(0x85); lcd_wdat(R1302(0x89)/16+0x30);/月 lcd_wcmd(0x86); lcd_wdat(R1302(0x89)%16+0x30); lcd_wcmd(0x87); /- lcd_wdat(45); lcd_wcmd(0x88); lcd_wdat(R1302(0x87)/16+0x30);/日 lcd_wcmd(0x

22、89); lcd_wdat(R1302(0x87)%16+0x30); lcd_wcmd(0x8a); lcd_wdat(32); lcd_wcmd(0x8f); lcd_wdat(R1302(0x8b)%16+0x30);/星期 lcd_wcmd(0xc0); lcd_wdat(R1302(0x85)/16+0x30);/时 lcd_wcmd(0xc1); lcd_wdat(R1302(0x85)%16+0x30); /lcd_wcmd(0xc2); /: /lcd_wdat(58); lcd_wcmd(0xc3); lcd_wdat(R1302(0x83)/16+0x30);/分 lcd_

23、wcmd(0xc4); lcd_wdat(R1302(0x83)%16+0x30); /lcd_wcmd(0xc5); /lcd_wdat(58); /: lcd_wcmd(0xc6); lcd_wdat(R1302(0x81)/16+0x30);/秒 lcd_wcmd(0xc7); lcd_wdat(R1302(0x81)%16+0x30); /*显示闹钟*/ lcd_wcmd(0xcb); lcd_wdat(alarm_temp1/10+0x30);/时 lcd_wcmd(0xcc); lcd_wdat(alarm_temp1%10+0x30); lcd_wcmd(0xcd); lcd_w

24、dat(58); lcd_wcmd(0xce); lcd_wdat(alarm_temp0/10+0x30);/分 lcd_wcmd(0xcf); lcd_wdat(alarm_temp0%10+0x30);/秒/*-系统设置-*/void sys_set(void) uchar i,j; uchar key_state=0; TR0=0; /停止闪烁,显示: lcd_wcmd(0xc2); lcd_wdat(58); lcd_wcmd(0xc5); lcd_wdat(58); while(key_break) if(!key_set) /adjust the key state delay(

25、10000); if(!key_set) while(!key_set); key_state+; if(key_state=9) key_state=0; switch(key_state)/调整时间时,需要的时候再读出各寄存器的值,以完成调整时间的要求 /虽然会浪费一定的空间,但能保证较快地响应请求 /在每次读出数据后应将bcd码转化为16进制数,调整完成后,再将16进制数转化为bcd码,最后给ds1302送数 case 0:/时钟 秒调整 time_temp0 lcd_wcmd(0xc8); lcd_wdat(67);/c lcd_wcmd(0xc9); lcd_wdat(45);/-

26、lcd_wcmd(0xca); lcd_wdat(83); /s time_temp0=R1302(0x81);/读出秒寄存器 time_temp0=time_temp0/16*10+time_temp0%16;/转化为16进制数 if(!key_add) delay(10000); if(!key_add) while(!key_add); time_temp0+; if(time_temp0=60) time_temp0=0; if(!key_sub) delay(10000); if(!key_sub) while(!key_sub); time_temp0-; if(time_temp

27、0=255)time_temp0=59; W1302(0x8e,0x00); W1302(0x80,time_temp0/10*16+time_temp0%10); W1302(0x8e,0x80); break; case 1:/时钟 分调整 lcd_wcmd(0xc8); lcd_wdat(67);/c lcd_wcmd(0xc9); lcd_wdat(45);/- lcd_wcmd(0xca); lcd_wdat(77);/m time_temp1=R1302(0x83);/读出分寄存器 time_temp1=time_temp1/16*10+time_temp1%16; if(!key

28、_add) /+ delay(10000); if(!key_add) while(!key_add); time_temp1+; if(time_temp1=60) time_temp1=0; if(!key_sub) /- delay(10000); if(!key_sub) while(!key_sub); time_temp1-; if(time_temp1=255) time_temp1=59; W1302(0x8e,0x00); W1302(0x82,time_temp1/10*16+time_temp1%10); W1302(0x8e,0x80); break; case 2:/

29、时钟 时调整 lcd_wcmd(0xc8); lcd_wdat(67);/c lcd_wcmd(0xc9); lcd_wdat(45);/- lcd_wcmd(0xca); lcd_wdat(72);/h time_temp2=R1302(0x85);/读出时寄存器 time_temp2=time_temp2/16*10+time_temp2%16; if(!key_add) /+ delay(10000); if(!key_add) while(!key_add); time_temp2+; if(time_temp2=24)time_temp2=0; if(!key_sub) /- del

30、ay(10000); if(!key_sub) while(!key_sub); time_temp2-; if(time_temp2=255) time_temp2=23; W1302(0x8e,0x00); W1302(0x84,time_temp2/10*16+time_temp2%10);/转换为bcd码 W1302(0x8e,0x80); break; case 3:/时钟 日调整 lcd_wcmd(0xc8); lcd_wdat(67);/c lcd_wcmd(0xc9); lcd_wdat(45);/- lcd_wcmd(0xca); lcd_wdat(68);/d time_t

31、emp3=R1302(0x87);/读出日寄存器 time_temp3=time_temp3/16*10+time_temp3%16; time_temp6=R1302(0x8d);/读年,用于判断平年与闰年 i=time_temp6/16*10+time_temp6%16;/转化为16进制 j=R1302(0x89);/读月 if(!key_add) /+ delay(10000); if(!key_add) while(!key_add); time_temp3+;if(j=0x02) if(time_temp3=30)&(i%4) time_temp3=0; if(time_temp3=

32、29)&(!(i%4) time_temp3=0; if(j=0x01)|(j=0x03)|(j=0x05)|(j=0x07)|(j=0x08)|(j=0x10)|(j=0x12) if(time_temp3=32) time_temp3=0; if(j=4)|(j=6)|(j=9)|(j=0x11) if(time_temp3=31) time_temp3=0; if(!key_sub) /- delay(10000); if(!key_sub) while(!key_sub); time_temp3-; if(j=2) /2月 if(time_temp3=255)&(i%4) time_t

33、emp3=29; if(time_temp3=255)&(!(i%4) time_temp3=28; if(j=1)|(j=3)|(j=5)|(j=7)|(j=8)|(j=0x10)|(j=0x12)/1、3、5、7、8、10、12月 if(time_temp3=255) time_temp3=31; if(j=4)|(j=6)|(j=9)|(j=0x11)/4、6、9、11月 if(time_temp3=255) time_temp3=30; W1302(0x8e,0x00); W1302(0x86,time_temp3/10*16+time_temp3%10);/回写 W1302(0x8e

34、,0x80); break; case 4:/时钟 月调整 lcd_wcmd(0xc8); lcd_wdat(67);/c lcd_wcmd(0xc9); lcd_wdat(45);/- lcd_wcmd(0xca); lcd_wdat(77);/m time_temp4=R1302(0x89);/读出分寄存器 time_temp4=time_temp4/16*10+time_temp4%16; if(!key_add) /+ delay(10000); if(!key_add) while(!key_add); time_temp4+; if(time_temp4=13) time_temp

35、4=0; if(!key_sub) /- delay(10000); if(!key_sub) while(!key_sub); time_temp4-; if(time_temp4=255) time_temp4=12; W1302(0x8e,0x00); W1302(0x88,time_temp4/10*16+time_temp4%10); W1302(0x8e,0x80); break; case 5:/时钟 星期调整 lcd_wcmd(0xc8); lcd_wdat(67);/c lcd_wcmd(0xc9); lcd_wdat(45);/- lcd_wcmd(0xca); lcd_w

36、dat(87);/w time_temp5=R1302(0x8b);/读出星期寄存器 time_temp5=time_temp5/16*10+time_temp5%16; if(!key_add) /+ delay(10000); if(!key_add) while(!key_add); time_temp5+; if(time_temp5=8) time_temp5=1; if(!key_sub) /- delay(10000); if(!key_sub) while(!key_sub); time_temp5-; if(time_temp5=0) time_temp5=7; W1302(

37、0x8e,0x00); W1302(0x8a,time_temp5/10*16+time_temp5%10); W1302(0x8e,0x80); break; case 6:/时钟 年调整 lcd_wcmd(0xc8); lcd_wdat(67);/c lcd_wcmd(0xc9); lcd_wdat(45);/- lcd_wcmd(0xca); lcd_wdat(89);/y time_temp6=R1302(0x8d);/读出年寄存器 time_temp6=time_temp6/16*10+time_temp6%16; if(!key_add) /+ delay(10000); if(!

38、key_add) while(!key_add); time_temp6+; if(time_temp6=100)time_temp6=0; if(!key_sub) /- delay(10000); if(!key_sub) while(!key_sub); time_temp6-; if(time_temp6=255)time_temp6=0; W1302(0x8e,0x00); W1302(0x8c,time_temp6/10*16+time_temp6%10); W1302(0x8e,0x80); break; case 7:/闹钟 分调整 lcd_wcmd(0xc8); lcd_wd

39、at(65);/a lcd_wcmd(0xc9); lcd_wdat(45);/- lcd_wcmd(0xca); lcd_wdat(77);/m if(!key_add) /+ delay(10000); if(!key_add) while(!key_add); alarm_temp0+; if(alarm_temp0=60) alarm_temp0=0; if(!key_sub) /- delay(10000); if(!key_sub) while(!key_sub); alarm_temp0-; if(alarm_temp0=255) alarm_temp0=59; break; c

40、ase 8:/闹钟 时调整 lcd_wcmd(0xc8); lcd_wdat(65);/a lcd_wcmd(0xc9); lcd_wdat(45);/- lcd_wcmd(0xca); lcd_wdat(72);/h if(!key_add) /+ delay(10000); if(!key_add) while(!key_add); alarm_temp1+; if(alarm_temp1=24) alarm_temp1=0; if(!key_sub) /- delay(10000); if(!key_sub) while(!key_sub); alarm_temp1-; if(alarm_temp1=255) alarm_temp1=23; break; default:break; disp();/显示 lcd_wcmd(0xc8);/清除显示的标记 lcd_wdat(32); lcd

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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