AAA基于单片机的指纹识别电子密码锁的毕业设计初稿 - 图文
更新时间:2024-05-12 12:02:01 阅读量: 综合文库 文档下载
目 录
1
引言 ................................................................ 1 1.1
指纹识别简介 ................................................. 1 1.1.1 指纹识别原理 ............................................. 1 1.1.2 指纹识别应用 ............................................. 2 1.1.3 指纹识别技术的发展 ....................................... 2 1.2 1.3 2
2.1
系统设计的目的 ............................................... 3 课题背景 ..................................................... 3 系统总体设计 ................................................. 4 2.1.1 系统功能描述 ............................................. 4 2.1.2 系统总体框架 ............................................. 4 2.2
系统核心部件单片机 ........................................... 5 2.2.1 单片机的选择 ............................................. 5 2.2.2 ATMEG16单片机的介绍 ...................................... 7 2.2.3 单片机的复位电路 ......................................... 9 2.2.4 ATMEG16最小系统及晶振的选择 ............................. 10 2.3
液晶显示模块 ................................................ 11 2.3.1 HS12864-15C系列液晶的特点 ............................... 11 2.3.2 HS12864-15C系列液晶的引脚功能 ........................... 12 2.3.3 液晶显示HS12864-15C的指令系统 .......................... 13 2.4
电源和指纹模块 .............................................. 13 2.4.1 ZAZ-010系列独立式指纹识别模块引脚功能 ................... 14 2.4.2 ZAZ-010系列指纹识别模块指令系统 ......................... 15 2.4.3 电源模块 ................................................ 17
3
系统软件的设计 ..................................................... 19 3.1 3.2 3.3
系统程序工作分析 ............................................ 19 设计前准备工作 .............................................. 19 单片机的程序设计 ............................................ 20 3.3.1 键盘管理程序设计流程 .................................... 22 3.3.2 LCD显示模块程序设计流程 ................................. 22
I
整体设计方案 ........................................................ 4
3.3.3 指纹通信模块的程序设计流程 .............................. 23
4
实物的制作与调试 ................................................... 24 4.1 4.2
电路的焊接 .................................................. 24 电路和程序的调试 ............................................ 25 4.2.1 单片机的程序下载 ........................................ 25 4.2.2 串口调试 ................................................ 25 4.2.3 液晶键盘调试 ............................................ 26
结 论 .............................................................. 27 参考文献 .............................................................. 28 附录1:串口调试子程序 ................................................. 29 附录2:整体源程序 ..................................................... 31 附录3:硬件电路图 ..................................................... 48 致 谢 .............................................................. 49
II
1 引言
我们今天的工作生活中,很多的场合都需要身份的认证,而传统的基于标志的身份认证技术由于受到证件伪造以及密码破解等手段的威胁,逐渐表现得有些力不从心。怎样保护自己的重要文件资料,如何保证自己的隐私不被泄露?在传统的身份认证中,我们往往使用密码加密法,但是这种方法只是\防君子不防小人\。在高明的黑客眼里,由几个字符组成的密码脆弱得不堪一击。现在,科技的发展让我们有了新的选择——生物识别技术。将生物识别技术应用于笔记本、门锁等方面,可以对文件、财产起保护作用,并且可以进行身份识别。
生物识别技术是依据人的体貌、声音等生物特征进行身份验证的科学解决方案,现有的生物识别技术大致上包括指纹识别技术、掌纹识别技术、视网膜识别技术、虹膜识别技术、面相识别技术、声音识别技术和笔迹识别技术等。生物识别技术的优势主要有:1、减少、消除身份假冒,进行真实身份的确认;2、降低管理成本,取代了身份人工认证过程;3、方便使用者,减少或消除了使用卡、钥匙或者密码等麻烦。生物识别技术的发展主要起始于指纹研究,它亦是目前应用最为广泛的生物识别技术。
指纹识别技术的发展得益于现代电子集成制造技术和快速可靠的算法的研究。尽管指纹只是人体皮肤的小部分,但用于识别的数据量相当大,对这些数据进行比对也不是简单的相等与不相等的问题,而是使用需要进行大量运算的模糊匹配算法。现代电子集成制造技术使得我们可以制造相当小的指纹图像读取设备,同时飞速发展的个人计算机运算速度提供了在微机甚至单片机上可以进行两个指纹的比对运算的可能。另外,匹配算法可靠性也不断提高,指纹识别技术己非常实用。
1.1 指纹识别简介
1.1.1 指纹识别原理
指纹识别技术的原理和其它生物识别技术的原理相似。它是利用人体的指纹特征对个体身份进行区分和鉴定。在所有的生物识别技术中指纹识别技术是目前最为成熟,也被应用最广的生物识别技术。这主要因为指纹采用的过程对人们来讲非常简单,指纹识别的准确率高的原因。严格来讲,指纹识别的原理包括指纹采集原理、指纹特征提取原理和指纹特征匹配原理三大部分。指纹采集原理主要是根据指纹的几何特性或生理特性,通过各种传感技术把指纹表现出来,形成数字化表示的指纹图案。
1
由于指纹的嵴和峪的几何特征不同,主要表现为嵴是突起的,峪是凹下的,所以在接触到光线时,其反射光的强度也就不同。在接触到平面时,其在平面上形成的压力也就不同。另一方面,由于指纹的嵴和峪的生理特征不同,主要表现为:嵴和峪的温度不同,其导电性也不同,其对波长的反馈也就不同。通过这些几何的、生理的特性的不同,把人的指纹采集到计算机系统中形成指纹图像。
指纹特征分析的原理是对指纹图案的整体特征和细节特征进行提取、鉴别的原理。其分析的对象包括纹形特征和特征点的分布、类型,以及一组或多组特征点之间的平面几何关系。特征点的平面几何关系表现为某个特征点之间的距离等,或者某三个或更多特征点之间组成的多边形的几何特性。不论是特征点的单体特征,还是特征点的组合特征都是指纹特征的组成部分。把这些指纹特征用数字模板的形式表示出来,就实现了一个指纹特征分析的过程。把人的指纹采集到计算机系统中形成指纹图像。
指纹特征值匹配原理是对指纹图案的整体特征和细节特征按模式识别的原理进行比对匹配。匹配是在已注册的指纹和当前待验证的指纹之间进行的。匹配运算不是对两个指纹图像进行比较,而是对已形成数字模板的指纹特征值进行匹配。 1.1.2 指纹识别应用
指纹识别技术是最早的通过计算机实现的身份识别手段,它是应用最为广泛的生物特征识别技术。过去,它主要应用于刑侦系统。近几年来,它逐渐走向市场更为广泛的民用市场。指纹技术在现代生活和工作中的应用已越来越普遍,指纹考勤机、指纹社保、指纹银行、指纹商场、指纹投票、指纹保护电脑、等等生活中和工作中的新现象已广为人知,其应用相当广泛,指纹技术正在日益刷新着我们的现代化生活方式。指纹识别技术是目前国际公认的应用广泛、价格低廉、易用性高的生物认证技术。指纹只是人体皮肤的小部分,但是它却蕴涵了大量的信息。这些皮肤的纹路在图案、断点和交叉点上是各不相同的,在信息处理中将它们称作\特征\。医学上已经证明这些特征对于每个手指都是不同的,而且这些特征具有唯一性和永久性。因此我们就可以把一个人同他的指纹对应起来,通过比较他的指纹特征和预先保存的指纹特征,就可以验证他的真实身份。 1.1.3 指纹识别技术的发展
在经历了近 10 年缓慢的自然增长后,指纹识别技术即将迎来一个跳跃性发展的黄金时期。专家们保守估计,未来 5 年,我国将有近百亿元的市场等待着企业去开拓。指纹识别技术的巨大市场前景,将对国际、国内安防产业产生巨大的影响。较小的公司将面临新进入的传统行业大公司的无情竞争。在这些巨无霸面前,现有中小公司很难说有太大的竞争力,行业重新洗牌不可避免,合并与退出可能会成为大部分中
2
小公司的无奈选择。最终可能形成传统行业的公司或大资本在较短时间内主导生物特征识别行业的局面。这也是每一个新兴市场的必然结果。而竞争的结果将会形成一个新兴的大产业。
国内生物识别技术的应用主要集中在企业级应用上,在 2002年总体约为2.5亿元人民币的终端市场中,超过 40%的产品都用于考勤、门禁系统之中。自2002年以来整个生物识别市场中指纹识别占据了超过 98%的份额,从需求看,中国 13 亿人口决定了中国将是未来全球最大的指纹识别认证技术市场。
1.2 系统设计的目的
现代社会越来越需要高效可靠的身份识别系统。传统的个人身份鉴别手段如口令、密码、身份-甚至磁卡、IC 卡等识别卡方式。由于其与身份人的可分离性,可假冒、可伪造、可盗用、可破译,已不能完全满足现代社会经济活动和社会安全防范的需要。从消除人为不安全因素看,只有不易被他人代替、仿制、甚至其本人也无法转让的身份误码别凭证才能胜任。因此,基于人体生理特征的身份识别系统逐渐为社会所瞩目。随着识别技术的不断成熟,随着计算机技术的飞速发展,各种基于人体生理特征的身份识别系统如:指纹、手掌、声音、视网膜、瞳孔、面纹等识别技术纷纷从实验室中走出来,由小型机落户微机,走向民用。而从易用性、安全性、成熟性和造价等方面综合比较,指纹识别技术将成为未来人体生理特征身份识别技术的主流之一,指纹自动识别技术开创了个人身份鉴别的新时代,将来我们生活的很多场 合都要用到指纹,指纹使我们的生活更方便、安全。
1.3 课题背景
指纹检测可以良好的判断和定义一个人的真实生物身份,从而降低社会活动中的信任成本。从根本上改变经济和社会交往模式,提高效率。未来社会利用生物识别技术的场合将会越来越多,指纹识别技术日趋完善,指纹检测变得越发重要。本次设计指纹识别电子密码锁是基于深圳指昂科技有限公司生产的ZAZ-010指纹模块,可以根据串口通信协议与上位机实现通信,从而实现指纹的录入、存储、比对,并通过HS12864-15C液晶显示出指纹采集存储的过程和比对的结果。指纹电子密码锁安全可靠,使用方便。
3
2 整体设计方案
2.1 系统总体设计
2.1.1 系统功能描述
本系统是针对指纹采集、识别模块开发出的指纹识别电子密码锁系统。该系统使用指纹模块搜索手指,一旦搜索到手指,立即采集指纹图像,并将采集到的图像转化成数据的形式发送出去。它利用人体指纹各异性和不变性,为用户提供加密手段,使用时只需将手指平放在指纹采集仪的采集窗口上,即可完成采集任务,操作十分方便快捷。主要功能就是用液晶显示出指纹模块采集指纹图像各个流程及比对的结果.采集指纹图像之前,指纹模块必须要检测手指是否放在采集窗口上,所以就要有录入指纹这一项功能。简单的描述本次设计的功能即使用指纹模块检测、录入指纹,将比对的数据显示在液晶屏幕上.本系统拥有一次最多录入三个指纹的能力。
该系统的主要功能有以下几个方面:
1.录入指纹:系统预先要有录入指纹的功能,即将个人的指纹通过指纹采集器采集用户指纹的特征信息。
2.合成指纹模板并存储:通过光电转换后,将指纹特征值和对应的 ID 号存储到存储器中。上位机只要有上传指纹的命令,模块可以立即将数据传送到指定位置。
3.搜索指纹库比对指纹:当有指纹录入时,模块会响应上位机指令搜索指纹库比对指纹,同时液晶显示比对结果,继电器动作、发光二极管亮。 2.1.2 系统总体框架
系统的总体框架是指根据设计任务要求,对系统所需元件、设备参数进行必要的计算,通过认真研究、分析、比较选定设备型号,再将设备、元件通过可靠的接口电路联系起来构成一个完整的系统。在系统的整体方案确定之前,先要明确设计要求,然后对系统硬件、软件进行设计,其中包括绘制原理框图、电路图,对原理进行必要说明,综合考虑系统的性能和稳定性要求,以保证所设计的系统达到预期的要求。通过查阅大量的文献资料、综合分析考虑 。主控芯片选用Atmeg16单片机。系统总体框图如图2-1所示:
4
指纹模块 AT MEG16 4个独立按键 以及继电器和指示灯 单片机 LCD
图 2-1 系统总体框图
系统主要由MCU、液晶屏、指纹模块组成. 系统的工作方式主要是,当检测到有按键按下时先由MCU通过串口通信控制指纹模块对指纹进行采集、录入、存储、比对。然后,根据所得的数据对其它接口器件,如液晶屏、继电器进行响应操作。
2.2 系统核心部件单片机
2.2.1 单片机的选择
单片机微型计算机是微型计算机的一个重要分支,也是颇具生命力的机种。单片机微型计算机简称单片机,特别适用于控制领域,故又称为微控制器。
通常,单片机由单块集成电路芯片构成,内部包含有计算机的基本功能部件:中央处理器、存储器和I/O接口电路等。因此,单片机只需要和适当的软件及外部设备相结合,便可成为一个单片机控制系统。
20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。时间对人们来说总是那么宝贵,工作的忙碌性和繁杂性容易使人忘记当前的时间。忘记了要做的事情,当事情不是很重要的时候,这种遗忘无伤大雅。但是,一旦重要事情,一时的耽误可能酿成大祸。
目前,单片机正朝着高性能和多品种方向发展趋势将是进一步向着CMOS化、低功耗、小体积、大容量、高性能、低价格和外围电路内装化等几个方面发展。单片机应用的重要意义还在于,它从根本上改变了传统的控制系统设计思想和设计方法。从
5
前必须由模拟电路或数字电路实现的大部分功能,现在已能用单片机通过软件方法来实现了。这种软件代替硬件的控制技术也称为微控制技术,是传统控制技术的一次革命。
单片机经过1、2、3代的发展,正朝着多功能、高性能、低电压、低功耗、低价格、大存储容量、强I/O功能及较好的结构兼容性方向发展。其发展趋势不外乎以下几个方面:
1.多功能
单片机中尽可能地把所需要的存储器和I/O口都集成在一块芯片上,使得单片机可以实现更多的功能。比如A/D、PWM、PCA(可编程计数器阵列)、WDT(监视定时器---看家狗)、高速I/O口及计数器的捕获/比较逻辑等。
有的单片机针对某一个应用领域,集成了相关的控制设备,以减少应用系统的芯片数量。例如,有的芯片以MEG16为核心,集成了USB控制器、SMART CARD接口、MP3解码器、CAN或者I*I*C总线控制器等,LED、LCD或VFD显示驱动器也开始集成在8位单片机中。
2.高效率和高性能
为了提高执行速度和执行效率,单片机开始使用RISC、流水线和DSP的设计技术,使单片机的性能有了明显的提高,表现为:单片机的时钟频率得到提高;同样频率的单片机运行效率也有了很大的提升;由于集成度的提高,单片机的寻址能力、片内ROM(FLASH)和RAM的容量都突破了以往的数量和限制。
由于系统资源和系统复杂程度的增加,开始使用高级语言(如C语言)来开发单片机的程序。使用高级语言可以降低开发 难度,缩短开发周期,增强软件的可读性和可移植性,便于改进和扩充功能。
AVR 内核单片机具有丰富的指令集和32个通用工作寄存器。所有的寄存器都直接与算逻单元(ALU) 相连接,使得一条指令可以在一个时钟周期内同时访问两个独立的寄存器。这种结构大大提高了代码效率,并且具有比普通的CISC 微控制器最高至10 倍的数据吞吐率。ATmega16L 有如下特点:
.16K字节的系统内可编程Flash(具有同时读写的能力,即RWW); .512字节EEPROM,1K 字节SRAM; .32 个通用I/O 口线;
.32 个通用工作寄存器;
.用于边界扫描的JTAG 接口,支持片内调试与编程; .三个具有比较模式的灵活的定时器/ 计数器(T/C); .片内/外中断,片内经过标定的RC 振荡器;
.可编程串行USART,有起始条件检测器的通用串行接口;
6
.8路10位具有可选差分输入级可编程增益(TQFP 封装) 的ADC; .具有片内振荡器的可编程看门狗定时器; .一个SPI 串行端口;
.四通道PWM,两路8位,两路16位;
.六个可以通过软件进行选择的省电模式:空闲模式、ADC 噪声抑制模式、省电模式、掉电模式、Standby 模式以及扩展的Standby 模式;
.速度等级:0 - 8 MHz; .工作电压:2.7 - 5.5V;
.工作于空闲模式时CPU 停止工作,而USART、两线接口、A/D 转换器、SRAM、T/C、SPI 端口以及中断系统继续工作;
.掉电模式时晶体振荡器停止振荡,所有功能除了中断和硬件复位之外都停止工作;
.在省电模式下,异步定时器继续运行,允许用户保持一个时间基准,而其余功能模块处于休眠状态;
.ADC 噪声抑制模式时终止CPU 和除了异步定时器与ADC 以外所有I/O 模块的工作,以降低ADC 转换时的开关噪声;
.Standby 模式下只有晶体或谐振振荡器运行,其余功能模块处于休眠状态,使得器件只消耗极少的电流,同时具有快速启动能力;
扩展Standby 模式下则允许振荡器和异步定时器继续工作。
本芯片是以Atmel 高密度非易失性存储器技术生产的。片内ISP Flash 允许程序存储器通过ISP 串行接口,或者通用编程器进行编程,也可以通过运行于AVR 内核之中的引导程序进行编程。引导程序可以使用任意接口将应用程序下载到应用Flash存储区(Application Flash Memory)。在更新应用Flash存储区时引导Flash区(Boot Flash Memory)的程序继续运行,实现了RWW 操作。
通过将8 位RISC CPU 与系统内可编程的Flash 集成在一个芯片内,ATmega16 成为一个功能强大的单片机,为许多嵌入式控制应用提供了灵活而低成本的解决方案。
下面是基于八位AVR单片机芯片ATMEGA16的主控系统方案: 2.2.2 ATMEG16单片机的介绍
ATMEG 16的管脚说明如图2-2所示:
7
12345678141516171819202191213PB0(XCK/T0)PB1(T1)PB2(INT2/AIN0)PB3(OC0/AIN1)PB4(SS)PB5(MOSI)PB6(MISO)PB7(SCK)PD0(RXD)PD1(TXD)PD2(INT0)PD3(INT1)PD4(OC1B)PD5(OC1A)PD6(ICP1)PD7(OC2)RESETPA0(ADC0)PA1(ADC1)PA2(ADC2)PA3(ADC3)PA4(ADC4)PA5(ADC5)PA6(ADC6)PA7(ADC7)PC0(SCL)PC1(SDA)PC2(TCK)PC3(TMS)PC4(TDO)PC5(TDI)PC6(TOSC1)PC7(TOSC2)40393837363534332223242526272829VCCXTAL2XTAL1AVCCAREFGND1030321131GNDMEG16图2-2 DIP封装 ATMEG 16单片机引脚结构图
1. VCC为数字电路的电源,GND为地。
2. 端口A(PA7-PA0)作为A/D转换器的模拟输入端,是8位双向I/O口,具有编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入使用时,若内部上拉电阻使能,端口被外部拉低时将输出电流。在复位过程中,即使系统时钟还未起振,端口A处于高阻状态。
3. 端口B(PB7-PB0)为8位双向I/O口,具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入使用时,若内部上拉电阻使能,端口被外部电路拉低时将输出电流。在复位过程中,即使系统始终还未起振,端口B处于高阻状态。端口B也可以用做其他不同的特殊功能。
4. 端口C(PC7-PC0)为8位双向I/O口,具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入使用时,若内部上拉电阻使能,端口被外部电路拉低时将输出电流。在复位过程中,即使系统始终还未起振,端口C处于高阻状态。如果JTAG接口使能,即使复位出现引脚PC5(TD1)、PC3(TMS)与PC2(TCK)的上拉电阻被激活。端口C也可以用做其他不同的特殊功能。
5. 端口D(PD7-PD0)为8位双向I/O口,具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入使用时,若内部上拉电阻使能,端口被外部电路拉低时将输出电流。在复位过程中,即使系统始终还未起振,端口D处于高阻状态。端口D也可以用做其他不同的特殊功能。
6. RESET为复位输入引脚,持续时间超过最小门限时间的低电平将引起复位。 7. XTAL1为晶振反相放大器的输入端和内部时钟操作电路的输入端。
8
8. XTAL2为晶振反相放大器的输出端。
9. AVCC是端口A与A/D转换器的电源。不使用ADC时,该引脚应该直接与Vcc连接。使用ADC时应通过一个低通滤波器与Vcc连接。
10.AREF是A/D的模拟基准输入引脚。 2.2.3 单片机的复位电路
复位是单片机的初始化操作,其作用是使CPU中的各个部件都处于一个确定的初始状态,并从这个状态开始工作。
ATmega16有5个复位源:
1. JTAG AVR复位:复位寄存器为1时MCU复位。
2. 上电复位:电源电压低于上电复位门限 VPOT时,MCU复位。 3. 看门狗复位:看门狗使能并且看门狗定时器溢出时复位发生。
4. 外部复位:引脚 RESET上的低电平持续时间大于最小脉冲宽度时MCU复位。 5. 掉电检测复位:掉电检测功能使能,且电源电压低于掉电检测电压时复位。 ATmega16单片机5个复位源中,最常用的是外部复位和看门狗复位电路。外部复位电路由外加于RESET 引脚的低电平产生。当复位低电平持续时间大于最小脉冲宽度时即触发复位过程,即使此时并没有时钟信号在运行。当外加信号达到复位门限电压VTOUT延时周期开始。延时结束后MCU即启动。外部复位时序图如图2-3所示,外部复位原理图如图2-4所示:
图 2-3 外部电路复位时序图
9
图 2-4 外部复位原理图
2.2.4 ATMEG16最小系统及晶振的选择
ATmega16芯片有如下几种通过Flash熔丝位进行选择的时钟源。时钟输入到AVR时钟发生器,再分配到相应的模块。
表2—1 熔丝配置模式 器件时钟选项 外部晶体/陶瓷振荡器
外部低频晶振 外部RC振荡器 标定的内部RC振荡器
外部时钟
CKSEL3..0 1111 – 1010
1001 1000 – 0101 0100 – 0001
0000
注:此选项不适用于晶体,只能用于陶瓷谐振器。
晶体振荡电路:XTAL1与XTAL2分别为用作片内振荡器的反向放大器的输入和输出,如图2-5所示,这个振荡器可以使用石英晶体,也可以使用陶瓷谐振器。熔丝位CKOPT用来选择这两种放大器模式的其中之一。当CKOPT被编程时振荡器在输出引脚产生满幅度的振荡。这种模式适合于噪声环境,以及需要通过XTAL2驱动第二个时钟缓冲器的情况。而且这种模式的频率范围比较宽。当保持CKOPT为未编程状态时,振荡器的输出信号幅度比较小。其优点是大大降低了功耗,但是频率范围比较窄,而且不能驱动其他时钟缓冲器。对于谐振器,CKOPT未编程时的最大频率为8 MHz,CKOPT
10
编程时为16 MHz。C1和C2的数值要一样,不管使用的是晶体还是谐振器。最佳的数值与使用的晶体或谐振器有关,还与杂散电容和环境的电磁噪声有关。为了保证系统稳定性和串口传输质量所以选用外部晶振,晶振选用7.3728M。
U116-21234516-MOSI616-MISO716-SCK8123456781415161718192021PB0 (XCK/T0)PB1 (T1)PB2 (AIN0/INT2)PB3 (AIN1/OC0)PB4 (SS)PB5 (MOSI)PB6 (MISO)PB7 (SCK)PD0 (RXD)PD1 (TXD)PD2 (INT0)PD3 (INT1)PD4 (OC1B)PD5 (OC1A)PD6 (ICP)PD7 (OC2)RESETXTAL2XTAL1PA0 (ADC0)PA1 (ADC1)PA2 (ADC2)PA3 (ADC3)PA4 (ADC4)PA5 (ADC5)PA6 (ADC6)PA7 (ADC7)PC0 (SCL)PC1 (SDA)PC2PC3PC4PC5PC6 (TOSC1)PC7 (TOSC2)VCCAVCCAREFGNDGNDATmega164039383736353433222324252627282910303231115v5v5v16-11234567816-3Header 812345678Header 816-4Header 812345678Header 816-NRSET912132C4Cap33pF18M-2C3XTALCap33pF
图 2-5 ATMEG16最小系统
2.3 液晶显示模块
显示模块采用HS12864-15C系列中文图形系列液晶模块。由控制器ST7920控制与驱动。
2.3.1 HS12864-15C系列液晶的特点
1. HS12864-15系列硬件特性如下: .提供8位,4位并行接口及传行接口可选 .自动电源启动复位功能 .内部自建振荡源
.64*16位字符显示RAM(DDRAM最多16字符*4行)
11
.2M位中文字型ROM(CGROM),总共8192个中文字型 2. HS12864-15系列软件特性如下: .文字与图形混合显示功能 .画面清除功能 .光标归位功能 .显示开/关功能 .反白显示功能 .垂直画面旋转功能 .休眠模式
2.3.2 HS12864-15C系列液晶的引脚功能
引脚PSB为芯片的传输方式控制端;引脚 E 为读写使能信号,它是在下降沿时数据被锁存入HS12864液晶的;在E高电平期间,数据被读出;R/W 为读写选择信号,当它为一时为读选通,为零时为写选通;DB0-DB7为数据总线RST为复位信号。复位信号有效时,关闭液晶显示,使显示起始行为0,RST可跟MCU连,由MCU控制;也可直接接VDD,使之不起作用。引脚功能如表2-1所示:
表2-1 HS12864-15C的引脚功能
引脚符号 PSB 状态 输入 引脚名称 数据传输方式 功能 PSB=1为并行传输;PSB=0为串行传输 在E下降沿,数据被锁存(写)入E 输入 读写使能信号 HS12864-15C;在E高电平期间,数据被读出 R/W RS DB0-DB7 输入 输入 三态 读写选择信号 数据、指令选择信号 数据总线 R/W=1为读选通,R/W=0为写选通 RS=1为数据操作 RS=0为写指令或读状态 复位信号有效时,关闭液晶显示,使显示RST 输入 复位信号 起始行为0,RST可跟MCU相连,由MCU控制;也可直接接VDD,使之不起作用。
12
2.3.3 液晶显示HS12864-15C的指令系统 1.清除显示 RS R/W 0
2.显示开/关指令 RS R/W 0 0 D7 0 D6 0 D5 0 D4 0 D3 1 D2 D D1 C D0 B 0 D7 0 D6 0 D5 0 D4 0 D3 0 D2 0 D1 0 D0 1 控制整体显示开关,游标开关,游标位置显示反白开关; D=1,整体显示开;D=0,整体显示关; C=1,游标显示开;C=0,游标显示关;
B=1,游标位置显示反白开;B=0,游标位置显示反白关;
3.读取忙状态 RS R/W 0
4.写数据 RS R/W 1 0 D7 D6 D5 D4 写数据 D3 D2 D1 D0 1 D7 BF D6 A6 D5 A5 D4 A4 D3 A3 D2 A2 D1 A1 D0 A0 读取忙状态以确定内部动作是否完成,同时可以读出地址计数器AC的值
读、写数据指令每执行完一次读、写操作,列地址就自动增一,必须注意的是,进行读操作之前,必须有一次空读操作,紧接着再读才会读出所要读的单元中的数据。 5.读数据 RS R/W 1 1 D7 D6 D5 D4 D3 D2 D1 D0 读 显 示 数 据 读、写数据指令每执行完一次读、写操作,列地址就自动增一,必须注意的是,进行读操作之前,必须有一次空读操作,紧接着再读才会读出所要读的单元中的数据。
2.4 电源和指纹模块
指纹模块采用深圳市指昂科技有限公司生产的ZAZ-010系列独立式指纹识别模块,以高速DSP处理器为核心。主要技术指标如下
13
供电电压:DC 3.6-6.0V
供电电流:工作电流:100mA(典型值)
峰值电流:150mA
指纹图像录入时间:<0.5 秒 窗口面积: 14 *18 mm 匹配方式: 比对方式(1:1) 搜索方式(1:N) 特征文件: 256 字节 模板文件: 512 字节 存储容量: 100枚
安全等级: 五级(从低到高:1、2、3、4、5) 认假率(FAR):<0.001% 拒真率(FRR):<0.1%
搜索时间: <1.0 秒 (1:1000 时,均值) 上位机接口: UART(TTL 逻辑电平) 通讯波特率(UART): (9600*N)bps 其中N=1~12 (默认值N=6,即57600bps) 2.4.1 ZAZ-010系列独立式指纹识别模块引脚功能
模块中引脚1与电源相连,引脚2接单片机的RXD端,引脚3接单片机的TXD端,引脚4悬空,引脚5接地。表2-2如下:
表2-2指纹识别模块引脚功能 引脚名称 号 1 2 3 4 5 Vin TD RD NC GND 类型 功能描述 in out in - -
电源正输入端 串行数据输出。TTL 逻辑电平 串行数据输入。TTL 逻辑电平 未定义,悬空。 信号地。内部与电源地连接
14
2.4.2 ZAZ-010系列指纹识别模块指令系统
模块通过串行通讯接口,可直接与采用3.3v或者5v电源的单片机进行通讯。模块数据发送端接上位机接收端,模块数据接收脚接上位机数据发送端。
录入指纹图像指令: 指令包格式: 2bytes 包头 0xEF01 2bytes 包头 0xEF01 4bytes 模块地址 Xxxx 4bytes 模块地址 Xxxx 1 byte 包标识 01H 1 byte 包标识 07H 2 bytes 包长度 03H 2 bytes 包长度 03H 1 byte 指令码 01H 1 byte 确认码 xxH 2bytes 校验和 05H 2bytes 校验和 SUM 应答包格式: 注:确认码=00H 表示录入成功; 确认码=01H 表示收包有错; 确认码=02H 表示传感器上无手指; 确认码=03H 表示录入不成功;
图像生成特征 Img2Tz指令: 指令包格式: 2bytes 包头 0xEF01 4bytes 模块包标识 地址 Xxxx 01H 04H 02H 包长度 指令码 缓冲区校验和 号 BufferID 应答包格式: 2bytes 包头 0xEF01 4bytes 模块地址 Xxxx 1 byte 包标识 07H 2 bytes 包长度 03H 1 byte 确认码 xxH 2bytes 校验和 SUM SUM 1 byte 2 bytes 1 byte 1 byte 2 bytes 注:确认码=00H 表示生成特征成功; 确认码=01H 表示收包有错;
确认码=06H 表示指纹图像太乱而生不成特征;
15
确认码=07H 表示指纹图像正常,但特征点太少而生不成特征; 确认码=15H 表示图像缓冲区内没有有效原始图而生不成图像;
特征合成模板RegMode1指令:
功能说明:将CharBuffer1与CharBuffer2中的特征文件合成特征模板。 指令包格式: 2bytes 包头 0xEF01 2bytes 包头 0xEF01 4bytes 模块地址 Xxxx 4bytes 模块地址 Xxxx 1 byte 包标识 01H 1 byte 包标识 07H 2 bytes 包长度 03H 2 bytes 包长度 03H 1 byte 指令码 05H 1 byte 确认码 xxH 2bytes 校验和 09H 2bytes 校验和 SUM 应答包格式: 注:确认码=00H 表示合并成功; 确认码=01H 表示收包有错;
确认码=0aH 表示合并失败(两枚指纹不属于同一手指);
存储模板 Store指令: 指令包格式: 2bytes 4bytes 1byte 2 bytes 1 byte 1 byte 包头 模块地包标包长度 址 0xEF01 Xxxx 应答包格式: 2bytes 包头 0xEF01 4bytes 模块地址 Xxxx 1 byte 包标识 07H 2 bytes 包长度 03H 1 byte 确认码 xxH 2bytes 校验和 SUM 识 01H 06H 2 bytes 指令缓冲区号 位置号 校验和 码 06H BufferID PageID SUM 2bytes 注:确认码=00H 表示储存成功; 确认码=01H 表示收包有错;
16
搜索指纹Search指令: 指令包格式: 2bytes 4bytes 包头 地址 0xEF01 Xxxx 应答包格式: 2bytes 4bytes 1byte 包头 址 0xEF01 Xxxx 07H 07H xxH SUM 注:确认码=00H 表示搜索到; 确认码=09H 表示没有搜索; 2.4.3 电源模块
电源模块可以直接提供正5V的直流电压,但是由于在一些工业环境中并不提供直流电源,而都是交流电源,为确保其实用性,在电源这一部分,提供了整流稳压电路,可以把交流电压变成5V的电压,为整个电路板提供电源。
从图2-6可以看出,当开关按下时,电路接通,先通过一个整流电路,使交流电压变成直流电压。为了保证其输出的电压是5V,在后面接一个稳压电路,由一个7805稳压器和一个发光二极管组成,发光二极管作为电源导通的指示灯。当电源导通时二极管发光。其中电容C1起滤波作用,电容C2是抑制高平信号。电容C3, C4直接接地,起到抗干扰的作用,能使电压稳定在5V。有了电源模块避免了因没有直流电源而无法使用的问题,使这个仪表能够在更多的环境中使用。电源模块电路图如图2-6所示:
1byte 识 01H 2bytes 度 08H 1byte 1byte 2bytes 2bytes 参数 2bytes 校验和 模块包标包长指令码 04H 缓冲区参数 号 ID StarPage PageNum SUM 2bytes 1byte 2bytes 2bytes 2bytes 得分 校验和 模块地包标识 包长度 确认码 页码 17
23JV11C12GND
VCCVout3D_2Diode 1N40071Diode 1N4007VinD_4U37805
S1
SW-DPDTJ1图 2-6 电源模块电路图
D_1Diode 1N4007Diode 1N4007D_3470uC20.1uDS1R20VCCLED11K18
PWR2.5C30.1uC40.1u
3 系统软件的设计
3.1 系统程序工作分析
在本文的电路板中,单片机是作为控制器嵌入到系统中。应用程序的开发主要分为两大部分,即对ZAZ-010指纹识别模块的的应用程序开发以及对HS12864液晶、按键程序的开发。因此,要实现其应用,需要对其进行联合调试。电路软件应用开发根据所设计的硬件。程序开发的方式将主要建立一系列的C语言函数子程序供主程序的随时调用。即对ZAZ-010指纹识别模块或液晶电路分别编制C语言函数子程序。因此,需要有专门的开发工具。本设计中,采用AVRStudio4.0单片机软件开发环境对单片机进行编程,由于该编译器支持模块化程序设计,因此可以先将源程序划分为几个模块分别编写,然后再由编译器生成一个最终文件. 该开发环境可以对程序进行软件仿真调试,因此可以方便地进行程序的编写和调试。调试通过的代码文件通过开发板下载到单片机。单片机在上电后,主程序应该完成相应的初始化工作。依据电路的功能要求,主程序必须对液晶初始化、同时对按键进行检测,如果有对应的按键按下。执行相应的操作,单片机通过串行接口对指纹模块进行读写。
3.2 设计前准备工作
由于使用串口和模块通讯,所以必须先约定好单片机和模块的的串口工作速度和数据包格式。
UART数据格式定位为:8位数据位、1位停止位、无奇偶校验位,数据传输速率为57600bps。
通讯数据包格式定义为:
单片机发送串行数据包格式如图3-1 MCU发送数据包格式 D7 D6 D5 D4 D3 D2 D1 D0 发送数据共11-14个字节,前6个字节是模块的包头和模块地址为固定值,后5-8个字节是传输的模块的命令。同时根据外部晶振和系统默认的传输速率算出控制串口的各寄存器的初始值。参考meg16资料后编写了以下一段串口初始化。
各寄存器设置的程序.
如下面的一段程序既是对个寄存器的初始值的设置 void UART_Init(void) {
UCSRB=0x00;//disable while setting baud rate
19
UCSRA=0x00;//Bit1为1则倍速发送 UCSRC=0x06;
UBRRL=0x07;//波特率:57600Bps UBRRH=0x00;//误差率:0.000% UCSRB=0x18; }
注:选用外部7.3728M晶振.
3.3 单片机的程序设计
根据上节分析,制定如下图的程序流程图。主程序主要由液晶显示、通讯子、按键程序组成。主程序的工作流程描述如下:首先初始化各种硬件功能模块进行初始化。包括开机液晶显示、键盘扫描、指纹模块建立通信。
主程序设计流程如图3-1所示:
20
开 始 各模块初始化 N 扫描是否有按键按下 Y 判断键值 Y 按键1 按键2 Y Y 按键3 Y 按键4 采集指纹1 采集指纹2 显示与已经存储的指纹的比对效果 合成指纹模板存储 显示与新存储的指纹数据的比对结果
程序的巡检过程: 首先对各模块进行初始化,检测在有无按键按下,如果按下判断是那一个按键,并作出判断是否调用相应子程序;当按键1按下后,调用通信模块子程序,录入指纹并将其存入模块缓冲区,同理当按键2按下后,效果相同。
图3-1主程序流程图
21
依次当按键3按下时,将指纹模块两缓冲区中的指纹特征文件合成特征模板并存储与指纹模板库中,当4按键按下后搜索指纹并比对.当指纹模块中有指纹存储时直接按4键同样也可进行比对。
程序关键的就是对指纹模块的通信控制, 考虑到处理过程太过冗长,限于篇幅只能将其省略,如需查看,可以看附录1。其它命令发送子函数因大部分的命令大体格式基本相同。
3.3.1 键盘管理程序设计流程
键盘模块的工作流程图如图3-2所示:
有按键被按下延时消除抖动N是否有按键Y进行按键分析认为是干扰信号,返回主程序转入该键值定义的执行指令子程序执行程序后,返回主程序等待再次按键 图 3-2 键盘模块流程图 3.3.2 LCD显示模块程序设计流程
显示模块主要完成数据的显示功能。首先当模块接受指令前,单片机必须确认模块内部处于非忙碌状态,然后根据接受到指令显示相关的内容在屏幕上。
22
3.3.3 指纹通信模块的程序设计流程
串口通信数据发送、接收流程图如图3-3:
开始 串口初始化 N 检测发送缓冲区是否为空 Y 等 待 继续发送
图3-3 串口通信数据发送、接收流程图
23
附录1:串口调试子程序
串口调试子程序
#include #include
unsigned char FP_Pack_Head[6] = {0xEF,0x01,0xFF,0xFF,0xFF,0xFF}; //协议包头
unsigned char FP_Get_Img[6] = {0x01,0x00,0x03,0x01,0x0,0x05}; //获得指纹图像
unsigned char a[6] ={}; unsigned char b[6] ={}; //初始化 UART 子程序 void UART_Init(void) {
UCSRB = 0x00; //disable while setting baud rate UCSRA = 0x00; //Bit1为1则倍速发送 UCSRC = 0x06;
UBRRL = 0x07; //波特率:57600 Bps UBRRH = 0x00; //误差率:0.000% UCSRB = 0x18; }
//发送一个位
void UART_Send_Byte(unsigned char ucData) {
while(!(UCSRA&(1< unsigned char UART_Receive_Byte(void) { 29 while(!(UCSRA & ( 1< return UDR; } //_获得指纹图像命令 void Cmd_Get_Img(void) { unsigned char i; for(i=0;i<6;i++) UART_Send_Byte(FP_Pack_Head[i]); for(i=0;i<6;i++) UART_Send_Byte(FP_Get_Img[i]); for(i=0;i<6;i++) //发送包头 a[i] =UART_Receive_Byte(); for(i=0;i<6;i++) //发送命令 0x1d b[i] = UART_Receive_Byte(); for(i=0;i<6;i++) UART_Send_Byte(a[i]); for(i=0;i<6;i++) UART_Send_Byte(b[i]); } int main() { UART_Init(); Cmd_Get_Img(); } 30 附录2:整体源程序 整体源程序 #include #include //#include #define uchar unsigned char #define uint unsigned int #define key1 0x01 #define key2 0x02 #define key3 0x04 #define key4 0x08 static uchar k=0; uchar name00[]={\ %uchar name01[]={\ 欢迎使用 %uchar name02[]={\单片机指纹密码锁%uchar name03[]={\ %uchar name04[]={\ 指纹采集开始 %uchar name05[]={\ 指纹对比开始 %uchar name06[]={\ 指纹存储开始 %uchar name07[]={\ 一次采集 %uchar name08[]={\ 二次采集 %uchar name09[]={\ 录入成功 %uchar name10[]={\ 录入失败 %uchar name11[]={\ 收包有错 %uchar name12[]={\传感器上无手指 %uchar name13[]={\ 生成特征成功 %uchar name14[]={\图想乱生不成特征%uchar name15[]={\图象正常特征点少%uchar name16[]={\指纹模板合并成功%uchar name17[]={\指纹模板合并失败\ 31 uchar name18[]={\ 非同一手指 %uchar name19[]={\ 存储成功 %uchar name20[]={\ 写指纹库出错 %uchar name21[]={\ 指纹匹配 %uchar name22[]={\ 指纹不匹配 %uchar name23[]={\ 密码正确 %uchar name24[]={\ 密码不正确 %uchar FP_1[6]={}; uchar FP_2[6]={}; uchar FP_Pack_Head[6]={0xEF,0x01,0xFF,0xFF,0xFF,0xFF}; //协议包头 uchar FP_Get_Img[6]={0x01,0x00,0x03,0x01,0x0,0x05}; //获得指纹图像 uchar FP_Search_0_9[11]={0x01,0x0,0x08,0x04,0x01,0x0,0x0,0x0,0x13,0x0,0x21}; //搜索0-9号指纹 uchar FP_Img_To_Buffer1[7]={0x01,0x0,0x04,0x02,0x01,0x0,0x08}; //将图像放入到BUFFER1 uchar FP_Img_To_Buffer2[7]={0x01,0x0,0x04,0x02,0x02,0x0,0x09}; //将图像放入到BUFFER2 uchar FP_Reg_Model[6]={0x01,0x0,0x03,0x05,0x0,0x09}; //将BUFFER1跟BUFFER2合成特征模版 volatile uchar FP_Save_Finger1[9]={0x01,0x00,0x06,0x06,0x01,0x00,0x0B,0x00,0x19};//将BUFFER1中的特征码存放到指定的位置 volatile uchar FP_Save_Finger2[9]={0x01,0x00,0x06,0x06,0x01,0x00,0x0C,0x00,0x1A};//将BUFFER1中的特征码存放到指定的位置 volatile uchar FP_Save_Finger3[9]={0x01,0x00,0x06,0x06,0x01,0x00,0x0D,0x00,0x1B};//将BUFFER1中的特征码存放到指定的位置 uchar yb=0x80; //初始化 UART 子程序 void UART_Init(void) { UCSRB = 0x00; //disable while setting baud rate UCSRA = 0x00; //Bit1为1则倍速发送 32 UCSRC = 0x06; //传送一桢数据位为8位 UBRRL = 0x07; //波特率:57600 Bps UBRRH = 0x00; //误差率:0.000% UCSRB = 0x18; } //发送八位数据 void UART_Send_Byte( uchar ucData) { while(!(UCSRA&(1< //接收八位数据 uchar UART_Receive_Byte(void) { while(!(UCSRA&(1< //_获得指纹图像命令 void Cmd_Get_Img(void) { uchar i,j; for(i=0;i<6;i++) //发送包头与模块地址 UART_Send_Byte(FP_Pack_Head[i]); for(i=0;i<6;i++) //发送命令 0x1d UART_Send_Byte(FP_Get_Img[i]); for(i=0;i<6;i++) FP_1[i]=UART_Receive_Byte(); for(i=0;i<6;i++) FP_2[i]=UART_Receive_Byte(); j=FP_2[3]; 33 if (j==0x00) {_delay_ms(100000); reset (); display6();} if (j==0x01) {reset(); wr_com(yb); outChinese(0x90,8,name11);} if (j==0x02) {_delay_ms(100000); reset(); display7();} if (j==0x03) { reset(); wr_com(yb); outChinese(0x90,8,name10);} } //讲图像转换成特征码存放在Buffer1中 void Cmd_Img_To_Buffer1(void) { uchar i,j; { UART_Send_Byte(FP_Pack_Head[i]); } for(i=0;i<7;i++) //发送命令 将图像转换成 特征码 存放在 for(i=0;i<6;i++) //发送包头与模块地址 CHAR_buffer1 { UART_Send_Byte(FP_Img_To_Buffer1[i]); } for(i=0;i<6;i++) { FP_1[i]=UART_Receive_Byte();} 34 for(i=0;i<6;i++) { FP_2[i]=UART_Receive_Byte();} j=FP_2[3]; if (j==0x00) {_delay_ms(100000); reset (); display8();} if (j==0x06) {_delay_ms(100000); reset (); display9();} if (j==0x07) {_delay_ms(100000); reset (); display10();} } //将图像转换成特征码存放在Buffer2中 void Cmd_Img_To_Buffer2(void) { uchar i,j; for(i=0;i<6;i++) //发送包头 { UART_Send_Byte(FP_Pack_Head[i]); } for(i=0;i<7;i++) //发送命令 将图像转换成 特征码 存放在 CHAR_buffer2 { UART_Send_Byte(FP_Img_To_Buffer2[i]); } for(i=0;i<6;i++) { FP_1[i]=UART_Receive_Byte();} 35 for(i=0;i<6;i++) { FP_2[i]=UART_Receive_Byte();} j=FP_2[3]; if (j==0x00) {_delay_ms(100000); reset (); display8();} if (j==0x06) {_delay_ms(100000); reset (); display9();} if (j==0x07) {_delay_ms(100000); reset (); display10();} } //将BUFFER1 跟 BUFFER2 中的特征码合并成指纹模版 void Cmd_Reg_Model(void) { uchar i,j; for(i=0;i<6;i++) //发送包头与模块地址 { UART_Send_Byte(FP_Pack_Head[i]); } for(i=0;i<6;i++) //命令合并指纹模版 { UART_Send_Byte(FP_Reg_Model[i]); } for(i=0;i<6;i++) { 36 FP_1[i]=UART_Receive_Byte();} for(i=0;i<6;i++) FP_2[i]=UART_Receive_Byte(); } j=FP_2[3]; { if (j==0x00) {_delay_ms(400000); reset (); display11();} if (j==0x0a) {_delay_ms(400000); reset (); display12(); } //将并成后的指纹模版存储到指纹模块flash模板库中 void Store_Char_Model(void) { uchar i,j; for(i=0;i<6;i++) //发送包头与模块地址 { UART_Send_Byte(FP_Pack_Head[i]); } if(k==0) { for(i=0;i<9;i++) //命令存储指纹模版 { UART_Send_Byte( FP_Save_Finger1[i] ); } } while(1);} if(k==1) 37 { for(i=0;i<9;i++) //命令存储指纹模版 { UART_Send_Byte( FP_Save_Finger2[i] ); } } if(k==2) { for(i=0;i<9;i++) //命令存储指纹模版 { UART_Send_Byte( FP_Save_Finger3[i] ); } for(i=0;i<6;i++) { if(j==0x00) {_delay_ms(400000); reset (); display13();} if(j==0x18) {_delay_ms(300000); reset (); display14();} } FP_1[i]=UART_Receive_Byte();} for(i=0;i<6;i++) FP_2[i]=UART_Receive_Byte(); } j=FP_2[3]; { 38
正在阅读:
AAA基于单片机的指纹识别电子密码锁的毕业设计初稿 - 图文05-12
计算机组成原理实验 proteus的应用 - 图文04-03
小学六年级奥数经典讲义(上) - 图文04-25
双线式集中润滑系统原理12-09
宏恩英语小天才儿歌歌词10-21
和平区2014~2015学年度第二学期八年级物理学科期中质量调查试卷07-12
最好的老师作文600字06-18
小学数学北京版五年级上册 六 数学百花园《鸡兔同笼问题》优质课04-19
2022年暑假社会实践工作报告05-02
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 密码锁
- 指纹识别
- 初稿
- 毕业设计
- 单片机
- 基于
- 图文
- 电子
- AAA
- 2009年中考物理考前指导(含知识点总结)
- 2012年北京朝阳区高考二模考试题及答案(理科全套试题)
- 人教版小学六年级数学总复习资料
- Android教案
- (石大博士论文)20万吨固定床FCC轻汽油醚化装置设计
- 美的集团-财务报表分析
- 中考化学压轴题(90题)
- 医学心理学试题及参考答案tjmu
- 金融学复习题及部分参考答案
- 自考00403_学前儿童家庭教育历年试题和答案共十多套
- 智能计算:神经网络
- 2012-2013初中英语教研组工作总结
- 国有企业作为LP GP的相关问题
- 华科 材料成型原理 第一部分 液态金属凝固学答案
- 某县土地整治项目
- 基于JSP的人力资源管理系统设计与实现论文
- 桩基工程技术交底(旋挖钻孔桩) - 图文
- 75t循环流化床锅炉详细参数说明书
- 安全文明施工标准化实施方案策划
- ZigBee芯片厂商及应用前景分析