项目三电子密码锁设计项目三电子密码锁设计项目任务描述:本项目采用STC89C51单片机为核心,4x3非编码键盘为密码输入媒介,1602点阵字符型LCD显示器为显示介质设计了一个电子密码锁。本密码锁开机后LCD显示主菜单,当用户输入密码后,以字符*代替,如果密码正确,则继电器开启,绿灯亮,否则,继电器关闭,红灯亮。如果密码输入不正确,则发出报警,直到密码输入正确解除报警。项目三电子密码锁设计项目三电子密码锁设计4.1键盘检测4.2通用型1602液晶认知4.3电子密码锁设计小结项目三电子密码锁设计4.1键盘检测项目三电子密码锁设计4.1.1键盘工作原理键盘是我们日常生活中常用的输入设备,在电脑、手机、PDA、ATM柜员机等设备中获得了广泛的应用。键盘按照结构原理来划分,可分为触点式开关键盘和非触点式开关键盘;按编码方式可分为编码键盘和非编码键盘。键盘是由一系列按键组成的,在单片机应用系统中往往采用机械触点式按键,当按键按下,线路导通,按键弹起,线路断开。由于机械触点的弹性作用,按键在按下的过程中存在触点在闭合和断开瞬间接触不稳定的情况,造成了电压信号不稳定的现象(如图4-1所示),因此,在实际应用中需要消除按键的抖动。按键的抖动时间一般为5~10ms,而稳定闭合时间一般超20ms,如果不对按键进行去抖动处理,会引起单片机对一次按键操作进行多次处理。在单片机应用中,我们往往采用当第一次检测到按键按下后,延时10~20ms,再次检测按键是否按下,如果此时按键还是处于按下状态,则确认有按键按下,否则取消此次检测结果。键盘检测程序流程图如图4-2所示。项目三电子密码锁设计4.1.1键盘工作原理项目三电子密码锁设计4.1.1键盘工作原理例4.1按键点控制LED亮灭灯。仿真电路图如图4-3所示,编程实现按键K1控制LED灯的亮灭,即开机D1熄灭,在D1熄灭状态按下K1,D1亮,在D1亮状态,按下K1,D1熄灭。如图4-3所示,当按键按下,P1.4接地,为低电平,当按键弹开,P1.4通过R3接+5V电源,为高电平。D1LED灯通过R2接P2.0,R2起限流作用。项目三电子密码锁设计4.1.1键盘工作原理项目三电子密码锁设计当按键数目不多的时候,我们往往采用将按键排成一行或一列(因此称为线性键盘),一端接单片机的I/O口的引脚,同时接上拉电阻,另一段则串接在一起接公共端(接地),如图4-4所示。线性键盘电路配置灵活,结构简单,但每个按键都必须占用一个单片机I/O口,占用单片机硬件资源比较多,因此适合于按键数目不多,单片机硬件资源不紧张的应用场合。4.1.2线性键盘检测项目三电子密码锁设计4.1.2线性键盘检测项目三电子密码锁设计4.1.2线性键盘检测例4.2检测线性键盘值并显示仿真电路如图4-5所示,P0口接7段共阴极数码管显示器(7SEG-COM-CATHODE),P1.0~P1.3分别接按键K1~K4,同时接10k上拉电阻,当按键没有按下,P1.0~P1.3电平为高电平,当按键按下时,相应端口电平变为低电平,通过按键接地。因此,通过读取P1口低4位电平变化,可获知按键是否按下,如果有按键按下则P1口低4位必然有一位为低电平,延时10ms去抖动,再次读取P1口低4位值,如果不为0x0f,则表示确实有按键按下,然后通过一个while循环等待按键释放。如图4-5所示,按键K1~K4单独按下对应的按键码值分别为0x0e,0x0d,0x0b,0x07,如果有两个以上按键同时按下,我们则认为按键无效。系统初始显示按键值为0,当有按键按下则显示相应的按键值,两个以上按键同时按下则显示0。项目三电子密码锁设计4.1.2线性键盘检测项目三电子密码锁设计4.1.3矩阵键盘检测由于线性键盘的每一个按键都是单独与单片机的I/O相连,每一个按键都需要单片机的I/O口,占用单片机的硬件资源较多。特别是当按键数量很多的时候,如果每个按键都占用单片机的一个I/O口,势必造成单片机硬件资源的紧张。因此,当按键数量较多的情况下,我们往往采用将按键开关设置在行线和列线的交叉点上,行线和列线分别连接在按键的两端,进而构成矩阵键盘,以节约单片机的I/O口,如图4-6所示便是一个4*4的矩阵非编码键盘。项目三电子密码锁设计4.1.3矩阵键盘检测项目三电子密码锁设计4.1.3矩阵键盘检测矩阵非编码键盘和线性非编码键盘的按键的工作原理都是一样的,即当有按键按下的时候,按键所连接的I/O口电平将发生变化,通过查询I/O口电平的变化便可获知是哪个按键按下。对于矩阵非编码键盘来说通过I/O口电平的变化便可知道按键所在的行值和列值,而每一个按键都对应一对行值和列值,例如K1所在位置为第一行第一列,则对应的键值编码可设为0x11。因此,矩阵非编码键盘检测的实质就是确定按键所在的行值和列值。矩阵非编码键盘的检测方法主要有线反转法和行扫描法。项目三电子密码锁设计4.1.3矩阵键盘检测1)反转法所谓反转法是指依次通过向行线和列线输入相反的电平,然后通过单片机I/O电平的变化确定按键所在的行和列。反转法矩阵非编码键盘检测的程序流程图如图4-7所示。项目三电子密码锁设计项目三电子密码锁设计4.1.3矩阵键盘检测例4.3利用反转法检测4*4非编码键盘。仿真电路如图4-8所示,4*4非编码键盘列线接P1口的低4位,即P1.0~P1.3,行线接P1口的低4位,即P1.4~P1.7,显示器采用2位共阳极7段数码管(7SEG-MPX2-CA)显示按键值。系统初始显示值为00。项目三电子密码锁设计4.1.3矩阵键盘检测项目三电子密码锁设计4.1.3矩阵键盘检测项目三电子密码锁设计4.1.3矩阵键盘检测(2)扫描法扫描法顾名思义就是获得按键的行值之后,通过逐行扫描的方式获得按键的列值。扫描非编码键盘识别程序流程图如图4-9所示。项目三电子密码锁设计4.1.3矩阵键盘检测项目三电子密码锁设计4.1.3矩阵键盘检测例4.4扫描法检测矩阵非编码键盘并显示仿真电路如图4-8所示,利用扫描法检测矩阵非编码键盘并通过共阳极2位7段数码管显示器(7SEG-MPX2-CA)显示按键信息,显示器初始显示值为00,当有按键按下时候显示按键的编号。项目三电子密码锁设计4.2通用型1602液晶认知项目三电子密码锁设计4.2.11602液晶的工作原理液晶显示器(LCD)具有功耗低、超薄轻便、使用灵活、抗干扰强、显示内容丰富等优点,在人们的日常生活中,特别是在袖珍式仪表和低功耗应用系统中获得了越来越广泛的应用。在市场上液晶显示器的种类很多,按显示形式及排列形状可分为字段型、点阵字符型、点阵图形型,并通常按照显示字符的行数或液晶点阵的行、列数来命名,例如1602就表示该液晶显示器可显示两行,每行显示16个字符。点阵型液晶通常面积较大,可以显示图形;而一般的字符型液晶只有两行,面积小,只能显示字符和一些简单的图形,控制简单且成本低。虽然液晶显示器的种类繁多,但是其工作原理都是相同的。液晶显示器的工作原理是以电流刺激液晶分子产生点、线、面并配合背部灯管构成画面。特别是目前市面上的字符型液晶绝大多数都是基于HD44780液晶芯片构成,控制原理完全相同,为HD44780编写的控制程序可以很方便地应用于市面上大部分的字符型液晶。项目三电子密码锁设计4.2.11602液晶的工作原理通用型1602液晶显示器如图4-10所示,引脚定义如表4-3所示。注意,并不是所有字符型LCD1602都是16个引脚线,有些只有14条引脚,少了两条线是电源线VCC(15脚)和地线GND(16脚),其控制原理是跟16脚的一样的。液晶显示偏压信号是指用于调节LCD亮度,电压越低,屏幕越亮,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。RS为寄存器选择信号,RS=1(高电平),选择数据寄存器;RS=0(低电平),选择指令寄存器。R/W为读/写控制信号,当R/W=1,进行读操作,把LCD中的数据读出到单片机;当R/W=0,进行写操作,把单片机中的数据写入LCD。当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平,R/W为高电平时可以读忙信号,当RS为高电平,R/W为低电平,可以写入数据。E为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。D0~D7为8位双向数据输入/输出端。项目三电子密码锁设计4.2.11602液晶的工作原理项目三电子密码锁设计4.2.11602液晶的工作原理单片机与通用型液晶显示器LCD1602的典型连接电路如图4-11所示。R1为滑动变阻器,用于调节LCD1602显示屏亮度。项目三电子密码锁设计4.2.21602液晶显示控制通用型液晶显示器1602内置了192个常用点阵字符图形,包括阿拉伯数字、大小写英文字母、标点符号、日文假名等,存于字符产生器CGROM(CharacterGeneratorROM)中,另外还有几个允许用户自定义的字符产生RAM,称为CGRAM(CharacterGeneratorRAM)。点阵的大小有5*7、5*10两种。CGROM的字形需经过内部电路的转换才能传送到显示器上,只能读出,不能写入。除了CGROM和CGRAM,1602内部还有一个DDRAM(DisplayDataRAM),用于存放待显示内容。1602字符型LCD的DDRAM地址与显示位置的对应关系如图4-12所示。LCD控制器的指令系统规定,在送待显示字符代码的指令之前,先要送DDRAM的地址(即待显示的字符显示位置)。其中00~0F(第一行),40~4F(第二行)地址中的数据可立即显示出来,而10~27,50~67地址处的显示数据则必须通过移屏指令移入00~0F,40~4F可显示区域方能够显示出来。项目三电子密码锁设计4.2.21602液晶显示控制项目三电子密码锁设计4.2.21602液晶显示控制项目三电子密码锁设计4.2.21602液晶显示控制项目三电子密码锁设计4.2.21602液晶显示控制项目三电子密码锁设计4.2.21602液晶显示控制项目三电子密码锁设计4.2.21602液晶显示控制例4.5利用LCD1602实现第一行显示“welcometo”,第二行显示“www.caac.net”。根据要求可将LCD1602(proteus中元件名称为LM016L)显示模式设定为8位数据接口,两行显示,5*7点阵显示,无光标模式,显示不移动。仿真电路如图4-20所示。项目三电子密码锁设计4.2.21602液晶显示控制项目三电子密码锁设计4.2.21602液晶显示控制项目三电子密码锁设计4.3电子密码锁设计项目三电子密码锁设计4.3.1继电器认知继电器是一种电子控制器件,通过使输入量(电、磁、声、光、热等)达到一定的要求,输出量产生跳跃式变化,进而使被控制的电路导通或断开的一种电子器件。继电器具有控制系统(输入回路)和被控制系统(输出回路),广泛应用于自动控制电路中,实际上是一种利用较小的电流或电压等去控制较大的电流或电压电路的“自动开关”,在电路中起到自动调节、安全保护、转换电路等作用。继电器按工作原理和结构特性可分为电磁继电器、固体继电器、温度继电器、舌簧继电器、时间继电器、高频继电器、极化继电器、霍尔效应继电器、差动继电器等,如图4-22所示。项目三电子密码锁设计4.3.1继电器认知电磁继电器的工作示意图如图4-23所示。图4-24为继电器在单片机应用系统中的典型应用电路。在该系统中单片机输出端P3.1置低电平则三极管Q1导通,继电器有电流通过,继电器吸合,Vcc(+5v)驱动LED1发光;单片机输出端P3.1置高电平则三极管Q1截止,继电器没有电流通过,继电器弹开,LED1熄灭。其中二极管D1称为消耗二极管,起到保护三极管Q1的作用。因为当继电器断开的瞬间会产生一个很强的反向电动势,通过接D1可起到消耗该反向电动势的作用,否则,在继电器断开的瞬间,强大的电动势将击穿三极管Q1。项目三电子密码锁设计3.3.2DS1302的寄存器及数据读写时序项目三电子密码锁设计4.3.2蜂鸣器认知蜂鸣器又称