智能门禁系统毕业论文
智能门禁系统的研究与设计
摘要:门禁系统是生活不可或缺的保障设施,由此提出了基于51单片机的多功能电子门禁系统。系统研究了电子密码锁技术,LCD 显示技术,串口通信技术,51单片机及时钟和温度读取方法。介绍了电子门禁系统的整体框架、设计方案和具体实现。系统主要完成日期与时间显示,环境温度显示及密码的比较,修改和保存等,当三次输入密码错误或环境温度超过额定值时就报警,且上传信息至上位机。系统主控程序在Keil uVision2集成开发环境下设计实现,整体设计在Proteus 环境下联合虚拟串口仿真成功。
【关键词】 门禁系统;电子密码锁;设计
目录
引 言 .................................................................... 4
第1章 系统总体设计方案及论证 ............................................. 5
1.1 门禁系统的工作原理 .................................................. 5
1.2 门禁系统的总体结构图 ................................................ 5
1.3 门禁系统方案选择 .................................................... 6
1.3.1 显示器的选择 . .................................................. 6
1.3.2 温度传感器的选择 . .............................................. 6
第2章 门禁系统主要硬件电路设计 ........................................... 7
2.1 系统核心部分—AT89C52 ............................................... 7
2.1.1 AT89C52主要性能 ............................................... 7
2.1.2 AT89C52的引脚及功能 ........................................... 7
2.1.3 信号引脚的第二功能 . ............................................ 9
2.2 串口通信 ........................................................... 10
2.2.1 串口通信方式 . ................................................. 10
2.2.2 串行通信控制寄存器 . ........................................... 10
2.2.3 数据发送与接收 . ............................................... 11
2.3 电源电路 ........................................................... 12
2.4 矩阵键盘电路 ....................................................... 12
2.4.1 单片机键盘和键盘接口概述 . ..................................... 12
2.4.2 单片机键盘接口和键功能的实现 . ................................. 13
2.5 显示电路 ........................................................... 16
2.5.1 LCD1602的基本参数及引脚功能 .................................. 16
2.5.2 LCD1602的指令说明及时序 ...................................... 17
2.5.3 LCD1602的RAM 地址映射及标准字库表 ............................ 19
2.5.4 LCD1602与单片机接口电路 ...................................... 19
2.6 电平转换电路 ....................................................... 20
2.6.1电平转换芯片 .................................................. 20
2.6.2 MAX232芯片 ................................................... 21
2.6.3 电路连接图 . ................................................... 21
2.7 温度读取电路 ....................................................... 22
2.7.1 DS18B20的引脚功能及特性 ...................................... 22
2.7.2 DS18B20的测温原理 ............................................ 23
2.7.3 DS18B20与单片机接口电路 ...................................... 24
2.8 时钟读取电路 ....................................................... 25
2.8.1 DS1302的概述 ................................................. 25
2.8.2 DS1302引脚功能及结构 ......................................... 25
2.8.3 DS1302的控制字节 ............................................. 25
2.8.4 DS1302数据输入输出(I/O) ...................................... 26
2.8.5 DS1302的寄存器 ............................................... 26
2.8.6 DS1302与单片机接口电路 ....................................... 26
2.9 开锁控制电路 ....................................................... 27
第3章 门禁系统软件设计 .................................................. 28
3.1 系统总程序 ......................................................... 28
3.2 密码处理程序 ....................................................... 29
3.3 时钟子程序 ......................................................... 29
3.4 温度子程序 ......................................................... 30
第4章 系统调试及结果分析 ................................................ 31
结 论 ................................................................... 33
参 考 文 献 .............................................................. 34
致 谢 ................................................................... 35
引 言
随着我国社会主义市场经济的深入发展和未来知识经济时代的临近,门禁系统作为一项安防措施,将会形成更大规模的产业。这方面的社会需求已在逐步升温。作为政府职能的重要组成部分,保障公民生命财产安全和社会的安定,实施综合安全服务工程将会像环保工程、生态农业工程一样,受到社会的关注和公众的欢迎。
出入口门禁安全管理系统是新型现代化安全管理系统,它集微机自动识别技术和现代安全管理措施为一体,它涉及电子,机械,光学,计算机技术,通讯技术,生物技术等诸多新技术。它是解决重要部门出入口实现安全防范管理的有效措施。适用各种机要部门,如银行、宾馆、机房、军械库、机要室、办公间、智能化小区、工厂等。
为了解决这个问题,就出现了电子磁卡锁,电子密码锁,这两种锁的出现从一定程度上提高了人们对出入口通道的管理程度,使通道管理进入了电子时代。
最近几年随着感应卡技术,生物识别技术的发展,门禁系统得到了飞跃式的发展,进入了成熟期,出现了感应卡式门禁系统,指纹门禁系统,虹膜门禁系统,面部识别门禁系统,乱序键盘门禁系统等各种技术的系统,它们在安全性,方便性,易管理性等方面都各有特长,门禁系统的应用领域也越来越广。
多功能电子门禁系统的核心是电子密码锁[1],可以完成密码的输入,判断,修改和存储。系统主要有三种工作状态。第一种状态:系统上电时LCD 显示当前的日期和时间,除功能键外,其它按键被锁住;第二种状态:按一下功能键,LCD 显示当时的环境温度, 如果温度超过指定值,就报警,并且上传信息,除功能键外,其它按键仍被锁住;第三种状态:这个状态时,按键被释放,LCD 显示输入密码界面,可以完成密码输入,密码修改,密码保存,如果密码输入正确就打开电磁锁,当三次输入密码错误时,系统报
警,且上传信息,按键又被锁住。当按下上锁键后,报警结束,且按键都被释放。
本设计主要模块是电子密码锁,还具有日期和时间显示,温度显示,超温报警,LED 提示,语音报警和上位机通信等功能,方便了用户的操作,可广泛的应用于新型小区单元门、超市的存储柜、智能取款机等。
第1章 系统总体设计方案及论证
1.1 门禁系统的工作原理
多功能电子门禁系统的核心是电子密码锁,主要有三种工作状态。第一种状态:系统上电时LCD 显示当前的日期和时间,除功能键外,其它按键被锁住;第二种状态:按一下功能键,LCD 显示当时的环境温度, 如果温度超过指定值就报警,且把系统信息上传到上位机系统,除功能键外,其它按键仍被锁住;第三种状态:这个状态时,按键被释放,LCD 显示输入密码界面,可以完成密码输入,密码修改,密码保存,如果密码输入正确就打开电磁锁,且上传系统安全信息给上位机,但当三次输入密码错误时,系统报警,且上传报警信息,按键又被锁住。
1.2 门禁系统的总体结构图
多功能电子门禁系统的硬件采用模块化设计,主要包括电源模块,矩阵键盘模块,显示模块,温度读取模块,时钟读取模块,开锁控制模块,报警提示模块和串行通信[2]模块。多功能电子门禁系统的硬件系统总体框图如图1-1所示:
图1-1 多功能电子门禁系统硬件系统总体框图
1.3 门禁系统方案选择
1.3.1 显示器的选择
方案一:LCD1602液晶显示器画质高且不会闪烁,和单片机系统的接口简单可靠,操作方便,体积小,重量轻,耗电量比其它显示器要少得多。而且显示内容可以是数字,字母,汉字等,可是亮度不好,尤其在强光下,显示效果更差。通过加大阴罩管的电流,轰击荧光粉,可以改善亮度。
方案二:LED 数码管[3]按段数分为七段数码管和八段数码管,结构简单,显示亮度高,价格便宜,使用简单。可是显示效果会受温度影响,出现亮度不均匀等情况,短时间的电流过载也可能对发光管造成永久性的损坏。而且显示内容简单,有一定的局限性。
综合上述,选择方案一。
1.3.2 温度传感器的选择
方案一:数字温度传感器DS18B20具有耐磨耐碰,体积小,使用方便,封装形式多样,适用于各种狭小空间设备数字测温和控制领域。在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。测温范围为-55℃~+125℃,固有测温分辨率是0.5℃。最为重要的是单片机可以直接读取温度,方便,高效。
方案二:集成温度传感器AD590实质上是一种半导体集成电路,线性好、精度适
中、灵敏度高、体积小,常用于测温和热电偶的冷端补偿。测温范围为-55℃~+150℃。非线性误差为±0.3℃。可是温度值要通过A/D转换器才能被单片机读取,且线路连接比较麻烦。
综合上述,选择方案一。
第2章 门禁系统主要硬件电路设计
2.1 系统核心部分—AT89C52
2.1.1 AT89C52主要性能
AT89C52具有下列主要性能:
● 8KB 可改编程序Flash 存储器(可经受1000次的写入/擦除周期)。
● 全静态工作:0Hz ~24MHz 。
● 三级程序存储器保密。
● 128×8字节内部RAM 。
● 32条可编程I/O线。
● 2个16位定时器/计数器。
● 6个中断源。
● 可编程串行通道。
● 片内时钟振荡器。
2.1.2 AT89C52的引脚及功能
AT89C52单片机的管脚说明如图2-2所示:
图2-2 AT89C52的管脚
(1) 主要电源引脚
①VCC 电源端
②GND 接地端
(2) 外接晶体引脚XTAL1和XTAL2
①XTAL1 接外部晶体的一个引脚。在单片机内部,它是构成片内振荡器的反相放大器的输入端。当采用外部振荡器时,该引脚接收振荡器的信号,既把此信号直接接到内部时钟发生器的输入端。
②XTAL2 接外部晶体的另一个引脚。在单片机内部,它是上述振荡器的反相放大器的输出端。采用外部振荡器时,此引脚应悬浮不连接。
(3) 控制或与其它电源复用引脚RST 、ALE//PROG、/PSEN和/EA/VPP
①RST 复位输入端。 当振荡器运行时,在该引脚上出现两个机器周期的高电平将使单片机复位。
②ALE/PROG 当访问外部存储器时,ALE (地址锁存允许)的输出用于锁存地址的低位字节。即使不访问外部存储器,ALE 端仍以不变的频率(此频率为振荡器频率的1/6)周期性地出现正脉冲信号。因此,它可用作对外输出的时钟,或用于定时目的。然而要注意的是:每当访问外部数据存储器时,将跳过一个ALE 脉冲。在对Flash 存储器编程期间,该引脚还用于输入编程脉冲(/PROG)。
③/PSEN 程序存储允许(/PSEN)输出是外部程序存储器的读选通信号。当AT89C52/LV52由外部程序存储器取指令(或常数)时,每个机器周期两次/PSEN有效(既输出2个脉冲)。但在此期间内,每当访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
④/EA/VPP 外部访问允许端。要使CPU 只访问外部程序存储器(地址为0000H ~
FFFFH ),则/EA端必须保持低电平(接到GND 端)。当/EA端保持高电平(接VSS 端)时,CPU 则执行内部程序存储器中的程序。
(4) 输入/输出引脚 P0.0~ P0.7、P1.0~P1.7 P2.0~ P2.7 和P3.0~P3.7
①P0端口(P0.0~ P0.7) P0是一个8位漏极开路型双向I/O端口。作为输出口用时,每位能以吸收电流的方式驱动8个TTL 输入,对端口写1时,又可作高阻抗输入端用。
②P1端口(P1.0~ P1.7) P1是一个带有内部上拉电阻的8位双向I/O端口。P1的输出缓冲器可驱动(吸收或输出电流方式)4个TTL 输入。对端口写1时,通过内部的上拉电阻把端口拉到高电位,这时可用作输入口。作输入口时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流。
③P2端口 (P2.0~P2.7) P2是一个带有内部上拉电阻的8位双向I/O端口。P2的输出缓冲器可驱动(吸收或输出电流方式)4个TTL 输入。对端口写1时,通过内部的上拉电阻把端口拉到高电位,这时可用作输入口。P2作输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流。
④P3端口(P3.0~P3.7) P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL 门电流。当P3口写入1后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流,这是由于上拉的缘故。
2.1.3 信号引脚的第二功能
由于工艺及标准化等原因,芯片的引脚数目是有限制的,例如MCS-51系列[4]单片机芯片引脚的数目是40条,但单片机为实现其功能所需要的信号数目却远远超过此数,因此就出现了供需问题。
解决这一问题唯一可行的办法是“复用”,即给一些信号引脚赋予双重功能。如果我们把前述的信号定义为引脚第一功能的话,则根据需要再定义的信号就是它的第二功能。第二功能信号定义主要集中在P3口线中,另外再加上几个其它信号线。
(1) EPROM 存储器程序固化所需要的信号
P3口也可作为AT89C52的一些特殊功能,这些特殊功能见表2-1。
有内部EPROM 的单片机芯片(例如87C51),为写入程序需提供专门的编程脉冲和编程电源,它们也是由信号引脚以第二功能的形式提供的,即:
编程脉冲: 30脚(ALE/PROG)
编程电压(25V ): 31脚(/EA/VPP)
表2-1 P3端口的特殊功能
端 口 引 脚 兼 用 功 能
P3.0 RXD (串口输入口)
P3.1 TXD (串口输出口)
P3.2 /INT0 (外部中断0)
P3.3 /INT1 (外部中断1)
P3.4 T0 (定时器0的外部输入)
P3.5 T1 (定时器1的外部输入)
P3.6 /WR (外部数据存储器写选通)
P3.7 /RD (外部数据存储器读选通)
(2) 备用电源引入
MCS-51单片机的备用电源也是以信号引脚第二功能的方式由9脚(RST/VPD)引入的。当电源发生故障,电压降低到下限值时,备用电源经此端向内部RAM 提供电压,以保护内部RAM 中的信息不丢失。
2.2 串口通信
通信主要有两种方式:并行通信和串行通信。并行通信是在传送数据过程中每个字节的各位同时进行传送的通信方式,而串行通信是指每个字节的各位分别进行传送的通信方式。
2.2.1 串口通信方式
AT89C52串行口可设置四种工作方式,可有8位、10位和11位帧格式。本系统中,AT89C52采用串行口工作于方式1,即每帧10位的异步通信格式:1位起始位,8位数据位(低位在前),1位停止位。当SM0=0,SM1=1时,串行口选择方式1。其帧格式为:
2.2.2 串行通信控制寄存器
(1) 串行控制寄存器(SCON)
SCON 的地址为98H ,用于选择串行口的工作方式和指示串行口的工作状态。各位含义如下:
① SM0、SM1:串行口工作方式选择位。
② SM2:多机通信选择位。
③ REN:串行口允许接收位。‘1’时允许接收,‘0’时禁止接收。
④ TI : 串行口发送中断标志位。在方式1中,于发送停止位之前,由硬件置位。因此TI=1,表示帧发送结束。
⑤ RI : 串行口接收中断标志位。在方式1中,当接收到停止位时,该位由硬件置位。RI=1,表示帧接收结束。
(2) 串行数据缓冲器(SBUF)
串行数据缓冲器SBUF 的地址为99 H ,用来存放需发送和接收的数据,它由两个独
立的寄存器组成,一个是发送缓冲器,另一个是接收缓冲器,它们占用同一地址(99H )。当执行写SBUF 指令时,数据写入到串行口发送缓冲器中,读SBUF 就是读串行口接收缓冲器。
(3) 电源控制寄存器(PCON)
PCON 的地址为87H ,该寄存器的最高位(SMOD )是串行口波特率的倍增位,当SMOD=1时,串行口波特率加倍。系统复位时,SMOD=0。
(4) 中断允许寄存器(IE )
在IE 中,ES 位为串行中断允许控制位。ES=0时禁止串行中断,ES=1时允许串行中断。
2.2.3 数据发送与接收
(1) 数据发送
在不发送数据时,TXD 端保持高电平。当执行写SBUF 的指令时,便启动一次发送过程;发送数据时,先发送一个起始位,该位通知接收端开始接收,也使发送和接收过程同步。接下来发送8位数据,从低位开始发送,最后发送的是高电平的停止位。
(2) 数据接收
REN=1,CPU 允许串行口接收数据,接收数据开始于检测到RXD (P3.0)端发生一个1到0的跳变。先接收起始位,然后依次将采样RXD 端并将数据移入移位寄存器中。
若满足条件RI=0且SM2=0或接收到停止位,则将前8位数据送入SBUF 并置位RI ;如果上述条件不满足,则数据丢失。
(3) 波特率的设定
串口方式1的波特率是可变的,由定时器T1的溢出率决定:
2SMOD
波特率=⨯T 1 (2.2.1) 32
其中,SMOD 为PCON 寄存器最高位的值。
溢出率为溢出周期的倒数,假定计数初值为X ,则计数溢出周期为:
溢出周期=12⨯(256-X ) (2.2.2) fosc
其中,fosc 为晶振频率。
则波特率计算公式为:
2SMOD fosc 波特率=⨯ (2.2.3) 3212⨯(256-X )
由波特率算出计数初值,以便进行定时器的初始化。初值X 确定如下: fosc ⨯2SMOD
X =256- (2.2.4) 384⨯波特率
2.3 电源电路
多功能电子门禁系统的电源电路如图2-4所示:
图2-4 电源电路
如图所示电路为输出电压+5V、输出电流1.5A 的稳压电源。它由电源变压器T1,桥式整流电路D1,滤波电容C4、C6,防止自激电容C5、C13和一只固定式三端稳压器(LM7805)组成的。
220V 交流市电通过电源变压器变换成交流低压,再经过桥式整流电路D1和滤波电容C4的整流和滤波,在固定式三端稳压器LM7805的IN 和GND 两端形成一个并不十分稳定的直流电压。此直流电压经过LM7805的稳压和C6的滤波便在稳压电源的输出端产生了精度高、稳定度好的直流输出电压。
2.4 矩阵键盘电路
2.4.1 单片机键盘和键盘接口概述
单片机使用的键盘主要可分为独立式和矩阵式[5]两种。独立式实际上就是一组相互独立的按键,这些按键可直接与单片机的I/O接口连接,其方法是每个按键独占一条口线,接口简单。矩阵式键盘也称行列式键盘,因为键的数目较多,所以键按行列组成矩阵(如图2-5所示)。
按一个键到键的功能被执行主要应包括两项工作:一是键的识别,即在键盘中找出被按的是哪个键,另一项是键功能的实现。第一项工作是使用接口电路实现的,而第二项工作则是通过执行中断服务程序来完成。下面来介绍键盘接口问题。
(1) 键盘接口处理内容 ● ● ●
产生闭合键的键码。
2.4.2 单片机键盘接口和键功能的实现 软件就简单,硬件简单软件就得复杂一些。 具体来说,键盘接口应完成以下操作功能: 示的4行×4列键盘为例,对键扫描进行说明。 键识别,以确定闭合键的行列位置。 键盘扫描,以判定是否有键被按下(称之为“闭合键”)。 成。但具体那些由硬件完成由软件完成,要看接口电路的情况。总的原则是,硬件复杂这些内容通常是以软硬件结合的方式来完成的,即在软件的配合下由接口电路来完有无键被按下(闭合键)以及被按键的位置,可使用两种方法:扫描法和翻转法,其中①键扫描:键盘上的键按行列组成矩阵,在行列的交点上都对应有一个键。为判定以扫描法使用较为普遍。因此下面以扫描法为例,说明查找闭合键的方法。现以图2-5所图2-5 键盘接口电路图 智能门禁系统毕业论文
图2-6 键扫描法示意图
首先是判定有没有键被按下。如图2-6所示,键盘的行线一端经电阻接+5V电源, 另一端接单片机的输入口线。各列线的一端接单片机的输出口线,另一端悬空。为判定有没有键被按下,可先经输出口向所有列线输出低电平,然后再输入各行线状态。若行线状态中有低电平,则表示有键被按下。然后再判定被按键的位置。因为在键盘矩阵中有键按下时,被按键处的行线和列线被接通,使穿过闭合键的那条行线变为低电平。假定图2-5中数字9键被按下,则判定键位置的扫描是这样进行的:
先使输出口输出0EH ,然后输入行线状态,测试行线状态中是否有低电平(图2-6(a ))。如果没有低电平,再使输出口输出0DH ,再测试行线状态(图2-6(b ))。到输出口输出0BH 时,行线中有状态为低电平者,则闭合键找到(图2-6(c )),通过此次扫描的行线值和列线值就可以知道闭合键的位置。至此行扫描似乎可以结束,但实际上扫描往往要继续进行下去,以发现可能出现的多键同时被按下。
图2-7 键闭合和断开时的电压抖动
②去抖动:当扫描表明有键被按下之后,紧接着应进行去抖动处理。因为常用键盘的键实际上就是一个机械开关结构,被按下时,由于机械接触点的弹性及电压突跳等原因,在触点闭合或断开的瞬间会出现电压抖动,如图2-7所示。抖动时间长短与键的机械特性有关,一般为5~10ms 。而键的稳定的闭合时间和操作者按键动作有关,大约0.1~5s。
③键码计算:被按键确定下来之后,接下来的工作是计算闭合键的键码,因为有了键码,才能通过散转指令把程序执行转到闭合键所对应的中断[16]服务程序上去。也可以直接使用该闭合键的行列值组合产生键码,但这样做会使各子程序的入口地址比较散乱,给跳转指令的使用带来不便。所以通常都是以键的排列顺序安排键号。
图2-8所示的键号是按从左到右从上到下的顺序编排的。这样安排,使键码既可以根据行号列号以查表求得,也可以通过计算得到。按图2-8所示的键码编排规律,各行的首号依次是00H ,04H ,08H ,0CH ,如列号按0~3顺序,则键码的计算公式为:键码=行首号+列号
④等待键释放:计算键码之后,再以延时后进行扫描的方法等待键释放。等待键释放是为了保证键的一次闭合仅进行一次处理。
综上所述,键盘接口处理的核心内容是测试有无闭合键,对闭合键进行去抖动处理,求得闭合键的键码。这些操作内容通常都是有软硬件相结合的方法实现,但如果使用像HD7279这样的专用接口芯片,可以大大简化软件。
为了使键盘操作更稳定可靠,还可以加一些附加功能,例如屏蔽功能:在对一个闭合键已进行处理时,再按下其它键不会产生影响;对于一个键,不管按下多长时间,仅执行一次键处理子程序等。
(2) 键盘接口的控制方式
在单片机的运行过程中,何时执行键盘扫描和处理,可有以下3种情况:
① 随机方式,每当CPU 空闲时执行键盘扫描程序。
② 中断方式,每当有键闭合时才向CPU 发出中断请求,中断响应后执行键盘扫描程序。
③ 定时方式,每隔一定时间执行一次键盘扫描程序,定时可由单片机定时器完成。
(3) 键处理子程序
在计算机中每一个键都对应一个处理子程序,得到闭合键的键码后,就可以根据键码,转相应的键处理子程序,进行字符、数据的输入或命令的处理。这样就可以实现该键所设定的功能。
2.5 显示电路
2.5.1 LCD1602的基本参数及引脚功能
LCD1602主要技术参数:
显示容量:16×2个字符
芯片工作电压:4.5—5.5V
工作电流:2.0mA(5.0V)
模块最佳工作电压:5.0V
字符尺寸:2.95×4.35(W×H)mm
引脚功能说明:
LCD1602的管脚说明如图2-9所示:
图2-9 LCD1602的管脚图
LCD1602采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如表2-2所示:
表2-2 LCD1602引脚接口说明
编号 符号 引脚说明 编号 符号 引脚说明
1 VSS 电源地 9 D2 数据
2 VDD 电源正极 10 D3 数据
3 VL 液晶显示偏压 11 D4 数据
4 RS 数据/命令选择 12 D5 数据
5 R/W 读/写选择 13 D6 数据
6 E 使能信号 14 D7 数据
7 D0 数据 15 BLA 背光源正极
8 D1 数据 16 BLK 背光源负极
第1脚:VSS 为电源地。
第2脚:VDD 接5V 正电源。
第3脚:VL 为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K 的电位器调整对比度。
第4脚:RS 为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。 第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS 和R/W共同为低电平时可以写入指令或者显示地址,当RS 为低电平R/W为高电平时可以读忙信号,当RS 为高电平R/W为低电平时可以写入数据。
第6脚:E 端为使能端,当E 端由高电平跳变成低电平时,液晶模块执行命令。
第7~14脚:D0~D7为8位双向数据线。
第15脚:背光源正极。
第16脚:背光源负极。
2.5.2 LCD1602的指令说明及时序
1602液晶模块内部的控制器共有11条控制指令[6],如表2-3所示:
表2-3 LCD1602控制指令
序号 指令 RS R/W D7 D6 D5 D4 D3 D2 D1 D0
1 清显示 0 0 0 0 0 0 0 0 0 1
2 光标返回 0 0 0 0 0 0 0 0 1 *
3 置输入模式 0 0 0 0 0 0 0 1 I/D S
4 显示开/关控制 0 0 0 0 0 0 1 D C B
5 光标或字符移位 0 0 0 0 0 1 S/C R/L * *
6 置功能 0 0 0 0 1 DL N F * *
7 置字符发生存贮器地址 0 0 0 1 字符发生存贮器地址
8 置数据存贮器地址 0 0 1 显示数据存贮器地址
9 读忙标志或地址 0 1 BF 计数器地址
10 写数到CGRAM 或DDRAM 1 0 要写的数据内容
11 从CGRAM 或DDRAM 读数 1 1 读出的数据内容
1602液晶模块的读写操作、屏幕和光标的操作都是通过指令编程来实现的。(说明:1为高电平、0为低电平)
指令1:清显示,指令码01H, 光标复位到地址00H 位置。
指令2:光标复位,光标返回到地址00H 。
指令3:光标和显示模式设置 I/D:光标移动方向,高电平右移,低电平左移 S:屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效。
指令4:显示开关控制。 D :控制整体显示的开与关,高电平表示开显示,低电平表示关显示 C:控制光标的开与关,高电平表示有光标,低电平表示无光标 B:控制光标是否闪烁,高电平闪烁,低电平不闪烁。
指令5:光标或显示移位 S/C:高电平时移动显示的文字,低电平时移动光标。
指令6:功能设置命令 DL :高电平时为4位总线,低电平时为8位总线 N :低电平时为单行显示,高电平时双行显示 F: 低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符。
指令7:字符发生器RAM 地址设置。
指令8:DDRAM 地址设置。
指令9:读忙信号和光标地址 BF :为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。
指令10:写数据。
指令11:读数据。
与HD44780相兼容的芯片时序表如下:
表2-4 基本操作时序
输 入 输 出
读状态 RS=L, R/W=H, E=H D0-D7=状态字
写指令 RS=L, R/W=L, D0-D7=指令码, E=高脉冲 无
读数据 RS=H, R/W=H, E=H D0-D7=数据
写数据 RS=H, R/W=L, D0-D7=数据, E=高脉冲 无
读写操作时序如图2-10和图2-11所示:
图2-10 读操作时序
图2-11 写操作时序
2.5.3 LCD1602的RAM 地址映射及标准字库表
液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符,图2-12是1602的内部显示地址。
2-12 LCD1602内部显示地址
例如第二行第一个字符的地址是40H ,那么是否直接写入40H 就可以将光标定位在第二行第一个字符的位置呢,这样不行,因为写入显示地址时要求最高位D7恒定为高电平1,所以实际写入的数据应该是01000000B (40H )+10000000B(80H )=11000000B(C0H)。
2.5.4 LCD1602与单片机接口电路
LCD1602与单片机的接口电路如图2-13所示:
图2-13 LCD1602与单片机的接口电路
用单片机的P0端口和P2的部分端口来驱动LCD1602,其中P2.0连接数据/指令选择引脚RS ,P2.1连接读/写引脚RW ,P2.2连接使能信号E 。P0端口连接LCD1602的数据引脚,其中为增大驱动电流,数据端口有1K 的上拉电阻。其工作原理是:当E=1时,LCD1602开始显示,首先令RS=0,RW=1,读LCD1602工作状态,当处于不忙状态时,令RS=0,RW=0,单片机向LCD1602写指令,然后令RS=1,RW为0或1,开始读写数据。
2.6 电平转换电路
2.6.1电平转换芯片
如果两个51系列单片机系统之间距离很短,可以通过将它们的自带串口直接连接的方法实现双机通信[15]。但若通信距离较远,就可使用RS-232C 接口延长通信距离。RS-232C 标准是美国EIA 与BELL 等公司一起开发的,1969年公布的通信协议[7]。由于RS-232C 标准规定的逻辑电平与TTL 等数字电路的逻辑电平不兼容,因此二者之间进行相互连接时必须先进行串口电平的转换,即必须将单片机的TTL 电平和RS-232C 标准电平进行转换。
能够实现RS-232C 电平转换的专用芯片有很多种,如MC1488、SN75150芯片可完成TTL 到EIA 电平的转换,而MC1489、SN75154可实现EIA 到TTL 电平的转换。常用的是Maxim 公司的MAX232集成芯片,它能完成TTL 和RS-232C 的双向转换。
智能门禁系统毕业论文
智能门禁系统的研究与设计
摘要:门禁系统是生活不可或缺的保障设施,由此提出了基于51单片机的多功能电子门禁系统。系统研究了电子密码锁技术,LCD 显示技术,串口通信技术,51单片机及时钟和温度读取方法。介绍了电子门禁系统的整体框架、设计方案和具体实现。系统主要完成日期与时间显示,环境温度显示及密码的比较,修改和保存等,当三次输入密码错误或环境温度超过额定值时就报警,且上传信息至上位机。系统主控程序在Keil uVision2集成开发环境下设计实现,整体设计在Proteus 环境下联合虚拟串口仿真成功。
【关键词】 门禁系统;电子密码锁;设计
目录
引 言 .................................................................... 4
第1章 系统总体设计方案及论证 ............................................. 5
1.1 门禁系统的工作原理 .................................................. 5
1.2 门禁系统的总体结构图 ................................................ 5
1.3 门禁系统方案选择 .................................................... 6
1.3.1 显示器的选择 . .................................................. 6
1.3.2 温度传感器的选择 . .............................................. 6
第2章 门禁系统主要硬件电路设计 ........................................... 7
2.1 系统核心部分—AT89C52 ............................................... 7
2.1.1 AT89C52主要性能 ............................................... 7
2.1.2 AT89C52的引脚及功能 ........................................... 7
2.1.3 信号引脚的第二功能 . ............................................ 9
2.2 串口通信 ........................................................... 10
2.2.1 串口通信方式 . ................................................. 10
2.2.2 串行通信控制寄存器 . ........................................... 10
2.2.3 数据发送与接收 . ............................................... 11
2.3 电源电路 ........................................................... 12
2.4 矩阵键盘电路 ....................................................... 12
2.4.1 单片机键盘和键盘接口概述 . ..................................... 12
2.4.2 单片机键盘接口和键功能的实现 . ................................. 13
2.5 显示电路 ........................................................... 16
2.5.1 LCD1602的基本参数及引脚功能 .................................. 16
2.5.2 LCD1602的指令说明及时序 ...................................... 17
2.5.3 LCD1602的RAM 地址映射及标准字库表 ............................ 19
2.5.4 LCD1602与单片机接口电路 ...................................... 19
2.6 电平转换电路 ....................................................... 20
2.6.1电平转换芯片 .................................................. 20
2.6.2 MAX232芯片 ................................................... 21
2.6.3 电路连接图 . ................................................... 21
2.7 温度读取电路 ....................................................... 22
2.7.1 DS18B20的引脚功能及特性 ...................................... 22
2.7.2 DS18B20的测温原理 ............................................ 23
2.7.3 DS18B20与单片机接口电路 ...................................... 24
2.8 时钟读取电路 ....................................................... 25
2.8.1 DS1302的概述 ................................................. 25
2.8.2 DS1302引脚功能及结构 ......................................... 25
2.8.3 DS1302的控制字节 ............................................. 25
2.8.4 DS1302数据输入输出(I/O) ...................................... 26
2.8.5 DS1302的寄存器 ............................................... 26
2.8.6 DS1302与单片机接口电路 ....................................... 26
2.9 开锁控制电路 ....................................................... 27
第3章 门禁系统软件设计 .................................................. 28
3.1 系统总程序 ......................................................... 28
3.2 密码处理程序 ....................................................... 29
3.3 时钟子程序 ......................................................... 29
3.4 温度子程序 ......................................................... 30
第4章 系统调试及结果分析 ................................................ 31
结 论 ................................................................... 33
参 考 文 献 .............................................................. 34
致 谢 ................................................................... 35
引 言
随着我国社会主义市场经济的深入发展和未来知识经济时代的临近,门禁系统作为一项安防措施,将会形成更大规模的产业。这方面的社会需求已在逐步升温。作为政府职能的重要组成部分,保障公民生命财产安全和社会的安定,实施综合安全服务工程将会像环保工程、生态农业工程一样,受到社会的关注和公众的欢迎。
出入口门禁安全管理系统是新型现代化安全管理系统,它集微机自动识别技术和现代安全管理措施为一体,它涉及电子,机械,光学,计算机技术,通讯技术,生物技术等诸多新技术。它是解决重要部门出入口实现安全防范管理的有效措施。适用各种机要部门,如银行、宾馆、机房、军械库、机要室、办公间、智能化小区、工厂等。
为了解决这个问题,就出现了电子磁卡锁,电子密码锁,这两种锁的出现从一定程度上提高了人们对出入口通道的管理程度,使通道管理进入了电子时代。
最近几年随着感应卡技术,生物识别技术的发展,门禁系统得到了飞跃式的发展,进入了成熟期,出现了感应卡式门禁系统,指纹门禁系统,虹膜门禁系统,面部识别门禁系统,乱序键盘门禁系统等各种技术的系统,它们在安全性,方便性,易管理性等方面都各有特长,门禁系统的应用领域也越来越广。
多功能电子门禁系统的核心是电子密码锁[1],可以完成密码的输入,判断,修改和存储。系统主要有三种工作状态。第一种状态:系统上电时LCD 显示当前的日期和时间,除功能键外,其它按键被锁住;第二种状态:按一下功能键,LCD 显示当时的环境温度, 如果温度超过指定值,就报警,并且上传信息,除功能键外,其它按键仍被锁住;第三种状态:这个状态时,按键被释放,LCD 显示输入密码界面,可以完成密码输入,密码修改,密码保存,如果密码输入正确就打开电磁锁,当三次输入密码错误时,系统报
警,且上传信息,按键又被锁住。当按下上锁键后,报警结束,且按键都被释放。
本设计主要模块是电子密码锁,还具有日期和时间显示,温度显示,超温报警,LED 提示,语音报警和上位机通信等功能,方便了用户的操作,可广泛的应用于新型小区单元门、超市的存储柜、智能取款机等。
第1章 系统总体设计方案及论证
1.1 门禁系统的工作原理
多功能电子门禁系统的核心是电子密码锁,主要有三种工作状态。第一种状态:系统上电时LCD 显示当前的日期和时间,除功能键外,其它按键被锁住;第二种状态:按一下功能键,LCD 显示当时的环境温度, 如果温度超过指定值就报警,且把系统信息上传到上位机系统,除功能键外,其它按键仍被锁住;第三种状态:这个状态时,按键被释放,LCD 显示输入密码界面,可以完成密码输入,密码修改,密码保存,如果密码输入正确就打开电磁锁,且上传系统安全信息给上位机,但当三次输入密码错误时,系统报警,且上传报警信息,按键又被锁住。
1.2 门禁系统的总体结构图
多功能电子门禁系统的硬件采用模块化设计,主要包括电源模块,矩阵键盘模块,显示模块,温度读取模块,时钟读取模块,开锁控制模块,报警提示模块和串行通信[2]模块。多功能电子门禁系统的硬件系统总体框图如图1-1所示:
图1-1 多功能电子门禁系统硬件系统总体框图
1.3 门禁系统方案选择
1.3.1 显示器的选择
方案一:LCD1602液晶显示器画质高且不会闪烁,和单片机系统的接口简单可靠,操作方便,体积小,重量轻,耗电量比其它显示器要少得多。而且显示内容可以是数字,字母,汉字等,可是亮度不好,尤其在强光下,显示效果更差。通过加大阴罩管的电流,轰击荧光粉,可以改善亮度。
方案二:LED 数码管[3]按段数分为七段数码管和八段数码管,结构简单,显示亮度高,价格便宜,使用简单。可是显示效果会受温度影响,出现亮度不均匀等情况,短时间的电流过载也可能对发光管造成永久性的损坏。而且显示内容简单,有一定的局限性。
综合上述,选择方案一。
1.3.2 温度传感器的选择
方案一:数字温度传感器DS18B20具有耐磨耐碰,体积小,使用方便,封装形式多样,适用于各种狭小空间设备数字测温和控制领域。在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。测温范围为-55℃~+125℃,固有测温分辨率是0.5℃。最为重要的是单片机可以直接读取温度,方便,高效。
方案二:集成温度传感器AD590实质上是一种半导体集成电路,线性好、精度适
中、灵敏度高、体积小,常用于测温和热电偶的冷端补偿。测温范围为-55℃~+150℃。非线性误差为±0.3℃。可是温度值要通过A/D转换器才能被单片机读取,且线路连接比较麻烦。
综合上述,选择方案一。
第2章 门禁系统主要硬件电路设计
2.1 系统核心部分—AT89C52
2.1.1 AT89C52主要性能
AT89C52具有下列主要性能:
● 8KB 可改编程序Flash 存储器(可经受1000次的写入/擦除周期)。
● 全静态工作:0Hz ~24MHz 。
● 三级程序存储器保密。
● 128×8字节内部RAM 。
● 32条可编程I/O线。
● 2个16位定时器/计数器。
● 6个中断源。
● 可编程串行通道。
● 片内时钟振荡器。
2.1.2 AT89C52的引脚及功能
AT89C52单片机的管脚说明如图2-2所示:
图2-2 AT89C52的管脚
(1) 主要电源引脚
①VCC 电源端
②GND 接地端
(2) 外接晶体引脚XTAL1和XTAL2
①XTAL1 接外部晶体的一个引脚。在单片机内部,它是构成片内振荡器的反相放大器的输入端。当采用外部振荡器时,该引脚接收振荡器的信号,既把此信号直接接到内部时钟发生器的输入端。
②XTAL2 接外部晶体的另一个引脚。在单片机内部,它是上述振荡器的反相放大器的输出端。采用外部振荡器时,此引脚应悬浮不连接。
(3) 控制或与其它电源复用引脚RST 、ALE//PROG、/PSEN和/EA/VPP
①RST 复位输入端。 当振荡器运行时,在该引脚上出现两个机器周期的高电平将使单片机复位。
②ALE/PROG 当访问外部存储器时,ALE (地址锁存允许)的输出用于锁存地址的低位字节。即使不访问外部存储器,ALE 端仍以不变的频率(此频率为振荡器频率的1/6)周期性地出现正脉冲信号。因此,它可用作对外输出的时钟,或用于定时目的。然而要注意的是:每当访问外部数据存储器时,将跳过一个ALE 脉冲。在对Flash 存储器编程期间,该引脚还用于输入编程脉冲(/PROG)。
③/PSEN 程序存储允许(/PSEN)输出是外部程序存储器的读选通信号。当AT89C52/LV52由外部程序存储器取指令(或常数)时,每个机器周期两次/PSEN有效(既输出2个脉冲)。但在此期间内,每当访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
④/EA/VPP 外部访问允许端。要使CPU 只访问外部程序存储器(地址为0000H ~
FFFFH ),则/EA端必须保持低电平(接到GND 端)。当/EA端保持高电平(接VSS 端)时,CPU 则执行内部程序存储器中的程序。
(4) 输入/输出引脚 P0.0~ P0.7、P1.0~P1.7 P2.0~ P2.7 和P3.0~P3.7
①P0端口(P0.0~ P0.7) P0是一个8位漏极开路型双向I/O端口。作为输出口用时,每位能以吸收电流的方式驱动8个TTL 输入,对端口写1时,又可作高阻抗输入端用。
②P1端口(P1.0~ P1.7) P1是一个带有内部上拉电阻的8位双向I/O端口。P1的输出缓冲器可驱动(吸收或输出电流方式)4个TTL 输入。对端口写1时,通过内部的上拉电阻把端口拉到高电位,这时可用作输入口。作输入口时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流。
③P2端口 (P2.0~P2.7) P2是一个带有内部上拉电阻的8位双向I/O端口。P2的输出缓冲器可驱动(吸收或输出电流方式)4个TTL 输入。对端口写1时,通过内部的上拉电阻把端口拉到高电位,这时可用作输入口。P2作输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流。
④P3端口(P3.0~P3.7) P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL 门电流。当P3口写入1后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流,这是由于上拉的缘故。
2.1.3 信号引脚的第二功能
由于工艺及标准化等原因,芯片的引脚数目是有限制的,例如MCS-51系列[4]单片机芯片引脚的数目是40条,但单片机为实现其功能所需要的信号数目却远远超过此数,因此就出现了供需问题。
解决这一问题唯一可行的办法是“复用”,即给一些信号引脚赋予双重功能。如果我们把前述的信号定义为引脚第一功能的话,则根据需要再定义的信号就是它的第二功能。第二功能信号定义主要集中在P3口线中,另外再加上几个其它信号线。
(1) EPROM 存储器程序固化所需要的信号
P3口也可作为AT89C52的一些特殊功能,这些特殊功能见表2-1。
有内部EPROM 的单片机芯片(例如87C51),为写入程序需提供专门的编程脉冲和编程电源,它们也是由信号引脚以第二功能的形式提供的,即:
编程脉冲: 30脚(ALE/PROG)
编程电压(25V ): 31脚(/EA/VPP)
表2-1 P3端口的特殊功能
端 口 引 脚 兼 用 功 能
P3.0 RXD (串口输入口)
P3.1 TXD (串口输出口)
P3.2 /INT0 (外部中断0)
P3.3 /INT1 (外部中断1)
P3.4 T0 (定时器0的外部输入)
P3.5 T1 (定时器1的外部输入)
P3.6 /WR (外部数据存储器写选通)
P3.7 /RD (外部数据存储器读选通)
(2) 备用电源引入
MCS-51单片机的备用电源也是以信号引脚第二功能的方式由9脚(RST/VPD)引入的。当电源发生故障,电压降低到下限值时,备用电源经此端向内部RAM 提供电压,以保护内部RAM 中的信息不丢失。
2.2 串口通信
通信主要有两种方式:并行通信和串行通信。并行通信是在传送数据过程中每个字节的各位同时进行传送的通信方式,而串行通信是指每个字节的各位分别进行传送的通信方式。
2.2.1 串口通信方式
AT89C52串行口可设置四种工作方式,可有8位、10位和11位帧格式。本系统中,AT89C52采用串行口工作于方式1,即每帧10位的异步通信格式:1位起始位,8位数据位(低位在前),1位停止位。当SM0=0,SM1=1时,串行口选择方式1。其帧格式为:
2.2.2 串行通信控制寄存器
(1) 串行控制寄存器(SCON)
SCON 的地址为98H ,用于选择串行口的工作方式和指示串行口的工作状态。各位含义如下:
① SM0、SM1:串行口工作方式选择位。
② SM2:多机通信选择位。
③ REN:串行口允许接收位。‘1’时允许接收,‘0’时禁止接收。
④ TI : 串行口发送中断标志位。在方式1中,于发送停止位之前,由硬件置位。因此TI=1,表示帧发送结束。
⑤ RI : 串行口接收中断标志位。在方式1中,当接收到停止位时,该位由硬件置位。RI=1,表示帧接收结束。
(2) 串行数据缓冲器(SBUF)
串行数据缓冲器SBUF 的地址为99 H ,用来存放需发送和接收的数据,它由两个独
立的寄存器组成,一个是发送缓冲器,另一个是接收缓冲器,它们占用同一地址(99H )。当执行写SBUF 指令时,数据写入到串行口发送缓冲器中,读SBUF 就是读串行口接收缓冲器。
(3) 电源控制寄存器(PCON)
PCON 的地址为87H ,该寄存器的最高位(SMOD )是串行口波特率的倍增位,当SMOD=1时,串行口波特率加倍。系统复位时,SMOD=0。
(4) 中断允许寄存器(IE )
在IE 中,ES 位为串行中断允许控制位。ES=0时禁止串行中断,ES=1时允许串行中断。
2.2.3 数据发送与接收
(1) 数据发送
在不发送数据时,TXD 端保持高电平。当执行写SBUF 的指令时,便启动一次发送过程;发送数据时,先发送一个起始位,该位通知接收端开始接收,也使发送和接收过程同步。接下来发送8位数据,从低位开始发送,最后发送的是高电平的停止位。
(2) 数据接收
REN=1,CPU 允许串行口接收数据,接收数据开始于检测到RXD (P3.0)端发生一个1到0的跳变。先接收起始位,然后依次将采样RXD 端并将数据移入移位寄存器中。
若满足条件RI=0且SM2=0或接收到停止位,则将前8位数据送入SBUF 并置位RI ;如果上述条件不满足,则数据丢失。
(3) 波特率的设定
串口方式1的波特率是可变的,由定时器T1的溢出率决定:
2SMOD
波特率=⨯T 1 (2.2.1) 32
其中,SMOD 为PCON 寄存器最高位的值。
溢出率为溢出周期的倒数,假定计数初值为X ,则计数溢出周期为:
溢出周期=12⨯(256-X ) (2.2.2) fosc
其中,fosc 为晶振频率。
则波特率计算公式为:
2SMOD fosc 波特率=⨯ (2.2.3) 3212⨯(256-X )
由波特率算出计数初值,以便进行定时器的初始化。初值X 确定如下: fosc ⨯2SMOD
X =256- (2.2.4) 384⨯波特率
2.3 电源电路
多功能电子门禁系统的电源电路如图2-4所示:
图2-4 电源电路
如图所示电路为输出电压+5V、输出电流1.5A 的稳压电源。它由电源变压器T1,桥式整流电路D1,滤波电容C4、C6,防止自激电容C5、C13和一只固定式三端稳压器(LM7805)组成的。
220V 交流市电通过电源变压器变换成交流低压,再经过桥式整流电路D1和滤波电容C4的整流和滤波,在固定式三端稳压器LM7805的IN 和GND 两端形成一个并不十分稳定的直流电压。此直流电压经过LM7805的稳压和C6的滤波便在稳压电源的输出端产生了精度高、稳定度好的直流输出电压。
2.4 矩阵键盘电路
2.4.1 单片机键盘和键盘接口概述
单片机使用的键盘主要可分为独立式和矩阵式[5]两种。独立式实际上就是一组相互独立的按键,这些按键可直接与单片机的I/O接口连接,其方法是每个按键独占一条口线,接口简单。矩阵式键盘也称行列式键盘,因为键的数目较多,所以键按行列组成矩阵(如图2-5所示)。
按一个键到键的功能被执行主要应包括两项工作:一是键的识别,即在键盘中找出被按的是哪个键,另一项是键功能的实现。第一项工作是使用接口电路实现的,而第二项工作则是通过执行中断服务程序来完成。下面来介绍键盘接口问题。
(1) 键盘接口处理内容 ● ● ●
产生闭合键的键码。
2.4.2 单片机键盘接口和键功能的实现 软件就简单,硬件简单软件就得复杂一些。 具体来说,键盘接口应完成以下操作功能: 示的4行×4列键盘为例,对键扫描进行说明。 键识别,以确定闭合键的行列位置。 键盘扫描,以判定是否有键被按下(称之为“闭合键”)。 成。但具体那些由硬件完成由软件完成,要看接口电路的情况。总的原则是,硬件复杂这些内容通常是以软硬件结合的方式来完成的,即在软件的配合下由接口电路来完有无键被按下(闭合键)以及被按键的位置,可使用两种方法:扫描法和翻转法,其中①键扫描:键盘上的键按行列组成矩阵,在行列的交点上都对应有一个键。为判定以扫描法使用较为普遍。因此下面以扫描法为例,说明查找闭合键的方法。现以图2-5所图2-5 键盘接口电路图 智能门禁系统毕业论文
图2-6 键扫描法示意图
首先是判定有没有键被按下。如图2-6所示,键盘的行线一端经电阻接+5V电源, 另一端接单片机的输入口线。各列线的一端接单片机的输出口线,另一端悬空。为判定有没有键被按下,可先经输出口向所有列线输出低电平,然后再输入各行线状态。若行线状态中有低电平,则表示有键被按下。然后再判定被按键的位置。因为在键盘矩阵中有键按下时,被按键处的行线和列线被接通,使穿过闭合键的那条行线变为低电平。假定图2-5中数字9键被按下,则判定键位置的扫描是这样进行的:
先使输出口输出0EH ,然后输入行线状态,测试行线状态中是否有低电平(图2-6(a ))。如果没有低电平,再使输出口输出0DH ,再测试行线状态(图2-6(b ))。到输出口输出0BH 时,行线中有状态为低电平者,则闭合键找到(图2-6(c )),通过此次扫描的行线值和列线值就可以知道闭合键的位置。至此行扫描似乎可以结束,但实际上扫描往往要继续进行下去,以发现可能出现的多键同时被按下。
图2-7 键闭合和断开时的电压抖动
②去抖动:当扫描表明有键被按下之后,紧接着应进行去抖动处理。因为常用键盘的键实际上就是一个机械开关结构,被按下时,由于机械接触点的弹性及电压突跳等原因,在触点闭合或断开的瞬间会出现电压抖动,如图2-7所示。抖动时间长短与键的机械特性有关,一般为5~10ms 。而键的稳定的闭合时间和操作者按键动作有关,大约0.1~5s。
③键码计算:被按键确定下来之后,接下来的工作是计算闭合键的键码,因为有了键码,才能通过散转指令把程序执行转到闭合键所对应的中断[16]服务程序上去。也可以直接使用该闭合键的行列值组合产生键码,但这样做会使各子程序的入口地址比较散乱,给跳转指令的使用带来不便。所以通常都是以键的排列顺序安排键号。
图2-8所示的键号是按从左到右从上到下的顺序编排的。这样安排,使键码既可以根据行号列号以查表求得,也可以通过计算得到。按图2-8所示的键码编排规律,各行的首号依次是00H ,04H ,08H ,0CH ,如列号按0~3顺序,则键码的计算公式为:键码=行首号+列号
④等待键释放:计算键码之后,再以延时后进行扫描的方法等待键释放。等待键释放是为了保证键的一次闭合仅进行一次处理。
综上所述,键盘接口处理的核心内容是测试有无闭合键,对闭合键进行去抖动处理,求得闭合键的键码。这些操作内容通常都是有软硬件相结合的方法实现,但如果使用像HD7279这样的专用接口芯片,可以大大简化软件。
为了使键盘操作更稳定可靠,还可以加一些附加功能,例如屏蔽功能:在对一个闭合键已进行处理时,再按下其它键不会产生影响;对于一个键,不管按下多长时间,仅执行一次键处理子程序等。
(2) 键盘接口的控制方式
在单片机的运行过程中,何时执行键盘扫描和处理,可有以下3种情况:
① 随机方式,每当CPU 空闲时执行键盘扫描程序。
② 中断方式,每当有键闭合时才向CPU 发出中断请求,中断响应后执行键盘扫描程序。
③ 定时方式,每隔一定时间执行一次键盘扫描程序,定时可由单片机定时器完成。
(3) 键处理子程序
在计算机中每一个键都对应一个处理子程序,得到闭合键的键码后,就可以根据键码,转相应的键处理子程序,进行字符、数据的输入或命令的处理。这样就可以实现该键所设定的功能。
2.5 显示电路
2.5.1 LCD1602的基本参数及引脚功能
LCD1602主要技术参数:
显示容量:16×2个字符
芯片工作电压:4.5—5.5V
工作电流:2.0mA(5.0V)
模块最佳工作电压:5.0V
字符尺寸:2.95×4.35(W×H)mm
引脚功能说明:
LCD1602的管脚说明如图2-9所示:
图2-9 LCD1602的管脚图
LCD1602采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如表2-2所示:
表2-2 LCD1602引脚接口说明
编号 符号 引脚说明 编号 符号 引脚说明
1 VSS 电源地 9 D2 数据
2 VDD 电源正极 10 D3 数据
3 VL 液晶显示偏压 11 D4 数据
4 RS 数据/命令选择 12 D5 数据
5 R/W 读/写选择 13 D6 数据
6 E 使能信号 14 D7 数据
7 D0 数据 15 BLA 背光源正极
8 D1 数据 16 BLK 背光源负极
第1脚:VSS 为电源地。
第2脚:VDD 接5V 正电源。
第3脚:VL 为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K 的电位器调整对比度。
第4脚:RS 为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。 第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS 和R/W共同为低电平时可以写入指令或者显示地址,当RS 为低电平R/W为高电平时可以读忙信号,当RS 为高电平R/W为低电平时可以写入数据。
第6脚:E 端为使能端,当E 端由高电平跳变成低电平时,液晶模块执行命令。
第7~14脚:D0~D7为8位双向数据线。
第15脚:背光源正极。
第16脚:背光源负极。
2.5.2 LCD1602的指令说明及时序
1602液晶模块内部的控制器共有11条控制指令[6],如表2-3所示:
表2-3 LCD1602控制指令
序号 指令 RS R/W D7 D6 D5 D4 D3 D2 D1 D0
1 清显示 0 0 0 0 0 0 0 0 0 1
2 光标返回 0 0 0 0 0 0 0 0 1 *
3 置输入模式 0 0 0 0 0 0 0 1 I/D S
4 显示开/关控制 0 0 0 0 0 0 1 D C B
5 光标或字符移位 0 0 0 0 0 1 S/C R/L * *
6 置功能 0 0 0 0 1 DL N F * *
7 置字符发生存贮器地址 0 0 0 1 字符发生存贮器地址
8 置数据存贮器地址 0 0 1 显示数据存贮器地址
9 读忙标志或地址 0 1 BF 计数器地址
10 写数到CGRAM 或DDRAM 1 0 要写的数据内容
11 从CGRAM 或DDRAM 读数 1 1 读出的数据内容
1602液晶模块的读写操作、屏幕和光标的操作都是通过指令编程来实现的。(说明:1为高电平、0为低电平)
指令1:清显示,指令码01H, 光标复位到地址00H 位置。
指令2:光标复位,光标返回到地址00H 。
指令3:光标和显示模式设置 I/D:光标移动方向,高电平右移,低电平左移 S:屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效。
指令4:显示开关控制。 D :控制整体显示的开与关,高电平表示开显示,低电平表示关显示 C:控制光标的开与关,高电平表示有光标,低电平表示无光标 B:控制光标是否闪烁,高电平闪烁,低电平不闪烁。
指令5:光标或显示移位 S/C:高电平时移动显示的文字,低电平时移动光标。
指令6:功能设置命令 DL :高电平时为4位总线,低电平时为8位总线 N :低电平时为单行显示,高电平时双行显示 F: 低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符。
指令7:字符发生器RAM 地址设置。
指令8:DDRAM 地址设置。
指令9:读忙信号和光标地址 BF :为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。
指令10:写数据。
指令11:读数据。
与HD44780相兼容的芯片时序表如下:
表2-4 基本操作时序
输 入 输 出
读状态 RS=L, R/W=H, E=H D0-D7=状态字
写指令 RS=L, R/W=L, D0-D7=指令码, E=高脉冲 无
读数据 RS=H, R/W=H, E=H D0-D7=数据
写数据 RS=H, R/W=L, D0-D7=数据, E=高脉冲 无
读写操作时序如图2-10和图2-11所示:
图2-10 读操作时序
图2-11 写操作时序
2.5.3 LCD1602的RAM 地址映射及标准字库表
液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符,图2-12是1602的内部显示地址。
2-12 LCD1602内部显示地址
例如第二行第一个字符的地址是40H ,那么是否直接写入40H 就可以将光标定位在第二行第一个字符的位置呢,这样不行,因为写入显示地址时要求最高位D7恒定为高电平1,所以实际写入的数据应该是01000000B (40H )+10000000B(80H )=11000000B(C0H)。
2.5.4 LCD1602与单片机接口电路
LCD1602与单片机的接口电路如图2-13所示:
图2-13 LCD1602与单片机的接口电路
用单片机的P0端口和P2的部分端口来驱动LCD1602,其中P2.0连接数据/指令选择引脚RS ,P2.1连接读/写引脚RW ,P2.2连接使能信号E 。P0端口连接LCD1602的数据引脚,其中为增大驱动电流,数据端口有1K 的上拉电阻。其工作原理是:当E=1时,LCD1602开始显示,首先令RS=0,RW=1,读LCD1602工作状态,当处于不忙状态时,令RS=0,RW=0,单片机向LCD1602写指令,然后令RS=1,RW为0或1,开始读写数据。
2.6 电平转换电路
2.6.1电平转换芯片
如果两个51系列单片机系统之间距离很短,可以通过将它们的自带串口直接连接的方法实现双机通信[15]。但若通信距离较远,就可使用RS-232C 接口延长通信距离。RS-232C 标准是美国EIA 与BELL 等公司一起开发的,1969年公布的通信协议[7]。由于RS-232C 标准规定的逻辑电平与TTL 等数字电路的逻辑电平不兼容,因此二者之间进行相互连接时必须先进行串口电平的转换,即必须将单片机的TTL 电平和RS-232C 标准电平进行转换。
能够实现RS-232C 电平转换的专用芯片有很多种,如MC1488、SN75150芯片可完成TTL 到EIA 电平的转换,而MC1489、SN75154可实现EIA 到TTL 电平的转换。常用的是Maxim 公司的MAX232集成芯片,它能完成TTL 和RS-232C 的双向转换。