基于单片机的指纹密码锁系统论文

更新时间:2024-04-27 04:04:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

大学本科生毕业设计(论文)

[请输入学校名称] [请输入专业]

基于单片机的指纹解锁设计

姓 名: [请输入姓名] 学 号: [请输入学号] 指导教师:[请输入指导教师]

2019年7月9日

1

大学本科生毕业设计(论文) 摘 要

近年来,指纹识别技术在国内外发展很快,由于其良好的安全性目前该技术已被广泛应用于

随着成本的下降,指纹识别技术呈现全面推广和普遍应用的趋势。

指纹识别技术是目前国际公认的应用广泛、价格低廉、易用性高的生物人证技术。指纹只是人体皮肤的一小部分,但是它却蕴涵了大量的信息。皮肤的纹路在图案断点交叉点是个不相同的。医学上已经证明这些特征对于每个手指都是不同的,而且这些特征具有唯一性和永久性。因此我们就可以把一个人同他的指纹对应起来,通过比较他的指纹特征和预先保存的指纹特征,就可以验证他的真实身份。

本设计开发了一款基于单片机的指纹识别电子密码锁系统。该系统以STC89C52单片机作为模块核心,通过串口通信控制FM608指纹模块实现录取指纹并存储指纹数据,并通过HS12864-15C液晶显示比对流程及比对结果,辅以直流继电器与发光二极管模拟开锁的动作。本系统具有体积小、性价比高、传输速度快、适合家庭及单位使用。

关键词:单片机;指纹识别;液晶屏

2

大学本科生毕业设计(论文) ABSTRACT

In recent years, fingerprint identification technology has developed rapidly in China and abroad, because of its good security now that the technology has been widely used in daily life and work. With the decline in the cost of the fingerprint recognition technology and the comprehensive promotion and general trends should be.

Fingerprint recognition technology is a technology of biology-authentication widely used and legalized in international today because of its low-price and finer application. Fingerprint just is a small part of the skin, but it contains a great deal of information .The veins of the skin are different in pattern and cross point and break point. Medicine has proven that these characteristics are different for each finger and these characteristics are unique and permanent. So we can put a person's fingerprints correspond with him by comparing his fingerprint characteristics and pre-stored fingerprint features, you can verify his true identity.

The system design of fingerprint recognition electron password lock based on Single-chip microprocessor is developed in the thesis. The system STC89C52 MCU as the core module, through the serial communication control FM608 fingerprint module for taking fingerprints and store fingerprint data and liquid crystal display by HS12864-15C ratio than on the processes and results, supported by simulation of DC relays and LEDs unlock action. The system is small, cost-effective, and fast and suitable for families and units.

Key Words:Single-chip microprocessor; fingerprint detection; LCD

3

大学本科生毕业设计(论文) 第1章 概述 ........................................................ 6

1.1 指纹识别技术的发展 .................................................................................. 6 1.2 指纹识别原理 .............................................................................................. 7 1.3 系统设计目的及意义 .................................................................................. 8 1.4 工作流程 ...................................................................................................... 8

第2章 硬件介绍和设计 .............................................. 10

2.1 单片机及最小系统 .................................................................................... 10 2.1.1 STC89C52单片机介绍 ................................................................. 10

2.1.2 外部晶振的设计 ........................................................................... 13 2.1.3 复位电路的设计 ........................................................................... 14 2.2 液晶显示模块 ............................................................................................ 15 2.2.1 12864系列液晶的引脚功能 ......................................................... 15 2.2.2 控制器接口说明 ........................................................................... 15 2.2.3 指令说明 ....................................................................................... 16 2.2.4 12864引脚与单片机连接图 ......................................................... 21 2.3 按键控制部分电路 .................................................................................... 23 2.4 指纹模块 .................................................................................................... 24 2.4.1 指纹模块简介 ............................................................................... 24 2.4.2 指纹模块引脚接法 ....................................................................... 26 2.4.3 指纹模块命令 ............................................................................... 27 2.5 本章小结 .................................................................................................... 29

第3章 系统软件的设计 .............................................. 30

3.1 系统程序工作分析 .................................................................................... 30 3.2 串口初始化 ................................................................................................ 30 3.3 主程序流程图 ............................................................................................ 31 3.3.1键盘管理程序设计流程 ................................................................ 32

3.3.2 LCD显示模块程序设计流程 ....................................................... 34 3.3.3 指纹模块的通信程序设计流程 ................................................... 34 3.4 Keil编程 ..................................................................................................... 35 3.5 本章小结 .................................................................................................... 36

第4章 硬件调试 .................................................... 37

4.1 电路的焊接 ................................................................................................ 37 4.2 程序的烧写 ................................................................................................ 38 4.3 小灯、继电器的调试 ................................................................................ 39 4.4 液晶的调试 ................................................................................................ 39

4

大学本科生毕业设计(论文) 4.5 本章小结 .................................................................................................... 40

结 论 ............................................................. 41 参考文献 .......................................................... 42 致 谢 ............................................................. 43

5

大学本科生毕业设计(论文) 第1章 概述

1.1 指纹识别技术的发展

世界上任何一种物体与物质都有其表示自己特征的符号和信息,人体也不例外,取一根头发丝就能鉴别出它是谁的头发。然而,最简单、最直观、最常用的鉴别符号则是人的指纹。

指纹是人类手指上的条状纹路,他们的形成依赖于胚胎发育时的环境。指纹识别已经有了很长一段历史,据考古学家证实:公元前6000年以前,指纹作为身份鉴别的工具已经在古叙利亚和中国开始应用。到了20世纪80年代,个人电脑、光学扫描这两项技术的革新,是的他们作为指纹取像的工具成为现实,从而使指纹识别可以在其他领域中得以应用。现在,随着取像设备的引人及其飞速发展,

[1]

生物指纹识别技术的逐渐成熟,可靠的比对算法的发现都为指纹识别技术提供了更广阔的舞台。目前,全球范围内都建立了指纹鉴定机构以及罪犯指纹数据库,指纹鉴定已经被官方所接受,成为司法部门一种有效身份鉴定手段。

据统计,在全世界50亿人口当中,除了19名生来就没长指纹的特殊人物之外,没有一个重样的指纹,所以世界各国的警察机关都利用指纹鉴别技术来侦破案件。有人把人的指纹称之为“人体的立体印章”,而公安人员正是利用这些立体印章来作为认定作案分子的特征符号。

由于人体的身体特征具有不可复制的特点,人们把目光转向了生物识别技术,希望可以藉此技术来应付现行系统安全所面临的挑战。要把人体的特征用于身份识别,这些特征必须具有唯一性和稳定性。研究和经验表明,人的指纹、掌纹、面孔、发音、虹膜、视网膜、骨架等都具有唯一性和稳定性的特征,即每个人的这些特征都与别人不同、且终生不变,因此就可以据此识别出人的身份。基于这

[2]

些特征,人们发展了指纹识别、面部识别、发音识别等多种生物识别技术,目前许多技术都已经成熟并得以应用,其中的指纹识别技术更是生物识别技术的热点。

