


版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、单片机课程设计多功能定时器一、设计目的:1、在理论学习的基础上, 通过完成一个涉及 MCS-51 单片机多种资源应用并具 有综合功能的小系统目标板的设计与编程应用;2、能够对电子电路、电子元器件、印制电路板等方面的知识进一步加深认识, 在软件编程、排错调试、相关仪器设备的使用技能等方面得到较全面的锻炼 和提高;3、使学生增进对单片机的感性认识,加深对单片机理论方面的理解。使学生掌 握单片机的内部功能模块的应用,如定时器 / 计数器、中断、片内外存贮器、 I/O 口、串行口通信等;4、使学生了解和掌握单片机应用系统的软硬件设计过程、方法及实现,为以后 设计和实现单片机应用系统打下良好基础。二、设
2、计功能说明 数字钟是采用数字电路实现对时,分,秒,数字显示的计时装置,由于数字集成 电路的发展和石英晶体振荡器的广泛应用, 使得数字钟的精度, 远远超过老式钟 表,钟表的数字化给人们生产生活带来了极大的方便, 而且大大地扩展了钟表的 报时功能。数字钟已成为人们日常生活中的必需品,本设计可实现如下功能:1、使用实时时钟芯片写入及读取时间2 、用 LCD 显示,可显示年、月、日、时、分、秒、星期、农历日期、节日3、选择蜂鸣器电路,实现两个闹钟设置和事件提示功能4、实现时钟校正功能, 12 小时 /24 小时切换功能5、显示当前时间为上午时间或下午时间6、整点报时功能按键功能如下:1、对显示时间的设
3、置按键0:进入设置模式,实现秒(S)、分(M )、时(H )、年(丫)、月(m )、 日( D )、星期(W、设置的切换,并在LCD右下角显示所设置的项目,当各项 目设置完毕后,再按下按键 0 则返回主界面正常显示时间;按键 1:每按一次按键 1,对所设置的时间加 1 ,当设置的时间超过它的最大值时,该项自动为 0,例如:当设置秒为 59 时,秒自动清零;按键2:每按一次按键 :2,对所设置的时间减 1,当设置的时间小于 0时,该项 自动为它的最大值;按键 3:设置完成后的确认键并可按此键中途退出设置, 时间按用户设置值正常 计时;按键 7:实现时钟校正功能, 12 小时/24 小时切换功能。
4、2、对闹钟的设置按键4 :进入闹钟1的设置,并在LCD右上方显示“ CLOCK1 ”并通过按键0、1、 2设置用户所需闹钟时间,完成闹钟 1 的设置后,通过按键 0进入闹钟 2的 设置,并在LCD右上方显示“ CL0CK2 ”,若无需设置闹钟2,则通过按键3 退出闹钟设置,返回主界面正常显示时间;按键5 :设置闹钟是否开启,例如:当设置闹钟 1为开启状态时,在LCD右上 方显示“ *CL0CK1 ”当闹钟,并在返回主界面后显示“ C1 ”表示闹钟1开启;三、整体设计思路这部分主要介绍工作安排和整体设计的思想。工作过程规划如下:完成对测试中的问题再调试四、主程序流程图上电初始化显示时间初值与闹钟
5、时间相同?是否开启?响铃N不响不响Keyvalue=getkey ()进入时间设置N各设置项加一五、电气原理图(见附图)六、实验程序1、键盘程序(Keyprocess )键盘与848相连接,采用矩阵键盘的方式P2用于列扫描,P1用于行扫描,经过消抖及等待键释放的程序,将最终正确的结果置于getkey();程序实现如下:#in clude"aduc848.h"void KeyDelay(unsigned int KeyJsTime);/ 键盘扫描延时函数声明unsigned char GetKey();/ 扫描后获取键值un sig ned char GetKey()stat
6、ic un sig ned char KeyHaveFree=1;static un sig ned int KeyJs=0;un sig ned char temp,KeyTemp=Oxff;P1&=OxfO;/ 将低四位置零做 I/O 口/ 延时消除抖动/ 延时后确认是否有键按下,并获取具体P2&=0xf0; temp=P1&0x0f;if(KeyHaveFree)if(temp!=0x0f)KeyDelay(1000);if(temp=(P1&0x0f)键值P2|=0x0e;switch(P1&0x0f)case 0x0e:KeyTemp=3;br
7、eak;case 0x0d:KeyTemp=7;break; case 0x0b:KeyTemp=11;break;case 0x07:KeyTemp=15;break;case 0x0f:break;default:KeyTemp= 0x80;break;P2&=0xf0;P2|=0x0d; switch(P1&0x0f)case 0x0e:KeyTemp= 2;break;case 0x0d:KeyTemp= 6;break;case 0x0b:KeyTemp= 10;break;case 0x07:KeyTemp= 14;break;case 0x0f:break;def
8、ault:KeyTemp= 0x81;break;P2&=0xf0;P2|=0x0b; switch(P1&0x0f)case 0x0e:KeyTemp= 1;break;case 0x0d:KeyTemp= 5;break;case 0x0b:KeyTemp= 9;break;case 0x07:KeyTemp= 13;break;case 0x0f:break; default:KeyTemp= 0x82;break;P2&=0xf0;P2|=0x07;switch(P1&0x0f)case 0x0e:KeyTemp= 0;break;case 0x0d:K
9、eyTemp= 4;break;case 0x0b:KeyTemp= 8;break;case 0x07:KeyTemp= 12;break;case 0x0f:break;default:KeyTemp= 0x83;break;KeyHaveFree=0; /LCDPrintNumber(6,11,5,KeyTemp);elseKeyJs+;if(KeyJs>70)KeyHaveFree=1;KeyJs=66;if(temp=0x0f)KeyHaveFree=1;KeyJs=0;KeyTemp=0xf0;return KeyTemp;void KeyDelay(unsigned int
10、 KeyJsTime)unsigned char temp;unsigned int JsKeyDelay;for(JsKeyDelay=0;JsKeyDelay<KeyJsTime;JsKeyDelay+)temp+; 2、Lcd 程序 (1602)#include "aduc848.h"sbit RS=P3A6;sbit RW=P3A5;位定义sbit EN=P3A3;void delay(u nsig ned int z);延时函数声明void write_com (un sig ned char com);LCD显示位置函数声明void write_data(
11、 un sig ned char date);写数据函数声明P3:控制位PO:数据位RW=0 :写允许RW=1 :读允许RS=0:写地址 RS=1:写数据P0 口 =com : P0 口输出显示位置的地址P0 口 =data: P0 口输出数据的地址EN=1 :从1602显示到LCD屏EN=0 :关掉显示以便显示下一个数据void in it();void init()/ 初始化RS=0;RW=0;EN=0;write_com(0x38);write_com(0x0f);write_com(0x06);void delay(unsigned int z)/ 延时函数 延时时间=Z*110un
12、sig ned int x,y;for(x=z;x>0;x-)for(y=110;y>0;y-);void write_com (un sig ned char com)/RS=0;RW=0;P0=com;delay(5);EN=1;delay(5);EN=0;void write_data( un sig ned char date)RS=1;RW=0;P0=date;delay(5);EN=1;delay(5);EN=0;3、iic程序(RTC)II实时时钟#include"aduc848.h"void iic_start(void);void iic_st
13、op(void);void iic_ack(void);bit read_ack(void);void iic_nack();unsigned char get_byte(void);void out_byte(unsigned char dd);void IIC_Delay_us(unsigned int times); void ReadTime(unsigned char TIME7);void SetTime(unsigned char TIME7); void SwitchRTC(unsigned char SWITCH);void ReadTime(unsigned char TI
14、ME7)bit EATemp; unsigned char temp;EATemp=EA;iic_start(); out_byte(0xd0);read_ack(); out_byte(0x00);read_ack(); iic_stop();IIC_Delay_us(1);iic_start(); out_byte(0xd1);read_ack();TIME0=get_byte(); iic_ack();TIME1=get_byte(); iic_ack();TIME2=get_byte(); iic_ack();TIME3=get_byte(); iic_ack();TIME4=get_
15、byte(); iic_ack();TIME5=get_byte(); iic_ack();TIME6=get_byte();iic_nack();iic_stop();IIC_Delay_us(1);TIME0=(TIME0&0x7f)>>4)*10+(TIME0&0x0f);/secondTIME1=(TIME1&0x7f)>>4)*10+(TIME1&0x0f);/minuteif(TIME2&0x40)if(TIME2&0x20)temp=0x80;else temp=0x40;TIME2=(TIME2&0
16、x1f)>>4)*10+(TIME2&0x0f); /hourTIME2|=temp;elseTIME2=(TIME2&0x3f)>>4)*10+(TIME2&0x0f);TIME3=TIME3&0x07;/weekTIME4=(TIME4&0x3f)>>4)*10+(TIME4&0x0f);/dateTIME5=(TIME5&0x1f)>>4)*10+(TIME5&0x0f);/monthTIME6=(TIME6>>4)*10+(TIME6&0x0f);/yea
17、rEA=EATemp;void SetTime(unsigned char TIME7)bit EATemp;unsigned char temp=0;unsigned char TimeTemp7;EATemp=EA; for(temp=0;temp<7;temp+)TimeTemptemp=TIMEtemp; temp=0;/Year/Day/HourTimeTemp6=(TimeTemp6/10)<<4)+(TimeTemp6%10);TimeTemp5=(TimeTemp5/10)<<4)+(TimeTemp5%10); /MonthTimeTemp4=(
18、TimeTemp4/10)<<4)+(TimeTemp4%10);TimeTemp3=(TimeTemp3/10)<<4)+(TimeTemp3%10); /Weekif(TimeTemp2&0xc0)=0x00)TimeTemp2=(TimeTemp2/10)<<4)+(TimeTemp2%10);elseif(TimeTemp2&0xc0)=0x01)temp=0x40;else temp=0x60;TimeTemp2&=0x3f;TimeTemp2=(TimeTemp2/10)<<4)+(TimeTemp2%10);
19、TimeTemp2|=temp; TimeTemp1=(TimeTemp1/10)<<4)+(TimeTemp1%10);/MinuteTimeTemp0=(TimeTemp0/10)<<4)+(TimeTemp0%10);/SecondTimeTemp0&=0x7f;iic_start();out_byte(0xd0);read_ack();out_byte(0x00);read_ack();out_byte(TimeTemp0);read_ack();out_byte(TimeTemp1);read_ack();out_byte(TimeTemp2);rea
20、d_ack();out_byte(TimeTemp3);read_ack();out_byte(TimeTemp4);read_ack();out_byte(TimeTemp5);read_ack();out_byte(TimeTemp6);read_ack();iic_stop();IIC_Delay_us(1);EA=EATemp;void SwitchRTC(unsigned char SWITCH)unsigned char temp; bit EATemp; EATemp=EA;iic_start(); out_byte(0xd0); read_ack(); out_byte(0x0
21、0);read_ack();iic_stop(); /IIC_Delay_us(1);iic_start(); out_byte(0xd1); read_ack(); temp=get_byte();iic_nack(); iic_stop();/IIC_Delay_us(1);if(SWITCH)temp&=0x7f; else temp|=0x80;iic_start(); out_byte(0xd0);read_ack(); out_byte(0x00);read_ack(); out_byte(temp);read_ack(); iic_stop(); /IIC_Delay_u
22、s(1);EA=EATemp;void iic_start(void)MDE=1;MDO=1;/IIC_Delay_us(2);MCO=1;/IIC_Delay_us(2);MDO=0;/IIC_Delay_us(2);void iic_stop(void)MDE=1;MDO=0;/IIC_Delay_us(2);MCO=1;/IIC_Delay_us(2);MDO=1;void iic_ack(void)MDE=1;MCO = 0;MDO = 0;/IIC_Delay_us(2);MCO = 1;/IIC_Delay_us(2);MCO = 0;/IIC_Delay_us(1);MDO =
23、1;bit read_ack(void)bit flag;MCO = 0;/IIC_Delay_us(2);MDE=1;MDO = 1;MCO = 1;/IIC_Delay_us(2);MDE=0; flag = MDI;MCO = 0;return flag; void iic_nack()MDE=1;MDO = 1; /IIC_Delay_us(2);MCO = 1;/IIC_Delay_us(2);MCO = 0;/* 函数名 : get_byte;* 描述 : 从 IIC 总线获取一个字节 ;* 输入 : none ;* 返回值 : 一字节数据 ;* 注释 : none;*/unsig
24、ned char get_byte(void) / 输入一个字节 unsigned char dd;int i;dd=0;MDE=1;MDO = 1;MDE=0;for (i=0;i<8;i+)MCO = 0; IIC_Delay_us(1);MCO = 1; /IIC_Delay_us(1);dd<<=1;if (MDI)dd|=0x01;MCO = 0; return(dd);/* 函数名 : out_byte;* 描述 : 向 IIC 总线输出一个字节 ;* 输入 : 一字节数据* 返回值 : none;* 注释 : none;*void out_byte(unsign
25、ed char dd)/ 输出一个字节 unsigned char i;MDE=1;for(i=0;i<8;i+)MCO = 0;/IIC_Delay_us(0); MDO = (dd & 0x80)>>7; IIC_Delay_us(1); MCO = 1;/IIC_Delay_us(3); dd <<= 1;MCO = 0;/* 函数名 : IIC_Delay_us;* 描述 : IIC 总线延时函数 ;* 输入 : 延时参数* 返回值 : none;* 注释 : none;*/void IIC_Delay_us(unsigned int times)
26、unsigned int i;unsigned char DelayJs; for (i=0; i<times; i+)DelayJs+;4 、 主程序( Prj6 )#include"aduc848.h" #include"KeyProcess.h"#include"rtc.h"#include"LCD1602.h"unsigned char CurrentTime7=55,59,21,6,23,04,11;unsigned char ClockSetSave13=10,00,22,ClockSetSave
27、23=20,00,22;unsigned char code table7=0x53,0x4d,0x48,0x59,0x6d,0x44,0x57;unsigned char code table14=0x20,0x53,0x4d,0x48;unsigned char KeyValue,ClockKeyValue,shijianzhi=0;un sig ned char SetMode=0;un sig ned char ShowMode=0;un sig nedcharClock=1,ClockSet=0,Fi ni shClockSet 仁0,Fi ni shClockSet2=0,Cloc
28、kE n1=0,ClockEn2=0;un sig ned in t i=0;void KeyProcess();void stop()P1&=OxfO;P2|=0x0f;P2&=0xfe; if(P1 &0x08)=0)P2&=Oxfe;void mai n()PLLCO N&=0xf8;/设置频率为12.58MHzCFG848|=0x01;使用片内xramini t();I2CCON=OxE8;配置iic为软件主发送模式SetTime(Curre ntTime);SwitchRTC(1);write_com(0x82);/写冒号write_data(
29、0x3A);write_com(0x85);/写冒号write_data(0x3A);write_com(0xc2);/写短横线write_data(0x2D);write_com(0xc5);/写短横线write_data(0x2D);write_com(0xc8);/写短横线write_data(0x2D);while(1)/HourReadTime():把时间从芯片中读出 SetTime():把时间写入芯片 SwitchRTC(1):让时钟芯片走时 SwitchRTC(O):让时钟芯片暂停计 时stop();if(SetMode=0)ReadTime(Curre ntTime); wri
30、te_com(0x80);write_data(Curre ntTime2/10+48);write_data(Curre ntTime2%10+48);if(Curre ntTime0=ClockSetSave10&&Curre ntTime1=ClockSetSave11&&Curre ntTime2=ClockSetSave12) &&ClockE n1=1|write_com(0x83);write_data(Curre ntTime1/10+48);/Mi nutewrite_data(Curre ntTime1%10+48);writ
31、e_com(0x86);write_data(Curre ntTime0/10+48);/Seco ndwrite_data(Curre ntTime0%10+48);write_com(OxcO);write_data(Curre ntTime6/10+48);/Yearwrite_data(Curre ntTime6%10+48);write_com(0xc3);write_data(Curre ntTime5/10%10+48);/Mon thwrite_data(Curre ntTime5%10+48);将十进制数转换为十六write_com(0xc6);进制的ASCII值以便在wri
32、te_data(Curre ntTime4/10%10+48);/DayLCD上显示write_data(Curre ntTime4%10+48);switch(Curre ntTime3)/Weekcase1:write_com(0xc9);write_data(0x4D);write_data(0x6f);write_data(0x6e);break;显示Moncase2:write_com(0xc9);write_data(0x54);write_data(0x75);write_data(0x65);break;显示Tuecase3:write_com(0xc9);write_data
33、(0x57);write_data(0x65);write_data(0x64);break;显示Wencase4:write_com(0xc9);write_data(0x54);write_data(0x68);write_data(0x75);break;显示Thucase5:write_com(0xc9);write_data(0x46);write_data(0x72);write_data(0x69);break;显示Fricase6:write_com(0xc9);write_data(0x53);write_data(0x61);write_data(0x74);break;显
34、示Satcase7:write_com(0xc9);write_data(0x53);write_data(0x75);write_data(0x6e);break;显示Sundefault: break;KeyProcess();(CurrentTime0=ClockSetSave20&&CurrentTime1=ClockSetSave21&&Cur rentTime2=ClockSetSave22)&&ClockEn2=1) / 与闹 铃时间相同则闹铃响PWM1H=62;PWM1L=100;PWMCON=0x31;KeyDelay(333)
35、;PWM1H=0;PWM1L=0;PWMCON=0x00;KeyDelay(333);/ 整点报时/ 对闹铃响铃时长和音调等if(CurrentTime0=0&&CurrentTime1=0)PWM1H=62;PWM1L=100;PWMCON=0x21;的设定KeyDelay(333);PWM1H=0;PWM1L=0;PWMCON=0x00;KeyDelay(333);if(ClockEn1=1)C1write_com(0x8c);write_data(0x43);write_data(0x31);elsewrite_com(0x8c);write_data(0x20);wri
36、te_data(0x20); if(ClockEn2=1) C1write_com(0x8e);write_data(0x43);write_data(0x32); else/ 如果闹铃 1 被设置则显示/ 否则清显/ 如果闹铃 2 被设置则显示/ 否则清显write_com(0x8e);write_data(0x20);write_data(0x20); void KeyProcess()描KeyValue=GetKey();switch(KeyValue)case 0: write_com(0xcf); write_data(tableSetMode); if(SetMode=0)Swit
37、chRTC(0); SetMode+;if(SetMode>7)计时 SetMode=0; SetTime(CurrentTime); if(SetMode=0)SwitchRTC(1); write_com(0xcf); write_data(0x20);break;case 1:/ 按键处理 , 启动按键扫/ 按键 0 进入设置模式/ 显示被设置项/ 进入设置,则停止计时/ 如果设置完了, 则开始/ 按键 1 :加/ 执行按键 1 是在进入设置的模式switch(SetMode)下case1:write_com(0xcf);write_data(0x53);CurrentTime0+
38、;if(CurrentTime0>59)Curr entTime0=0;break;/miaocase2:write_com(0xcf);write_data(0x4d);CurrentTime1+;if(CurrentTime1>59)Curr entTime1=0;break;/fencase3:write_com(0xcf);write_data(0x48);CurrentTime2+;if(CurrentTime2>23)Curr entTime2=0;break;/shicase4:write_com(0xcf);write_data(0x59);CurrentTi
39、me6+;if(CurrentTime6>99)CurrentTime6=0;break;/yearcase 5:write_com(0xcf);write_data(0x6d);CurrentTime5+;if(CurrentTime5>12)Curr entTime5=1;break;/monthcase 6:/daywrite_com(0xcf);write_data(0x44);CurrentTime4+;switch(CurrentTime5)case 1:case 3:case 5:case 7:case 8:case 10:case 12:if(CurrentTime
40、4>31)CurrentTime4=1;break;case 4:case 6:case 9:case 11:if(CurrentTime4>30)CurrentTime4=1;break;case 2: if(CurrentTime6%4)if(CurrentTime4>28)CurrentTime4=1;else if(CurrentTime4>29)CurrentTime4=1;break;default:break;break;case 7:write_com(0xcf);write_data(0x57);CurrentTime3+;if(CurrentTime
41、3>7)Curre ntTime3=1;break; /weekdefault:break;break;case 2: / 按键 2:减switch(SetMode)case1:CurrentTime0-;if(CurrentTime0>254)CurrentTime0=59;break;/miaocase2:CurrentTime1-;if(CurrentTime1>254)CurrentTime1=59;break;/fencase3:CurrentTime2-;if(CurrentTime2>254)CurrentTime2=23;break;/shicase4:
42、CurrentTime6-;if(CurrentTime6>254)CurrentTime6=99;break;/yearcase5:CurrentTime5-;if(CurrentTime5>254)CurrentTime5=12;break;/monthcase 6:/dayCurrentTime4-; switch(CurrentTime5) case 1: case 3:case 5:case 7: case 8:case 10: case12:if(CurrentTime4>254)CurrentTime4=31;break;case 4:case 6:case 9
43、: case11:if(CurrentTime4>254)CurrentTime4=30;break;case 2: if(CurrentTime6%4)if(CurrentTime4>254)CurrentTime4=28;else if(CurrentTime4>254)CurrentTime4=29; break;default:break;break;case7:CurrentTime3-;if(CurrentTime3>7)CurrentTime3=1;break; /week default:break;break;case 3: / 按键 3 中途退出设置
44、模式/ 在设置模式中中途退出/ 开计时if(SetMode!=0)SetTime(CurrentTime);SetMode=0;SwitchRTC(1);显示break;write_com(0xcf); write_data(0x20);case 4:/ 按键 4 设置闹铃write_com(0xcf); write_data(0x20); while(Clock!=0) switch(Clock) case 1: / 用 Clock 来进行判断闹铃设置完否/*闹铃 1while(FinishClockSet1!=1)write_com(0x80); write_data(ClockSetSa
45、ve12/10+48); write_data(ClockSetSave12%10+48);write_com(0x83);write_data(ClockSetSave11/10+48); write_data(ClockSetSave11%10+48);write_com(0x86);write_data(ClockSetSave10/10+48); write_data(ClockSetSave10%10+48);write_com(0x8a);/Hour/Minute/Second/ 闹铃 设置序 号write_data(0x43);write_data(0x4c);write_dat
46、a(0x4f);write_data(0x43);write_data(0x4b);write_data(0x31);if(ClockEn1=0)write_com(0x89);write_data(0x20); else write_com(0x89);write_data(0x2a);进入下一个闹铃设置ClockKeyValue=GetKey(); switch(ClockKeyValue)case 0:ClockSet+; write_com(0xcf); write_data(table1ClockSet); if(ClockSet>3)ClockSet=0;FinishCloc
47、kSet1=1; Clock+; write_com(0xcf); write_data(0x20);break;case 1: switch(ClockSet)/ 按键 0 设置闹钟/ 设置键按完三次自动/ 闹铃设置 +2:write_com(0xcf);write_data(0x4d);ClockSetSave11-;if(ClockSetSave11>254)case1:write_com(0xcf);write_data(0x53);ClockSetSave10+;if(ClockSetSave10>59)C lockSetSave10=0;break;/miaocase2
48、:write_com(0xcf);write_data(0x4d);ClockSetSave11+;if(ClockSetSave11>59)C lockSetSave11=0;break;/fencase3:write_com(0xcf);write_data(0x48);ClockSetSave12+;if(ClockSetSave12>23)C lockSetSave12=0;break;/shidefault:break;break;case 2: / 闹铃设置 2 switch(ClockSet)case1:write_com(0xcf);write_data(0x53)
49、;ClockSetSave10-;if(ClockSetSave10>254)ClockSetSave10=59;break;/miaocaseClockSetSave11=59;break;/fencase3:write_com(0xcf);write_data(0x48);ClockSetSave12-;if(ClockSetSave12>254)ClockSetSave12=23;break;/shidefault:break;/ 中途退出闹铃设置/ 闹铃设置序号清除显break;case 3:FinishClockSet1=1;Clock=0; write_com(0x89
50、);write_data(20);write_data(20);write_data(20);write_com(0x8e);write_data(20);write_data(20);write_com(0xcf); write_data(0x20);break;case 5: /是否开启闹钟,并予以显if(ClockEn1=0)ClockEn1=1; write_com(0x89); write_data(0x2a); elseClockEn1=0; write_com(0x89); write_data(0x20);break;default:break; /case4->case1 end/*闹铃 2break;case 2 :while(FinishClockSet2!=1)write_com(0x80);write_data(ClockSetSave22/10+48);/Hourwrite_data(ClockSetSave22%10+48);write_com(0x83);write_data(ClockSetSave21/10+48);/Minutewrite_dat
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 禁毒赠书仪式活动方案
- 餐饮业人才短缺现状与2025年高效培养体系研究报告
- 矿务局防灾活动方案
- 餐饮业人才短缺困境分析及2025年前瞻性培养模式研究报告
- 端午节儿童慰问活动方案
- 策划活动妇联活动方案
- 礼仪读书活动方案
- 线上音乐会公司活动方案
- 电影院店庆活动方案
- 策划五一活动方案
- 2025全国企业员工全面质量管理知识竞赛试题及答案
- 国内外新能源现状及发展趋势课件
- 大班科学《玩转扑克牌》课件
- 高速公路改扩建桥梁拼宽施工技术及质量控制
- 双台110kV主变短路电流计算书
- DB1750-2019水电站(厂)防雷与接地性能测试技术规范
- 牛常见病防治课件
- 你不懂咖啡课件
- 危险物品储存安全隐患排查整治表
- 装饰工程保修单
- IInterlib区域图书馆集群管理系统-用户手册
评论
0/150
提交评论