版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
项目8单片机双机通信系统设计★知识目标: 1.单片机串行通信基础知识;2.单片机与上位机通信基础知识 3.VB基础知识。★能力目标:1.能根据设计任务要求编制程序流程图;2.会绘制单片机双机通信电路原理图;3.会用keilC51软件对源程序进行编译调试及与protues软件联调,实现电路仿真。项目8单片机双机通信系统设计★知识目标:1任务1单片机双机通信设计单片机系统设计中,经常要使用串口进行外部通信,单片机与PC机通信是单片机功能模块使用中极为重要的一部分,应用也较广泛。本项目以两个任务来学习单片机通信方面的内容。任务1单片机双机通信设计单片机系统设计中,经常要使用串口2任务1单片机双机通信设计1.1提出任务单片机甲向单片机乙发送“READY”字符串,然后等待接收。如果接收到乙机发送的“OK”字符串,则蜂鸣器响,否则就不响。1.2分析任务1.硬件电路设计电路组成如图8-1所示。这里选择具有内部ROM的AT89S51单片机,如果PROTEUS软件中没有AT89S51单片机,就选用AT89c51单片机。两块单片机串口相接,即甲机的P3.0接乙机的P3.1,甲机的P3.1接乙机的P3.0,也就是说甲机的发送端接乙机的接收端,甲机的接收端接乙机的发送端;甲机的P1.0接蜂鸣器。当甲机的P1.0管脚输出高电平时,蜂鸣器就响,输出低电平时,蜂鸣器不响。任务1单片机双机通信设计1.1提出任务3任务1单片机双机通信设计图8-1双机通信原理图(右边是甲机,左边是乙机)任务1单片机双机通信设计图8-1双机通信原理图(右边是4任务1单片机双机通信设计使用查询方式,实现双机串口异步通信。所谓的查询方式,是指通过查看中断标志位RI和TI来接受和发送数据。在这种方式下,当串口发送完数据或接收到数据时,仅仅置位相应的标志位而不会以任何其它的形式通知主程序。主程序只能通过定时查询发现标志位的状态改变,从而作出响应的处理。注意,在查询方式中,标志位的位置由硬件完成,而标志位的清除需要软件进行处理。首先由甲机发送“READY”字符串,然后等待接收。如果接收到乙机发送的“OK”字符串,则蜂鸣器响,否则就不响。总程序流程图(甲机)如图8-2。系统初始化发送字符串“READY接收数据程序结束接收字符为“OK”NO
图8-2甲机流程图任务1单片机双机通信设计使用查询方式,实现双机串口异步通5任务1单片机双机通信设计数据的接收和发送均使用查询方式。程序大致分为3个部分:初始化部分、发送数据部分、接受数据部分。(1)系统初始化部分系统初始化部分应完成如下方面的工作:关闭所有中断;设置串口工作模式;设置串口为接收允许状态;设置串行口通信波特率;其它数据初始化;任务1单片机双机通信设计数据的接收和发送均使用查询方式。6任务1单片机双机通信设计串口使用工作方式1,其波特率可以是软件设置的。波特率的设置是通过改变定时器T1的溢出率来控制。设定单片机为如下环境:单片机外接晶振频率为11.0592Hz;定时器T1工作在工作模式2,既自动装入初值8位定时器;波特率选择位SWOD置为1;设置通信波特率为9600bit/s;按照上述条件,定时器T1的初值N应设为:N=256-(2smod晶振频率)/(波特率3212)=256–(2111.0592106)/(96003212)=250=FAH任务1单片机双机通信设计串口使用工作方式1,其波特率可7任务1单片机双机通信设计(2)发送数据部分在程序中,发送一个字节的过程如下:将数据传送至SBUF;检测TI位,如果数据传送完毕,则TI位被硬件置1,如果TI为0,则继续等待;TI=1,表示发送完成,此时需要将TI软件清0,然后继续发送下一个字符;程序中,使用put_string()发送数据,当检测到“\0”字符时,表示到达发送字符串结尾,停止数据发送。任务1单片机双机通信设计(2)发送数据部分8任务1单片机双机通信设计(3)接收数据部分在程序中,接收一个字节的过程如下:检测RI位,如果接收到数据,则RI位被硬件置1,如果TI为0,则继续等待;RI=1,表示已接收到一个字节,此时,可以将SBUF中的内容读入缓冲区;将RI软件清0,准备接收下一字节;程序中,使用get_string()发送数据,当检测到“\0”字符时,表示已接收到完整的字符串,函数返回。任务1单片机双机通信设计(3)接收数据部分9任务1单片机双机通信设计#include<AT89X51.H>#include<STRING.H>#define_SEND_STRING_“READY”//发送的字符串#define_RECV_STRING_“OK”//接收的字符串#define_MAX_LEN_16//数据最大长度voidput_string(unsignedchar*str);//串口发送字符串voidget_string(unsignedchar*str);//串口接收字符串voidBeep();//蜂鸣表示成功接收到返回信号/*----------------------------------程序初始化部分--------------------------------------------*/voidmain(){charbuf[_MAX_LEN_];/*系统初始化*/TMOD=0x20;//定时器T1使用工作方式2TH1=250;//设置初值TL1=250;TR1=1;//开始计时PCON=0x80;//SMOD=1SCON=0x50;//工作方式1,波特率9600bit/s,允许接收EA=0;//关闭全部中断strcpy(buf,_SEND_STRING_);//设置发送字符串程序代码如下(甲机):任务1单片机双机通信设计#include<AT89X5110任务1单片机双机通信设计/*-----------------------发送数据-----------------------------------*/put_string(buf);buf[0]=0;//清空缓冲区/*----------------------接收数据-----------------------------------*/while(strcmp(buf,_RECV_STRING_)!=0){get_string(buf);}beep();while(1);//反复循环}/*------------------------------子函数--------------------------------------*//*发送字符,参数str为待发送子符串*/voidput_string(unsignedchar*str){do{SBUF=*str;while(!TI);//等待数据发送完毕TI=0;//清发送标志位str++;//发送下一数据}while(*(str-1)==’\0’);//发送至字符串结尾则停止}任务1单片机双机通信设计/*--------------11任务1单片机双机通信设计/*接收字符串,参数str指向保存接收子符串缓冲区*/voidget_string(unsignedchar*str){unsignedcharcount=0;*str=0;//清缓冲区do{while(!RI);//等待数据接收*str=SBUF;//保存接收到的数据RI=0;//清接收标志位str++;//准备接收下一数据count++;if(count>_MAX_LEN_)//如果接收数据超过缓冲区范围,则只接收部分字符{*(str-1)=0;break;}while(*(str-1)==’\0’);//接收至字符串结尾则停止}任务1单片机双机通信设计/*接收字符串,参数str指向保12任务1单片机双机通信设计
思考题
根据上面的甲机的程序,写出乙机的程序?
知识链接1.串行通信与并行通信在微型计算机中,通信(数据交换)有两种方式:并行通信和串行通信。并行通信——是指计算机与I/O设备之间通过多条传输线交换数据,数据的各位同时进行传送。如图8-3所示。串行通信——是指计算机与I/O设备之间仅通过一条传输线交换数据,数据的各位是按顺序依次一位接一位进行传送。如图8-4所示。任务1单片机双机通信设计
思考题13任务1单片机双机通信设计
应该理解所谓的并行和串行,仅是指I/O接口与I/O设备之间数据交换(通信)是并行或串行。无论怎样CPU与I/O接口之间数据交换总是并行。图8-3并行通信图8-4串行通信任务1单片机双机通信设计
应该理解所谓的并行和串行,仅是14任务1单片机双机通信设计二者比较:串行通信的数据传输速率相对较低,但通信距离长,可以从几米到几公里,因此串行适用于长距离而速度要求不高的场合。电脑上的9针座(人称串口)就是串行通信。并行通信的传输速率高,但传输距离短,一般不超过30米,而且成本高(要采用多条数据线)。电脑输出数据到打印机采用的就是并行通信。任务1单片机双机通信设计二者比较:15任务1单片机双机通信设计2.串行通信的分类与制式(1)串行通信的分类串行通信可以分为同步通信(SynchronousCommunication)和异步通信(AsynchronousCommunication)两类。在单片机中,主要使用异步通信方式。(2)串行通信制式根据信息的传送方向,串行通信可以进一步分为单工、半双工和全双工三种。信息只能单向传送为单工;信息能双向传送但不能同时双向传送称为半双工;信息能够同时双向传送则称为全双工。如果在通信过程的任意时刻,信息只能由一方A传到另一方B,则称为单工。如果在任意时刻,信息既可由A传到B,又能由B传A,但只能由一个方向上的传输存在,称为半双工传输。
如果在任意时刻,线路上存在A到B和B到A的双向信号传输,则称为全双工。任务1单片机双机通信设计2.串行通信的分类与制式16任务1单片机双机通信设计3.同步通信与异步通信(1)同步通讯异步通信的概念同步和异步都属于串行数据传送方式,但二者的传送格式有所不同。同步方式的一帧内含有很多数据位,而异步方式一帧内只含有几个数据位。如果要传送一大堆数据,同步方式只给这串数据进行一次外包装(即添加“头帧”、“尾帧”、“校验”帧),而异步方式在传送这串数据时则要对数据的每一个字节分别加以包装(即添加“头”位、“尾”位和校验)。显然在相同的数据传输波特率下,同步方式比异步方式的传送速度快,但同步方式要求收发双方在整个事件传送过程中始终保持严格同步,这将增加硬件上的难度,而异步通信只要求每帧(字节)的传送中短时间保持同步即可,实现起来要容易得多。任务1单片机双机通信设计3.同步通信与异步通信17任务1单片机双机通信设计(2)同步、异步数据通信格式同步、异步数据通信格式分别如图8-4、图8-5所示。图8-4同步传送的数据格式图8-5异步通信数据帧格式任务1单片机双机通信设计(2)同步、异步数据通信格式图818任务1单片机双机通信设计4.串行接口的结构(1)数据缓冲寄存器SBUF两个SBUF,一个用于发送(只写);一个用于接收(只读)。映象地址均为99H,如图8-6所示。(2)数据发送与接收控制发送控制器在波特率作用下,将发送SBUF中的数据由并到串,一位位地传输到发送端口;接收控制器在波特率作用下,将接收接收端口的数据由串到并,存入接收SBUF中。图8-6串行接口的结构任务1单片机双机通信设计4.串行接口的结构图8-6串行19任务1单片机双机通信设计5.MCS-51的串行接口概述(1)有一个可编程全双工串行通信接口(UART)(UniversalAsychronousReceiver/Transmitter)(2)管脚:TXD(P3.1)、RXD(P3.0)(3)可同时发送、接收数据(Transmit/Receive)(4)有四种工作方式,帧格式有8、10、11位。(5)波特率(Baudrate)可设置波特率:每秒钟传送二进制数码的位数,也叫比特数,单位为b/s,即位/秒。任务1单片机双机通信设计5.MCS-51的串行接口概述20任务1单片机双机通信设计6.MCS-51串行接口寄存器(1)串行口数据缓冲器-----SBUF共2个:一个发送寄存器SBUF,一个接收SBUF,二者共用一个地址99H。(2)控制寄存器-----SCON任务1单片机双机通信设计6.MCS-51串行接口寄存器21对各位的说明如下:SM0、SM1:串行方式选择位,其定义如表8.1所示。表8.1串行口工作方式SM0SM1工作方式功能波特率00方式08位同步移位寄存器fosc/1201方式110位UART可变10方式211位UARTfosc/64或fosc/3211方式311位UART可变对各位的说明如下:SM0SM1工作方式功能波特率022任务1单片机双机通信设计SM2:多机通信控制位,用于方式2和方式3中。在方式2和方式3处于接收方式时,若SM2=1,且接收到的第9位数据RB8为0时,不激活RI;若SM2=1,且RB8=1时,则置RI=1。在方式2、3处于接收或发送方式时,若SM2=0,不论接收到的第9位RB8为0还是为1,TI、RI都以正常方式被激活。在方式1处于接收时,若SM2=1,则只有收到有效的停止位后,RI置1。在方式0中,SM2应为0。REN:允许串行接收位。它由软件置位或清零。REN=1时,允许接收;REN=0时,禁止接收。TB8:发送数据的第9位。在方式2和方式3中,由软件置位或复位,可做奇偶校验位。在多机通信中,可作为区别地址帧或数据帧的标识位,一般约定地址帧时,TB8为1,数据帧时,TB8为0。RB8:接收数据的第9位。功能同TB8。任务1单片机双机通信设计SM2:多机通信控制位,用于方式23TI:发送中断标志位。在方式0中,发送完8位数据后,由硬件置位;在其它方式中,在发送停止位之初由硬件置位。因此,TI是发送完一帧数据的标志,可以用指令JBCTI,rel来查询是否发送结束。TI=1时,也可向CPU申请中断,响应中断后,必须由软件清除TI。RI:接收中断标志位。在方式0中,接收完8位数据后,由硬件置位;在其它方式中,在接收停止位的中间由硬件置位。同TI一样,也可以通过JBCRI,rel来查询是否接收完一帧数据。RI=1时,也可申请中断,响应中断后,必须由软件清除RI。任务1单片机双机通信设计TI:发送中断标志位。在方式0中,发送完8位数据后,由硬件置24任务1单片机双机通信设计(3)电源及波特率选择寄存器PCONPCON主要是为CHMOS型单片机的电源控制而设置的专用寄存器,不可以位寻址,字节地址为87H。其格式如表8.2所示。SMOD为波特率选择位SMOD:串行通信只用该位,为1时,波特率×2;为0时不变。
电源及波特率选择寄存器PCON电源及波特率选择寄存器PCON表8.2任务1单片机双机通信设计(3)电源及波特率选择寄存器PC25任务1单片机双机通信设计7.89s51串行口的波特率在串行通信中,收发双方对传送的数据速率,即波特率要有一定的约定。我们已经知道,89C51单片机的串行口通过编程可以有4种工作方式。其中,方式0和方式2的波特率是固定的,方式1和方式3的波特率可变,由定时器T1的溢出率决定,下面加以分析。(1)方式0和方式2在方式0中,波特率为时钟频率的1/12,即fosc/12,固定不变。在方式2中,波特率取决于PCON中的SMOD值,当SMOD=0时,波特率为fosc/64;当SMOD=1时,波特率为fosc/32.即:任务1单片机双机通信设计7.89s51串行口的波特率26任务1单片机双机通信设计(2)方式1方式1的波特率是可变的,由定时器T1的计数溢出率决定。相应的公式为:定时器T1的计数溢出率计算公式为:任务1单片机双机通信设计(2)方式1定时器T1的计数溢出27任务1单片机双机通信设计式中,K为定时器T1的位数,与定时器T1的工作方式有关,则波特率计算公式为实际上,当定时器T1做波特率发生器使用时,通常是工作在模式2,即自动重装载的8位定时器,此时TL1作计数用,自动重装载的值在TH1内。设计数的预置值(初始值)为X,那么每过256-X个机器周期,定时器溢出一次。为了避免因溢出而产生不必要的中断,此时应禁止T1中断。溢出周期为:任务1单片机双机通信设计式中,K为定时器T1的位数,与定28任务1单片机双机通信设计溢出率为溢出周期的倒数,所以(3)方式3方式3的波特率由定时器T1的计数溢出率决定,确定方法与工作方式1中的完全一样。任务1单片机双机通信设计溢出率为溢出周期的倒数,所以(329任务1单片机双机通信设计(4)常用波特率及误差常用波特率及误差如表8.3所示。表8-3常用波特率及误差任务1单片机双机通信设计(4)常用波特率及误差30任务2单片机与PC通信2.1提出任务功能为利用键盘在PC机中输入一个6字节(12位的0~9,A~F)的二进制数,然后用鼠标点击通信命令按钮,PC机就将此二进制数发给单片机,单片机收到此数后再原样发回,PC机收到后显示在窗体上。试验者可通过肉眼比较发送和接收的两个数据,检验通信是否成功。2.2分析任务1.硬件电路设计PC机的某个串行口通过电缆线与RS232收发器MAX232的232电平端口三线交叉连接,如图8-8所示。MAX232的逻辑电平端口与单片机的串行口相连。PC机RS232的9针连接器的4脚和6脚、7脚和8脚不用连接。图8-8PC机与单片机的通信接口电路框图图8-8PC机与单片机的通信接口电路框图任务2单片机与PC通信2.1提出任务图8-8PC机与31任务1单片机双机通信设计2.软件设计思路PC机VB程序(1)在工程项目中添加一个窗体,取名为frmcomm,设置其Caption属性为通信。(2)在窗体中添加两个大小一样的文本框,分别取名为txtSend和txtRcv。(3)在窗体中添加一个命令按钮,取名为cmdcomm,设置其Caption属性为通信。(4)在窗体中添加MSComm控件,取名为MSComm1。(5)打开代码窗口,在cmdcomm控件的Click事件中加入以下程序代码:任务1单片机双机通信设计2.软件设计思路32任务1单片机双机通信设计PrivateSubcmdcommClick()DimSenddat(5)AsByte,Rcvdat()AsByte,dattempAsVariant,iAsIntegercmdcomm.Enabled=False′使cmdcomm按钮失效Fori=0To5′从发送文本框txtSend获取发送数据Senddat(i)="&H"&Mid(txtSend.Text,i*2+1,2)NextiMSComm1.CommPort=1′设置端口号为1MSComm1.Settings="19200,N,8,1"′设置波特率等通信协议MSComm1.InputLen=6′设置一次从串口读取6个字节任务1单片机双机通信设计PrivateSubcmdc33任务1单片机双机通信设计PrivateSubcmdcommClick()DimSenddat(5)AsByte,Rcvdat()AsByte,dattempAsVariant,iAsIntegercmdcomm.Enabled=False′使cmdcomm按钮失效Fori=0To5′从发送文本框txtSend获取发送数据Senddat(i)="&H"&Mid(txtSend.Text,i*2+1,2)NextiMSComm1.CommPort=1′设置端口号为1MSComm1.Settings="19200,N,8,1"′设置波特率等通信协议MSComm1.InputLen=6′设置一次从串口读取6个字节任务1单片机双机通信设计PrivateSubcmdc34任务1单片机双机通信设计MSComm1.PortOpen=True′打开串行口MSComm1.InputMode=comInputModeBinary′从串口读取二进制数据MSComm1.Output=Senddat′发送数据DoUntilMSComm1.InBufferCount>=6′查询方式,等待接收到6个字节DoEventsLoopdattemp=MSComm1.Input′从串口读取数据至变体变量Rcvdat=dattemp′数据送至接收二进制数组txtRcv.Text=""任务1单片机双机通信设计MSComm1.PortOpe35任务1单片机双机通信设计Fori=0To5′接收数据送至接收文本框txtRcv显示txtRcv.Text=txtRcv.Text&Right("0"&Hex(Rcvdat(i)),2)NextiMSComm1.PortOpen=False′关闭串行口cmdcomm.Enabled=True′使能cmdcomm接钮EndSub(6)选择开始-运行。用PC机键盘在输入文本框中输入要发送的6字节二进制数据,然后用鼠标点击通信按钮即可。任务1单片机双机通信设计Fori=0To5′接收36任务1单片机双机通信设计#include<AT89X51>#defineucharunsignedcharmain(){uchartemp,datmsg[6];TMOD=0x20;//设置波特率为19.2kb/sPCON=0x80;TH1=0xfd;TL1=0xfd;TR1=1;//启动定时器1SCON=0x50;//设置串行口为10位异步收发,且允许//接收while(1){for(temp=0;temp<6;temp++)//连续接收6个//字节{while(RI==0);RI=0;datmsg[temp]=SBUF;}for(temp=0;temp<6;temp++)//连续发送6个//字节{SBUF=datmsg[temp];while(TI==0);TI=0;}}}单片机C51程序任务1单片机双机通信设计#include<AT89X5137
知识链接
一、VB基础知识1.VB的MSComm控件属性说明:(1)commport属性voidSetCommPort(shortnNewValue);shortGetCommPort();这一属性设置并返回连接的串行端口号,windows将会利用该串口和外界通信。在设计时,nNewValue可以设置成从1~16的任何数(默认值为1)。但是如果用portopen属性打开一个并不存在的端口时,mscomm控件会产生错误68(设备无效)。注意:必须在打开端口之前设置commport属性。
知识链接一、VB基础知识38
知识链接(2)settings属性void
Settings(LPCTSTR
lpszNewValue);
String
GetSettings();
该属性用于设置并返回数据传输速率、奇偶校验、数据比特、停止比特参数。当端口打开时,如果value非法,则mscomm控件产生错误380(非法属性值)。其中lpszNewValue用字符串表示,由四个设置值组成,有如下的组成格式:“bbbb,p,d,s”bbbb为数据传输速率,p为奇偶校验,d为数据比特,s为停止比特。value的默认值是:“9600,n,8,1”,数据传输速率合法值可以是110、300、600、1200、2400、4800、9600、14400、19200、28800、38400、56000、57600、115200、12800、25600
知识链接(2)settings属性39
知识链接奇偶校验值可以是设置为下表中的任一值。设定值描述e偶校验(even)m标号校验(mark)n无校验(none)o奇校验(odd)s空格校验(space)数据比特数可以是4、5、6、7、8。停止比特数可以是1、1.5、2。注意:只有当通信的双方的settings属性值都一样时,通信连接才能生效。
知识链接奇偶校验值可以是设置为下表中的任一值。描述e40
知识链接(3)handshaking属性这一属性用于设置或者返回硬件握手协议,也就是PC和通信设备之间为了控制流速而设定的内部协议。属性值可以设置为下表中的任一个。设定值值描述comnone0无握手协议comxonxoff1xon/xoff握手comrts2rts/cts握手comrtsxonxoff3rts/cts和xon/xoff握手皆可
知识链接(3)handshaking属性值描述com41
知识链接(4)rthreshold属性设置返回的要接收的字符数。当接收字符后,若rthreshold属性设置为0(默认值)则不会产生oncomm事件。否则,该属性为一阈值,当接收缓冲区内字节个数达到或超过该值后就会产生oncomm事件,例如,设置rthreshold为1,接收缓冲区收到每一个字符都会使mscomm控件产生oncomm事件。(5)ctsholding属性该属性确定是否可通过查询cts线的状态发送数据。该属性在设计时无效,在运行时为只读。(6)sthreshold属性设置并返回传输缓冲区中允许的最小字符数。若设置sthreshold属性为0(默认值),数据传输事件不会产生oncomm事件。若设置sthreshold属性为1,当传输缓冲区完全空时,mscomm控件产生oncomm事件。
知识链接(4)rthreshold属性42
知识链接(7)inputmode属性访属性用于设置或者返回传输数据的类型。其取值和基本含义如下表所示。设定值值描述cominputmodetext0通过input属性以文本方式取回数据cominputmodebinary1通过input属性以二进制方式取回数据
知识链接(7)inputmode属性设定值值描述43
知识链接(8)inputlen属性该属性用于设置并返回input属性从接收缓冲区读取的字符数。inputlen属性的默认值是0。当设置inputlen为0时,使用input将使mscomm控件读取接收缓冲区中全部的内容。若接收缓冲区中inputlen字符无效,input属性返回一个零长度字符串(“”)。在使用input前,用户可以选择检查inb
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 旅游鞋制作工岗位应急能力考核试卷含答案
- 照明工规划考核试卷含答案
- 有色金属材热处理工岗位异常处置考核试卷含答案
- 表4.1.1井工煤矿通风标准化评分表
- 人教版(五四制)2026-2027学年一年级道德与法治下册教学工作计划(含进度表)
- 初级会计师职称经济法基础考试真题及答案
- 2026年断路作业安全管理试题(附答案)
- 2026年全国计算机二级考试试题题库(附答案)
- 不同产地鸡蛋原料风味物质迁移规律及其对儿童挂面适口性影响
- 万历主题周边投资回报周期与长尾市场流动性分析
- 美的集团第-级公司分权手册
- 网络传播概论(彭兰第5版) 课件全套 第1-8章 网络媒介的演变-网络传播中的“数字鸿沟”
- LY/T 1575-2023汽车车厢底板用竹胶合板
- 被执行人生活费申请书范文
- KWFB无密封自控自吸泵(服务)课件
- 浙江绍兴杭绍临空示范区开发集团有限公司招聘15名企业合同制人员模拟预测(共500题)笔试参考题库附答案详解
- GB/T 3098.15-2023紧固件机械性能不锈钢螺母
- 发展经济学 马工程课件 7.第七章 工业化与信息化
- 新《义务教育法》解读
- 第一章 血液学绪论
- 《审计法》PPT课件资料
评论
0/150
提交评论