指纹识别技术的发展得益于现代电子集成制造技术和快速可靠算法的研究。尽管指纹只是人体皮肤的一小部分,但用于识别的数据量相当大,对这些数据进行比对也不是简单的相等与不想等的问题,现代电子集成制造技术使得我们可以制造出相当小的指纹图像读取设备,同时飞速发展的个人计算机运算速度提供了在微机甚至单片机上可以进行两个指纹的比对运算的可能。另外,匹配算法可靠性也不断提高,指纹识别技术已经非常实用。

[3]

6

大学本科生毕业设计(论文) 1.2 指纹识别原理

手指表面皮肤凹凸不平而产生的纹路就是指纹。理想的指纹图像是一幅黑白相间的二值图像。但是由于指纹通常是用按压的方式得到的,因此,油墨、纸张、手指的状况以及皮肤的变形等原因都会导致指纹图像不理想。另外,通过扫描仪或者摄像机进行数字化的时候,由于光照的影响,也会引入各种噪声。这些因素都使灰度图像不能直接用来匹配。因此,有必要选择合适的特征来描述指纹征来描述指纹。

[4]

通常采用的结构特征有2种层次:

1)全局特征。所描述的是指纹的全局纹路结构,如图1-1所示,利用计算机处理时具体划分为:弓型、箕型、螺旋型。其他的指纹图案都基于这3种基本图案。

图1-1 指纹基本纹路图案

2)局部特征。断点和分叉是最常用的指纹局部结构特征,也称为细节特征。采用这种特征的一个例子是细节—坐标模型,也就是使用指纹的细节点及其坐标和其他一些特征来描述指纹。

对于指纹身份鉴定,特别是对现场的模糊指纹进行认定的时候所使用的信息是细节特征点,如图1-2中的小桥、三角点、分叉点、端点和环。

7

大学本科生毕业设计(论文) 图1-2 指纹图像

人们根据纹路的局部结构特征共定义了150多种细节特征,如果同时使用所有的这些特征,将很难自动而且迅速地从指纹图像中提取并且区分他们。通常,自动指纹鉴定系统只使用其中2种主要的特征,即分叉点和断点。其他细节特征都可以用他们的组合来表示。例如小桥是由2个端点组成的,而环是由2个分叉点组成的。

1.3 系统设计目的及意义

现代社会越来越需要高效可靠的身份识别系统。传统的个人身份鉴别手段如口令、密码、身份证等由于其与身份人的可分离性,可假冒、可伪造、可盗用、可破译,已不能完全满足现代社会经济活动和社会安全防范的需要。作为最传统、最成熟的生物鉴定方式,指纹具有很强的相对稳定性。从胎儿在6个月时指纹完全形成到人死后尸体腐烂,指纹的纹线类型、结构、统计特征的总体分布等始终没有明显变化,并且指纹具有明显的独特性。至今还找不出两个指纹完全相同的人,即使同卵双胞胎的指纹也是不相同的。而从易用性、安全性、成熟性和造价等方面综合比较,指纹识别技术将成为未来人体生理特征身份识别技术的主流之一,指纹自动识别技术开创了个人身份鉴别的新时代,将来我们生活的很多场合都要用到指纹,指纹使我们的生活更方便、安全。

[5]

而以单片机为控制器的技术以发展的非常熟练,因为它的控制性能和可靠性能高的优点,生活中的电子产品都离不开单片机控制,像电饭煲,洗衣机,汽车等等都是单片机控制。在学习了单片机基础知识后,我们需要实践来把所学的知识组织起来,并且运用到实际生活,所以我联系指纹识别技术及单片机原理及应用选择基于单片机的指纹识别系统这个课题,希望我设计的实物可以完成简单的身份认证任务,给身份认证带来便利。

1.4 工作流程

1)开机:按下电源,电源指示灯点亮,液晶显示:“请先按键再刷指纹”,按下按键后,液晶显示:“请按指纹”,同时指纹模块绿灯亮起,可以进行指纹识别开锁功能。若指纹识别成功,继电器动作,LED指示灯亮起,开锁成功,人员可以进入,液晶显示:“门已打开,编号为XXX”; 若指纹识别不成功,继电器不动作,LED指示灯不亮,将不能开锁,人员不能进入,液晶显示:“没有搜索到指纹 请重新按下手指”。

2)管理员模式:按下按键进入管理员模式首先要输入6位密码,密码正确可以进入管理员模式,密码错误不能进入管理员模式,在管理员模式下可以完成录入指纹、删除指纹、应急开锁和修改密码的功能。进入录入指纹模式后,指纹模

8

大学本科生毕业设计(论文) 块绿灯亮起,将手指放到指纹头上,录入同一手指两次,此时液晶显示“指纹采集成功”。在删除指纹模式下,液晶显示“输入删去的指纹号”,输入后按确认键即可完成指定指纹的删除功能,同时液晶显示“删指纹号成功”。在非正常的情况下,如指纹模块不好用或者紧急情况下,可以使用紧急开锁功能。密码修改的功能是指可以修改并保存进入管理员的6位密码。

9

大学本科生毕业设计(论文) 第2章 硬件介绍和设计

整个系统主要分六大块,分别是单片机控制部分、指纹模块部分、AT24C02存储芯片部分、矩阵键盘部分、LCD液晶显示部分以及所驱动的继电器部分。

整体硬件框架图如下:

指纹模块LCD显示AT24C02单片机矩阵键盘2.1 单片机及最小系统

2.1.1 STC89C52单片机介绍

继电器

单片机,亦称单片微电脑或单片微型计算机。它是把中央处理器(CPU)、随机存取存储器(RAM)、只读存储器(ROM)、输入/输出端口(I/0)等主要计算机功能部件都集成在一块集成电路芯片上的微型计算机。现在可以说单片机是百花齐放的时期,世界上各大芯片制造公司都推出了自己的单片机,从8位、16位到32位,数不胜数,应有尽有,它们各具特色,互成互补,为单片机的应用提供广阔的天地。纵观单片机的发展过程,可以预示单片机的发展趋势。

[6]

MCS-51系列的8031推出时的功耗达630mW,而现在的单片机普遍都在100mW左右,随着对单片机功耗要求越来越低,现在的各个单片机制造商基本都采用了CMOS(互补金属氧化物半导体工艺)。80C51就采用了HMOS(即高密度金属氧化物半导体工艺)和CHMOS(互补高密度金属氧化物半导体工艺)。

现在常规的单片机普遍都是将中央处理器(CPU)、随机存取数据存储(RAM)、只读程序存储器(ROM)、并行和串行通信接口,中断系统、定时电路、时钟电路集成在一块单一的芯片上,增强型的单片机集成了如A/D转换器、PMW(脉宽

10

大学本科生毕业设计(论文) 调制电路)、WDT(看门狗)、有些单片机将LCD(液晶)驱动电路都集成在单一的芯片上,这样单片机包含的单元电路就更多,功能就越强大。

[7]

