版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于USB接口的单片机与PC机通信摘要:安装USB设备不需要用户自己设置硬件与软件的选项,USB接口的传输速度要比计算机传统的串行口和并口快的多,所以USB设备已经广泛应用。由于协议的复杂性,在系统中实现USB主机功能的实例还不是很多。因此本文没有从复杂的USB总线协议入手,而是选择了南京沁恒公司出产的USB接口芯片CH375。其具有内置固件模式和可编程的2311外部固件模式,可以根据需要任意选择工作模式。关键词:单片机;CH375;USB;协议TheDesignofthecommunicationbetweenMCUandPCwhichisbasedonUSBinterfaceAbstract:USBdevicedoesnotrequireuserstoinstalltheirownsetofhardwareandsoftwareoptions,andcomputertransmissionspeedfasterthanthetraditionalserialandparallelport,soUSBdeviceshavebeenwidelyused.Becauseofthecomplexityoftheagreement,inthesystemofUSBhostfunctionrealizationexampleisnotalot.ThereforethisarticledoesnotstartingwiththecomplexUSBagreement,butchosetheUSBinterfacechipCH375whichproducedbyNanjingQinHengcompany,theirmodelhasabuilt-infirmwareandfirmwareprogrammableof2311externalmodel,wecanchoosethemodeofoperationwithaneedforarbitrary.Keywords:SingleChipMicrocontroller;CH375;USB;Agreement
目录TOC\o"1-4"\h\u15381前言 1144221.1题目的来源与开发意义 1184141.2系统功能概述 1193562系统硬件设计 PAGEREF_Toc193562303722.1方案论证 2110142.2系统硬件总体设计概述 298272.3系统功能概述 3327542.4系统各模块的设计 PAGEREF_Toc32754442912.4.1单片机控制系统 4175372.4.2USB接口模块 6314003系统软件设计 1162123.1系统软件总体设计思想 PAGEREF_Toc62121188733.2各功能模块软件程序设计 11121574系统调试 16173834.1硬件电路调试 16228224.2各功能模块软件调试 PAGEREF_Toc2282216226325结论 1814931参考文献 1924430致谢 20 1前言1.1题目的来源与开发意义USB的低功耗,可靠性,价位低等优点,在人们日常生活中应用越来越广泛,各种各样的USB产品应运而升[1],并且随着技术的发展,USB的版本以发展到了3.0,传输速度也更快,更强,更稳定。而单片机以其良好的普及性,易用性,稳定的控制性不断的出现在我们生活中的各个角落,并且一发不可收拾[2]。电子应用中数据传输占了很大一部分。我把这几项当前技术融合在一起进行开发,实现可携带的支持计算机热插拔的单片机与PC机之间的数据传输。1.2系统功能概述单片机与计算机之间的通信功能实现,这里应用了由南京沁恒公司生产的CH375芯片作为单片机与计算机USB接口芯片[3]。使用10位的AD串行AD芯片TLC1549进行电压采集,使用电位器来模拟传感器。本次设计主要利用STC89C52RC单片机作为主要核心模块,利用C51语言行控制,以C语言作为整合的开发环境,可大大缩短软件设计时间。上位机采用的是VC++在VisualStudio2010上编写的一个简单的控制台程序,USB驱动采用了沁恒公司的通用CH375驱动软件。通过键盘给上位机(PC)输入不同的命令可以控制下位机(单片机)的三个不同颜色的LED。同时单片机向PC发送采集到的电压值。这里支持计算机热插拔,挟带方便,设备占用空间小,低功耗是本设计的创新之处,而且相应的CH375接口模块成了印刷式电路板,为以后学习和开发计算机与单片机通过U口传输数据的同学提供了便捷的硬件环境。2系统硬件设计2.1方案论证方案一:有关USB控制芯片很多但主要有两个来源,一个是CypressSemiconductor,另一个是ScanLogic。我们可以选择市面比较通用的CypresssenCoRe控制器芯片CY4C63743,此芯片电路设计起来比较容易。但此芯片需要固件支持。En指令相对简单,可以使用汇编语言编译器来实现,但固件编程相对繁琐,而且CY4C63743结和了单片机与USB数据传输的功能相对开发需要了解内部的时续与中断控制,类似于嵌入了USB功能的单片机。方案二:用南京沁恒公司的CH375芯片,需要外接微控制器,电路稍微麻烦一点,但是我的设计只需要用到USB设备模式一块,而我们可以让CH375工作在内置固件下,我们减轻了单片机方面的固件编写负担,只需按要求让单片机将要发送的数据传给CH375即可,CH375自行与PC进行数据交换,这同样节省了对复杂协议的学习时间。而单片机更可以选择STC系列的51单片机,这种单片机可以通过串口在线编程,方便开发。由此可见方案二更有效。2.2系统硬件总体设计概述硬件设计相应的分两个模块,一方面是控制模块由宏晶生产的STC系列的51单片机为核心的单片机做控制;另一方面由CH375做为USB的通信接口芯片的接口模块。控制模块中主要用到了STC89C52单片机,其中的P0口与CH375的数据并口相连,所以P0口必须接10K的上拉电阻,在控制模块上有一个与通信接口模块相连的插座,共16个引脚其具体对应了控制模块与通信接口模块之间的GND,相应的复位引脚,还有与CH375并口模式相对应的控制,数据引脚A0,WR,RD,CS,INT,D0-D7。TLC1549与单片机通信是串行模式,所以只需占用单片机的三个IO口。使用LED来显示PC上的命令信息。通信接口模块分两个部分一个是与PC机相连的CH375部分,一个是单片机控制部分。为了方便开发,单片机单独供电,而没有与USB模块共用PC上的USB电源。为了保护AD芯片,设计了AD输入保护。电路在防止干扰方面,在每个芯片的电源端添加了去耦电容。如图2.1为硬件实物图图2.1硬件实物2.3系统功能概述如图2.2为系统框图AD模块PC机(上位机端)USB接口通信模块单片机控制模块(下位机端)AD模块PC机(上位机端)USB接口通信模块单片机控制模块(下位机端)图2.2系统框图该设计实现单片机端通过AD模块采集数据经USB接口模块发送到PC机的界面上显示,同时PC机端也可通过按键控制单片机端的LED亮灭,实现双向通信。具体工作流程:首先进行各个模块初始化,然后在PC机端发送一个数据包,长度为64,单片机端接收到这个数据包,根据数据包的内容来控制LED灯的暗灭,接着AD模块采集数据,这里的数据是电压值,可传送2.50到5.00伏的电压值,单片机端接收到AD模块采集的数据,再通过USB通信接口模块传输到电脑上显示出来。2.4系统各模块的设计2.4.1单片机控制系统如图2.3为单片机控制模块图2.3单片机控制模块STC89C52RC单片机作为硬件的核心处理器,它的工作电路分为三部分:晶振电路、复位电路、电源电路。晶振为CPU提供工作需要的高频率、高精确的时钟;复位电路在芯片在上电复位或者手动复位时引导程序从地址00H开始执行;而电源电路为芯片提供稳定且噪声低的直流电源。1控制模块原理由图2.2的系统总框图可以看出,单片机直接控制CH375,向其发送数据或者读取数据。单片机与CH375采取系统总线接口,数据线为P0口,地址线为P0口(低位)和P2口(高位)。在电路中P0口连接CH375的8位并行数据接口,P2口只接了P2.0和P2.6,所以在发送地址的时候只有这两位有效,其他的地址线全部无效(这样接主要是为了简化电路)。通信前需要对USB初始化,具体过程如下:单片机通过上面的数据总线,先CMD_CHECK_EXIST这个测试命令,然后发送0x55再读取数据,若读取的数据是~0x55则说明芯片正常工作,否则将对CH375进行多次重复发命令(80次),执行硬件复位。确定芯片正常工作后就对芯片设置USB工作模式,这里的02H表示启用的设备方式并且使用内置固件模式。设置模式成功后,单片机将在10到20us内读取到CMD_RET_SUCCESS信号以确定CH375已经就绪。最后,单片机进行外部中断0的初始化,以保证CH375收到数据后能向单片机发送中断信号。单片机的对CH375进行读写数据都是在外部中断0的中断服务程序里面执行的。进入中断后,首先关闭总中断,防止在中断重入。然后发送CMD_GET_STATUS命令来读取中断状态,然后分别对三种不同的中断状态进行处理。其中在USB_INT_EP2_OUT状态下先读取数据包,然后AD采集数据并发送数据包。最后重新开启外部中断0,退出中断服务,等待下一次中断。P0口作为与CH375交流数据,命令的通信并口,INT0作为中断服务程序中断接口其他端口如图接,也可以选择其他单片机端口。2高速串行AD芯片TLC1549TLC1549是美国德州仪器公司(以下简称TI)的一款高速串行的10位AD芯片。它采用简单的S通信,只使占用单片机的三根IO口,如图2.4图2.4AD模块从图2.4可以看出,TLC1549工作电路非常简单,而不像一般AD芯片需要接上配对的电阻、电容以及晶振才能保证稳定的工作,只需接上电源和一个103的去耦电容即能工作。在此基础上,本设计添加了AD输入保护电路。保护电路是由两个二极管构成,如图所示,在AD输入电压超出5V或者低于0V的时候,二极管导通,使电压调整到正常范围,这样就保护了AD输入,防止芯片因此损坏。2.4.2USB接口模块CH375与USB连接及自身管脚连接具体如图2.5所示。图2.5USB接口模块图J2是一个USB接口,与电脑相连接,J1是一个双排针左边是通信的端口与单片机的P0口连接,通过这个排针可以和单片机的各个引脚相连。1USB的简介USB是在1994年底由英特尔、康柏、IBM、Microsoft等多家公司联合提出的。不过直到近期,它才得到广泛地应用。从1994年11月11日发表了USBV0.7版本以后,USB版本经历了多年的发展,到现在已经发展为2.0版本,成为目前电脑中的标准扩展接口。USB是一个外部总线标准,用于规范电脑与外部设备的连接和通讯。USB接口支持设备的即插即用和热插拔功能。USB接口可用于连接多达127种外设,如鼠标、调制解调器和键盘等。USB自从1996年推出后,已成功替代串口和并口,并成为当今个人电脑和大量智能设备的必配的接口之一。USB2.0有高速、全速和低速三种工作速度,高速是480Mbit/s,全速是12Mbit/s,低速是1.5Mbit/s。其中全速和低速是为兼容USB1.1而设计的,因此选购USB产品时不能只听商家宣传USB2.0,还要搞清楚是高速、全速还是低速设备。USB总线是一种单向总线,主控制器在PC机上,USB设备不能主动与PC机通信。2CH375芯片简介CH375是一个USB总线的通用接口芯片,支持USB-HOST主机和DEVICE/SLAVE从机两种工作模式。本设计使用的是从机模式与PC进修双向通行。USB-DEVICE/SLAVE设备方式。在本地端,CH375具有8位数据总线和读、写、片选控制线以及中断输出,可以方便地挂接到单片机/DSP/MCU/MPU等控制器的系统总线上。CH375的USB设备方式与CH372芯片完全兼容,CH375包含了CH372的全部功能。CH375的USB主机方式支持常用的USB全速设备,外部单片机可以通过CH375按照相应的USB协议与USB设备通讯。CH375还内置了处理Mass-Storage海量存储设备的专用通讯协议的固件,外部单片机可以直接以扇区为基本单位读写常用的USB存储设备(包括USB硬盘/USB闪存盘/U盘)。CH375硬件连接大致框如图2.6图2.6系统总体框图CH375芯片特点:1.低速和全速USB-HOST主机接口,兼容USBV2.0,外围元器件只需要晶体和电容。2.低速和全速USB设备接口,完全兼容CH372芯片,支持动态切换主机与设备方式。3.主机端点输入和输出缓冲区各64字节,支持12Mbps全速USB设备和1.5Mbps低速设备。4.支持USB设备的控制传输、批量传输、中断传输。5.自动检测USB设备的连接和断开,提供设备连接和断开的事件通知。6.内置控制传输的协议处理器,简化常用的控制传输。7.内置固件处理海量存储设备的专用通讯协议,支持Bulk-Only传输协议和SCSI、UFI、RBC或等效命令集的USB存储设备(包括USB硬盘/USB闪存盘/U盘/USB读卡器)。8.通过U盘文件级子程序库实现单片机读写USB存储设备中的文件。9.并行接口包含8位数据总线,4线控制:读选通、写选通、片选输入、中断输出。10.串行接口包含串行输入、串行输出、中断输出,支持通讯波特率动态调整。引脚如图2.7图2.7引脚图引脚含义如表2.2表2.2引脚含义表引脚号引脚名称类型引脚说明28VCC电源正电源输入端,需要外接0.1uF电源退耦电容12-23GND电源公共接地端,需要连接USB总线的地线9V3电源在3.3V电源电压时连接VCC输入外部电源,在5V电源电压时外接容量为0.01uF退耦电容13XI输入晶体振荡的输入端,需要外接晶体及振荡电容14XO输出晶体振荡的反相输出端,需要外接晶体及振荡电容10UD+双向三态USB总线的D+数据线,内置可控的上拉电阻11UD-双向三态USB总线的D-数据线22~15D7~D0双向三态8位双向数据总线,内置上拉电阻4RD#输入读选通输入,低电平有效,内置上拉电3WR#输入写选通输入,低电平有效,内置上拉电阻27CS#输入片选控制输入,低电平有效,内置上拉电阻1INT#输出在复位完成后为中断请求输出,低电平有效8A0输入地址线输入,区分命令口与数据口,内置上拉电阻,当A0=1时可以写命令,当A0=0时可以读写数据24ACT#输出在内置固件的USB设备方式下是USB设备配置完成状态输出,低电平有效。对于CH375A芯片,在USB主机方式下是USB设备连接状态输出,低电平有效5TXD输出仅用于USB主机方式,设备方式只支持并口,在复位期间为输入引脚,内置上拉电阻,如果在复位期间输入低电平那么使能并口,否则使能串口,复位完成后为串行数据输出6RXD输入串行数据输入,内置上拉电阻2RSTI输入外部复位输入,高电平有效,内置下拉电阻25RST输出电源上电复位和外部复位输出,高电平有效26RST#输出电源上电复位和外部复位输出,低电平有效7NC.空脚空脚,必须悬空命令命令是CH375与单片机进行联络的核心,芯片内部的USB通行协议都要通过命令来实现,所以了解了CH375的命令就如同在8051中的C51语言,所以这部分很重要。代码命令名称输入数据输出数据命令用途06HRESET_ALL(等40mS)执行硬件复位06HCHECK_EXIST任意数按位取反测试工作状态15HSET_USB_MODE模式代码(等20uS)操作状态设置USB工作模式22HGET_STATUS中断状态获取中断状态并取消请求02HSET_BAUDRATE分频系数(等1mS)操作状态设置串口通讯波特率分频常数28HRD_USB_DATA数据长度从当前USB中断的端点缓冲区读取数据块数据流2BHWR_USB_DATA7数据长度向USB主机端点的输出缓冲区写入数据块数据流各命令意义如表2.3表2.3命令含义表中断原因如表2.4表2.4中断状态表中断状态字节名称中断状态分析说明位7~位4位3~位2位1~位0(保留位)当前事务当前端点总是000000=OUT事务00=端点010=IN事务01=端点111=SETUP事务10=端点211=USB总线复位表2.5是中断状态的分析说明。在内置固件模式的USB设备方式下,单片机只需要处理表中标注为灰色的中断状态,CH372内部自动处理了其它中断状态。表2.5中断状态表中断状态值状态名称中断原因分析说明01HUSB_INT_EP1_OUT辅助端点/端点1接收到数据,OUT成功09HUSB_INT_EP1_IN中断端点/端点1发送完数据,IN成功02HUSB_INT_EP2_OUT批量端点/端点2接收到数据,OUT成功0AHUSB_INT_EP2_IN批量端点/端点2发送完数据,IN成功05HUSB_INT_USB_SUSPENDUSB总线挂起事件(如果已CHK_SUSPEND)06HUSB_INT_WAKE_UP从睡眠中被唤醒事件(如果已ENTER_SLEEP)功能说明CH375芯片可以工作于USB-HOST主机方式或者USB设备方式。CH375的USB设备方式与CH372芯片完全兼容,CH375的USB主机方式支持并行接口和串行接口,本设计使用的是并行接口。在USB主机方式下,CH375支持各种常用的USB全速设备,外部单片机需要编写固件程序按照相应的USB协议与USB设备通讯。但是对于USB存储设备,CH375内置了相关协议,通常情况下,外部单片机不需要编写固件程序,就可以直接通讯。CH375工作在并口,设备模式下(毕业设计相应的主要应用就是这类模式,就稍详细介绍这部分,而串口模式只工作在主机模式下不详细介绍了)硬件连接CH375芯片占用两个地址位,当A0引脚为高电平时选择命令端口,可以写入新的命令,或者读出中断标志;当A0引脚为低电平时选择数据端口,可以读写数据。下表为并口I/O操作的真值表(表中X代表不关心此位,Z代表CH372三态禁止)。表2.6并口I/O操作的真值表CS#WR#RD#A0D7-D0对CH372芯片的实际操作1XXXX/Z未选中CH372,不进行任何操作011XX/Z虽然选中但无操作,不进行任何操作001/X1输入向CH372的命令端口写入命令码001/X0输入向CH372的数据端口写入数据0100输出从CH372的数据端口读出数据0101输出从CH372B的命令端口读取中断标志,位7等效于INT#引脚3上位机功能介绍设置发送的第一个字节为0X21为约定命令,若接收方收到的不是0X21,则为错误数据,从新请求发送。在通信的过程中,采取了半双工的通信模式。上位机、下位机轮流发送64个字节的数据。在本设计的实际使用中,只使用了3到5个字节,其他的字节都为无效信息。在上位机上实现了显示下位机采集的数据信息,同时,上位机发送控制信息,下位机使用了LED来模拟控制。上位机界面如图2.8图2.8上位机软件界面3系统软件设计3.1系统软件总体设计思想本系统软件设计分两部分,下位机部分和上位机部分。下位机部分应用的是C51语言。上位机界面图形编辑用的是VC++。单片机负责通过CH375上传数据,PC通过VC++程序调用USB驱动程序,查询动态链接库的数据信息,上传的数据存储在动态链接库中。这样最终的上传数据经VC++显示在PC上。3.2各功能模块软件程序设计下位机模块软件程序设计AD采集数据的流程图3.1开始开始使能AD芯片等待芯片转换完成SPI读取10位数据停止AD转换采集30次进行滤波处理计算出实际电压值向CH375缓存发送电压值是否完成数据接收?CH375向PC发送数据包YN图3.1AD采集数据的流程图具体程序如下:/*********************************************************************/unsignedintAD_Change(void) // TLC549驱动程序{ unsignedinti,temp=0; AD_In=0; _nop_(); _nop_(); CS=0; _nop_(); _nop_(); _nop_(); _nop_(); if(AD_Out==1) temp+=1; for(i=0;i<10;i++) { AD_In=1; _nop_(); _nop_(); AD_In=0; _nop_(); _nop_(); if(i!=9) { temp=temp<<1; if(AD_Out==1)temp+=1; } } CS=1; returntemp; }CH375发送数据部分流程如图3.2图3.2CH375发送数据流程图中断程序如下:/*****************************************************************************************/voidmCh375Interrupt()interrupt0using1 //CH375中断服务程序,使用寄存器组1{ unsignedcharInterruptStatus; unsignedchari,length; unsignedcharxdatabuffer[64]; //64字节的缓冲区存放数据 EA=0; CH375_WR_CMD_PORT(CMD_GET_STATUS); //获取中断状态并取消中断请求 InterruptStatus=CH375_RD_DAT_PORT(); //读取中断状态 switch(InterruptStatus) //分析中断状态处理 { caseUSB_INT_EP2_OUT: //批量端点下传成功 { CH375_WR_CMD_PORT(CMD_RD_USB_DATA);//从当前USB中断的端点缓冲区读取数据块并释放缓冲区 length=CH375_RD_DAT_PORT(); //首先读取后续数据长度 for(i=0;i<length;i++) buffer[i]=CH375_RD_DAT_PORT();//读取接收数据包 //向USB端点2或者主机端点的发送缓冲区写入数据块 CH375_WR_CMD_PORT(CMD_WR_USB_DATA7);//向USB端点2的发送缓冲区写入数据块 CH375_WR_DAT_PORT(length); //首先写入后续数据长度,回传刚接收到的数据长度 LED_1=buffer[1]; LED_2=buffer[2]; LED_3=buffer[3]; temp=AD_Filter(); volt=temp/2; ////volt++;//volt=456; CH375_WR_DAT_PORT(volt/100%10+48); CH375_WR_DAT_PORT(volt/10%10+48); CH375_WR_DAT_PORT(volt/1%10+48); for(i=0;i<length-3;i++) //发送一块数据64个字节 CH375_WR_DAT_PORT(6+48); break; } caseUSB_INT_EP2_IN: //批量数据发送成功 { CH375_WR_CMD_PORT(CMD_UNLOCK_USB);//释放当前USB缓冲区 break; } default: //其它中断,未用到,解锁后退出即可 { CH375_WR_CMD_PORT(CMD_UNLOCK_USB);//释放当前USB缓冲区 break; } } EA=1;}上位机模块软件程序设计CH375在计算机端提供了应用层接口,应用层接口是由CH372动态链接库DLL提供的面向功能应用的API,所有API在调用后都有操作状态返回[10],但不一定有应答数据。CH375动态链接库提供的API包括:设备管理API、数据传输API、中断处理API。上位机中接受数据显示具体代码如下:/***************************************************************************************************************/ if(CH375WriteData(0,mBuffer,&mTotal))//发送,发送成功 { mLength=64; if(mTestCount==0) Sleep(200);//考虑到之前单片机准备上传的数据可能未被计算机取走,导致首次回传有可能直接读到之前的数据而不是本次数据的取反,所以首次回传先等待单片机准备好取反数据 if(CH375ReadData(0,mReadBuf,&mLength))//接收成功 printf("Cnt=%4ld,Len=%2ld,Data:电压值:%c.%c%cV\xd",mTestCount,mTotal,mReadBuf[0],mReadBuf[1],mReadBuf[2]); }4系统调试4.1硬件电路调试这里不仅有CH375硬件有关的调试情况,还有在设计PCB板中的规则参考,比如抗干扰的方法。我们没用到主机模式,大部分调试都是面对该电路的USB设备模式的PCB设计要求。所有平行信号线之间要尽量留有较大的间隔[9],以减少串扰。如果有两条相距较近的信号线,最好在两线之间走一条接地线,这样可以起到屏蔽作用。设计信号传输线时要避免急拐弯,以防传输线特性阻抗的突变而产生反射,要尽量设计成具有一定尺寸的均匀的圆弧线。对于双面板(或六层板中走四层线).电路板两面的线要互相垂直,以防止互相感应产主串扰。注意在使用伟福仿真器进行测试时,仿真器电源要与其他电源同时上电,否则CH375将出现工作不正常。如果我们选择MAX810进行复位控制的话,MAX810应选3V多上电复位型号。因为USB信号属于模拟信号,所在CH372、CH375、CH341等USB芯片内部包含数字电路和一些模拟电路,另外,USB芯片中还包含时钟振
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024三个小孩抚养权协议及共同财产分割合同6篇
- 2025年服装机械项目申请报告模板
- 2024-2025学年新疆维吾尔阿勒泰地区数学三上期末统考模拟试题含解析
- 2024-2025学年武功县数学三年级第一学期期末联考试题含解析
- 去工厂实习报告模板十篇
- 2024年消防喷淋安装施工总承包合同文件
- 超市的实习报告四篇
- 2025年伺服系统项目申请报告模稿
- 2025年咖啡机项目规划申请报告
- 2024年度水电供应专用合同合同一
- 医疗机构合理用药的指标
- Formel-Q第八版培训资料全课件
- 英国自然风景式园林
- 医院转诊转院记录单
- 大件运输专业知识课件
- 国开电大财务管理学习活动第4章 腾讯公司融资案例分析参考答案
- UPS现场巡检维护保养记录表
- 空白教案模板(表格形式-已排版)
- 中药学第十九章活血化瘀药课件
- 99S203消防水泵接合器安装图集
- 实操考评表(模版)
评论
0/150
提交评论