版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、课程设计任务书 学生姓名: 廖年强 专业班级: 06 自动化 指导教师: 谢川工作单位: 重庆工商大学 计信学院 题 目 : 基于 ARM的指纹识别门禁系统设计 已知技术参数和设计要求: 1、 硬件主要选择基于 Xscale 内核的 PXA255处理器; 2、 传感器为美国豪威公司的 CMOS图像传感器 FPS200; 3、 设计系统的硬件和软件部分; 4、 硬件包括指纹识别模块、数据处理模块等; 5、 软件部分包括 系统初始化 , 指纹处理识别 , 电控锁控制部分等; 6、 以小组为单位完成本任务,每个小组最多 5 人; 要求完成的主要任务 : (包括课程设计工作量及其技术要求,以及说明书撰
2、写等具体要求) 1、 完成元器件选型,设计硬件电路,并提供 protel 电路图; 2、 设计中给出最小系统的电路图扩展相应的电路,并根据要求最终形成一个完整 的电路图 , 并完成所有源代码; 3、 每个组员完成不少于 3000字的课程设计报告且报告内容不同 4、 课题指标从学生实际出发,难易适中,经过努力都能够完成任务,并有所收获 时间安排: 20092010学年第一学期 1718 周 指导教师签名: 年 月 日 教研室主任签名: 年 月 日 重庆工商大学课程设计成绩评定表 廖年强 学号: 2006003921 学院:计信学院 班级: 06自动化 2班 学生姓名: 项 分优秀 目值 (100
3、 x 90 良好 (90 x80 中等及格评 不及格 (xx 70(70 x 60 学习态 度尚好, 遵守 组织纪 律, 基本保 证设计时 间,按期完成各 项工作 学习态度 学习马 虎,纪律 尚可,能遵 涣 散,工作作 风 守组织纪 不严谨 ,不能保 律,能按期 证设计时间 和 完成任 务 进 度 技 设计合理、理论 分析与 设计合理、理论 分析 术 计算正确,实验数据准 与计算正确,实验 数 水 2 确,有很强的实际动 手 据比 较准确,有较强 平 5能力、经济 分析能力和 的 实际动手能力、经 与 计算机 应用能力,文献 济分析能力和 计算机 实 查阅 能力 强、引用合理 应 用能力,文献
4、引用 设计合理,理论 分析与 计算基本 正确,实验 数据 比较准确,有一 定的 实际动 手能 力,主要文献引 设计 基本 合理,理论 分析与 计 算无大 错 , 实验 数据 设计 不合理,理 论分析与计算 有原 则错误 ,实 验 数据不可靠, 实际动 手能力 差,文献引用、 参参 考考 参考标准 标标 准准 参考标准 参考标准 学 学习态度认真,科学作 学习态 度比较认 真, 习 1风严谨,严格保证设计 科学作 风良好,能按 态 5 时间并按任 务书 中规定 期圆满 完成任 务书规 度 的进度开展各 项工作 定的任 务 际 、调查调研非常合理、 、调查调 研比 较合理 用、调查调 研比 无大错
5、 调查调 研有 较 能 可信 力 、可信 较可信 大的 问题 创 1 有重大改 进或独特 见解 有较大改进或新 颖的 新 0,有一定实用价 值见解,实用性尚可 有一定改 进或新 有一定 见 的见 解 解 观念陈旧 ( 计 算 书 、 图 纸 撰 结构严谨,逻辑性强, 层次清晰,语言准确, 5 文字流 畅,完全符合 规 0 范化要求, 书写工整或 用计算机打印成文;图 纸非常工整、清晰 结构合理,符合 逻辑 ,文章层次分明,语 言准确,文字流 畅 , 符合 规范化要求,书 写工整或用 计 算机打 结构合理,层次 较为 分明,文理 通顺,基本达到 规范化要求,书 写比较工整;图 印成文;图纸工整、
6、清 纸比 较工整、清 晰晰 结构基本 合理,逻辑 内容空泛, 结构 基本清楚, 混乱,文字表达 文字尚通 不清,错别 字 较 顺,勉强达 多,达不到 规范 到规范化 化要求;图纸 不 要求;图纸 工整或不清晰 比较工整 指导教师评定成绩: 指导教师签名: 年 月 日 基于 ARM的指纹识别门禁系统设计 计信学院 06自动化 2班 廖年 强 2006003921 【摘 要】 本设计介绍了基于 ARM的指纹识别门 禁系统的软硬件设计。其中硬件主要是 Intel 公司基于 Xscale 内核的 PXA255处理器和美国豪威公司的 CMOS图像传感器 FPS200。软 件设计 包括系 统初始化 , 指
7、纹处理识别, 电控锁控制部分等。经过实际测试该 系统工作稳定可靠 , 达到了 设计目的。 关键词】 ARM门禁系 统 指纹识别 TCP/IP 图像 、门禁系统概述 门禁系统 (Access Contro l System 又称出入口控制系统 , 是为保障人们生活、工作及财产安全 , 对重要通道的出入口进行管理与控制的系统。随着技术的发展 , 门禁系统已经从传统的卡式门禁系统发展到今天的生物特征识别门禁系统。生物特征识别门禁 系统是以人体生物特征作为辨识条件的指纹比对、掌纹比对、语音比对等。这些生理特征相同 的概率达到数十亿分之一 , 因此具有无法仿冒与借用、不怕遗失、不用携带、不会遗忘 , 有
8、着个 体特征独特性、唯一性、安全性的特点 , 适用于高度机密性场所的安全保护。其中指纹识别发 展最早 , 使用也最广泛。并逐渐与网络集成。 二、PXA 255处理器和指纹传感器 FPS200简介 本系统采用 Intel 公司基于 Xscale 内核的 PXA255处理器。 Xscale 微架构采用 ARMV5TE ISA 兼容指令集(浮点指令集除外 ,它以 ARM 核为中心 ,在其周围扩展了指令和数据内存管理 (Inst ruct ion andDataM emo ryM anagement Unit, 指令、数据和微小数据高速缓 (Instruction,Data and Mini- Dat
9、aCache, 写缓冲、全缓冲、挂起缓冲和分支目标缓冲 , 电源管理单元 , 性能监测单元 , 调试和 JTAG 单元以及协处理器接口、 MAC 协处理器、核心存储总线等。 FPS系列 CMOS图像传感器芯片是美国豪威公司的产品。 FPS200是 高度集成的彩色摄像芯片 , 可带 1/4 镜头。支持多种格式 , 内设的 SCCB(Serial Camera Cont ro lBus 串行控制总线接口 , 提供简单控制方式。通过该接口 , 我们可以对 FPS200芯片内部所有寄存器值进行修改 , 从而完成对 FPS200的控制 , 包括色彩饱和度的调整、 gamma校正等等。该芯片最高能达到每秒
10、钟 30 帧的传输速率 , 并且用户可以控制图像质量 , 可以根据自己的需要选择合适的图像质量。另外 FPS200内置了 640480 分辨率的镜像阵列 ,A/D 转换器 , 并支持外部水平、垂直同步输入格式 , 数字视频输出、增益 1。 控制、黑平衡和白平衡等在内的控制寄存器功能模块。其内部框图如图 三、系统硬件设计 1、结构框图 系统的硬件架构原理框图如图 2 所示, 本 系统主要实现指纹的识别、处理、特征模板提取、 图 2 系统硬件结构图 结果显示,以及完成个人身份识别 / 注册功能。主要由 ARM9处理、 VGA控制及结果显示等模 块组成。 2、指纹识别模块 指纹识别模块核心部分为 F
11、PS200传感芯片,该芯片是一种触摸式 CMOS传感器件,其传感区 域为 1.28cm1.50cm, 500dpi 分辨率,内置有 8位 ADC,且有微处理器总线、 SPI总线三种接口 模式。其通过改变电容阵列的参数值可在一秒钟内扫描多副指纹图像便自动选择最好的一幅。 本指纹防盗系统采用了传感器的 USB模式传感器的数据线直接与 STR912x芯片扩展口相接,对 FP S200图像传感器进行初始化控制和图像读取。指纹传感电路如图3 所示。 图 3 指纹传感电路 指纹采集电路的原理图如图 4 所示,其工作原理为 :PXA255 处理器通过 I2C 总线设置 FPS200 的寄存器 ,系统开 GP
12、IO72(VSYNC的中断使能并检测中断 ,当GPIO72(V SYNC 中断到来以后 , 打开 GPIO73(HREF中断使能 , 关闭其它的中断使能。当 GPIO73(HREF中断到来以后 , 打开 GPIO74(PCLK中断使能 , 关闭其它中断。每当 GPIO74(PCLK中断到来 , 就将 GPI2Obuffer 里的 GPIO64 GPIO71数据采集出来 , 保存到 imgbuf 数组中去。重复这一步一直到采满382240 次为止。将 imgbuf 按照每隔 320 个元素就舍弃 62 个元素进行处理 , 这样得到的数据就是 320240 大小的灰度指纹图像。 图 4 指纹采集电
13、路 原理图 3、数据处理模块 数据处理模块主要完成指纹识别的整个处理过程,包括指纹图像软化、方向图提取、图 像增强、二值化、图像滤波、图像细化等。该模块采用了 TMS320VC5402使,用 FLASH和 SDRAM分 别作 ARM处理器的程序存储器。 TMS320VC540是2 16 位定点 DSP,采用改进的哈佛结构适应远程通 信等实时嵌入式的需要。为了提高速度,本文对一些核心的算法进行了优化。 4、全局逻辑控制单元 系统中大多数外围器件与 DSP 的握手信号都是通过可编程逻辑器件来完成的,CPLD电路设计按其所实现的功能可分为 DSP寻 址空间和芯片读写信号两个模块,其中DSP寻址空间模
14、块根据 DSP输出的控制信号和数据空间选 择信号分时寻址 SRAM和 FLASH两个存储体。 四、系统软件设计 指纹识别系统的主程序流程图如图 5 所示。目标板上电后对整个识别系统进行初始化操作,包 括 DSP系统的初始化和目标板上外设的初始化,对他们进行参数设置。初始化完成后开始检测 指纹传感器上是否有手指,如果有则进行指纹图像的识别识别完成后就对着枚指纹图像进行预 处理工作,在预处理的前端,对识别进来的这枚指纹进行质量评估,以判断是否需要继续进行 指纹图像的预处理工作,若指纹质量比较好则继续进行预处理和数据上传;如果图像的质量很 差,则作废这枚指纹数据。 指纹图像的识别是在中断程序中开始的
15、,当指纹传感器上没有手指时,系统将进入省电模式, 通过指纹传感器 FPS200的手指自动检测中断来唤醒系统,并进行一次指纹图像识别、预处理和 数据上传。指纹登记个数 3000 枚。 图 5 软件流程图 系统设计完成后,可脱机值守工作。 12232 点阵 LCD实时显示时钟、操作状态,并具有 15 键操 作键盘,可独立完成建档及查询功能。系统核查指纹1: N与 1:1 两种方式兼容,提供 RS232/R4 85、 RJ45接口支持局域网连接。 五、结论及心得体会 本次设计主要介绍了基于 ARM的指纹识别门禁系统的软硬件设计。ARM体系结构有丰富的 接口, 在门禁、监控等领域正发挥越来越重要的作用
16、 , 面向可集成 , 可扩展 , 可移植的特定嵌入式系统越来越多的出现在工程领域。随着性价比的提高和软件开发的成熟 ,A RM 在嵌入式领域的应用会越来越广泛。本文从指纹识别的可靠性及速度上考虑, 在门禁系统中以 ARM微处理器做控制器 , 充分利用了其高速的运算处理能力。 通过此次课程设计,我真真正正的意识到,在以后的学习中,要理论联系实际,把我们 所学的理论知识用到实际当中,学习嵌入式更是如此,程序只有在经常的写与读的过程中才能 提高,这就是我在这次课程设计中的最大收获。 附: 程序代码: fps200.h #ifndef _FPS200_H_ #define _FPS200_H_ #de
17、fine ROW_NU3M00 #define COL_NUM256 #define FPS200_IOCRESET_IO(FPS200_IOC_MAGIC #define FPS_RAH0 x00 #define FPS_RAL0 x01 #define FPS_CAL0 x02 #define FPS_REH0 x03 #define FPS_REL0 x04 #define FPS_CEL0 x05 #define FPS_DTR0 x06 #define FPS_DTR_TIME0 x70 #define FPS_DCR0 x07 #define FPS_DCR_CURREN0 xT6
18、 #define FPS_CTRLA0 x08 _GET0SxU04B #define FPS_CTRL_ASM_ARCH_EP7211 #define FPS_CTRLA_GETIMG0 x02 #define FPS_CTRLA_GETRO0Wx01 #define FPS_CTRLA_AINSEL0 x08 #define FPS_CTRLB0 x09 #define FPS_CTRLB_MOD0ExC0 #define FPS_CTRLB_RDY0 x20 #define FPS_CTRLB_AFDE0Nx08 #define FPS_CTRLB_AUTOINCE0Nx04 #defi
19、ne FPS_CTRLB_XTALSE0Lx02 #define FPS_CTRLB_ENABL0Ex01 #define FPS_CTRLC0 x0A #define FPS_SRA_ASM_ARCH_EP72110_xH0B #define FPS_SRA_GETSU0Bx04 #define FPS_SRA_GETIMG0 x02 #define FPS_SRA_GETRO0Wx01 #define FPS_PGC0 x0C #define FPS_PGC_VALU0Ex4/0 xb #define FPS_ICR 0 x0D #define FPS_ICR_IP1_RISE 0 x80
20、 #define FPS_ICR_IP0_RISE 0 x40 #define FPS_ICR_IT1_LEVEL 0 x20 #define FPS_ICR_IT0_LEVEL 0 x10 #define FPS_ICR_IM1 0 x08 #define FPS_ICR_IM0 0 x04 #define FPS_ICR_IE1 0 x02 #define FPS_ICR_IE0 0 x01 #define FPS_ISR 0 x0E #define FPS_ISR_CLRINT0 x01 #define FPS_THR0 x0F #define FPS_THR_THV0 x40 #def
21、ine FPS_THR_THC0 x09 #define FPS_CIDH0 x10 #define FPS_CIDL 0 x11 #define FPS_TST0 x12 #include #undef PDEBUG #ifdef fps200_DEBUG # ifdef _KERNEL_ /* 调试的内核空间 */ # define PDEBUG(fmt, args.printk( KERN_DEBUGfps200: fmt, # args # else /* 用户空间 */ # define PDEBUG(fmt, args.fprintf(stderr, fmt, #args # en
22、dif /* 不调试 */ #else # define PDEBUG(fmt, args. #endif /* 不调试 */ #undef PDEBUGG #define PDEBUGG(fmt, args. /* 设备结构类型 */ typedef struct FPS200_Dev unsigned char flag; void *data; FPS200_Dev; /* 用于 ioctl */ #define FPS200_IOC_MAGICk /* * S 代表 Set through a ptr * G 代表 Get: reply by setting through a poi
23、nter * C 代表 Check */ #define FPS200_IOCSDTR_IOC(_IOC_WRITE, FPS200_IOC_MAGIC,1, 1 #define FPS200_IOCSDCR_IOC(_IOC_WRITE, FPS200_IOC_MAGIC,2, 1 #define FPS200_IOCSPGC_IOC(_IOC_WRITE, FPS200_IOC_MAGIC,3, 1 #define FPS200_IOCGDTR_IOC(_IOC_READ, FPS200_IOC_MAGIC,4, 1 #define FPS200_IOCGDCR_IOC(_IOC_READ
24、, FPS200_IOC_MAGIC,5, 1 #define FPS200_IOCGPGC_IOC(_IOC_READ, FPS200_IOC_MAGIC,6, 1 #define FPS200_IOCFCAP_IOC(_IOC_READ, FPS200_IOC_MAGIC,7, 4 #define FPS200_IOCGDATA_IOC(_IOC_READ, FPS200_IOC_MAGIC,8, 4 #define FPS200_IOCEINT_IOC(_IOC_NONE, FPS200_IOC_MAGIC,9, 0 #define FPS200_IOCDINT_IOC(_IOC_NON
25、E, FPS200_IOC_MAGIC,10, 0 #define FPS200_IOCCINT_IOC(_IOC_READ, FPS200_IOC_MAGIC,11, 1 #define FPS200_IOCCRDY_IOC(_IOC_READ, FPS200_IOC_MAGIC,12, 1 #define FPS200_IOCCLR_IOC(_IOC_NONE, FPS200_IOC_MAGIC,13, 0 #define FPS200_IOC_MAXNR13 int fps200_open(struct inode *inode, struct file *filp; int fps20
26、0_release(struct inode *inode, struct file *filp; int fps200_ioctl (struct inode *inode, struct file *filp, unsigned int cmd, unsigned long arg; void fps_get_image(; #endif /* _FPS200_H_ */ fps200.c #ifndef _KERNEL_ # define _KERNEL_ #endif #ifndef MODULE # define MODULE #endif #include #include #in
27、clude /* printk( */ #include /* kmalloc( */ #include /* everything.*/ #include /* error codes */ #include /* size_t */ #include #include /* udelay( */ #include /* ioremap(, iounmap( */ #include #include #include #include #include #include fps200.h /* local definitions */ #define FPS200_VR0 xfd000000
28、 #define FPS_INDEX(*(volatile unsigned char *FPS200_VR #define FPS_DATA(*(volatile unsigned char *(FPS200_VR+1 #define FPS200_MAJOR240 #define FPS200_NR_DEVS0 #define FPS200_IRQ IRQ_EINT2/ irq = 6 #define FPS200_DATASIZE76800 int fps200_major = FPS200_MAJOR; int fps200_nr_devs = FPS200_NR_DEVS; /* n
29、umber of bare fps200 devices (no use here */ MODULE_PARM(fps200_major,i; MODULE_PARM(fps200_nr_devs,i; MODULE_AUTHOR(NankaUi nversity 5-304; MODULE_LICENSE(GPL; struct file_operations fps200_fops = open: fps200_open, ioctl: fps200_ioctl, release: fps200_release ; struct file_operations *fps200_fop_a
30、rray= #define FPS200_MAX_TYPE0 FPS200_Dev *fps200_device; void fps200_interrupt(int irq, void *dev_id, struct pt_regs *regs disable_irq(irq; /fps_get_image(; fps200_device-flag = 1; void fps_get_image(void int i = 0; int j = 0; FPS_INDEX = FPS_CTRLA; FPS_DATA= FPS_CTRLA_GETIMG; for(i=0; i300; i+ FPS
31、_INDEX= FPS_CTRLB; while(!(FPS_CTRLB_RDY; for(j=0; jdata+i*256+j=FPS_DATA; int fps200_open(struct inode *inode, struct file *filp MOD_INC_USE_COUNT; return(0; int fps200_release(struct inode *inode, struct file *filp MOD_DEC_USE_COUNT; return(0; *filp, int fps200_ioctl(struct inode *inode, struct fi
32、le unsigned int cmd, unsigned long arg int err = 0; int ret = 0; unsigned char tmp; if(_IOC_TYPE(cmd != FPS200_IOC_MAGIC return -ENOTTY; if(_IOC_NR(cmd FPS200_IOC_MAXNR return -ENOTTY; if (_IOC_DIR(cmd else if (_IOC_DIR(cmd if (err return err; switch(cmd case FPS200_IOCSDTR: ret = _get_user(tmp, (un
33、signed char *arg; if(tmp 0 x7f tmp = 0 x7f; FPS_INDEX= FPS_DTR; FPS_DATA= tmp; break; case FPS200_IOCSDCR: ret = _get_user(tmp,(unsigned char *arg; if(tmp 0 x1f tmp = 0 x1f; FPS_INDEX= FPS_DCR; FPS_DATA= tmp; break; case FPS200_IOCSPGC: ret = _get_user(tmp,(unsigned char *arg; if(tmp 0 x0f tmp = 0 x
34、0f; FPS_INDEX= FPS_PGC; FPS_DATA= tmp; break; case FPS200_IOCGDTR: FPS_INDEX= FPS_DTR; tmp = FPS_DATA; ret = _put_user(tmp, (unsigned char *arg; break; case FPS200_IOCGDCR: FPS_INDEX= FPS_DCR; tmp = FPS_DATA; ret = _put_user(tmp, (unsigned char *arg; break; case FPS200_IOCGPGC: FPS_INDEX= FPS_PGC; t
35、mp = FPS_DATA; ret = _put_user(tmp, (unsigned char *arg; break; case FPS200_IOCEINT: enable_irq(FPS200_IRQ; break; case FPS200_IOCDINT: disable_irq(FPS200_IRQ; break; case FPS200_IOCFCAP: fps_get_image(; case FPS200_IOCGDATA: copy_to_user(void *arg, fps200_device-data, FPS200_DATASIZE; ret = 0; fps2
36、00_device-flag = 0; break; case FPS200_IOCCLR: memset(fps200_device-data, fps200_device-flag = 0; break; case FPS200_IOCCINT: if(clps_readw(INTSR1 if(clps_readw(INTSR1 = 0 = 0 ret = _put_user(0 x01,(unsigned char *arg; else ret = _put_user(0 x0, (unsigned char *arg; else ret = _put_user(0 x0, (unsig
37、ned char *arg; break; char case FPS200_IOCCRDY: ret = _put_user(fps200_device-flag,(unsigned *arg; break; default: return -ENOTTY; return ret; static int _init fps200_init_module(void int result; char tmp; if(result = check_region (FPS200_VR,2 printk ( cant get I/O port address n; return (result; if
38、 (!request_region (FPS200_VR,2,fps200 return -EBUSY; SET_MODULE_OWNER( result = register_chrdev(fps200_major, fps200, if(result 0 printk(fps200: cant get major %dn,fps200_major; return result; if(fps200_major = 0 fps200_major = result; /* dynamic */ /* read chip id first, if not equal 0 x20 xx, prin
39、t error*/ FPS_INDEX = FPS_CIDH; tmp = FPS_DATA; if(tmp != 0 x20 printk(wrong chip ID, insmod fail.n; return -EIO; /* row auto inc. inner 12MHz vibrator. no low-power state*/ FPS_INDEX = FPS_CTRLB; FPS_DATA= (FPS_CTRLB_AFDEN|FPS_CTRLB_AUTOINCEN|FPS_CTRLB_ENABLE; /* 等待 30us */ udelay(35; / 使时延大于 30us
40、/* 中断 */ FPS_INDEX = FPS_ICR; FPS_DATA= (FPS_ICR_IE0|FPS_ICR_IT0_LEVEL; FPS_INDEX = FPS_THR; FPS_DATA= ( FPS_THR_THV| FPS_THR_THC; /* DTR, DCR, PGC */ FPS_INDEX = FPS_DTR; FPS_DATA= 0 x23; FPS_INDEX = FPS_DCR; FPS_DATA= 0 x1; FPS_INDEX = FPS_PGC; FPS_DATA= 0; /* other initial */ FPS_INDEX = FPS_RAL;
41、/ raw 地址 FPS_DATA= 0; FPS_INDEX = FPS_RAH; FPS_DATA= 0; FPS_INDEX = FPS_REL; FPS_DATA= 0; FPS_INDEX = FPS_REH; FPS_DATA= 0; FPS_INDEX = FPS_CAL;/ column 地址 FPS_DATA= 0; FPS_INDEX = FPS_CEL; FPS_DATA= 0; FPS_INDEX = FPS_CTRLC; FPS_DATA= 0; FPS_INDEX = FPS_CTRLA; FPS_DATA= 0;/ clear FPS_CTRLA_AINSEL /
42、* 设置 irq */ if(result printk(cant get assigned irq.n; return -EIO; fps200_device = kmalloc(sizeof(FPS200_Dev, GFP_KERNEL; if(!fps200_device FPS_INDEX = FPS_CTRLB; FPS_DATA= 0; return -ENOMEM; memset(fps200_device, 0, sizeof(FPS200_Dev; fps200_device-data = kmalloc(FPS200_DATASIZE, GFP_KERNEL; if(!fps200_device FPS_INDEX = FPS_CTRLB; FPS_
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025鱼塘租赁合同模板
- 2025汽车租赁合同的文本格式
- 2025网约车转让的合同协议书
- 2025苏州房屋租赁合同范本汇编
- 2025年短视频内容创作者分成合同协议
- 2025年短视频合作协议
- 2025年短视频带货渠道合作协议(资源整合)
- 2025版设备采购合同
- 2025二手混凝土搅拌车买卖合同范本
- 2025化工原料买卖合同(GF)
- 亲子小屋日常管理制度
- 中国印度对比课件
- 北京市2025学年高二(上)第一次普通高中学业水平合格性考试物理试题(原卷版)
- 2025至2030中国水产品加工行业发展分析及发展趋势分析与未来投资战略咨询研究报告
- 团体标准解读及临床应用-成人经鼻高流量湿化氧疗技术规范2025
- 店铺转让合同书协议书
- 2025-2030年中国鹦鹉养殖行业市场深度调研及竞争格局与投资策略研究报告
- 中式面点初级基础操作工艺课件学习教案
- 学生受伤治疗协议书
- 法律文化-形考作业4-国开(ZJ)-参考资料
- 企业财务管理中的流动性风险评估与应对策略
评论
0/150
提交评论