STC89C52RC单片机是宏晶科技推出的新一代高速、低功耗、超强抗干扰的单片机,指令代码完全兼容传统8051单片机,12时钟/机器周期和6时钟/机器周期可以任意选择。

主要特性如下:

增强型8051单片机,6时钟/机器周期和12时钟/机器周期可以任意选择,指令代码完全兼容传统8051。

工作电压:5.5V~3.3V(5V单片机)/3.8V~2.0V(3V单片机)

工作频率范围:0~40MHz,相当于普通8051的0~80MHz,实际工作频率可达48MHz

用户应用程序空间为8K字节 片上集成512字节RAM

通用I/O口(32个),复位后为:P1/P2/P3/P4是准双向口/弱上拉,P0口是漏极开路输出,作为总线扩展用时,不用加上拉电阻,作为I/O口用时,需加上拉电阻。

ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器,无需专用仿真器,可通过串口(RXD/P3.0,TXD/P3.1)直接下载用户程序,数秒即可完成一片

具有EEPROM功能 具有看门狗功能

共3个16位定时器/计数器。即定时器T0、T1、T2

外部中断4路,下降沿中断或低电平触发电路,Power Down模式可由外部中断低电平触发中断方式唤醒

通用异步串行口(UART),还可用定时器软件实现多个UART 工作温度范围:-40~+85℃(工业级)/0~75℃(商业级) PDIP封装

STC89C52RC单片机的工作模式

掉电模式:典型功耗<0.1μA,可由外部中断唤醒,中断返回后,继续执行原程序

空闲模式:典型功耗2mA

正常工作模式:典型功耗4mA~7mA

掉电模式可由外部中断唤醒,适用于水表、气表等电池供电系统及便携设备 下图2-1为STC89C52RC引脚功能说明。

11

大学本科生毕业设计(论文)

图2-1 STC89C52引脚图

VCC(40引脚):电源电压 VSS(20引脚):接地

P0口:为8位准双向I/O接口,它的每一位都可以分别定义为输入线或输出线(作为输入时,口锁存器必须置1),可启动4个TTL负载。

P1口:为8位准双向I/O接口,它的每一位都可以分别定义为输入线或输出线(作为输入时,口锁存器必须置1),可启动4个TTL负载。

P2口:为8位准双向I/O接口,当它作为I/O接口使用时,可直接连接外部I/O设备;在接有片外存储器或扩展I/O且寻址范围超过256字节时,P2口可用做高8位的地址总线。

P3口:为8位准双向I/O接口,还可以将每一位用于第二功能,第二功能的定义见表2-1。

表2-1 STC89C52 P3口的第二功能

端口功能 P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 第二功能 RXD(串行输入口) TXD(串行输入口) INT/0(外中断0) INT/1(外中断1) T0(定时/计数器0) T0(定时/计数器1) 12

大学本科生毕业设计(论文) P3.6 P3.7 外部数据存储器写选通 外部数据存储器读选通

XTAL2:振荡器反相放大器的输出端。

XTAL1:振荡器反相放大器的及内部时钟发生器的输入端。

本设计的主程序主要由液晶显示、通讯子按键程序组成。主程序的工作流程描述如下:首先初始化各种硬件功能模块进行初始化。包括开机液晶显示、键盘扫描、指纹模块建立通信。

2.1.2 外部晶振的设计

单片机系统里都有晶振,在单片机系统里晶振作用非常大,全程叫晶体振荡器,它结合单片机内部电路产生单片机所需的时钟频率,单片机晶振提供的时钟频率越高,那么单片机运行速度就越快,单片接的一切指令的执行都是建立在单片机晶振提供的时钟频率。

在通常工作条件下,普通的晶振频率绝对精度可达百万分之五十,高级的精度更高。有些晶振还可以由外加电压在一定范围内调整频率,称为压控振荡器(VCO)。晶振用一种能把电能和机械能相互转化的晶体在共振的状态下工作,以提供稳定,精确的单频振荡。

[8]

单片机晶振的作用是为系统提供基本的时钟信号。通常一个系统共用一个晶振,便于各部分保持同步。有些通讯系统的基频和射频使用不同的晶振,而通过电子调整频率的方法保持同步。

晶振通常与锁相环电路配合使用,以提供系统所需的时钟频率。如果不同子系统需要不同频率的时钟信号,可以用与同一个晶振相连的不同锁相环来提供。

STC89C52使用11.0592MHz的晶体振荡器作为振荡源,由于单片机内部带有振荡电路,所以外部只要连接一个晶振和两个电容即可,电容容量一般在15pF至50pF之间。

STC89C52的内部有一个用于构成振荡器的高增益反相放大器,通过XTAL1,XTAL2外部接上一片作为反馈元件的晶体,与C1和C2构成了并联谐振电路,使其构成自激振荡器,电容的值具有微调的作用,我们取30PF,具体的接法如图2-2外部晶振电路。

13

大学本科生毕业设计(论文) 图2-2 外部晶振电路

STC89C52的工作频率范围在0~24MHZ。我们选用的是11.0592MHZ的晶振,振荡周期约为1us机器周期约为0.1us,所以这个晶振可以满足这个系统的要求。并且晶振不能离单片机太远,不然使用外部晶振进行软件调试时就会发现找不到信号。

2.1.3 复位电路的设计

单片机的置位和复位,都是为了把电路初始化到一个确定的状态,一般来说,单片机复位电路作用是把一个例如状态机初始化到空状态,而在单片机内部,复位的时候单片机是把一些寄存器以及存储设备装入厂商预设的一个值。

[9]

单片机复位电路原理是在单片机的复位引脚RST上外接电阻和电容,实现上电复位,当复位电平持续两个机器周期以上时复位有效。复位电平的持续时间必须大于单片机的两个机器周期。具体数值可以由RC电路计算出时间常数。

复位电路由按键复位和上电复位两部分组成。

(1)上电复位:STC89系列单片及为高电平复位,通常在复位引脚RST上连接一个电容到VCC,再连接一个电阻到GND,由此形成一个RC充放电回路保证单片机在上电时RST脚上有足够时间的高电平进行复位,随后回归到低电平进入正常工作状态,这个电阻和电容的典型值为10K和10uF。

(2)按键复位:按键复位就是在复位电容上并联一个开关,当开关按下时电容被放电、RST也被拉到高电平,而且由于电容的充电,会保持一段时间的高电平来使单片机复位。

本系统采用的复位电路如图2-3所示。单片机在上电瞬间,RC电路充电,RST引脚端出现正脉冲,只要RST端保持两个机器周期以上的高电平,就能使单片机有效复位。其中电容选10uF、电阻选10K。

图2-3 复位电路

14

大学本科生毕业设计(论文) 2.2 液晶显示模块

液晶是一种高分子材料,因为其特殊的物理、化学、光学特性,20世纪中叶开始广泛应用在轻薄型显示器上。

液晶显示器的主要原理是以电流刺激液晶分子产生点、线、面并配合背部灯管构成画面。为叙述简便,通常把各种液晶显示器都直接叫做液晶。

