版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第三章通用I/O端口的结构与应用第六节实例2一位数码管的静态显示第七节多位LED数码管显示第八节实例3动态扫描的多位数码管显示第九节实例4用延时实现的时钟系统第十节键盘输入接口第十一节实例5矩阵键盘第一节通用I/O端口的结构一般来说,现代单片机的每一位I/O端口(引脚)都配备有三个功能单元来实现输入和输出功能,其结构示意如图3一1所示。从图中可以看出每一个物理引脚内部都连接着输入/输出两个单元,当单片机想要检测某个I/0引脚上的电平信号时,输入单元会把数据准备好;当想输出信号时,只需操纵输出单元即可,输出单元会将输出信号驱动到物理引脚上。输入、输出单元同时都连接到了物理引脚,单片机不能同时操纵两个单元,这就由控制单元发出控制信号,控制输入、输出两个单元其中一个工作,相应的单片机物理引脚就工作在输入或输出状态。下一页返回第一节通用I/O端口的结构
8位单片机中,通常8位IO端口组成一组端口,例如PDO一PD7组成PD端口。在访问时,一组端口作为一个字节来看待,PDO对应字节的最低位,PD7对应字节的最高位。如图3一2所示即PDIP封装的ATmea48引脚分布。上一页返回第二节AVR单片机I/O端口的编程一、特殊功能寄存器I/0端口是单片机外围设备之一,操纵单片机的I/0端口,也就是编程控制单片机的外围设备。在单片机编程中,控制外设是通过操作外设相应的特殊功能寄存器来实现的。特殊功能寄存器(英文简写SFR)也是寄存器中的一种,有时又被称为I/0寄存器或控制寄存器。在外设控制的编程中,起到一种“桥梁”作用,如图3一3所示下一页返回第二节AVR单片机I/O端口的编程二、AVR单片机I/O端口的控制寄存器
图3-4给出了AVR单片机通用I/0口结构示意图图中通过开关A,B,C示意了DDRx对引脚方向和拉电阻的控制作用。当DDRx.n=0时,开关C断开,开关A闭合,I/O口处于输入工作方式。此时引脚寄存器PINx.n反映物理引脚的状态,通过读取PINx.n即可将物理引脚的真实数据读入MCU。另一方吗面,PORTx.n可以控制开关B的闭合与断开,在DDRx.n=0时,PORTx.n=1,开关B闭合I/O引肚p内部上拉电阻效;PORTx.n=0,开关B断开,内部上拉电阻无效。上一页下一页返回第二节AVR单片机I/O端口的编程DDRx.n=1时,开关C闭合,开关A断开,I/0处于输出工作方式,数据寄存器PORTx.n中的数据通过一个推挽电路输出到外部引脚,对PINx.n的操作不影响端口状态。如图3-5所示。AVR的输出采用推挽电路是为了提高I/O口的驱动能力,当PORTx.n=1时,I/O引脚呈现高电平,同时可提供20mA的拉电流,而当PORTx.n=0时,I/O引脚呈现低电平,同时可吸纳10mA的灌电流②因此,AVR的I/O口在输出方式下提供了比较大的驱动能力,可以直接驱动LED等小功率外围器件。为了便于理解,我们绘制了一张表格,用来说明I/0引脚的配置。如表3一1AVR单片机I/0口引脚配置表所示。上一页下一页返回三、I/O端口的设置与编程前面我们已经知道对I/()的编程主要是操作对应的特殊功能寄存器,要操作特殊功能寄存器,在AVR一GCC中,可使用如下的方法第二节AVR单片机I/O端口的编程上一页返回第三节实例1跑马灯1.需求分析跑马灯是一种彩灯,在街边的店铺里经常可以看见它的身影—排成各种形状的彩灯一只追逐着一只,轮流闪烁着发出五颜六色的光,煞是好看。跑马灯如图3一6所示2.硬件电路设计
我们先来看看LED的电路,如图3-7所示。当电压U,一U:大于LED导通电压时,二极管导通发光。当导通电流大于5mA时,人的眼睛就可以明显地观察到二极管的发光,导通电流越大,亮度越高,但过高的电流将导致二极管的烧毁或I/O引脚的烧毁,一般不要超过10mA。因此,我们要在LED二极管电路中串接一个限流电阻,阻值在300一1kSZ,调节阻值的大小可以调节导通电流从而控制LED的发光亮度。导通电流与限流电阻之间的关系可由下式确定下一页返回第三节实例1跑马灯I=(U2-U2-VLED)/R式中,ULEU为LED导通电压要让单片机控制LED亮、灭,我们有两种接线方法如图3一8所示,在A图中,单片机I/0口输出“1",LED亮,单片机I/0口提供拉电流;B图正好相反,I/0口输出“0",LED亮,单片机I/0口提供灌电流。一般来说,单片机的灌电流驱动能力更强,所以通常使用B图的接法,当然只要驱动能力足够,使用A图也无妨。在本实验中我们采用B图接法,使用6个发光二极管与单片机PC口相连,得到跑马灯电路如图3-9所示上一页下一页返回第三节实例1跑马灯3.软件设计稍加分析可以得出软件流程图,如图3一10所示在流程中加入延时的原因是,单片机执行命令的速度太快了如果选用1MHz的晶振频率,AVR执行大多数指令的时间仅仅是1μs,任由单片机连续改变端口输出的话,由于人眼辨认物体速度跟不上,我们将看不到任何闪烁的效果。所以,加入延时来放慢端口电平变化速度。暂时将延时功能用一个函数代替,按照流程,编写代码如下:上一页下一页返回第三节实例1跑马灯上一页下一页返回第三节实例1跑马灯为了便于理解,我们采用了这里有点“笨”的办法来实现“轮流闪烁”的效果。我们可以用位操作将程序实现得更“精巧”一些,这个方法我们稍候再进行讲解。上面的实现中,我们用Delay_ms(200)函数实现延时200ms的目的,下面我们看看该函数的实现,并介绍软件延时的原理软件延时的基本原理是多次重复执行指令,比如1条指令执行需要1μs的时间,那么执行1000遍该条指令就会消耗掉1ms的时间,依此类推。上一页下一页返回第三节实例1跑马灯上一页下一页返回第三节实例1跑马灯实际上,在使用AVR-GCC开发程序时,我们用不着自己编写延时函数,AVR-LIBC库已经为我们准备好了两个延时函数,_delay_ms()和_delay_N,s();为了使用这两个函数我们需要在源程序中添加如下代码:#defineFCPU1000000UL#include<util/delay.h>宏F_CPU定义为系统使用的晶振频率,库使用该宏来计算延时的时间,如果没有或错误定义了该宏,使用上述两个函数进行延时操作我们可能得到偏差很大的延时时间。宏F_CPU的值也可在图2一7工程属性设置对话框里Frequency进行设置。上一页下一页返回第三节实例1跑马灯
4.编程下载及调试现在按照第二章第三节中介绍的方法,建立工程,编译项目。程序下载成功后,可以看到连接在单片机PC端口上的6只发光二极管开始轮流闪烁,相互追逐。上一页返回第四节端口的位操作一、位操作的由来
位操作在单片机的编程中频繁出现,我们在使用一组端口的8个输入/输出口时,常有只需要修改一部分端口而保持其他端口不变的需求。二、基本的端口位操作方法端口的位操作通常是使用“移位”“与”“或”“异或”等按位逻辑运算来实现的,这些按位逻辑运算在单片机的控制中都有其妙用,下面我们就逐一进行介绍。1.“移位”运算移位运算是一种将参与运算的变量的各个二进制位进行“移动”的一种运算。在C语言中我们可以使用的移位运算有两种:左移运算(用“《”表示)和右移运算(用“》”表示)下面我们就先来讨论一下左移运算“《”。“<<”是一个双目运算符,通常的表达形式为:x《n,这里x,n都是无符号整型变量,其实现的运算操作是将x以二进制位的形式向左移动n位下一页返回第四节端口的位操作2.“取反”运算取反运算又称“按位取反”,顾名思义就是一种将参与运算的变量,以二进制位为单位,逐个进行“取反”的运算,使得变量中原来为“1”的位变为“0”,原来为“n”的位变为“1"。取反的运算符号是“~”,它只需要一个操作数,使用时,将运算符“一”放在操作数左边即可3.“或”运算或运算又称“按位或”,它是一种将参与运算的两个操作数以低位为基准进行对齐以后(长度较短的数据类型会以高位自动补零的方式向长度较长的类型进行类型转换),逐位进行“或”操作的运算。或运算使用符号“|”作为运算符上一页下一页返回第四节端口的位操作4.“与”运算与运算又称“按位与”,它是一种将参与运算的两个操作数以低位为基准进行对齐以后(长度较短的数据类型会以高位自动补零的方式向长度较长的类型进行类型转换),逐位进行“与”操作的运算。与运算使用符号“&”作为运算符5.“异或”运算异或运算又称“按位异或”,它是一种将参与运算的两个操作数以低位为基准进行对齐以后(长度较短的数据类型会以高位自动补零的方式向长度较长的类型进行类型转换),逐位进行“异或”操作的运算。异或运算使用符号^”作为运算符上一页下一页返回第四节端口的位操作6.用位运算来实现端口I/O操作因为在单片机程序设计中,经常有将某一个I/O口单独置1、清0、取反等操作,利用前面介绍的位运算可以很容易的实现。比如操作PB口的第2位,有:(1)将PB2置1PORTB一(1<<PB2);(2)将PB2清0PORTB&=一(1<<PB2);(3)将PB2取反PORTB^=(1<<PB2);
上一页下一页返回第四节端口的位操作在头文件“avr/in.h",有如下的语句#definePB22这使得上面的(1+PB2)与(1+2)相同,当采用宏后,可以更直观地反映出该语句是对PB2进行操作的,本书在后面的内容中都将采用这样的写法。上一页返回第五节数码管显示单片机应用系统中,数码管作为显示器件得到了广泛运用,常用于阿拉伯数字和部分字母的显示。这种显示方案中,每个数字由“8”字中的若干“字段”组成,由于“8”字由7个“字段”组成,因此这种专门用于数字显示的显示器被称为“7段数码管”,一般每个数字的右下方还会带有一个小数点,共计8段,我们为每段都取了一个名字,如图3一11。图3一12段数码管实物
数码管的实现方案有很多,例如,发光二极管(LED),液晶(LCD)或荧光管(VFD)。其中LED数码管显示器由共阳极和共阴极两种结构形式,其内部原理图分别如图3一13和图3一14所示。共阳极和共阴极数码管在本质上没有什么区别,但使用时硬件电路设计和软件编写时不要混淆。返回第六节实例2一位数码管
的静态显示
1.需求分析下面我们以共阴极7段LED数码管为例,介绍单个数码管显示技术。做到用单个数码管依次显示0,1、2,3,4,5,6,7,8,9,A,B,C,D,E,F共16个字符下一页返回第六节实例2一位数码管的
静态显示2.硬件电路设计由于AVR单片机的端口驱动能力高达20mA,所以将单片机I/O口直接通过限流电阻与数码管的各段顺次相连,并将公共端接5V电源(共阳型)或地(共阴型)就组成了一个最简单的数字显示器。为此,我们可以利用ATmega48/88/168的PD端口来驱动数码管的8个段。得到电路如图3一15所示。这种接法中公共端信号是“静止不动”的,数码管显示的内容仅由各段驱动端的输出来决定,因此被称为“静态显示”上一页下一页返回第六节实例2一位数码管
的静态显示
图3-15中限流电阻选取方法与发光二极管控制实例中一样,对于采用+5V电源工作的单片机,假设LED数码管中LED导通电压为1.8V(不同型号的数码管其导通电压可能不一样,实践中应以所用型号参数为准),然后我们选择LED正常工作范围内的导通电流,比如5mA,那么有R=(5-1.8/0.005)=640于是,我们可以选取680的电阻小提示:图中我们没有将限流电阻接在公共端与地线之间,虽然这么做也可以起到限流的目的,而且还只需要使用一只数码管,但这么做会因为显示不同数字时,点亮的“段”上一页下一页返回第六节实例2一位数码管
的静态显示数不同,流过每段LED的电流不同而造成显示的亮度随显示内容变化而变化〔仍设LED导通电压为1.8V,那么图3-16(A)的接法中会点亮2只发光二极管,流过LED的电流为(5一1.8)/220/2=7(mA);图3一16(B)的接法会点亮4只发光二极管,流过LED的电流为(5一1.8)/220/4=3.5(mA),可见图3一16(B)中的数码管会暗于图3一16(A)中的数码管〔因此限流电阻应该加在各段上,而不能加在公共端上上一页下一页返回第六节实例2一位数码管
的静态显示
3.软件设计图中接法,如果想让数码管显示字形g,需要点亮所有的段,这需要单片机的PD端口每一位都输出高电平,由于单片机中端口的位与字节的位是对应的,因此单片机在PD端口上输出Oh01111111(OxFE)即可达成目标;同理,要显示字形“1",需点亮“h"“。”两段,需要PD端口输出',Oh00000110(0x06)。我们通常把OxFE,0x06这些数字称为字形码。为了编程的方便,我们根据0一F16个不同字形需要点亮的字段,制作一张共阴极7段数码管的字形码表,如表3一2所示上一页下一页返回有了字型码表后,要显示一个数字,我们只需从表中查出显示该字型所需的字型数据,通过PD端口送出即可。为了在程序中实现查表操作,我们将表以数组的形式在程序中存储起来,代码如下:第六节实例2一位数码管
的静态显示上一页下一页返回第六节实例2一位数码管
的静态显示好了,下面我们可以尝试画出本实验的软件流程图,如图3一17所示。根据流程图,编写程序代码如下:4.编程下载及调试程序编写完成后,我们将程序下载到实验板。并将用杜邦线与数码管阳极实验板JE1排针)连接起来,接,即可开始程序的调试PORTD端口(实验板上的J1排针)并用1条杜邦线将JE2排针与地线连上一页下一页返回第六节实例2一位数码管
的静态显示上一页返回第七节多位LED数码管显示借鉴动画片的原理,在需要多位数码管时,我们通常使用动态显示方式,其方法是一位一位轮流点亮各个数码管,任何时刻只有一位数码管点亮,每一个数码管每隔一定时间点亮一次,当这个间隔时间足够短时,由于人眼的视觉滞留,观察者将不会感觉到数码管的闪烁,而是看到所有数码管一齐发光,如同动画片本是静止的一幅一幅画面,当连贯地播放时我们可以看到画面的运动效果。采用动态显示方式,节约了大量的I/0资源,由于一个时刻只有一个数码管点亮,耗电量也大为减小;但也加大了程序设计的复杂度,显示内容“静止”时,也需动态改变I/0端口状态加大了MCU的负担返回第八节实例3动态扫描
的多位数码管显示
1.需求分析本实例介绍多个数码管的动态扫描显示方法,在6位数码管上显示固定内容“3.14159"。
2.硬件电路设计采用动态显示时,可以节省单片机I/0资源。电路如图3一18所示下一页返回第八节实例3动态扫描
的多位数码管显示3.软件设计图3一18所示电路采用I/0端口控制数码管的公共端,这样要点亮某一位数码管,就需要相应I/0端口输出低电平经过分析后,我们可以得到本实验的软件流程图,如图3一19所示。需要说明的是,这里仅仅是为了演示如何实现数码管的动态显示实现方法,我们使用了软件延时来控制扫描的快慢,实践应用中这样的方法太浪费单片机的CPU资源了,而且运行时间还可能不精确,造成显示的不稳定。根据流程图,很容易写出如下的主循环代码上一页下一页返回第八节实例3动态扫描
的多位数码管显示上一页下一页返回第八节实例3动态扫描
的多位数码管显示在上面的实现中,仍然使用了比较“笨”的方法,注意到有大量模式相同的“重复代码”,显然我们可以将其改进优化一下。这些“重复代码”又有如下两行代码所示的A,B两处不同。
PORTD=CodeTabA;PORTC=B;
回想前面介绍字形码的查表方法,我们能不能用类似的方法消除上面两行代码中形式不同的部分呢?我们引入一个“显示缓冲区”,通过查表来代替“A”,引入“位段码”表,查表代替“B”。重写代码如下:上一页下一页返回第八节实例3动态扫描
的多位数码管显示上一页下一页返回第八节实例3动态扫描
的多位数码管显示上一页下一页返回第八节实例3动态扫描
的多位数码管显示
这段代码通过查表的方法从“显示缓冲区”DisplayBuf数组取出每一位数码管要显示的内容,然后通过查字形码表完成数字到字形码的转换,将转换的结果送到数码管的阳极,同样通过查表的方式,取出位选码,送完数码管的阴极,完成动态扫描过程。相较于前面的实现,程序简洁了很多。而且得到了一个好处,要想修改显示的内容,只需要修改“显示缓冲区”的数字即可上一页返回第九节实例4用
延时实现的时钟系统
1.需求分析在上一个实例中,用数码管显示了“静止不变”的数据,这在实际应用中的用处可能不是很大。本实例我们在上个实例的基础上,再接再厉,让数码管上显示的内容动起来—在六位数码管上显示一个时钟系统。因为时钟与时间有关,本实例采用延时的方法来进行计时。
2.硬件电路实现本实例的功能,硬件电路不需作任何更改,电路仍如图3一18所示。ATmega48的PD端口接数码管的阳极,PCO一PCS接数码管的阴极下一页返回第九节实例4用
延时实现的时钟系统
3.软件设计在实例3中,我们用动态扫描的方式已经实现了数码管的动态显示,只需要修改显示缓冲区的内容,就可以修改显示的内容。为了使用的方便,我们将动态显示的代码提取出来,写成一个单独的函数。有了该函数后,主程序只需做必要的初始化后,在while主循环中不断调用该函数,即可得到与上一个实例同样的扫描效果。因为我们要实现的是一个时钟系统,所以软件的运行与时间有密切的关系,为此,我们来分析一下,display函数执行一次需要消耗的时间。上一页下一页返回第九节实例4用
延时实现的时钟系统因为AVR单片机指令执行的速度很快,一般简短的语句的执行可以认为它们需要的时间忽略不计,display函数循环中调用了_delay_ms(2)函数6次,所以,display执行一次约12ms。通过对,display执行次数进行计数,我们就可以近似地达到计时的日的。分析了完成本实例关键点的之后,可以很容易画出如下的软件流程图,如图3-20所示根据流程图,完整地实现代码如下:上一页下一页返回第九节实例4用
延时实现的时钟系统上一页下一页返回第九节实例4用
延时实现的时钟系统上一页下一页返回第九节实例4用
延时实现的时钟系统上一页下一页返回第九节实例4用
延时实现的时钟系统上一页下一页返回第九节实例4用
延时实现的时钟系统上一页返回第十节键盘输入接口一、简单按键硬件接口电路分析
图3-21是按键与单片机接口的三种可能连接方式,图中PBS,PB4,PB3工作于输入方式,分别与I3,I2,I1三个按键相连。其中K2是标准的接法,但K2没有按下时,PB4引脚被外部上拉电阻拉高为高电平;当K2按下时,PB4引脚与地线短接,为低电平状态;单片机读取PB4的状态就可以判断是否按下按键。K1是一种经济的接法,它利用AVR单片机I/0口片内的上拉电阻代替了外部上拉电阻,在这种连接中,要注意将I/O口的内部上拉电阻,否则当K1处于断开状态时,PBS引脚将处于高阻态,易受干扰,而不能稳定工作在这两种接法中,上拉电阻起到了使I/O在按键释放状态下拉高引脚的作用,同时还起到了限流的作用,通常取值在5一50KΩ下一页返回第十节键盘输入接口二、按键的抖动与消抖由于机械触点的弹性作用,和人们按键时的力度、方向等的不同,使得按键开关从按下到接触稳定过程中要经过数毫秒的弹跳抖动;而释放按键时,电路也不会一下子断开,同样产生抖动。这使得按键按下与释放时,I/0引脚电平变化得到的不是图3-22所示的理想波形,而是如图3一23所示的抖动波形。上一页下一页返回第十节键盘输入接口软件消抖的基本原理是在软件中对按键进行两次或多次的测试确认,即在第一次检测到按键按下后,每间隔10ms左右再次检测按键是否按下,通过对两次或多次检测结果进行比较,如果结果一致,才最终确认有键按下,从而消除了按键抖动的影响按键接口软件中,除了要考虑按键消抖外,通常还要判断按键是否是释放,只有检测到按键释放后,才确定为一次完整的按键动作完成。否则一次按键仍有可能被误判为多次按键。上一页下一页返回第十节键盘输入接口三、矩阵式键盘
矩阵式按键,将键盘按“行”和“列”的形式组织,排列成矩阵形式,也称为行列式键盘,如图3-24所示,按键位于行列交叉点上。为解决这个问题,矩阵式键盘按键的识别通常采用逐行扫描的办法。方法如下:(1)将列线设置为输出工作方式,行线设置为输入工作方式上一页下一页返回第十节键盘输入接口
(2)将全部列线置为低电平输出,读取行线中有无低电平,如果有低电平出现,说明有键按下;如果读到的所有行线都是高电平,则表示无键按下。
(3)在确认有键按下后,依次逐列将列线置为低电平(也即一列置为低电平,其他列都置为高电平),并检测行线的输入,确定按键的具体位置。这时如果检测到低电平,则确定了按键的行、列位置
(4)将检测的行、列位置转化为按键的编号上一页返回第十一节实例5矩阵键盘
1.需求分析本实例我们来学习矩阵式键盘按键的扫描识别方法,在实例4的基础上实现利用单个数码管显示键盘按键情况。利用单片机的PC端口实现6个按钮的矩阵键盘,并对这6个按键分别编号为1、2,3,4,5,6。初始时数码管显示0,当某个按键按下时,在数码管上显示该键的编号,如果没有按键按下,则显示上一次按键的编号下一页返回第十一节实例5矩阵键盘2.硬件电路设计
用矩阵式结构实现6个按键,我们只需将图3-24中电路删掉一列即可,所得硬件电路如图3-25所示。图中,我们在I/0端口分配上我们将3线与PCO一PC2相连,PC3,PC4与2列线相连,仍然用PD端口连接数码管的阳极,由于本例只需一个数码管,其公共端直接接地即可。上一页下一页返回第十一节实例5矩阵键盘3.软件设计
采用模块化的思路分析一下本实例的目标—将按键的值显示在数码管上;很容易我们就可以把问题分解为两个子问题,第一,获取按键值;这可由一个软件模块来实现,该模块只负责“键盘扫描”将扫描得到的结果返回;第二,将扫描得到的按键值显示在数码管上,这又可由另一个软件模块来实现,该模块只负责向用户显示数据。这两个模块功能的实现都上一页下一页返回第十一节实例5矩阵键盘需要使用单
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026云南玉溪市华宁县宁州街道招聘社区人员2人笔试模拟试题及答案详解
- 2026年西安市第四十二中学教师及行政人员招聘考试参考题库及答案详解
- 2026湖南益阳沅江市第一批就业见习岗位108人考试参考题库及答案详解
- 2026西安工业大学附属中学招聘笔试模拟试题及答案详解
- 2026浙江温州市洞头人才发展招聘2人笔试模拟试题及答案详解
- 2026四川广安嘉和建设投资有限公司武胜县公办养老机构招聘工作人员20人考试模拟试题及答案详解
- 2026沈阳航空产业集团有限公司所属子企业招聘2人笔试参考题库及答案详解
- 2026年温州市瓯海区第三人民医院面向社会招聘工作人员5人考试模拟试题及答案详解
- 2026浙江宁波市鄞州区公立学校招聘编外员工2人考试模拟试题及答案详解
- 2026新疆可克达拉市国有资本投资运营有限责任公司市场化招聘(1人)考试参考题库及答案详解
- 江苏无锡市小升初数学易错真题重组卷(苏教版)
- 口腔根管治疗护理
- 输电线路污秽度监测与评估
- 批发药品管理法培训课件
- 偏瘫患者抗痉挛体位摆放技术评分标准
- HG∕T 2972-2017 工业用一甲胺
- GB/T 25849-2024移动式升降工作平台设计、计算、安全要求和试验方法
- 2023年广州番禺区小升初六年级英语期末试卷及答案(含听力原文)
- 绿色食品生产记录表黄瓜
- 课本剧林教头风雪山神庙剧本
- “减负、增效、提质”理念下基于学科核心素养的小学英语作业设计优化策略研究 论文
评论
0/150
提交评论