图3-2 电路总体结构图 3.3 电源输入电路
密码锁主要控制部分电源需要用5V直流电源供电 其电路如图3-3所示
而5V电源输入时往往伴有杂波 所以加一个2.2uF的电容滤波 这样输出的电压一般能满足要求
图3-3 电源输入电路原理图 3.4 键盘输入电路
由于本设计所用到的按键数量较多而不适合用独立按键式键盘 采用的是矩阵式按键键盘 它由行线和列线组成 也称行列式键盘
按键位于行列的交叉点上 密码锁的密码由键盘输入完成 与独立式按键键盘相比 要节省很多IO口
本设计中使用的这个4*4键盘不但能完成密码的输入还能作特别功能键使用 比如清空显示功能等
键盘的每个按键功能在程序设计中设置
其大体功能(看键盘按键上的标记)及与单片机引脚接法如图3-4所示:
图3-4 键盘输入原理图 3.5 密码存储电路
AT24C02是ATMEL公司的2KB字节的电可擦除存储芯片 采用两线串行的总线和单片机通讯 电压最低可以到2.5V 额定电流为1mA
静态电流10Ua(5.5V)
芯片内的资料可以在断电的情况下保存40年以上 而且采用8脚的DIP封装 使用方便
其电路如图3-5所示
图中1、2、3脚是三条地址线 用于确定芯片的硬件地址 在AT89S51上它们都能接地
第5脚和第8脚分别为正、负电源 AT24C02中带有片内地址寄存器 每写入或读出一个数据字节后 该地址寄存器自动加1
以实现对下一个储存单元的读写 所有字节均以单一操作方式读取
3.6 复位电路
单片机复位是使CPU和系统中的其他功能部件都处在一个确定的初始状态 并从这个状态开始工作 例如复位后PC=0000H
使单片机从第-个单元取指令
无论是在单片机刚开始接上电源时 还是断电后或者发生故障后都要复位 在复位期间(即RST为高电平期间) P0口为高组态
P1-P3口输出高电平;外部程序存储器读选通信号PSEN无效 地址锁存信号ALE也为高电平
根据实际情况选择如图2-8所示的复位电路
该电路在最简单的复位电路下增加了手动复位按键 在接通电源瞬间
电容C1上的电压很小
复位下拉电阻上的电压接近电源电压 即RST为高电平
在电容充电的过程中RST端电压逐渐下降 当RST端的电压小于某一数值后 CPU脱离复位状态 由于电容C1足够大
可以保证RST高电平有效时间大于24个振荡周期 CPU能够可靠复位
增加手动复位按键是为了避免死机时无法可靠复位 当复位按键按下后电容C1通过R5放电 当电容C1放电结束后
RST端的电位由R11与R15分压比决定 由于R11< 电容C1充电 RST端电位下降 CPU脱离复位状态 R11的作用在于限制按键按下瞬间电容C1的放电电流 避免产生火花 以保护按键触电 图3-6 复位电路原理图 3.7 晶振电路 AT89C51引脚XTAL1和XTAL2与晶体振荡器及电容C2、C1按图3-7所示方式连接 晶振、电容C2C3及片内与非门(作为反馈、放大元件)构成了电容三点式振荡器 振荡信号频率与晶振频率及电容C1、C2的容量有关 但主要由晶振频率决定 范围在0~33MHz之间 电容C2、C3取值范围在5~30pF之间 根据实际情况 本设计中采用12MHZ做系统的外部晶振 电容取值为20pF 图3-7 晶振电路原理图 3.8 显示电路 为了提高密码锁的密码显示效果能力 本设计的显示部分由液晶显示器LCD1602取代普通的数码管来完成 只有按下键盘上的开启按键后 显示器才处于开启状态 同理只有按下关闭按键后显示器才处于关闭状态 否则显示器将一直处于初始状态 当需要对密码锁进行开锁时 按下键盘上的开锁按键后利用键盘上的数字键0-9输入密码 每按下一个数字键后在显示器上显示一个* 输入多少位就显示多少个* 当密码输入完成时 按下确认键 如果输入的密码正确的话 LCD子显示\ 单片机其中P2.0引角会输出低电平 使三极管T2导通 电磁铁吸合 电子密码锁被打开 如果密码不正确 LCD显示屏会显示\P2.0输出的是高电平 电子密码锁不能被打开 通过LCD显示屏 可以清楚的判断出密码锁所处的状态 其显示部分引脚接口如图3-8所示: 图3-8 显示电路原理图 3.9 报警电路 报警部分由陶瓷压电发声装置及外围电路组成 加电后不发声 当有键按下时 \叮\声 每按一下 发声一次 密码正确时 不发声直接开锁 当密码输入错误时 单片机的P2.1引脚为低电平 三极管T3导喇叭发出噪鸣声报警 如图3-9所示: 图3-9 报警电路原理图 3.10 开锁电路 通过单片机开锁执行机构 电路驱动电磁锁吸合 从而达到开锁的目的 其原理如图3-10所示 图3-10密码锁开锁机构示意图 当用户输入的密码正确时 单片机便输出开门信号 送到开锁驱动电路 然后驱动电磁锁 达到开门的目的 其实际电路如图3-11所示 电路由驱动和开锁两级组成 由D1、R12、Q1组成驱动电路 其中Q1可以选择普通的小功率三极管如8050、9018都可以满足要求 D1是开锁指示灯;由D2、C5组成开锁 其中D2、C5是为了消除电磁锁可能产生的反向高电压以及可能产生的电磁干扰 电磁锁的选用要视情况而定 但是吸合力要足够且有一定的余量 在设计中 暂时用发光二极管代替电磁锁 发光管亮 表示开锁;灭 表示没有开锁 图3-11 开锁电路原理图 第四章 软件程序设计 本系统软件设计由主程序、初始化程序、LCD显示程序、键盘扫描程序、键功能程序、密码设置程序、EEPROM读写程序和延时程序等组成 4.1主程序流程图 如图4-1 为主程序流程图 开始接上电源 程序进行初始化设置 然后在键盘上输入密码 此系统进行键盘扫描 密码正确 开锁成功 密码错误3次出错报警 选择是否修改密码 若要修改密码 先输入旧密码 密码正确后设置新密码 错误时报警 需要两次确认新密码 确认后 密码修改成功 否则结束最终返回 然后启动程序 进行保护 再次在键盘上输入密码 系统进行扫描 如果和之前一样 则执行相同程序 如不是 则执行另一种程序 图4-1主程序流程图 4.2 按键软件设计 如图4-2按键功能流程图 在按键当中 有与输入、开锁、清除、设置、确认的程序相对应的按键 并按顺序与输入的数相比较 当输入正确时 进入密码程序 错误时进行清除 输入两次新密码正确时 可进行重新设置密码 最后确认程序 图4-2 按键功能流程图 4.3 密码设置软件设计 如图4-3为密码设置流程图 开始按下设置键 输入旧密码 如果错误累计三次 进行报警程序 如果输入正确 可以修改密码 确认后再次输入新密码