液晶体积小、功耗低、现实操作简单,但是它有一个致命的弱点,其使用温度范围很窄,通用型液晶正常工作温度范围为0°C~+55°C,存储温度范围为-20°C~+60°C,因此在设计相应产品时,务必要考虑周全,选取合适的液晶。

2.2.1 12864系列液晶的引脚功能

12864共有20个引脚,各引脚说明如下面表格所示。

表2-2 接口信号说明

编号 1 2 3 4 5 6 7 8 9 10 符号 VSS VDD VO RS R/W E D0 D1 D2 D3 引脚说明 电源地 电源正极 液晶显示对比度调节端 数据/命令选择端(H/L) 读/写选择端(H/L) 使能信号 Data I/O Data I/O Data I/O Data I/O 编号 11 12 13 14 15 16 17 18 19 20 符号 D4 D5 D6 D7 PSB NC RST NC A K 引脚说明 Data I/O Data I/O Data I/O Data I/O 并/串选择H并行L串行 空脚 复位,低电平有效 空脚 背光电源正极 背光电源负极 12864汉字图形点阵液晶显示模块,可显示汉字及图形,内置8192个中文汉字(16X16点阵)、128个字符(8X16点阵)及64X256点阵显示RAM(GDRAM)。

2.2.2 控制器接口说明

1)基本操作时序:

读状态:输入:RS=L,RW=H,E=H

输出:D0~D7=状态字

写指令:输入:RS=L,RW=L,D0~D7=指令码,E=高脉冲

输出:D0~D7=数据

读数据:输入:RS=H,RW=H,E=H

输出:无

写数据:输入:RS=H,RW=L,D0~D7=数据,E=高脉冲

输出:无

15

大学本科生毕业设计(论文) 2)状态字说明

表2-3状态字说明

STA7 D7 STA6 D6 STA5 D5 STA4 D4 STA3 D3 STA2 D2 1:禁止 0:允许 STA1 D1 STA0 D0

STA0~6 STA7 当前数据地址指针的数值 读写操作使能

对控制器每次进行读写操作之前都必须进行读写检测,确保STA7为0。实际上,由于单片机的操作速度慢于液晶控制器反应速度,因此可以不进行读/写检测,或只进行简短延时即可。

2.2.3 指令说明

表2-4 指令集(RE=0:基本指令集)

16

大学本科生毕业设计(论文) 指令 指令码 RS 0 RW 0 DB7 0 DB6 0 DB5 0 DB4 0 DB3 0 DB2 0 DB1 0 DB0 1 说明 清除显示 地址归位 将DDRAM填满“20H”,并且没定DDRAM的地址计数器(AC)到“00H” 0 0 0 0 0 0 0 0 1 X 设定DDRAM的地址计数器(AC)到“00H”,并且将游标移到开头原点位置;这个指令并不改变DDRAM的内容 进入点设定 0 0 0 0 0 0 0 1 I/D S 指定在资料的读取与写入时,设定游标移动方向及指定显示的移位 I/D=1:游标向右移,DDRAM地址计数器(AC)加1 I/D=0:游标向左移,DDRAM地址计数器 (AC)减1 S:显示画面整体位移 显示状态 开/关 游标或显示移位控制 功能设定 设定CGRAM地址 设定CGRAM地址 设定 DDRAM 地址 读取忙碌标志(BF)和地址 写资料到RAM 0 0 0 0 0 0 1 D C B D=1:整体显示ON C=1:游标ON B=1:游标位置ON 0 0 0 0 0 1 S/C R/L X X 设定游标的移动与显示的移位控制位元;这个指令并不改变DDRAM的内容 S/C=0,R/L=0: 游标向左移动 S/C=0,R/L=1:游标向右移动 0 0 0 0 1 DL X 0 RE X X DL=1 (必须设为1) RE=1: 扩充指令集动作 RE=0: 基本指令集动作 0 0 0 1 AC5 AC4 AC3 AC2 AC1 AC0 设定CGRAM地址到地址计数器(AC) 0 0 0 1 AC5 AC4 AC3 AC2 AC1 AC0 设定CGRAM地址到地址计数器(AC) 0 0 1 AC6 AC5 AC4 AC3 AC2 AC1 AC0 设定DDRAM地址到地址计数器(AC) 0 1 BF AC6 AC5 AC4 AC3 AC2 AC1 AC0 读取忙碌标志(BF)可以确认内部动作是否完成,同时可以读出地址计数器(AC)的值 1 0 D7 D6 D5 D4 D3 D2 D1 D0 写入资料到内部的M) RAM(DDRAM/CGRAM/IRAM/GDRA17

大学本科生毕业设计(论文) 读出RAM的值 1 1 D7 D6 D5 D4 D3 D2 D1 D0 从内部M) RAM读取资料(DDRAM/CGRAM/IRAM/GDRA 表2-5指令表(RE=1:扩充指令集)

指令 指令码 RS 0 RW 0 DB7 DB6 0 0 DB5 0 DB4 0 DB3 0 DB2 0 DB1 0 DB0 1 将DDRAM填满“20H”,并且设定DDRAM的地址计数器(AC)到“00H” 卷动地址或IRAM地址选择 反白选择 睡眠模式 扩充功能设定 0 0 0 0 1 1 X 1 RE G 0 0 0 0 0 0 0 1 SL X X 0 0 0 0 0 0 0 1 R1 R0 选择4行中的任一行作反白显示,并可决定反白与否 SL=1:脱离睡眠模式 SL=0:进入睡眠模式 RE=1: 扩充指令集动作 RE=0: 基本指令集动作 G=1 :绘图显示ON G=0 :绘图显示OFF 设定IRAM地址或卷动地址 设定绘图RAM地址 0 0 1 AC6 AC5 AC4 AC3 AC2 AC1 AC0 设定CGRAM地址到地址计数器(AC) 0 0 0 1 AC5 AC4 AC3 AC2 AC1 AC0 SR=1:AC5—AC0为垂直卷动地址 SR=0:AC3—AC0为ICON IRAM地址 0 0 0 0 0 0 0 0 1 SR SR=1:允许输入垂直卷动地址 SR=0:允许输入IRAM地址 说明 待命模式 当模块在接受指令前,微处理顺必须先确认模块内部处于非忙碌状态,即读取BF标志时BF需为0,方可接受新的指令;如果在送出一个指令前并不检查BF标志,那么在前一个指令和这个指令中间必须延迟一段较长的时间,即是等待前一个指令确实执行完成,指令执行的时间请参考指令表中的个别指令说明。

“RE”为基本指令集与扩充指令集的选择控制位元,当变更“RE”位元后,往后的指令集将维持在最后的状态,除非再次变更“RE”位元,否则使用相同指令集时,不需每次重设“RE”位元。

具体指令介绍:

18

大学本科生毕业设计(论文) 1)清除显示 RS RW DB7 L L L DB6 L DB5 L DB4 L DB3 L DB2 L DB1 L DB0 H 功能:清除显示屏幕,把DDRAM位址计数器调整为“00H”

