




已阅读5页,还剩41页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
武汉理工大学单片机原理与应用课程设计课程设计任务书学生姓名: 专业班级: 电信0806 指导教师: 工作单位: 信息工程学院 题目: 单片机原理与应用课程设计设计并实现两路相位可调方波信号发生器 初始条件:(1)proteus仿真软件或xl1000综合仿真试验仪一台;(2)先修课程:微机原理与接口技术、单片机原理。要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)输出两路方波信号,键盘控制频率和两信号的相位差,频率范围和变化步长值自定,相位03600,相位差变化步长值自定。用双踪示波器观察。(能做到频率和相位差两参数独立变化更好)。具体完成以下任务:1. 完成系统的方案设计,给出系统框图。2. 完成系统的硬件设计,给出硬件电路图和系统资源分配表。3. 完成系统的软件设计,给出程序流程图和程序清单。4. 运用proteus仿真软件对所设计的系统进行调试和仿真,直到预定的功能全部仿真通过,给出仿真结果;如果条件允许,将程序下载到xl1000综合仿真试验仪,验证系统功能。5. 对所设计的系统进行性能分析(精度、实用性、成本等)。6. 完成课程设计报告。时间安排:总体设计和硬件设计 二天软件设计 一天调试 一天写报告,答辩 一天参考书目:1 李群芳、 张士军,单片微型计算机与接口技术, 电子工业出版社,20082 张毅刚、彭喜元、董继成,单片机原理及应用,高等教育出版社,20043 赵晓安,mcs-51单片机原理及应用,天津大学出版社,2001指导教师签名: 年 月 日系主任(或责任教师)签名: 年 月 日目录1 总体设计31.1 目标要求31.2设计方案比较31.3系统方框图42硬件设计52.1单片机概述52.1.1 80c51引脚说明62.2最小系统设计82.3 数码管显示电路83.软件设计93.1 软件设计思想93.2 主控程序设计93.2.1主程序设计思想93.2.2主程序设计流程图103.2.3主控程序113.3 计算溢出次数子程序设计153.3.1计算溢出次数子程序设计主要思想153.3.2计算溢出次数子程序设计流程图163.3.3 计算溢出次数子程序163.3 定时器中断1程序设计173.3.1 定时器1程序设计思想173.3.2定时器中断0程序设计流程图183.3.3 定时器1程序183.4 定时器中断0程序设计203.4.1 定时器中断0程序设计流程图203.4.2定时器中断0程序203.5 程序清单214系统调试和制作334.1调试工具keil说明334.2调试内容334.2.1 中断程序运行时间调试334.2.2 测试相位变化时的输出334.2.3 调试工具调试总结334.3 整体制作344.3.1 仿真软件介绍344.3.2 仿真及实物制作过程344.3.3 仿真整体电路图344.3.4 运行结果显示364.3.5 运行结果说明405 性能分析415.1 主要性能介绍415.2 误差分析416 心的与体会427 参考文献44两路相位可调方波信号发生器1 总体设计1.1 目标要求用单片机产生两路频率相位可调的方波信号。输出方波的频率范围为1hz-200hz,频率误差比小于0.5%。要求用“增加”、“减小”2个按钮改变方波给定频率,按钮每按下一次,给定频率改变的步进步长为1hz,当按钮持续按下的时间超过2秒后,给定频率以10次/秒的速度连续增加(减少),输出方波的频率要求在数码管上显示。相位最小步进值为1度,也可以行10度步进,且可以进行左移,右移。开机默认输出频率为5hz。1.2设计方案比较两路相位可调方波信号发生器中可以有两种思路来产生方波信号,其一是利用延时来实现,其二是利用51单片机自带的定时器来实现。如果使用延时来控制,一是容易产生误差;二是相位调节会有诸多不变。而利用51单片机自带的定时器不仅可以产生精确的定时而且还可以通过控制定时器的工作来产生相位差。基于此,此次课程设计选用方案二,即利用定时器来实现方波输出,相位变化。1.3系统方框图2硬件设计2.1单片机概述单片微型计算机(single-chip microcomputer),简称单片机。就是将微处理器(cpu)、存储器(存放程序或数据的rom和ram)、总线、定时器/计数器、输入/输出接口(i/o口)和其他多种功能器件集成在一块芯片上的微型计算机。本次课程设计选用的是mcs-51系列单片机中的80c51。mcs-51单片机包含中央处理器(cpu)、程序存储器(rom)、数据存储器(ram)、定时器/计数器、并行i/o接口、串行i/o接口和中断系统等几大单元。其内部结构框图如图1所示。 图1 51内部系统结构中央处理器由运算器、控制器组成。8051的cpu包含以下功能部件: (1)8位cpu。(2)布尔代数处理器,具有位寻址能力。(3)128b内部ram数据存储器,21个专用寄存器。(4)4kb内部掩膜rom程序存储器。(5)2个16位可编程定时器/计数器。(6)32位(48位)双向可独立寻址的i/o口。(7)1个全双工uart(异步串行通信口)。(8)5个中断源、两级中断优先级的中断控制器。(9)时钟电路,外接晶振和电容可产生1.2mhz12 mhz的时钟频率。(10)外部程序/数据存储器寻址空间均为64kb。(11)111条指令,大部分为单字节指令。(12)单一+5v电源供电,双列直插40引脚dip封装。内部结构如图2所示图2 51内部结构mcs-51单片机中有两个16位的定时器/计数器t0和t1,它们由4个8位寄存器(tl0, th0, tl1和th1)组成,2个16位定时器/计数器是完全独立的。可以单独对这4个寄存器进行寻址,但不能把t0和t1当做16位寄存器来使用。2.1.1 80c51引脚说明mcs-51系列单片机中的8031、8051及8751均采用40pin封装的双列直接dip结构,右图是它们的引脚配置,40个引脚中,正电源和地线两根,外置石英振荡器的时钟线两根,4组8位共32个i/o口,中断口线与p3口线复用。现在我们对这些引脚的功能加以说明。mcs-51系列单片机中的8031、8051及8751均采用40pin封装的双列直接dip结构,右图是它们的引脚配置,40个引脚中,正电源和地线两根,外置石英振荡器的时钟线两根,4组8位共32个i/o口,中断口线与p3口线复用。现在我们对这些引脚的功能加以说明。如图5所示。图5 51单片机引脚图pin9:reset/vpd复位信号复用脚,当80c51通电,时钟电路开始工作,在reset引脚上出现24个时钟周期以上的高电平,系统即初始复位。初始化后,程序计数器pc指向0000h,p0-p3输出口全部为高电平,堆栈指针写入07h,其它专用寄存器被清“0”。reset由高电平下降为低电平后,系统即从0000h地址开始执行程序。然而,初始复位不改变ram(包括工作寄存器r0-r7)的状态,80c51的初始态。80c51的复位方式可以是自动复位,也可以是手动复位,见下图4。此外,reset/vpd还是一复用脚,vcc掉电其间,此脚可接上备用电源,以保证单片机内部ram的数据不丢失。pin30:ale/当访问外部程序器时,ale(地址锁存)的输出用于锁存地址的低位字节。而访问内部程序存储器时,ale端将有一个1/6时钟频率的正脉冲信号,这个信号可以用于识别单片机是否工作,也可以当作一个时钟向外输出。更有一个特点,当访问外部程序存储器,ale会跳过一个脉冲。如果单片机是eprom,在编程其间,将用于输入编程脉冲。pin29:当访问外部程序存储器时,此脚输出负脉冲选通信号,pc的16位地址数据将出现在p0和p2口上,外部程序存储器则把指令数据放到p0口上,由cpu读入并执行。pin31:ea/vpp程序存储器的内外部选通线,8051和8751单片机,内置有4kb的程序存储器,当ea为高电平并且程序地址小于4kb时,读取内部程序存储器指令数据,而超过4kb地址则读取外部指令数据。如ea为低电平,则不管地址大小,一律读取外部程序存储器指令。显然,对内部无程序存储器的8031,ea端必须接地。2.2最小系统设计51单片机最小系统需要一个时钟电路和一个复位电路,如果p0口用作i/o口的话,还需要在p0口加上10k的上拉电阻。复位电路与时钟电路见图6。图6 常见的复位与时钟电路2.3 数码管显示电路由于51单片机i/o口驱动能力有限,无法直接驱动数码管,所以加入一块驱动芯片74hc244。加入74hc244后可以直接驱动数码管显示。此处使用数码管动态显示,p0口控制数码管段选,p2.0p2.2进行p2口的位选。如图7图7数码管显示电路3.软件设计3.1 软件设计思想任务分析:方波信号的产生实质上就是在定时器溢出中断次数达到规定次数时,将输出i/o管脚的状态取反。由于频率范围最高为200hz,即每个周期为5ms(占空比1:1,即高电平2.5ms,低电平2.5 ms),开始时由于将过多程序放在中断中运行造成时间过长而无法使用8位自动重装模式提高精度,在经过修改后两个定时器中断均采用8为自动重装模式进行定时。 涉及以下几个方面的问题:按键的扫描、功能键的处理、计时功能以及数码管动态扫描显示等。问题的难点在按键连续按下超过2s的计时问题及如何跟踪当前频率进行相位变化等问题 系统的整体思路:主程序在初始化变量和寄存器之后,扫描按键,根据按键的情况执行相应的功能,然后在数码显示频率的值,显示完成后再回到按键扫描,如此反复执行。定时器1中断程序主要用来方波的产生、按键连续按下超过2s后频率值以10hz/s递增(递减)。定时器0用来产生第二路的方波及进行第二路与第一路的相位变化。3.2 主控程序设计 3.2.1主程序设计思想主程序完成对按下各键对应的功能的实现,其中对于键盘检测中最麻烦的地方在于如何检测此键是否为长时间按下及如何进行相位变化处理。此处采用用当前值和上一次按键值相比较的方法来检测是否为长时间按下某键。处理相位变化时,当相位差超过180度时要设置一路二路反向输出标志。 3.2.2主程序设计流程图 3.2.3主控程序void main()init(); while(1) key_val=scan_key(); /扫描按键if(key_val=2) init();else if(key_val=3) n=n+0.00555;if(n=1&flag=1)flag=0;n=0.000001;else if(n1)flag=1;n=n-1;xw_show=xw_show+1;if(xw_show360)xw_show=0; else if(key_val=4) n=n+0.05555;if(n=1&flag=1)flag=0;n=0.0000001;else if(n=1)flag=1;n=n-1;/elsexw_show=xw_show+10;if(xw_show360)xw_show=0; else if(key_val=5) if(n0.26&flag=0)n=0.000000001;xw_show=0;else if(n1&flag=0)n=n-0.25;xw_show=xw_show-45;if(n0.25&flag=1)flag=0;n=1.000000001-(0.25-n);xw_show=xw_show-45;if(n1&flag=1)n=n-0.25;xw_show=xw_show-45; else if (key_val!=key_val_old) /说明有键按下或弹起 key_val_old=key_val; if (key_val!=255) /说明键按下 state_val=0; /清除连续按键标志 sec_over_num=0; switch (key_val) case 0: /增1键if(hz_shu=2) hz_shu-; else hz_shu=1; t1_over_num=get_t1_over_num(hz_shu); break; else /说明键弹起 state_val=0; second=0; else /一直按下或弹起 if (key_val!=255) state_val=1; /连续按键 else state_val=0; /没有按键按下,一直处于弹起状态 if(state_val=1&second=2&sec_over_num=5000)/连续按键且超过一秒 / tr1=0; sec_over_num=0; switch (key_val) case 0: if(hz_shu10) hz_shu=hz_shu-10; /减10/秒 else hz_shu=1; t1_over_num=get_t1_over_num(hz_shu); break; / tr1=1; led_show(); /数码管显示,动态扫描 t2_over_num=get_t2_over_num(hz_shu); 3.3 计算溢出次数子程序设计3.3.1计算溢出次数子程序设计主要思想 主要使用了c51有专门的库文件math.h里面一个个函数它是这样定义的extern float modf(float x, float *ip)调用它之后,整数部分被放入*ip, 小数部分作为返回值。这样就可以进行四舍五入的判断,减小计算溢出次数的误差。3.3.2计算溢出次数子程序设计流程图3.3.3 计算溢出次数子程序(1)计算当前频率下的溢出次数unsigned int get_t1_over_num(unsigned char p) /p为频率数unsigned int *k,h; double f; f=(double)p; /转化为浮点数 f=0.5/f; /半个周期的时间 f=f/0.0002; /中断溢出数=f/0.00025; h=f; /取整/四舍五入 if (modf(f,k)=0.5) h=h+1; return h;(2)计算当前频率下的改变固定相位的溢出次数unsigned int get_t2_over_num(unsigned char p) /p为频率数 int *s,h; double l; l=(double)p; /转化为浮点数 l=n*0.5/l; /选取相位的时间 l=l/0.000055; / h=l; /取整/四舍五入 if (modf(l,s)=0.5) h=h+1; return h;3.3 定时器中断1程序设计3.3.1 定时器1程序设计思想 主要完成一路方波信号的产生,并对长按键是的计时。为避免两个定时器中断冲突,且能够产生相位差,所以定时器0的中断在定时器1中开启。3.3.2定时器中断0程序设计流程图3.3.3 定时器1程序void timer1() interrupt 3 /t1中断 t1_cnt+;if(t1_cntt1_over_num) /半周期的计数到达 t1_cnt=0; pulse_out=pulse_out;/反复取反,产生方波 et0=1;tr0=1; if(state_val=1)/连续按键 if (sec_over_num5000) /计时未到1s sec_over_num+; else /计时到1s时,执行else的代码 if(secondt2_over_num)t2_cnt=0;if(flag=0) pulse_out1=pulse_out;else pulse_out1=pulse_out;et0=0;tr0=0;3.5 程序清单/*变量的定义: hz_shu: 设定的频率数 t1_over_num: 根据设定频率计算后的,定时器溢的出次数值 t1_cnt: 定时器计数溢出数 sec_over_num: 计算1s内的计数 second: 连续按键的计时 state_val: 连续按下的标志 0=按键已经弹起;1=按键一直按下去 led_seg_code: 数码管7段码*/#include reg51.h#include math.hsbit pulse_out=p30;sbit pulse_out1=p31;/-unsigned char data hz_shu,second,key_val,key_val_old,yanshi=1,flag;unsigned int data sec_over_num,xw_show;double n=0.000000001; int data t1_cnt,t1_over_num,t2_cnt,t2_over_num;unsigned char data state_val; char code led_seg_code10=0x3f,0x06,0x05b,0x04f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;/led_seg_code0-9代表0-9的7段码void led_show();/-void delay(unsigned int i)/延时 unsigned int j,k; for(k=i;k0;-k)for(j=110;j0;-j);/-unsigned char scan_key() unsigned char i,k; i=p1; if (i=0xff) k=255; /无键按下 else /有键按下 led_show(); /延时去抖动 if(i!=p1) k=255; else switch (i) case 0xfe: k=0; break; / case 0xfd: k=1; break; case 0xfb: k=2; break; case 0xf7: k=3; break; case 0xef: k=4; break; case 0xdf: k=5; break; if(k=2|k=3|k=4|k=5) while(p1!=0xff) led_show ; /只有按下复位和相位移动式进行松手检测 return k;/-void led_show()unsigned char i,j;i=hz_shu%10; /显示个位p0=led_seg_codei;p2=0xfe;delay(5);i=hz_shu%100/10; /显示十位p0=led_seg_codei;p2=0xfd;delay(5);i=hz_shu%1000/100; /显示百位p0=led_seg_codei;p2=0xfb;delay(5);j=xw_show%10; /显示个位p0=led_seg_codej;p2=0xdf;delay(5);j=xw_show%100/10; /显示十位p0=led_seg_codej;p2=0xbf;delay(5); /显示百位j=xw_show/100;p0=led_seg_codej;p2=0x7f;delay(5);/-/unsigned int get_t2_over_num(unsigned char p) /p为频率数 int *s,h; double l; l=(double)p; /转化为浮点数 l=n*0.5/l; /延时四分之一个周期的时间 l=l/0.000055; / h=l; /取整/四舍五入 if (modf(l,s)=0.5) h=h+1; return h;/unsigned int get_t1_over_num(unsigned char p) /p为频率数unsigned int *k,h; double f; f=(double)p; /转化为浮点数 f=0.5/f; /半个周期的时间 f=f/0.0002; /中断溢出数=f/0.00025; h=f; /取整/四舍五入 if (modf(f,k)=0.5) h=h+1; return h;/* c51有专门的库文件math.h,里面有个函数 它是这样定义的extern float modf(float x, float *ip); 调用它之后,整数部分被放入*ip, 小数部分作为返回值。*/-void timer1() interrupt 3 /t1中断 t1_cnt+;if(t1_cntt1_over_num) /半周期的计数到达 t1_cnt=0; pulse_out=pulse_out;/反复取反,产生方波 et0=1;tr0=1; if(state_val=1)/连续按键 if (sec_over_num5000) /计时未到1s sec_over_num+; else /计时到1s时,执行else的代码 if(second x=c9 tl0=0xc9; ea=1; /开中断 et1=1;/ tr0=1; tr1=1; /定时器t1void main()init(); while(1) key_val=scan_key(); /扫描按键if(key_val=2) init();else if(key_val=3) n=n+0.00555;if(n=1&flag=1)flag=0;n=0.000001;else if(n1)flag=1;n=n-1;xw_show=xw_show+1;if(xw_show360)xw_show=0; else if(key_val=4) n=n+0.05555;if(n=1&flag=1)flag=0;n=0.0000001;else if(n=1)flag=1;n=n-1;xw_show=xw_show+10;if(xw_show360)xw_show=0; else if(key_val=5) if(n0.26&flag=0)n=0.000000001;xw_show=0;else if(n1&flag=0)n=n-0.25;xw_show=xw_show-45;if(n0.25&flag=1)flag=0;n=1.000000001-(0.25-n);xw_show=xw_show-45;if(n1&flag=1)n=n-0.25;xw_show=xw_show-45; else if (key_val!=key_val_old) /说明有键按下或弹起 key_val_old=key_val; if (key_val!=255) /说明键按下 state_val=0; /清除连续按键标志 sec_over_num=0; switch (key_val) case 0: /增1键if(hz_shu=2) hz_shu-; else hz_shu=1; t1_over_num=get_t1_over_num(hz_shu); break; else /说明键弹起 state_val=0; second=0; else /一直按下或弹起 if (key_val!=255) state_val=1; /连续按键 else state_val=0; /没有按键按下,一直处于弹起状态 if(state_val=1&second=2&sec_over_num=5000)/连续按键 / tr1=0; sec_over_num=0; switch (key_val) case 0: if(hz_shu10) hz_shu=hz_shu-10; /减10/秒 else hz_shu=1; t1_over_num=get_t1_over_num(hz_shu); break; / tr1=1; led_show(); /数码管显示,动态扫描 t2_over_num=get_t2_over_num(hz_shu); void timer0() interrupt 1/th0=(65536-55)/256;/tl0=(65536-55)%256;t2_cnt+;/yanshi=0;if(t2_cntt2_over_num)t2_cnt=0;/yanshi=1;if(flag=0) pulse_out1=pulse_out;else pulse_out1=pulse_out;et0=0;tr0=0;4系统调试和制作4.1调试工具keil说明keil c51是美国keil software公司出品的51系列兼容单片机c语言软件开发系统,与汇编相比,c语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。keil提供了包括c编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uvision)将这些部分组合在一起。4.2调试内容 4.2.1 中断程序运行时间调试 测试中断运行时间可以很好的来选择中断工作方式,还能合理控制中断中的程序的复杂度。避免由于中断程序过长造成屏蔽某些其他同级的中断。 在最早的思路中定时器1中断中程序过长,接近250us,无法使用定时器方式2,经过调试发现此问题后将程序修改,最终两个定时器均可以使用8位自动重装模式。其中定时器1中断中的程序运行需要50us,定时器0中程序运行需要32us。 4.2.2 测试相位变化时的输出 在进行相位变化中,通过改变控制变量n的值,再通过计算得出相位变化。所以此变量的值至关重要。经过跟踪测试观察该变量的值,在最初的程序观察过程中发现,当相位延迟180度后,二路方波输出均为高电平。经过仔细分析与计算,终于了解到,180度之后的延迟与180度内的延迟的唯一差别仅为此二路的输出反相,由此想到添加反相标志。 4.2.3 调试工具调试总结 此次课设中主要用到keil中调试软件的部分主要为以上两个,虽然有其他部分的调试,但是由于较上面的两个重要性差很多,就不在此做详细介绍。总之,运用调试工具调试的主要为,标志变量,结果输出,中间过程是的值,执行时间等方面的应用。4.3 整体制作 4.3.1 仿真软件介绍 proteus软件是英国labcenter electronics公司出版的eda工具软件。它不仅具有其它eda工具软件的仿真功能,还能仿真单片机及外围器件。它是目前最好的仿真单片机及外围器件的工具。虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。proteus是世界上著名的eda工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到pcb设计,真正实现了从概念到产品的完整设计。是目前世界上唯一将电路仿真软件、pcb设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、hc11、pic10/12/16/18/24/30/dspic33、avr、arm、8086和msp430等,2010年即将增加cortex和dsp系列处理器,并持续增加其他系列处理器模型。在编译方面,它也支持iar、keil和mplab等多种编译器。4.3.2 仿真及实物制作过程 在proteus中仿真时首先将系统所需的各个硬件模块,主要为单片机最小系统,数码管,键盘,示波器构成。在proteus中将各个所需原件找到,并根据程序搭建硬件电路。最后便可以测试波形结果。proteus仿真结束后便可以上实际开发板来测试,由于自己拥有一个简单的开发板,所以此处就不用在额外焊接外围电路。和仿真相同,在输出部分接示波器来观测结果,及按键功能。4.3.3 仿真整体电路图454.3.4 运行结果显示图1 频率5hz相位差0度图2 频率5hz相位差33度图3 频率20hz相位差0度图4 频率20hz相位差223度4.3.5 运行结果说明 此处图为proteus中示波器的显示图,4副图均在50ms/格的横向扫描频率下输出。由于篇幅有限在此只选取5hz和20hz两个频率来进行示例。此系统频率可以范围为1200hz,相位变化为0360度,最小步长为1度。在示例图中可以看到频率增加,相位可以任意改变。符合大多数情况下的基本要求。5 性能分析5.1 主要性能介绍本次课设所设计出的两路相位可调方波信号发生器,能够调频的范围为1200hz相位,相位最小步长为1度。长按频率键2s频率进行加10或减10操作,按一下进行加一或减一操作。5.2 误差分析本次课设所用的单片机的晶振为12mhz,所以机器周期为1us,定时器最小定时时间为1us。在主要负责相位延时的定时器0中,由于中断代码执行时间为32us,所以定时器0中断必须要大于32us,由于需要预留一定的时间,所以最终将定时器0设为定时55us。在计算相位延时时,由于用到的运算是用最小定时时间除以当前频率的半个周期。所以在频率为1hz时,相位误差最小为0.198度(55us/500us*180).而当频率增加到200hz时,相位误差同样增大到3.96度(55us/2500us*180)。所以误差范围在0.1983.96之间。在主要负责频率变化的定时器1中,代码所执行时间最大约为50us,由于两个定时器之间的定时不宜间隔过小,所以选取定时时间为200us。在频率计算时由于存在将浮点型数转换为整形数,并且由于存在定时器1中断内部程序的运算造成了方波频率输出的误差。6 心的与体会通过此次单片机课程设计,使我更加扎实的掌握了有关单片机方面
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 广东省2025年成人高考化学复习题库及答案
- 公司消防安全培训标语课件
- 公司法纠纷课件
- 2025餐饮企业行政总厨聘用合同样本
- 2025压路机租赁合同范本
- 2025塑料制品生产加工合同
- 2025如何避免购销合同的法律风险
- 2025探讨合同责任保险合同之原则
- 2025房屋租赁合同备案授权书
- 隐患大排查大整治工作总结
- 初级邮政投递员职业技能鉴定考试题及答案
- 临建标准化(2023版)
- 中药热奄包完整版本
- 2024年全国医学考博英语试题
- JGJ202-2010 建筑施工工具式脚手架安全技术规范【清晰版】
- 医用耗材供货应急服务方案
- 银行从业考试题库
- 乡镇文旅活动方案
- 静疗专科护士进修汇报课件
- GB/T 15622-2023液压缸试验方法
- 生物医学工程伦理 课件全套 第1-10章 生物医学工程与伦理-医学技术选择与应用的伦理问题
评论
0/150
提交评论