版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、HUBEI NORMAL UNIVERSITY嵌入式課程設(shè)計報告 課題: 指紋識別門禁系統(tǒng)設(shè)計 姓名: 萬苗 學(xué)號: 2013115030311 院系: 計算機(jī)科學(xué)與技術(shù)學(xué)院 班級: 1303班 導(dǎo)師: 曹杉杉 第 23 / 23頁基于ARM的指紋識別門禁系統(tǒng)設(shè)計【摘要】 本設(shè)計介紹了基于ARM的指紋識別門禁系統(tǒng)的軟硬件設(shè)計。其中硬件主要是Intel 公司基于Xscale內(nèi)核的PXA255處理器和美國豪威公司的CMOS圖像傳感器FPS200。軟件設(shè)計包括系統(tǒng)初始化, 指紋處理識別, 電控鎖控制部分等。經(jīng)過實(shí)際測試該系統(tǒng)工作穩(wěn)定可靠, 達(dá)到了設(shè)計目的?!娟P(guān)鍵詞】 ARM 門禁系統(tǒng) 指紋識別 TC
2、P/IP 圖像一、門禁系統(tǒng)概述 門禁系統(tǒng)(Access Contro l System ) , 又稱出入口控制系統(tǒng),是為保障人們生活、工作及財產(chǎn)安全, 對重要通道的出入口進(jìn)行管理與控制的系統(tǒng)。隨著技術(shù)的發(fā)展, 門禁系統(tǒng)已經(jīng)從傳統(tǒng)的卡式門禁系統(tǒng)發(fā)展到今天的生物特征識別門禁系統(tǒng)。生物特征識別門禁系統(tǒng)是以人體生物特征作為辨識條件的指紋比對、掌紋比對、語音比對等。這些生理特征相同的概率達(dá)到數(shù)十億分之一,因此具有無法仿冒與借用、不怕遺失、不用攜帶、不會遺忘,有著個體特征獨(dú)特性、唯一性、安全性的特點(diǎn),適用于高度機(jī)密性場所的安全保護(hù)。其中指紋識別發(fā)展最早, 使用也最廣泛。并逐漸與網(wǎng)絡(luò)集成。2、 PXA 25
3、5處理器和指紋傳感器FPS200簡介本系統(tǒng)采用Intel 公司基于Xscale 內(nèi)核的PXA255處理器。Xscale微架構(gòu)采用ARMV 5TE ISA 兼容指令集(浮點(diǎn)指令集除外),它以ARM 核為中心,在其周圍擴(kuò)展了指令和數(shù)據(jù)內(nèi)存管理(Instruct ion andDataM emo ryM anagement Unit), 指令、數(shù)據(jù)和微小數(shù)據(jù)高速緩(Instruction,Data and Mini-DataCache),寫緩沖、全緩沖、掛起緩沖和分支目標(biāo)緩沖,電源管理單元, 性能監(jiān)測單元, 調(diào)試和JTAG 單元以及協(xié)處理器接口、MAC 協(xié)處理器、核心存儲總線等。FPS系列CMOS圖
4、像傳感器芯片是美國豪威公司的產(chǎn)品。FPS200是高度集成的彩色攝像芯片, 可帶1/4鏡頭。支持多種格式, 內(nèi)設(shè)的SCCB (Serial Camera Cont ro lBus) 串行控制總線接口, 提供簡單控制方式。通過該接口, 我們可以對FPS200芯片內(nèi)部所有寄存器值進(jìn)行修改, 從而完成對FPS200的控制, 包括色彩飽和度的調(diào)整、gamma 校正等等。該芯片最高能達(dá)到每秒鐘30幀的傳輸速率, 并且用戶可以控制圖像質(zhì)量, 可以根據(jù)自己的需要選擇合適的圖像質(zhì)量。另外FPS200內(nèi)置了640480分辨率的鏡像陣列,A/D轉(zhuǎn)換器, 并支持外部水平、垂直同步輸入格式, 數(shù)字視頻輸出、增益控制、黑
5、平衡和白平衡等在內(nèi)的控制寄存器功能模塊。其內(nèi)部框圖如圖1:圖1 FPS200內(nèi)部結(jié)構(gòu)框圖3、 系統(tǒng)硬件設(shè)計1、 結(jié)構(gòu)框圖系統(tǒng)的硬件架構(gòu)原理框圖如圖2所示,本系統(tǒng)主要實(shí)現(xiàn)指紋的識別、處理、特征模板提取、結(jié)果顯示,以及完成個人身份識別/注冊功能。主要由ARM9處理、VGA控制及結(jié)果顯示等模塊組成。2、指紋識別模塊指紋識別模塊核心部分為FPS200傳感芯片,該芯片是一種觸摸式CMOS傳感器件,其傳感區(qū)域為1.28cm1.50cm,500dpi分辨率,內(nèi)置有8位ADC,且有微處理器總線、SPI總線三種接口模式。其通過改變電容陣列的參數(shù)值可在一秒鐘內(nèi)掃描多副指紋圖像便自動選擇最好的一幅。本指紋防盜系統(tǒng)采
6、用了傳感器的USB模式傳感器的數(shù)據(jù)線直接與STR912x芯片擴(kuò)展口相接。指紋采集電路的原理圖如圖4所示,其工作原理為:PXA255處理器通過I2C總線設(shè)置FPS200的寄存器,系統(tǒng)開GPIO72(VSYNC)的中斷使能并檢測中斷,當(dāng)GPIO72(V SYNC) 中斷到來以后,打開GPIO73(HREF)中斷使能,關(guān)閉其它的中斷使能。當(dāng)GPIO73(HREF)中斷到來以后, 打開GPIO74(PCLK)中斷使能, 關(guān)閉其它中斷。每當(dāng)GPIO74(PCLK)中斷到來, 就將GPI2Obuffer 里的GPIO64GPIO71數(shù)據(jù)采集出來, 保存到imgbuf數(shù)組中去。重復(fù)這一步一直到采滿38224
7、0 次為止。將imgbuf按照每隔320 個元素就舍棄62個元素進(jìn)行處理,這樣得到的數(shù)據(jù)就是320240 大小的灰度指紋圖像。圖4 指紋采集電路原理圖3、數(shù)據(jù)處理模塊數(shù)據(jù)處理模塊主要完成指紋識別的整個處理過程,包括指紋圖像軟化、方向圖提取、圖像增強(qiáng)、二值化、圖像濾波、圖像細(xì)化等。該模塊采用了TMS320VC5402,使用FLASH和SDRAM分別作ARM處理器的程序存儲器。TMS320VC5402是16位定點(diǎn)DSP,采用改進(jìn)的哈佛結(jié)構(gòu)適應(yīng)遠(yuǎn)程通信等實(shí)時嵌入式的需要。為了提高速度,本文對一些核心的算法進(jìn)行了優(yōu)化。4、全局邏輯控制單元 系統(tǒng)中大多數(shù)外圍器件與DSP 的握手信號都是通過可編程邏輯器件
8、來完成的,CPLD電路設(shè)計按其所實(shí)現(xiàn)的功能可分為DSP尋址空間和芯片讀寫信號兩個模塊,其中DSP尋址空間模塊根據(jù)DSP輸出的控制信號和數(shù)據(jù)空間選擇信號分時尋址SRAM和FLASH兩個存儲體。四、系統(tǒng)軟件設(shè)計 指紋識別系統(tǒng)的主程序流程圖如圖5所示。目標(biāo)板上電后對整個識別系統(tǒng)進(jìn)行初始化操作,包括DSP系統(tǒng)的初始化和目標(biāo)板上外設(shè)的初始化,對他們進(jìn)行參數(shù)設(shè)置。初始化完成后開始檢測指紋傳感器上是否有手指,如果有則進(jìn)行指紋圖像的識別識別完成后就對著枚指紋圖像進(jìn)行預(yù)處理工作,在預(yù)處理的前端,對識別進(jìn)來的這枚指紋進(jìn)行質(zhì)量評估,以判斷是否需要繼續(xù)進(jìn)行指紋圖像的預(yù)處理工作,若指紋質(zhì)量比較好則繼續(xù)進(jìn)行預(yù)處理和數(shù)據(jù)上
9、傳;如果圖像的質(zhì)量很差,則作廢這枚指紋數(shù)據(jù)。 指紋圖像的識別是在中斷程序中開始的,當(dāng)指紋傳感器上沒有手指時,系統(tǒng)將進(jìn)入省電模式,通過指紋傳感器FPS200的手指自動檢測中斷來喚醒系統(tǒng),并進(jìn)行一次指紋圖像識別、預(yù)處理和數(shù)據(jù)上傳。指紋登記個數(shù)3000枚。系統(tǒng)設(shè)計完成后,可脫機(jī)值守工作。12232點(diǎn)陣LCD實(shí)時顯示時鐘、操作狀態(tài),并具有15鍵操作鍵盤,可獨(dú)立完成建檔及查詢功能。系統(tǒng)核查指紋1:N與1:1兩種方式兼容,提供RS232/R485、RJ45接口支持局域網(wǎng)連接。五、結(jié)論及心得體會本次設(shè)計主要介紹了基于ARM的指紋識別門禁系統(tǒng)的軟硬件設(shè)計。ARM體系結(jié)構(gòu)有豐富的接口, 在門禁、監(jiān)控等領(lǐng)域正發(fā)揮
10、越來越重要的作用, 面向可集成, 可擴(kuò)展, 可移植的特定嵌入式系統(tǒng)越來越多的出現(xiàn)在工程領(lǐng)域。隨著性價比的提高和軟件開發(fā)的成熟,ARM 在嵌入式領(lǐng)域的應(yīng)用會越來越廣泛。本文從指紋識別的可靠性及速度上考慮, 在門禁系統(tǒng)中以ARM 微處理器做控制器,充分利用了其高速的運(yùn)算處理能力。通過此次課程設(shè)計,我真真正正的意識到,在以后的學(xué)習(xí)中,要理論聯(lián)系實(shí)際,把我們所學(xué)的理論知識用到實(shí)際當(dāng)中,學(xué)習(xí)嵌入式更是如此,程序只有在經(jīng)常的寫與讀的過程中才能提高,這就是我在這次課程設(shè)計中的最大收獲。六、程序代碼:fps200.h#ifndef _FPS200_H_#define _FPS200_H_#define ROW
11、_NUM 300#define COL_NUM 256#define FPS200_IOCRESET _IO(FPS200_IOC_MAGIC)#define FPS_RAH 0x00#define FPS_RAL 0x01#define FPS_CAL 0x02#define FPS_REH 0x03#define FPS_REL 0x04#define FPS_CEL 0x05#define FPS_DTR 0x06#define FPS_DTR_TIME 0x70#define FPS_DCR 0x07#define FPS_DCR_CURRENT 0x6#define FPS_CTRL
12、A 0x08#define FPS_CTRL_ASM_ARCH_EP7211_HA_GETSUB 0x04#define FPS_CTRLA_GETIMG 0x02#define FPS_CTRLA_GETROW 0x01#define FPS_CTRLA_AINSEL 0x08#define FPS_CTRLB 0x09#define FPS_CTRLB_MODE 0xC0#define FPS_CTRLB_RDY 0x20#define FPS_CTRLB_AFDEN 0x08#define FPS_CTRLB_AUTOINCEN 0x04#define FPS_CTRLB_XTALSEL
13、 0x02#define FPS_CTRLB_ENABLE 0x01#define FPS_CTRLC 0x0A#define FPS_SRA_ASM_ARCH_EP7211_H 0x0B#define FPS_SRA_GETSUB 0x04#define FPS_SRA_GETIMG 0x02#define FPS_SRA_GETROW 0x01#define FPS_PGC 0x0C#define FPS_PGC_VALUE 0x4/0xb#define FPS_ICR 0x0D#define FPS_ICR_IP1_RISE 0x80#define FPS_ICR_IP0_RISE 0x
14、40#define FPS_ICR_IT1_LEVEL 0x20#define FPS_ICR_IT0_LEVEL 0x10#define FPS_ICR_IM1 0x08#define FPS_ICR_IM0 0x04#define FPS_ICR_IE1 0x02#define FPS_ICR_IE0 0x01#define FPS_ISR 0x0E#define FPS_ISR_CLRINT 0x01#define FPS_THR 0x0F#define FPS_THR_THV 0x40#define FPS_THR_THC 0x09#define FPS_CIDH 0x10#defin
15、e FPS_CIDL 0x11#define FPS_TST 0x12#include #undef PDEBUG#ifdef fps200_DEBUG# ifdef _KERNEL_/* 調(diào)試的內(nèi)核空間*/# define PDEBUG(fmt, args.) printk( KERN_DEBUGfps200: fmt, # args)# else/* 用戶空間 */# define PDEBUG(fmt, args.) fprintf(stderr, fmt, #args)# endif#else# define PDEBUG(fmt, args.) /* 不調(diào)試*/#endif#unde
16、f PDEBUGG#define PDEBUGG(fmt, args.) /*不調(diào)試*/* 設(shè)備結(jié)構(gòu)類型 */typedef struct FPS200_Dev unsigned char flag;void *data; FPS200_Dev; /* 用于 ioctl */#define FPS200_IOC_MAGIC k/* S代表 Set through a ptr* G代表 Get: reply by setting through a pointer* C代表 Check*/#define FPS200_IOCSDTR _IOC(_IOC_WRITE, FPS200_IOC_MAG
17、IC, 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, FPS200_IOC_MAGIC, 5, 1)#define FPS200_IOCGPGC _IOC(_IOC_READ, FP
18、S200_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_NONE, FPS200_IOC_MAGIC, 10, 0)#define FPS200_IOCCINT _IOC(_I
19、OC_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_MAXNR 13int fps200_open(struct inode *inode, struct file *filp);int fps200_release(struct inode *inode, struct file *filp);
20、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 #include /* printk() */#include /* kmalloc() */#include /* eve
21、rything. */#include /* error codes */#include /* size_t */#include #include /* udelay() */#include /* ioremap(), iounmap() */#include #include #include #include #include #include fps200.h /* local definitions */#define FPS200_VR 0xfd000000#define FPS_INDEX (*(volatile unsigned char *)FPS200_VR)#defi
22、ne FPS_DATA (*(volatile unsigned char *)(FPS200_VR+1)#define FPS200_MAJOR 240#define FPS200_NR_DEVS 0#define FPS200_IRQ IRQ_EINT2 / irq = 6#define FPS200_DATASIZE 76800int fps200_major = FPS200_MAJOR;int fps200_nr_devs = FPS200_NR_DEVS; /* number of bare fps200 devices (no use here) */MODULE_PARM(fp
23、s200_major,i);MODULE_PARM(fps200_nr_devs,i);MODULE_AUTHOR(Nankai Unversity 5-304);MODULE_LICENSE(GPL);struct file_operations fps200_fops = open: fps200_open,ioctl: fps200_ioctl,release: fps200_release;struct file_operations *fps200_fop_array=&fps200_fops, /* type 0 */ /* add more later */;#define FP
24、S200_MAX_TYPE 0FPS200_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_INDEX = FPS_CTRLB;
25、while(!(FPS_CTRLB_RDY&FPS_DATA)udelay(1);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);int fps200_ioctl(struct inode *inode, struct file *filp,u
26、nsigned 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) & _IOC_READ)err = verify_area(VERIFY_WRITE, (void *)arg,_IOC_SIZE(cmd);else if (_IOC_DIR(cmd) & _IOC_WRI
27、TE)err = verify_area(VERIFY_READ, (void *)arg,_IOC_SIZE(cmd);if (err)return err;switch(cmd)case FPS200_IOCSDTR:ret = _get_user(tmp, (unsigned char *)arg);if(tmp 0x7f)tmp = 0x7f;FPS_INDEX = FPS_DTR;FPS_DATA = tmp;break;case FPS200_IOCSDCR:ret = _get_user(tmp, (unsigned char *)arg);if(tmp 0x1f)tmp = 0
28、x1f;FPS_INDEX = FPS_DCR;FPS_DATA = tmp;break;case FPS200_IOCSPGC:ret = _get_user(tmp, (unsigned char *)arg);if(tmp 0x0f)tmp = 0x0f;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_
29、INDEX = FPS_DCR;tmp = FPS_DATA;ret = _put_user(tmp, (unsigned char *)arg);break;case FPS200_IOCGPGC:FPS_INDEX = FPS_PGC;tmp = 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_IOCFC
30、AP:fps_get_image();case FPS200_IOCGDATA:copy_to_user(void *)arg, fps200_device-data,FPS200_DATASIZE);ret = 0;fps200_device-flag = 0;break;case FPS200_IOCCLR:memset(fps200_device-data, 0, FPS200_DATASIZE);fps200_device-flag = 0;break;case FPS200_IOCCINT:if(clps_readw(INTSR1)&0x40) = 0)udelay(100);if(
31、clps_readw(INTSR1)&0x40) = 0)ret = _put_user(0x01, (unsigned char *)arg);elseret = _put_user(0x0, (unsigned char *)arg);elseret = _put_user(0x0, (unsigned char *)arg);break;case FPS200_IOCCRDY:ret = _put_user(fps200_device-flag, (unsigned char*)arg);break;default:return -ENOTTY;return ret;static int
32、 _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 (!request_region (FPS200_VR,2,fps200)return -EBUSY;SET_MODULE_OWNER(&fps200_fops);result = register_chrdev(fps200_major, fps200,&fps200_fops);if(result 0)
33、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 0x20xx, print error*/FPS_INDEX = FPS_CIDH;tmp = FPS_DATA;if(tmp != 0x20)printk(wrong chip ID, insmod fail.n);return -EIO;/* row auto inc. inner 12M
34、Hz vibrator. no low-power state*/FPS_INDEX = FPS_CTRLB;FPS_DATA = (FPS_CTRLB_AFDEN|FPS_CTRLB_AUTOINCEN|FPS_CTRLB_ENABLE); /* 等待30us */udelay(35); / 使時延大于 30us /* 中斷 */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,
35、DCR, PGC */FPS_INDEX = FPS_DTR;FPS_DATA = 0x23;FPS_INDEX = FPS_DCR;FPS_DATA = 0x1;FPS_INDEX = FPS_PGC;FPS_DATA = 0; /* other initial */FPS_INDEX = FPS_RAL; / 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; / c
36、olumn 地址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 /* 設(shè)置 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_DATA = 0;kfree(fps200_device);return -ENOMEM;memset(fps200_device-data, 0, FPS200_DATASIZE); /*
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2031年中國開瓶針行業(yè)投資前景及策略咨詢研究報告
- 2025年中國印膠帽子市場調(diào)查研究報告
- 2024版機(jī)電設(shè)備安裝合同范本
- 2024版學(xué)校廢物管理承包合同3篇
- 2025年度電子元器件展參展商權(quán)益保障協(xié)議模板3篇
- 2025年度城市垃圾分類處理承包合同3篇
- 2025年度房屋租賃管理及押金合同4篇
- 二零二四平安普惠企業(yè)融資借款合同3篇
- 2025版路燈設(shè)施智能監(jiān)控系統(tǒng)建設(shè)合同4篇
- 2025年度高新技術(shù)產(chǎn)業(yè)園區(qū)廠房租賃合同補(bǔ)充協(xié)議3篇
- 肝臟腫瘤護(hù)理查房
- 護(hù)士工作壓力管理護(hù)理工作中的壓力應(yīng)對策略
- 2023年日語考試:大學(xué)日語六級真題模擬匯編(共479題)
- 皮帶拆除安全技術(shù)措施
- ISO9001(2015版)質(zhì)量體系標(biāo)準(zhǔn)講解
- 《培訓(xùn)資料緊固》課件
- 黑龍江省政府采購評標(biāo)專家考試題
- 成品煙道安裝施工方案
- 醫(yī)療免責(zé)協(xié)議書范本
- 2023山東春季高考數(shù)學(xué)真題(含答案)
- 2022年初中歷史課程標(biāo)準(zhǔn)電子版
評論
0/150
提交評論