2)位址归位 RS RW DB7 DB6 DB5 DB4 DB3 DB2 DB1 L L L L L L L L H DB0 X 功能:把DDRAM位址计数器调整为“00H”,游标回原点,该功能不影响显示DDRAM

3)位址归位 RS RW DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 L L L L L L L H I/D S 功能:把DDRAM位址计数器调整为“00H”,游标回原点,该功能不影响显示DDRAM功能:执行该命令后,所设置的行将显示在屏幕的第一行。显示起始行是由Z地址计数器控制的,该命令自动将A0-A5位地址送入Z地址计数器,起始地址可以是0-63范围内任意一行。Z地址计数器具有循环计数功能,用于显示行扫描同步,当扫描完一行后自动加一。

4)显示状态 开/关 RS RW DB7 DB6 DB5 DB4 L L L L L L DB3 H DB2 D DB1 C DB0 B 功能:D=1;整体显示ON C=1;游标ON B=1;游标位置ON

5)游标或显示移位控制 RS RW DB7 DB6 DB5 DB4 DB3 DB2 DB1 L L L L L H S/C R/L X 内容

6)功能设定 RS RW DB7 L L L DB0 X 功能:设定游标的移动与显示的移位控制位:这个指令并不改变DDRAM的DB6 L DB5 H DB4 DL DB3 X DB2 0 RE DB1 X DB0 X 功能:DL=1(必须设为1) RE=1;扩充指令集动作 RE=0:基本指令集动作

7)设定CGRAM位址 RS RW DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 19

大学本科生毕业设计(论文) L L L H AC5 AC4 AC3 AC2 AC1 AC0 功能:设定CGRAM位址到位址计数器(AC)

8)设定DDRAM位址 RS RW DB7 DB6 DB5 DB4 DB3 L L H AC6 AC5 AC4 AC3 功能:设定DDRAM位址到位址计数器(AC)

9)读取忙碌状态(BF)和位址 RS L RW H DB7 BF DB6 AC6 DB5 AC5 DB4 AC4 DB3 AC3 DB2 AC2 DB1 AC1 DB0 AC0 DB2 AC2 DB1 AC1 DB0 AC0 功能:读取忙碌状态(BF)可以确认内部动作是否完成,同时可以读出位址计数器(AC)的值

10)写资料到RAM RS RW DB7 DB6 H L D7 D6 DB5 D5 DB4 D4 DB3 D3 DB2 D2 DB1 D1 DB0 D0 功能:写入资料到内部的RAM(DDRAM/CGRAM/TRAM/GDRAM)

11)读出RAM的值 RS RW DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 H H D7 D6 D5 D4 D3 D2 D1 D0 功能:从内部RAM读取资料(DDRAM/CGRAM/TRAM/GDRAM)

12)待命模式(12H) RS RW DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 L L L L L L L L L H 功能:进入待命模式,执行其他命令都可终止待命模式

13)卷动位址或IRAM位址选择(13H) RS RW DB7 DB6 DB5 DB4 DB3 DB2 L L L L L L L L DB1 H DB0 SR 功能:SR=1;允许输入卷动位址 SR=0;允许输入IRAM位址

14)反白选择(14H) RS RW DB7 DB6 DB5 DB4 DB3 DB2 DB1 L L L L L L L H R1 20

DB0 R0

大学本科生毕业设计(论文) 功能:选择4行中的任一行作反白显示,并可决定反白的与否

15)睡眠模式(015H) RS RW DB7 DB6 DB5 DB4 DB3 DB2 DB1 L L L L L L H SL X 功能:SL=1;脱离睡眠模式 SL=0;进入睡眠模式

16)扩充功能设定(016H) RS RW DB7 DB6 DB5 DB4 DB3 DB2 L L L L H H X 1RE G=0;绘图显示OFF

17)设定IRAM位址或卷动位址(017H) RS RW DB7 DB6 DB5 DB4 L L L H AC5 AC4 址

18)设定绘图RAM位址(018H) RS RW DB7 DB6 DB5 DB4 L L H AC6 AC5 AC4 DB0 X DB1 G DB0 L 功能:RE=1;扩充指令集动作 RE=0;基本指令集动作 G=1;绘图显示ON DB3 AC3 DB2 AC2 DB1 AC1 DB0 AC0 功能:SR=1;AC5~AC0为垂直卷动位址 SR=0;AC3~AC0写ICONRAM位DB3 AC3 DB2 AC2 DB1 AC1 DB0 AC0 功能:设定GDRAM位址到位址计数器(AC)

2.2.4 12864引脚与单片机连接图

下图为12864与单片机的接口连接图。

21

大学本科生毕业设计(论文)

图2-4 12864引脚与单片机连接图

显示模块主要完成数据的显示功能。用户所编的显示程序,开始必须进行初始化,否则模块无法正常显示,首先当模块接受指令前,单片机必须确认模块内部处于非忙碌状态,然后根据接受到指令显示相关的内容在屏幕上。

1、通过RS确定是写数据还是写命令。写命令包括使液晶的光标显示/不显示、光标闪烁/不闪烁、需/不需要移屏、在液晶的什么位置显示,等等。写数据是指要显示什么内容。

2、读/写控制端设置为写模式,即低电平。 3、将数据或命令送达数据线上。

4、给E一个高脉冲将数据送入液晶控制器,完成写操作。

22

大学本科生毕业设计(论文) 2.3 按键控制部分电路

按键的闭合与否反应在电压上就是呈现出高电平或低电平,如果高电平表示断开,那么低电平则表示闭合,通过电平的高低状态的检测可确认键按下与否。为了确保CPU对一次按键动作只确认一次,并且防止干扰信号的影响,必需加入消除电平抖动的措施,下图2-5为按键抖动示意。消除抖动通常有硬、软硬两种方法,硬件消除抖动可采取双稳态电路或滤波消抖电路;软件消抖是在第一次检测到有键按下时,执行一段延时程序再确认该键是否仍闭合,如果还是闭合状态则确认该键按下,从而消除抖动和干扰影响。

按键接口设计有两种方法,独立式按键和矩阵式键盘。独立式按键各键相独立,每个按键各接入一根输入线,只要检测输入线的电平就可以识别按键状态。这种方法电路配置灵活,软件结构简单,但每个按键需占用一根输入口。由于该设计方案IO资源浪费大。故此方法只适用于按键少或其他控制功能很简单的场合。由于本设计中的按键较多,考虑系统可靠性和键盘设计的简单所以采用矩阵按键。本系统的按键电路如图2-6所示,按键按下是呈低电平,我们采用软件消抖来减少对的单片机影响。

有键按下 前沿抖动 按键确定 后沿抖动

图2-5 按键闭合及断开前后的电压

矩阵式键盘由行线和列线组成,按键位于行、列的交叉点上。当键被按下时,其交点的行线和列线接通,相应的行线或列线上的电平发生变化,单片机通过检测行或列线上的电平变化可以确定哪个按键被按下。

矩阵键盘的检测方法有多种,常见的有:逐点扫描法、逐行扫描法、全局扫描法。

在本实例中我们采用逐行扫描法来实现按键检测,其中P1.4-P1.7作为列线,P1.0-P1.3作为行线。识别过程如下:

