




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
10/10SPI的接口及其应用
2010—09—0100:10:29|
分类:HYPERLINK""ARM及程序设计|
标签:|字号大中小
订阅1SPI接口的特点ﻫ
目前很多单片机都配置有SPI、I2C或UART等串行接口.在SPI、I2C及UART三种串行接口一般情况下速度最快的是SPI.I2C接口由于是二线协议速度很难超过1MHz/Bit,而UART工作在方式0(8位移位寄存器)时时钟速度为系统时钟的十二分之一(Fosc/12),而SPI接口时钟速度一般为系统时钟的四分之一(Fosc/4)。典型SPI接口结构如图1所示。ﻫ
ﻫ
串行外围设备接口SPI(serialperipheralinterface)总线技术是Motorola公司推出的一种同步串行接口,Motorola公司生产的绝大多数MCU(微控制器)都配有SPI硬件接口,如68系列MCU.SPI用于CPU与各种外围器件进行全双工、同步串行通讯。SPI可以同时发出和接收串行数据。它只需四条线就可以完成MCU与各种外围器件的通讯,这四条线是:串行时钟线(CSK)、主机输入/从机输出数据线(MISO)、主机输出/从机输入数据线(MOSI)、低电平有效从机选择线CS。这些外围器件可以是简单的TTL移位寄存器,复杂的LCD显示驱动器,A/D、D/A转换子系统或其他的MCU。当SPI工作时,在移位寄存器中的数据逐位从输出引脚(MOSI)输出(高位在前),同时从输入引脚(MISO)接收的数据逐位移到移位寄存器(高位在前)。发送一个字节后,从另一个外围器件接收的字节数据进入移位寄存器中。主SPI的时钟信号(SCK)使传输同步。SPI主要特点有:
可以同时发出和接收串行数据;
可以当作主机或从机工作;
提供频率可编程时钟;ﻫ
发送结束中断标志;
写冲突保护;ﻫ
总线竞争保护等。ﻫ
图2和图3中还给出了SPI总线工作的四种方式及SPI总线接口的时序.SPI模块为了和外设进行数据交换,根据外设工作要求,其输出串行同步时钟极性和相位可以进行配置,时钟极性(CPOL)对传输协议没有重大的影响.如果CPOL=0,串行同步时钟的空闲状态为低电平;如果CPOL=1,串行同步时钟的空闲状态为高电平。时钟相位(CPHA)能够配置用于选择两种不同的传输协议之一进行数据传输。如果CPHA=0,在串行同步时钟的第一个跳变沿(上升或下降)数据被采样;如果CPHA=1,在串行同步时钟的第二个跳变沿(上升或下降)数据被采样.SPI主模块和与之通信的外设的时钟相位和极性应该一致。
ﻫ
图2
图3
2利用SPI接口驱动LED显示屏ﻫ
从图1可以看出SPI接口的核心部分是8位串行移位寄存器,而LED单元板的最基本元件74HC595也是8位串行移位寄存器,因此适当地设计单片机SPI和LED单元板的连接可以高速将显示数据传送到LED显示屏。显然将一个SPI器件对应于单元板的一条扫描线可最大限度发挥SPI器件的速度优势.对应于一个扫描线不多而每扫描线又很长的情况下(超长LED条屏)使用一个SPI器件对应于单元板的一条扫描线可输出速度高达系统时钟的四分之一(Fosc/4)或更高。而SPI接口的FLASH存储器件工作速度更可达50MHz/Bit以上,如只以SPI接口的FLASH存储器件工作速度来计算:设一场扫描时间为16MS,在扫描模式为16时(1/16扫描),输出一行的时间为1MS,则LED屏水平方向点数=1000μS/(1/50MHz)=50000点。可以说是一个“超超”长的LED条屏。但这是不可能的,因为单元板中74HC595的工作频率一般为16MHz以下,也就是说50000点至少要除3。有关超长LED条屏的详细介绍见下一章.
在上一节中我们将RAM的显示数据输出不经CPU处理直接送LED显示屏显示,数据流和控制如图4(a)所示.CPU此时只做地址加一和读操作,这时的读(虚读)是为了单元板串行移位时钟。这种理念同样可用于SPI接口的FLASH存储器件。其数据流和控制框图如图4(b)所示.
ﻫ
从图4(b)中可以看出:当CPU从串行FLASH中读数据时,串行FLASH的So端的数据在CPU的SCK作用下输出的同时移入74HC164,当两个字节共16位从串行FLASH输出并移入74HC164后由CPU给单元板发串行移位时钟。这是一个经典的串并转换,其特点是数据不经CPU处理旁路直接输出.VRS51L3074单片机有两个特殊功能正好为图4(b)所示的电路使用。一是一次SPI启动后可输出多个字节(1至32位),二是输出多个字节后自动在特定引脚上输出一个负脉冲。特别重要的是VRS51L3074单片机SPI时钟为系统时钟的二分之一(Fosc/2)。多个字节特性可保证数据连续输出的速度,而输出负脉冲特性进一步提高了整体程序处理的速度.
图4(b)中串行移位寄存器使用的是74HC164而不是74HC595做串并转换,是因为74HC595多了一级输出锁存器时序上需要额外的控制信号.也可以选用其它带SPI接口的单片机作为控制芯片,但需要软件实现单元板串行移位时钟。不论控制电路为图4(a)或图4(b)中的哪一种,其前提是一行显示数据在存储器中连续排列.众所周知计算机中为加速数据传送一般采用DMA方式,而图4(a)、(b)正是基于这样的理念设计的,让显示数据从存储器直接“DMA”到LED显示屏输入口.简单地说一切影响速度的环节我们都应该想办法用硬件或软件的手段“DMA”,软件手段“DMA"只有一个基本点就是在硬件允许的前提下,尽最大努力减少完成同一功能模块的指令执行时间。下面通过图5所示的SPI方式LED显示屏控制电路加以说明。
ﻫ图5
图5(a)为74HC164内部结构图。图5(b)为基于SPI串行FLASH存储器旁路输出的LED显示屏控制系统.CPU可选用SST89E516或VRS51L3074均可。SST89E516在倍频使用18MHZ晶振时SPI的SCK移位脉冲可达9MHz。而VRS51L3074在使用内部40晶振时SPI的SCK移位脉冲可高达20MHz。对于VRS51L3074来说P1。0和P1.1为SPI的片选信号,P1。3在传送8位后可自动产生一个负脉冲。所以使用VRS51L3074时只需对SPI接口配置后直接连续启动SPI输出即可。如果使用的是SST89E516只能以手动方式片选FLASH存储器,输出一个字节后用软件产生SCK移位信号,由于此时CPU端SPI输出只是用于启动SPI传送,如果我们固定启动SPI传送的数据使用0x80,在MOSI端将每间隔8位输出一位高电平,这个信号可用于产生SCK移位脉冲.从图1可以看出启动数据0x80产生的脉冲发生在SPI传送的开始,故最后要启动一次SPI传送以保证最后一个字节被移入LED显示屏.有关VRS51L3074和SST89E516的SPI配置请查阅相关器件数据手册.图6是VRS51L3074连续传送一块单元板长度数据的程序模块。ﻫ程序(a)中SPI的输出为标准循环查询模式。由于VRS51L3074的SPI输出速度设定为20MHz,在使用内部晶振40MHz时一位的传送时间为2个振荡周期.8位共需用16个振荡周期.程序(a)中第12行启动SPI传送后14行开始读SPI传送是否完成的状态。此时SPI传送显然没有完成,经14、15、16后再回到14行读SPI完成状态时最多经过了12个振荡周期,此时SPI传送还没有完成。只有第3次到14行读SPI状态时SPI传送肯定完成了。这时一个字节的传送时间=3+3+3×(3+2+4)+5=38个振荡周期,而38个振荡周期在程序(b)中可以传送2个字节。程序(b)的DAA指令为延时指令,4个DAA指令用时16个振荡周期,我们没有必要检测SPI状态,只是保证正确的SPI时序。程序(b)比程序(a)速度快一倍。图6(b)中CPU采用内部晶振40MHz的VRS51L3074水平方向的LED单元板点数为2048(一场16MS),垂直方向的单色128双色64点。如果用2片74HC164级连垂直方向单色256双色128点,但水平方向的点数减为1024.如果图6(b)中CPU采用外部晶振20MHz倍频的SST89E516其SPI输出速度只能到10MHz,再加上SST89E516为6T单片机而VRS51L3074为1T单片机,其综合输出性能最多到VRS51L3074综合输出性能的40%。3单片机直接驱动LED显示屏应用实例本文以一例单片机直接驱动LED显示屏的实例,对前面章节中所提到的数据组织、程序优化作小结。如图7所示,硬件电路部分采用最简单的“单片机最小系统+08接口+LED显示屏”组成.其中单片机采用SST89C58,工作频率为12MHz,LED显示屏为一块通用室内双基色单元板。该电路为最简LED显示屏工作系统,适用于小型LED显示系统,具有显示效果丰富、成本低廉、易于控制等有点,并且该系统已在实际应用项目中通过测试。如图7所示,设定显示区域4倍于显示屏,即Dw=2×Lw,Dh=2×Lh,其余参数定义见程序(LED屏和显示区域参数与第4章中符号定义相同)。例1中给出的程序可以完成LED显示屏(图8中灰色区域)在显示区域ACIG中垂直、水平、对角移动这些功能,已在KeiluVision3的3.03版本中编译通过.其中最重要的函数是voiddisplay(),它包括了对存储器的访问、数据输出、显示控制这3大功能。对于存储器的方法完全根据第五章数据组织中的公式而来,因此数据查找详细分析见第五章。该函数的执行效率直接关系到显示屏的显示效果,所以必须对它进行最大程度的优化。
整个LED显示屏组成仅用一块双基色单元板,所以如图7所示,数据口P0仅用P0.0~P0.3四条I/O线对应输出D0~D3,因此实际生成数据只有低4位有效。为便于读者理解和修改、测试数据,故设置显示区域所有文字为黄色,例如当上半屏某象素点点亮为黄色时,该点绿色和黄色LED必然同时点亮才能混合显示黄色,所以R1和G1数据线上对应的数据必须同时置1,存储器中数据为“0xF3”.如果读者希望验证某点或整个数据显示区域显示内容是否正确,只需要按照第五章中数据组织方法找出对应字节,修改对应红、绿扫描线的数据位即可实现所希望显示的效果.由于显示区域数据较多,因此对例1中数组Dispaly_Font进行压缩。如图7所示,该系统只使用D0~D3,4条数据线,所以显示区域数据高4位为无效数据,可以用任意数据替换,按照一般编程习惯,可以采用“F”替换高四位.数据扩展方法为:每个16进制数对应扩展为原数据低4位,例如“5”,扩展后应该为“0xF5,”。注意编译前必须去掉最后一个数据后面的逗号。建议使用UltraEdit软件的列操作功能进行修改。例1:ﻫ//*****************************************************************************ﻫ以下为工程主文件和数据文件,注意测试时请包含数据文件<Test_Data.c>
*****************************************************************************//ﻫ//*****************************************************************************ﻫ主文件〈main.c>ﻫ*****************************************************************************//
#include〈REG51.H〉//8051特殊功能寄存器说明头文件ﻫ#include<Test_Data.c>//标准库文件ﻫ#defineDw128//显示区域长度ﻫ#defineDh64//显示区域高度
#defineLw64//LED显示屏宽度ﻫ#defineLh32//LED显示屏长度ﻫ#defineSw16//LED显示屏的扫描宽度ﻫ#defineEN_ON1
#defineEN_OFF0
sfrCTRL_PORT=0xa0;//定义扫描线A、B、C、D分别对应P2。0、P2.1、P2.2、P2.3ﻫsfrDATA_PORT0=0x80;//定义并行数据输出端口为P0口ﻫsbitE=P2^5;//定义显示允许控制信号ﻫsbitRCK=P2^6;//定义74HC595锁存信号ﻫsbitSCK=P2^7;//定义74HC595移位信号ﻫ//*****************************************************************************
显示核心程序ﻫ功能:
根据指定显示数据起始地址,在对应显示区域中查找数据,并完成一屏数据输出显示ﻫ参数说明:
XL:数据起始地址的x坐标ﻫYL:数据起始地址的y坐标ﻫdisplay_count:每屏显示次数,可以控制移动速度,数值越大单屏显示时间越长,移动速度越慢ﻫ*****************************************************************************//
voiddisplay(unsignedintXL,unsignedintYL,unsignedintdisplay_count)ﻫ{ﻫunsignedcharline;//扫描线循环选择变量
unsignedcharcol;//控制横向移动长度变量
unsignedcharcode*ram_point;//显示数据访问指针
unsignedintk,ram_begin_addr;//数据起始地址
for(k=0;k〈display_count;k++)//单屏循环次数控制
{ﻫfor(line=0;line<Sw;line++)//扫描行循环控制
{
ram_begin_addr=Dispaly_Font;
ram_point=ram_begin_addr+YL*Dw+XL+line*Dw;//数据查找
E=EN_ON;//开显示ﻫfor(col=Lw;col〉0;col—-)//每次循环完毕即送出完整一行数据到74HC595ﻫ//移位寄存器
{ﻫDATA_PORT0=*ram_point;
ram_point++;ﻫSCK=0;SCK=1;//74HC595移位寄存器信号ﻫ}
E=EN_OFF;
RCK=0;RCK=1;//74HC595锁存信号ﻫCTRL_PORT=CTRL_PORT&0xe0;ﻫCTRL_PORT=CTRL_PORT|line;//选择扫描行线
}
}ﻫ}
voidmain(void)
{ﻫunsignedintXL,y,count=80;ﻫdisplay(0,0,3000);
while(1)
{ﻫfor(XL=0;XL<Dw/2;XL++)//水平右移,从ABED区域,向BCFE区域移动ﻫdisplay(XL,0,count);
for(XL=Dw/2;XL>0;XL—-)//水平左移,从BCFE区域,向ABED区域移动ﻫdisplay(XL,0,count);
for(YL=0;YL<Dh/2;YL++)//垂直移动,从ABED区域,向DEHG区域移动
display(0,YL,count);ﻫfor(YL=Dh/2;YL>0;YL-—)//垂直移动,从DEHG区域,向ABED区域移动
display(0,y,count);
for(XL=0;x<Lh;XL++)//对角线移动,从ABED区域,向EFIH区域移动
display(XL*2,XL,count);
for(XL=Lh;XL〉0;XL-—)//对角线移动,从EFIH区域,向ABED区域移动ﻫdisplay(XL*2,XL,count);ﻫfor(XL=Lh;XL>0;XL--)//对角线移动,从BCFE区域,向DEHG区域移动
display(XL*2,Lh-XL,count);ﻫfor(XL=0;XL<32;XL++)//对角线移动,从DEHG区域,向BCFE区域移动
display(XL*2,Lh-XL,count);ﻫ}
}
//*****************************************************************************
数据文件〈Test_Data.c>ﻫ*****************************************************************************//
//*****************************************************************************
显示区域数据,共计6144个16进制数据ﻫ数据替换方法:
将“F”、“A”、“5"、“0”,分别依次替换为“0xFF,"、“0xFA,”、“0xF5,”、“0xF0,”,去掉最后一个数据后面的逗号即可编译
*****************************************************************************//ﻫunsignedcharcodeDispaly_Font[128][48]={
FFF5FFFAFFF5FAFFFFFFFFFF5FFFAFFFFFF5FFFFFFFFFFFFFFFFFFFFFF555FFFﻫFFF5FFFF5FAAAFFFFFFFFFF0FFFFFAFFFFF0AAAA0AAAFFFFFFFF5FFAFFFFF5FFﻫFFFF5AAAAF5FFAFFFF0AAAAA0AAAAAFFFFF5FFFFFFF5FFFFF555555555FFFFFF
FAA0AAAAA0FFFFFFFAAAAAA0AFFF5AFFFFF0FFFFF5FA5FFF555555F05555555FﻫFAAAA0FFF5FF5AFFFF0FFFFA5FFFAFFFFAA0AAF555000FFFAAAAA0AFFFFAAFFF
FF5FFAFFF5FF5FFFF55FFFFF0A000000055FFFFFF5FF0FFFFFFFF
FF555055550550FFFF0FFFFA5FFFAFFFAAF5FAA5FAA5AAFFAAFFF5FFFFA0AFFF
FF5FF055555055FFFFFAFFF5FFAFFAFFFFF0FFFFFFFAFFFFF5FF5FF0F5FFF5FFﻫFF5FFAF5FFAF5AFFFF0FFFFA5FFFA5FF005550A5AAF5FAAFAAFF5FFFFA0AAFFF
F5FF0FFF5FAFFFFFFFFAAAA0FFA5FAFF555000A0AAA0FFFFF5FF5FF0F5FFF5FFﻫFF5FFAF0FFAF5AFFFF55FAAF5FAA5AAF5FAAFAA55555555FAAFFF
55000AA0AAF5FFFFFFA5555055055AFFFFF5FFFF5F5FFAFFF5FF5AF0FA5F5FFFﻫAAAFFFF0FFFFAFFFFAFFFFA00AAF5AAF0FAAFAAAAAAF5FFFAAFFFﻫFFF5FF5AFFFF5FFFFFA5FFFAFFA5FAFFAAA0A000000000AFF5FF5AF0FF0F5FFFﻫFF5FAAF5FFAF5AFFFF0FFFFAFFFFAFFFAA555AA5AAF0FAAFFFFFFA0FFF5AAFFFﻫFF5FF505550555FFFAF055055505FAFFFFA55FAF5FFFFFFFF5FF0FF0FFF0FFFF
FF5FAAA5FFAF5AFFFF05555055FFAFFFA0F5F0A5AAF5FAAFFFFFF0AFFFF0AFFF
F5FFFAF5FF5AF5FFAFF5AFAFFFA5FAFFFF00AAAA0AAAA0FFF55505F0FFF5AFFFﻫFF50505005055AFFFF0AAAAAA0AAAFFFA0F5FAA5AAF5FAAFFF55500555500FFFﻫ55000AA0AA0AAFFFFFF550555505FAFF55A555050555505FFFFAF5F0FF5F5AFF
FF5AFAF5AFAFFAFFFF0FFFFAF5FFAFFF0AF5FAA5FAA5AAFFAAFFFAA5FFFA0FFF
F5FFFFF0FF5FAFFFFFF5FAFFFFA5FAFFFFA0AAAF0FF5AFFFFFAFF5F0FF5F5AFF
FFAFFAF5FFAFF0FFFF0FFFFAF5FFAFFFFAA0AAF5FFA0AFFFFAAA0AF5FA0AAAAF
FFFFAFF0FF0FFFFFFFF505555505FAFFFFA5FFA5FAF0FFFFFAF555F0F5FFF5FF
5505FFF0FFFFAF5FFAFFFFFF5FFF5FFF5FF5FFFFF5FF5FFF5FFFF
FFF50F5AFF5AFF5FFFF0FFFFFFF5FAFFFFA0AAAF5F0FFFFF555FF5F05FFFF5FF
FFFFFAF5FFFFFAFFFA5FFFFAF5FFAFFFFFF5FF5FFFF5FF5FFFF5FFF5FFFF5FFFﻫ555AFF5AFF5FAF5FFFA5FFFFFFF5F0FFAAA5FFAFF05AAFFFF5FFF5F0FFFFFFFF
FFFFFAF5FFFAFAFFF0FFFFFAF5AFAFFFFFF5F5FFFFFF555FFF5FF5F5FFFF5FFF
F5AFF0FAFFF5055F5505FF5F5FFAF0FF50AAFFFF5F0F05555555F
FFFFFAF5FFFFAFFF0FFFFFFFF5FAFFFFFFF55FFFFFFFFFFFFFFFFF5FFFFFFFFFﻫFFFF5FAFFFFFFFFFFFFFFFFFFFFFAFFFFF5FFF00FFFF5AFFFFFF5FAFFFFFFFFFﻫFFFAFFFFF5FAFFFFFFFFFFFFAFFFFFFFFFFAFFFFFFFFFFFFFFF5FFFFFFAAAFFF
FFF0FFFFAFFFFFFFFFFF5FFAFFFFFFFFFFFA5FFFAFFFFFF5FFFFAFFFFFFFFAFFﻫFFFF0FFFF5AFFFFFFFAFFFFFAFFFFFFFFFFAFFFFFFF0555550000AAAAA555555ﻫ55505FFFFA555555555555FAF5550555555055FFFAF5AFF5AA0AAAFAAAAAAAAF
F55550FFF0FFAFFF5505FFFF0555555F55505FFAAAA0AFFFFFF5FAFFFFFFFFFFﻫFFAFFFFFFA5FAFFFFAAA0AAAAAAA0AFFFF5AFAAAAAA0AAF5FFF5AFFAFFFFFFFF
FFAAAAAAA0AAA0FFF50FFFFFA55FF55FF55A55FAFFF0FFFFFFF5FAFFFFFAFFFFﻫFFAFFAAAAA0AAAFFFFFF5FFAFFFF5FFFFF5AFFFFFF5FFFF5FAFFA5FAFAFFFAFF
FFAFF5F05555055FF50FFFFFA55FFA5FA00AA05AFFF055555555AFFFFFAFFFFFﻫFAFFAFFFAF55555555555FFAFFFA5FFFAA0AAAFAF555AFAFFFAFFﻫ5505555AF5FFA5FFF50AAAAAA00A0AAFF55AF55AFFF0FFFFFFA0AAAAAAFFFFFF
AAAAA5FAFF5AFF5FFF5AAAAAAAAA0FFFFF5AFFFFAFAFFF5FFAFFAFFAFFAFAFFF
FFA0AAAAA0AAA5FFF50FFFFFF5555FFFF50AF55AFFF0FFFFFFF5FFFA55555555ﻫ5550550FFF5FAFF5F5FA5FFFFFFA5FFFFF5AF0AAAAAAAA5FFAFFAFFAFFAFAFFF
FFA5FFFAF5FFA5FFF50FFFFFF55F5FFFF50AA55AFFF055555555FFAFFFAFFFF5ﻫFFAFFAAAAA0A0055555000AA0055FAFFFF5555055AFFAFFFAFFFF
FF0FFFFAF5FFA5FFF50AAAAAA05FFFFFF05AF05AFFF0F5FFF5F5FAFFFFFAFFF5
FAFFFFFAFF0FFA5FFF5AFFFFFFFA5FFFFF0AFFFFAFFFF05FFAA0AAFAFFFAFFFF
FF0AA0AAA0AAA5FFF50FFF5FF05FFF5FF05AF55AF5FAF5FFF5AAA0AAAAAA0FF5
AA0AAFFAFF0FFF5FFF5AA0AAAAAA5FFFAA5AAAAAAAAA0A0FFF5FFAFAFFAFAFFFﻫF5AFFF5A5FFFF5FFF50FF55FF05FF55FA55A55FAFF50F5FFF5FF55FAFFF50FF5
FAF55FFAFF55FFFFA5FFFFF5AFFFFAFFA5FF5F5FFFAFAFFAFAFFFﻫ5555555A5FFFF0FF5505555F5055555F55505FFAFFF0F5FFF5F5AFFAFF0FFFF5ﻫFFFF55FAFF0FFF5FFF5AAAAAAAAA5FFFFF5AFFFAFFF0FFFF5FFAAAFAFAFFFAFF
A0AAAAA0AAAAA0AFFFAFFFFFFAFFFFFFFFFAFFFAFFFAF5AFF5FFAFFAF5FAFFF5
FFFAA5AFFF0FFF0FFF5AFFFFFFF0FFFFFF5AFFFFAF0FFFF5A0AFFAFAAFFFFAFF
FFFFFFF0FFFFF5FFFFAFFFFFFAFFFFFFFFFAFFAFFFFAF5AFF5FAF5FAFFFFAFF5
AAAFFFAFF5AFFF0FFF5AFFFFFFF0FAFFFF5AFFFFF0AFFF5FFA55FAFAFFFFFFFF
FFFFFF5AFF5F5FFFFAFFFFFFFAFFFFFFFFFAFAFF5555AFFFFA5F5
FAFFFAFF5FFAA0AFAA0AAAAAAA0AAAAFFA5AFFFF0FFA05FFFFFA505AAAAAAAAF
FFFFF5FAFFF5FFFFAFFFF
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 自然界细胞分裂研究
- 国有企业厂长任期目标责任劳动合同协议
- 媒体集团财务监管与审计合同协议
- 和人有关的主题班会课件
- 车辆租赁押金及租赁车辆运输安全合同
- 生态餐厅厨房承包与绿色食材采购合同
- 住宅小区地下停车位使用权转让合同范本
- 重大采购项目廉政风险防控合同文本
- 车牌照租赁与车辆租赁企业信用评估合同
- 财产信托借款与保险保障合同
- 合肥市2025届高三年级5月教学质量检测(合肥三模)生物试题+答案
- 建筑节能材料试题及答案
- 公共财政概论试题及答案
- 7 什么比猎豹的速度更快 第二课时 课件
- 青马工程笔试试题及答案
- 重大活动保供电工作流程
- 《颈椎超声》课件
- 食品委托加工管理制度
- 春季防风安全教育
- 宪法考试考试题及答案
- 物业管理服务交接方案
评论
0/150
提交评论