1、判断键盘中是否有键按下。设置所有行线为输出口,并输出低电平;设置列线为输入口,读取列线上的电平状态,只要有一列的电平为低,就表示有按键按下,并且被按下的键位于电平为低的列线与4跟行线相交叉的4个按键中,若所有列线都为高电平,表示没有按键按下;

23

大学本科生毕业设计(论文) 2、判断被按下按键所在的位置。在确认有键按下后(进行按键消抖处理后),接下来就是确定具体哪个案件被按下,方法是:依次将每根行线设置为输出口,并输出低电平(同时剩余行线输出高电平),然后逐列检查每根列线的电平状态,若某列为低电平,则该列线与设置为输出低电平的行线交叉处的按键就是被按下的按键。

3、按键位置确定后,接下来就要给矩阵键盘中的每个按键进行编号,也就是进行按键编码,程序设计中常用计算法和查表法两种方式对按键进行编码,本实例采用计算法编码。

图2-6按键电路

2.4 指纹模块

2.4.1 指纹模块简介

本设计选择的指纹模块型号是ZFM60,指纹模块电路如下所示:

24

大学本科生毕业设计(论文)

图2-7 指纹模块接口图

指纹模块里面主要是DSP芯片,型号为AS606,加上外面的CMOS芯片,CMOS芯片主要是对指纹进行“照相”,生成指纹特征,如下图所示就是一个指纹模板,录入两次这样的指纹特征就能生成一个指纹模板。

具体的工作过程是:扫描指纹(录入图像)、生成特征、合成模板(建立一个指纹库文件,成功录入一个指纹)。

图2-8 指纹模版

指纹模板就是“照一次相”,将指纹模块里面的CMOS芯片采集一次指纹信息,然后进行模糊处理生成0和1两种记录信息,存入指纹模块的FLASH芯片里面。

25

大学本科生毕业设计(论文) 当切换到识别模式的时候,指纹模块就会先让CMOS芯片采集一次指纹,然后和FLASH芯片的数据进行对比。看是不是存在,如果存在就能返回是几号指纹。这样我们就能通过单片机或者电脑进行指纹识别与登记了。

具体指纹模块介绍如下:此指纹模块型号是:ZFM60,此模块上里面包含了: 1、光学头2、通信连接线3、DSP芯片4、稳压芯片5、FLASH芯片6、CMSO传感器等部件组成。

主要技术指标: 供电电压:DC 3.8~7.0V 背光颜色:绿色 亮灯方式:长亮/闪烁 供电电流:工作电流:<65mA

峰值电流:<95mA

指纹图像录入时间:<0.5秒 窗口面积:14.5×19.4mm 匹配方式:比对方式(1:1)

搜索方式(1:N)

特征文件:256字节 模板文件:512字节 存储容量:1000枚

安全等级:3级(从低到高:1、2、3、4、5) 认假率(FAR):<0.001%(安全等级为3时) 拒真率(FRR):<1.0%(安全等级为3时) 搜索时间:<1.0秒(1:500时,均值) 上位机接口:UART(TTL逻辑电平)

通讯波特率(UART):(9600×N)bps其中N=1~12(默认值N=6,即57600bps)

2.4.2 指纹模块引脚接法

ZFM60系列独立式指纹识别模块引脚功能:

模块中引脚1与电源相连,引脚2接单片机的RXD端,引脚3接单片机的TXD端,引脚4悬空,引脚5接地。表2-7如下:

表2-7指纹识别模块引脚功能

引脚号 1 2 3 名称 Vin TD RD 类型 in out in 功能描述 电源正输入端 串行数据输出。TTL 逻辑电平 串行数据输入。TTL 逻辑电平 26

大学本科生毕业设计(论文) 4 GND - 信号地。内部与电源地连接 2.4.3 指纹模块命令

我们进行指纹模块的操是通过单片机的串口发送与接收命令完成的。我们先通过串口给指纹模块发送命令,然后等待指纹模块传回数据。再通过单片机进行数据的处理,从而判断命令有没有执行。

主要为以下几条命令。

1)开机的时候进行模块握手,从而判断模块是不是连接正常。命令如下: 验证口令: 指令包格式:

2bytes 包头 0xEF01 4bytes 模块地址 Xxxx 1 byte 包标识 01H 2 bytes 包长度 07H 1 byte 指令码 13H 4bytes 口令 Password 2bytes 校验和 SUM 应答包格式:

2bytes 包头 0xEF01 4bytes 模块地址 Xxxx 1 byte 包标识 07H 2 bytes 包长度 03H 1 byte 确认码 xxH 2bytes 校验和 SUM 注:确认码=00H 表示口令验证正确; 确认码=01H 表示收包有错; 确认码=13H 表示口令不正确;

2)生成指纹模板需要进行如下四个个命令:录入图像、生成特征、合成指纹模板、存储指纹模板。

录入指纹图像指令:

指令包格式:

2bytes 包头 0xEF01 4bytes 模块地址 Xxxx 1 byte 包标识 01H 2 bytes 包长度 03H 1 byte 指令码 01H 2bytes 校验和 SUM 应答包格式: 2bytes 包头 0xEF01 4bytes 模块地址 Xxxx 1 byte 包标识 07H 2 bytes 包长度 03H 1 byte 确认码 xxH 2bytes 校验和 SUM 注:确认码=00H 表示录入成功; 确认码=01H 表示收包有错; 确认码=02H 表示传感器上无手指; 确认码=03H 表示录入不成功;

图像生成特征 Img2Tz指令:

27

大学本科生毕业设计(论文) 指令包格式:

2bytes 包头 0xEF01 4bytes 模块地址 Xxxx 01H 04H 02H BufferID SUM 1 byte 包标识 2 bytes 包长度 1 byte 指令码 1 byte 缓冲区号 2 bytes 校验和 应答包格式: 2bytes 包头 0xEF01 4bytes 模块地址 Xxxx 1 byte 包标识 07H 2 bytes 包长度 03H 1 byte 确认码 xxH 2bytes 校验和 SUM 注:确认码=00H 表示生成特征成功; 确认码=01H 表示收包有错;

确认码=06H 表示指纹图像太乱而生不成特征;

确认码=07H 表示指纹图像正常,但特征点太少而生不成特征; 确认码=15H 表示图像缓冲区内没有有效原始图而生不成图像;

特征合成模板RegMode1指令:

功能说明:将CharBuffer1与CharBuffer2中的特征文件合成特征模板。 指令包格式:

2bytes 包头 0xEF01 4bytes 模块地址 Xxxx 1 byte 包标识 01H 2 bytes 包长度 03H 1 byte 指令码 05H 2bytes 校验和 SUM 应答包格式: 2bytes 包头 0xEF01 4bytes 模块地址 Xxxx 1 byte 包标识 07H 2 bytes 包长度 03H 1 byte 确认码 xxH 2bytes 校验和 SUM 注:确认码=00H 表示合并成功; 确认码=01H 表示收包有错;

确认码=0aH 表示合并失败(两枚指纹不属于同一手指);

存储模板 Store指令: 指令包格式:

2bytes 包头 0xEF01 4bytes 模块地址 XXXX 1byte 包标识 01H 2 bytes 包长度 06H 1 byte 指令码 06H 1 byte 缓冲区号 BufferID 2 bytes 位置号 PageID 2bytes 校验和 SUM 应答包格式: 2bytes 包头 0xEF01 4bytes 模块地址 Xxxx 1 byte 包标识 07H 2 bytes 包长度 03H 1 byte 确认码 xxH 2bytes 校验和 SUM 注:确认码=00H 表示储存成功; 确认码=01H 表示收包有错;

经过以上四个步骤与命令,我们就录入了一个指纹,重复以上步骤,我们可

28

大学本科生毕业设计(论文) 以再录入其它指纹。

3)指纹识别是先转换到识别模式,然后不断的探测是不是有指纹出现在光学采集头上。如果有则扫描指纹,与库里面的指纹进行比对,如果是就读出是几号指纹。

模块会自动探测是不是有指纹,如果有则发送下面的命令:

搜索指纹Search指令: 指令包格式:

2bytes 包头 0xEF01 4bytes 模块地址 Xxxx 1byte 包标识 01H 2bytes 包长度 08H 1byte 指令码 04H 1byte 缓冲区号 ID 2bytes 参数 StarPage 2bytes 参数 PageNum 2bytes 校验和 SUM 应答包格式: 2bytes 包头 4bytes 模块地址 1byte 包标识 07H 2bytes 包长度 07H 1byte 确认码 xxH 2bytes 页码 2bytes 得分 2bytes 校验和 SUM 0xEF01 Xxxx 注:确认码=00H 表示搜索到; 确认码=09H 表示没有搜索;

如果搜索到就返回相应的指纹号,如果没有就会返回0。

2.5 本章小结

本章首先介绍了主要控制元件STC89C52单片机,并且介绍了各引脚功能及组成最小系统各部分的原理。然后,了解了12864液晶的使用方法及其编程要点,接着叙述了如何对按键编程,因为按键必须添加防抖动设置,以减少误差。最后介绍指纹模块,列出本设计需要的程序模块。

29

大学本科生毕业设计(论文) 第3章 系统软件的设计

3.1 系统程序工作分析

在本文的电路板中,单片机是作为控制器嵌入到系统中。应用程序的开发主要分为两大部分,即对指纹识别模块的应用程序开发以及对12864液晶、按键程序的开发。程序开发的方式将主要建立一系列的C语言函数子程序供主程序的随时调用,即对指纹识别模块或液晶电路分别编制C语言函数子程序。本设计中,采用Keil单片机软件开发环境对单片机进行编程,由于该编译器支持模块化程序设计,因此可以先将源程序划分为几个模块分别编写,然后再由编译器生成一个最终文件。该开发环境可以对程序进行软件仿真调试,因此可以方便地进行程序的编写和调试,调试通过的代码文件通过开发板下载到单片机。单片机在上电后,主程序应该完成相应的初始化工作。依据电路的功能要求,主程序必须对液晶初始化、同时对按键进行检测,如果有对应的按键按下。执行相应的操作,单片机通过串行接口对指纹模块进行读写。

3.2 串口初始化

由于使用串口和模块通讯,所以必须先约定好单片机和模块的串口工作速度和数据包格式。SCON 是一个特殊功能寄存器,用以设定串行口的工作方式、接收/发送控制以及设置状态标志:

表3-1 SCON寄存器地址位

位 字节地址:98H 7 SM0 6 SM1 5 SM2 4 SM3 3 SM4 2 SM5 1 SM6 0 SM7 SCON SM0和SM1为工作方式选择位,可选择四种工作方式:

表3-2 串行口工作方式

SM0 0 0 1 1 SM1 0 1 0 1 方式 0 1 2 3 说明 移位寄存器 10位异步收发器(8位数据) 11位异步收发器(9位数据) 11位异步收发器(9位数据) 波特率 fosc/12 可变 fosc/64或fosc/32 可变 PCON中只有一位SMOD与串行口工作有关 :

表3-3 PCON寄存器

位 字节地址:97H 7 SMOD 6 5 30

4 3 2 1 0 PCON

大学本科生毕业设计(论文)

SMOD(PCON.7) 波特率倍增位。在串行口方式1、方式2、方式3时,波特率与SMOD有关,当SMOD=1时,波特率提高一倍。复位时,SMOD=0。

发送数据共11-14个字节,前6个字节是模块的包头和模块地址为固定值,后5-8个字节是传输的模块的命令。同时根据外部晶振和系统默认的传输速率算出控制串口的各寄存器的初始值。

指纹模块的通讯波特率(UART)的要求为9600bps,所以如果单片机要与指纹模块进行通信是,必须波特率一致,此时需要在编程时设置单片机的波特率为9600bps。

串行口工作之前,应对其进行初始化,主要是设置产生波特率的定时器1、串行口控制和中断控制。具体步骤如下:

1、确定T1的工作方式(编程TMOD寄存器); 2、计算T1的初值,装载TH1、TL1; 3、启动T1(编程TCON中的TR1位); 4、确定串行口控制(编程SCON寄存器);

5、串行口在中断方式工作时,要进行中断设置(编程IE、IP寄存器)。 下面是串口初始化程序:

SCON=0x50; //UART方式1:8位UART; REN=1:允许接收 PCON=0x00; //SMOD=0:波特率不加倍

TMOD=0x21; //T1方式2,用于UART波特率,T0方式1 TH1=0xFD;

TL1=0xFD; //UART波特率设置:9600

3.3 主程序流程图

根据分析后,制定如下图的程序流程图。主程序设计流程如图3-1所示。 程序的巡检过程:首先对各模块进行初始化,检测在有无按键按下,如果按下判断是那一个按键,并作出判断是否调用相应子程序。

主程序主要由液晶显示、通讯子程序和按键程序组成。主程序的工作流程描述如下:首先初始化各种硬件功能模块。包括液晶显示、键盘扫描、指纹模块建立通信。

31

大学本科生毕业设计(论文)

开始初始化指纹输入按键输入数据处理驱动电路LCD12864显示结束

图3-1 主程序流程图

3.3.1键盘管理程序设计流程

本次设计所采用的按键是4x4矩阵键盘, 大家都知道,矩阵键盘一般分数字区0123456789*#和英文字母区ABCD,如下图:

32

大学本科生毕业设计(论文)

在本次设计,其中的*、#、C三个按键没有定义,数字区是用来输入程序管理员密码,使其进入程序后台,进行指纹信息的添加与删除,还有手动开锁与修改管理员密码。英文字母区,A按键是用来进入输入密码界面,B按键是用来删除输入错误的密码,D按键是确认按键。在管理员模式下,只有按复位按键才可以退出管理员模式。

键盘消抖的工作流程图如图3-2所示:

开始等待按键按下有按键按下延时消抖N是否有按键按下Y按键数据处理结束

图3-2 键盘程序流程图

33

大学本科生毕业设计(论文)

3.3.2 LCD显示模块程序设计流程

显示模块主要完成数据的显示功能,然后根据接受到指令显示相关的内容在屏幕上。

开始初始化写命令写数据 图3-3 显示程序流程图

结束3.3.3 指纹模块的通信程序设计流程

串口通信数据发送、接收流程图如图3-4。

图3-4 串口通信数据发送、接收流程图

34

大学本科生毕业设计(论文)

3.4 Keil编程

所需要的各种硬件已经选择好,单片机是电路中主控制器,由单片机对指纹模块及液晶、按键进行开发。首先应建立一系列的C语言子程序供主程序进行调用。本设计采用Keil uVision2对单片机编程。Keil 可以编译C源码,汇编源程序,生成代码效率非常高,多数语句生成的汇编代码紧凑容易理解。Keil软件可以提

[11]

供丰富的库函数和功能强大的集成开发调试工具,能够连接和重定位目标文件和库文件,创建HEX文件,调试目标程序。

使用Keil软件的主要工作流程为:

1、创建一个新工程,命名为“Fingerprint”,然后从器件库中选择单片机型号,因为其中没有STC89C52,所以选择与它完全兼容的Atmel 89c52代替。

2、新建text文件,命名为main.c,然后在Target 1的子文件Source Group 1中添加main.c文件。

3、点击下图中箭头所指的图标,弹出如下对话框,在Xtal后输入9600,即单片机的工作频率为9600MHz。[12]

35

大学本科生毕业设计(论文)

图3-5 设置波特率

4、点击Output标签,在Create HEX前的方框内勾选,这样可以生成hex文件以便输入单片机中。

5、用C语言创建源程序。 6、修改源程序中的错误。 7、测试,链接应用。

3.5 本章小结

本章介绍了硬件选择后设计软件工作流程,及如何进行Keil软件编程,然后创建“Fingerprint.hex”文件,程序烧写时需要。接着若想系统各个部分工作有序,必须保持时钟状态一致。

36

大学本科生毕业设计(论文) 第4章 硬件调试

4.1 电路的焊接

1.焊前准备

首先要熟悉所焊印制电路板的装配图,并按图纸配料,检查元器件型号、规格及数量是否符合图纸要求,并做好装配前元器件引线成型等准备工作。

2.焊接顺序

元器件装焊顺序依次为:电阻、电容器、二极管、三极管、集成电路、大功率管,其它元器件为先小后大。

3.对元器件焊接要求 (1)电容器焊接

将电容器按图装人规定位置,并注意有极性电容器其“+”与“-”极不能接错,电容器上的标记方向要易看可见。先装玻璃釉电容器、有机介质电容器、瓷介质电容器,最后装电解电容器。

(2)二极管的焊接

二极管焊接要注意以下几点:第一,注意阳极阴极的极性,不能装错;第二,型号标记要易看可见;第三,焊接立式二极管时,对最短引线焊接时间不能超过2S。

[15]

(3)三极管焊接

注意e、b、c三引线位置插接正确;焊接时间尽可能短,焊接时用镊子夹住引线脚,以利散热。焊接大功率三极管时,若需加装散热片,应将接触面平整、打磨光滑后再紧固,若要求加垫绝缘薄膜时,切勿忘记加薄膜。管脚与电路板上需连接时,要用塑料导线。

(4)集成电路

焊接首先按图纸要求,检查型号、引脚位置是否符合要求。焊接时先焊边沿的二只引脚,以使其定位,然后再从左到右自上而下逐个焊接。对于电容器、二极管、三极管露在印制电路板面上多余引脚均需齐根剪去。

(5)12864注意事项:

1)要避免在处理机械振动和对模块施加外力,都可能使屏不显示或损坏。 2)不能用手或坚硬工具或物体接触、按压、磨擦显示屏,否则屏上的偏光片被物体划坏。

3)如果屏破裂液晶材料外漏,液晶可以通过空气被吸入,而且要避免液晶与

37

大学本科生毕业设计(论文) 皮肤接触,如果接触应立即用酒精冲洗,然后再用水彻底冲洗。

4)不能使用可溶有机体来清洗显示屏。因为这些可溶的溶剂对偏光片不利,清洗显示屏时,可用棉花蘸少量石油苯轻轻擦拭或用透明胶带粘起脏物。

5)要防止高压静电产生的放电,将损坏模块中的CMOS电路。

6)不能把模块放在温度高的地方,尤其不能长时间放在湿度大的地方,最好把模块放在温度为0℃-35℃,湿度低于70%的环境中。

7)模块不能贮存在太阳直射的地方。 8)当电源接通时,不能组装或拆卸模块。

9)在电源电压的偏差、输入电压的偏差及环境温度等最坏条件下,也不能超过最大的额定值,否则将损坏LCD模块。

4.2 程序的烧写

STC-ISP是一款单片机下载编程烧录软件,是针对STC系列单片机而设计的,可下载STC89系列、12C2052系列和12C5410等系列的STC单片机,使用简便,现已被广泛使用。

图4-1 STC-ISP工作界面

调试通过的代码文件通过STC_ISP_V480下载到单片机。STC_ISP_V480使用

38

大学本科生毕业设计(论文) 步骤为:

1、打开STC-ISP,如下图界面,在MCU Type栏目下选中单片机STC89C52RC。

2、选中COM端口,波特率选择9600。

3、点击“打开文件”并在对话框内找到要下载的HEX文件。 4、点击download/下载,根据提示给单片机上电,完成程序烧写。

单片机在上电后,主程序应该完成相应的初始化工作。依据电路的功能要求,主程序必须对液晶初始化、同时对按键进行检测,如果有对应的按键按下,执行相应的操作,单片机通过串行接口对指纹模块进行读写。

4.3 小灯、继电器的调试

首先按下电源,看电源指示灯是否点亮,证明电源电路正常。然后测试单片机是否正常工作,在Keil上编写了一段红绿小灯以一秒间隔闪烁的程序,导入单片机,上电后发现小灯按照我所要求的方式工作,证明单片机及小灯工作正常。再加一条与继电器连接引脚电平高低变化的程序检测继电器是否正常工作。

4.4 液晶的调试

导入12864液晶的测试程序,上电后,通过调节液晶屏背面的电位器调节12864的对比度,在调试液晶时要注意:屏上显示小方格,产生原因:程序中对液晶初始化不正常,应是部分初始化指令没有正常接收,按照标准初始化步骤调整程序,或者调整指令之间的延时(加大一些试试)--补充:也有可能是对比度太大,需要调整对比度电阻。

在经调试后液晶的结果为:

图4-2 液晶显示

39

大学本科生毕业设计(论文) 4.5 本章小结

本章首先介绍了如何进行实物焊接,及焊接时的注意事项,焊接完成后需要导入程序进行调试,本文随后介绍了烧写软件STC-ISP的用法,把程序导入单片机后进行调试。最后介绍如何调试液晶、指纹模块及其他硬件。

40

本文来源:https://www.bwwdw.com/article/4kyg.html

Top