




已阅读5页,还剩31页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第 1 页 基于 51 单片机的电子密码锁设计 摘要 本文设计了一种基于单片机的电子密码锁 由单片机系统 矩阵键盘 LED显 示和报警系统组成 系统能完成开锁 超次锁定 报警 修改用户密码基本的密码 锁的功能 除上述基本的密码锁功能外 还具有掉电存储 声光提示等功能 本密 码锁具有安全性高 成本低 功耗低 易操作 记住密码即可开锁等优点 关键词 STC89C52 电子密码锁 矩阵键盘 1 绪论绪论 1 1 课题背景 随着人们生活水平的提高和安全意识的加强 对安全的要求也就越来越高 锁 自古以来就是把守护门的铁将军 人们对它要求甚高 既要安全可靠的防盗 又要 使用方便 这也是制锁者长期以来研制的主题 随着电子技术的发展 各类电子产 品应运而生 电子密码锁就是其中之一 据有关资料介绍 电子密码锁的研究从 20 世纪 30 年代就开始了 在一些特殊场所早就有所应用 这种锁是通过键盘输入一组 密码完成开锁过程 研究这种锁的初衷 就是为提高锁的安全性 由于电子锁的密 钥量 密码量 极大 可以与机械锁配合使用 并且可以避免因钥匙被仿制而留下 安全隐患 电子锁只需记住一组密码 无需携带金属钥匙 免除了人们携带金属钥 匙的烦恼 而被越来越多的人所欣赏 电子锁的种类繁多 例如数码锁 指纹锁 磁卡锁 IC 卡锁 生物锁等 但较实用的还是按键式电子密码锁 1 2 课题设计目标 本设计采用 STC89C52 单片机为主控芯片 通过软件程序组成电子密码锁系统 能够实现 1 密码输入错误 蜂鸣器报警 2 密码为 6 位 可以随意更改 3 采用矩阵按键输入 4 通过 LCD1602 液晶显示 5 有开锁指示灯 6 查阅有关文献与资料 深入学习单片机硬件原理图及软件编程相关知识 2 系统方案论证系统方案论证 系统将从主控部分和密码输入方式两方面进行论证 第 2 页 2 1 主控部分的选择 方案一 采用数字电路控制 用以 74LS112 双 JK 触发器构成的数字逻辑电路作为密码锁的核心控制 共设了 9 个用户输入键 其中只有 4 个是有效的密码按键 其它的都是干扰按键 若按下干 扰键 键盘输入电路自动清零 原先输入的密码无效 需要重新输入 如果用户输 入密码的时间超过 10 秒 一般情况下 用户不会超过 10 秒 若用户觉得不便 还 可以修改 电路将报警 20 秒 若电路连续报警三次 电路将锁定键盘 2 分钟 防止 他人的非法操作 采用数字电路设计的方案好处就是设计简单但控制的准确性和灵 活性差 故不采用 方案二 采用以单片机为核心的控制方案 选用单片机作为系统的核心部件 实现控制与处理的功能 单片机具有资源丰 富 速度快 编程容易等优点 利用单片机内部的随机存储器 RAM 和只读存储器 ROM 及其引脚资源 外接液晶显示 LCD 键盘输入等实现数据的处理传输和显 示功能 基本上能实现设计指标 可以看出方案二控制灵活准确性好且保密性强还 具有扩展功能 根据现实生活的需要综合考虑 此次设计采用此方案 2 2 密码输入方式的选择 方案一 指纹输入识别 指纹识别技术主要涉及四个功能 读取指纹图像 提取特征 保存数据和比对 通过指纹读取设备读取到人体指纹的图像 然后要对原始图像进行初步的处理 使 之更清晰 再通过指纹辨识软件建立指纹的特征数据 软件从指纹上找到被称为 节 点 minutiae 的数据点 即指纹纹路的分叉 终止或打圈处的坐标位置 这些点 同时具有七种以上的唯一性特征 通常手指上平均具有 70 个节点 所以这种方法会 产生大约 490 个数据 这些数据 通常称为模板 通过计算机模糊比较的方法 把 两个指纹的模板进行比较 计算出它们的相似程度 最终得到两个指纹的匹配结果 从而判断输入结果的正确与否 考虑到本方案软硬件太过复杂 而且成本也高 故 不采用 方案二 矩阵键盘输入识别 由各按键组成的矩阵键盘每条行线和列线都对应一条 I O 口线 键位设在行线和 列线的交叉点 当一个键按下就会有某一条行线与某一条列线接触 只要确定接触 的是哪两条线 即哪两个 I O 口线 就可以确定哪一个键被触动 行线设计成上拉口 线 初始时被置高电位 列线悬空 初始置低 通过不断读行线口线 或者中断方 式触发键位扫描 当发现有键按下 将列线逐一置低 其他列线置高 读行线口线 当某条列线置低时 某条行线也被拉低 则确定这两条线的交点处的按钮被按下 每个按键都可通过程序赋予功能 从而完成密码识别 本方案简单易行 故采用 第 3 页 3 硬件电路设计硬件电路设计 3 1 硬件系统总体电路设计 本设计主要由单片机 矩阵键盘 液晶显示器和密码存储等部分组成 其中矩 阵键盘用于输入数字密码和进行各种功能的实现 由用户通过连接单片机的矩阵键 盘输入密码 后经过单片机对用户输入的密码与自己保存的密码进行对比 从而判 断密码是否正确 然后控制引脚的高低电平传到开锁电路或者报警电路控制开锁还 是报警 实际使用时只要将单片机的负载由继电器换成电子密码锁的电磁铁吸合线 圈即可 系统整体框图如图 1 所示 中央控制芯片 AT89C52 电源电路 密码保护 键盘输入电路 显示电路 报警电路 图 1 系统结构框图 各模块功能如下 矩阵键盘输入模块 分为密码输入按键与功能按键 用于完成密码锁输入功能 显示模块 用于完成对系统状态显示及操作提示功能 报警电路 用于完成输错密码时候的警报功能 密码存储模块 用于完成掉电存储功能 使修改的密码断电后仍能保存 电源模块 用于对系统电路提供 5V 的直流电压 3 2 单片机最小系统模块电路设计 由 STC89C52 复位电路 时钟产生电路组成 STC89C52 是美国 Atmel 公司生 产的低电压 高性能 CMOS8 位单片机 片内含 8k bytes 的可反复擦写的只读程序存 储器 PEROM 和 256bytes 的随机存取数据存储器 RAM STC89C52 有 40 个引 脚 32 个外部双向输入 输出 I O 端口 同时内含 2 个外中断口 3 个 16 位可编 第 4 页 程定时计数器 2 个全双工串行通信口 2 个读写口线 主要功能特性 8k 可反复擦写 1000 次 Flash ROM 32 个双向 I O 口 256x8bit 内部 RAM 时 钟频率 0 24MHz 可编程 UART 串行通道 3 个 16 位可编程定时 计数器中断 2 个串行中断 2 个外部中断源 共 6 个中 断源 2 个读写中断口线 引脚功能如下 P0 口 P0 口是一组 8 位漏极开路型双向 I O 口 也即地址 数据总线复用口 作 为输出口用时 每位能吸收电流的方式驱动 8 个 TTL 逻辑门电路 对端口 P0 写 1 时 可作为高阻抗输入端用 在访问外部数据存储器或程序存储器时 这组口 线分时转换地址 低 8 位 和数据总线复用 在访问期间激活内部上拉电阻 P1 口 P1 是一个带内部上拉电阻的 8 位双向 I O 口 P1 的输出缓冲级可驱动 吸收或输出电流 4 个 TTL 逻辑门电路 对端口写 1 通过内部的上拉电阻把 端口拉到高电平 此时可作输入口 作输入口使用时 因为内部存在上拉电阻 某 个引脚被外部信号拉低时会输出一个电流 IIL P2 口 P2 是一个带有内部上拉电阻的 8 位双向 I O 口 P2 的输出缓冲级可驱动 吸收或输出电流 4 个 TTL 逻辑门电路 对端口 P2 写 1 通过内部的上拉电阻 把端口拉到高电平 此时可作输入口 作输入口使用时 因为内部存在上拉电阻 某个引脚被外部信号拉低时会输出一个电流 IIL 在访问 8 位地址的外部数据存储 器 如执行 MOVX RI 指令 时 P2 口输出 P2 锁存器的内容 Flash 编程或校验时 P2 亦接收高位地址和一些控制信号 P3 口 P3 口是一组带有内部上拉电阻的 8 位双向 I O 口 P3 口输出缓冲级可驱 动 吸收或输出电流 4 个 TTL 逻辑门电路 对 P3 口写入 1 时 它们被内部上 位电阻拉高并可作为输入端口 此时 被外部拉低的 P3 口将用上拉电阻输出电流 IIL P3 口除了作为一般的 I O 口线外 更重要的用途是它的第二功能 RST 复位输入 当振荡器工作时 RST 引脚出现两个机器周期以上高电平将 使单片复位 ALE PROG 当访问外部程序存储器或数据存储器时 ALE 地址锁存允许 输 出脉冲用于锁存地址的低 8 位字节 一般情况下 ALE 仍以时钟振荡频率的 1 6 输 出固定的脉冲信号 因此它可对外输出时钟或用于定时目的 要注意的是 每当访 问外部数据存储器时将跳过一个 ALE 脉冲 EA VPP 外部访问允许 欲使 CPU 仅访问外部程序存储器 地址为 0000H FFFFH EA 端必须保持低电平 接地 需注意的是 如果加密位 LB1 被 第 5 页 编程 复位时内部会锁存 EA 端状态 如 EA 端为高电平 接 Vcc 端 CPU 则执行 内部程序存储器中的指令 Flash 存储器编程时 该引脚加上 12V 的编程允许电源 VPP 当然这必须是该器件是使用 12V 编程电压 VPP XTAL1 振荡器反相放大器的及内部时钟发生器的输入端 XTAL2 振荡器反相放大器的输出端 引脚 XTAL1 和 XTAL2 分别是该放大器的输入端和输出端 这个放大器与作为 反馈元件的片外石英晶体或陶瓷谐振器一起构成自激振荡器 当单片机的复位引脚 RST 全称 RESET 出现 2 个机器周期以上的高电平时 单片机就执行复位操作 如果 RST 持续为高电平 单片机就处于循环复位状态 根据应用的要求 复位操作通常 有两种基本形式 上电复位和开关复位 其原理图如图 2 所示 图 2 最小系统电路原理图 3 3 电源输入模块电路设计 密码锁主控制部分电源需要用 5V 直流电源供电 把频率为 50Hz 有效值为 220V 的单相交流电压转换为幅值稳定的 5V 直流电压 其主要原理是把单相电经过电 源变压器 整流电路 滤波电路 稳压电路转换成稳定的直流电压 由于输入电压 为电网电压 一般情况下所需直流电压的数值和电网电压的有效值相差较大 因而 电源变压器的作用显现出来起到降压作用 降压后还是交流电压 所以需要整流电 路把交流电压转换成直流电压 由于经整流电路整流后的电压含有较大的交流分量 会影响到负载电路的正常工作 需通过低通滤波电路滤波 使输出电压平滑 稳压 电路的功能是使输出直流电压基本不受电网电压波动和负载电阻变化的影响 从而 获得稳定性足够高的直流压 本电路使用充电器解决电源稳压问题 第 6 页 3 4 键盘输入模块电路设计 本设计就采用行列式键盘 同时也能减少键盘与单片机接口时所占用的 I O 线的 数目 在按键比较多的时候 通常采用这样方法 每一条水平 行线 与垂直线 列线 的交叉处不相通 而是通过一个按键来连通 利用这种行列式矩阵结构只 需要 N 条行线和 M 条列线 即可组成具有 N M 个按键的键盘 在这种行列式矩阵 键盘非键盘编码的单片机系统中 键盘处理程序首先执行等待按键并确认有无按键 按下的程序段 4 4 矩阵键盘的工作原理 在键盘中按键数量较多时 为了减少 I O 口的占用 通常将按键排列成矩阵形式 如图 3 所示 在矩阵式键盘中 每条水平线和垂直线在交叉处不直接连通 而是通 过一个按键加以连接 这样 一个端口 如 P1 口 就可以构成 4 4 16 个按键 比 之直接将端口线用于键盘多出了一倍 而且线数越多 区别越明显 比如再多加一 条线就可以构成 20 键的键盘 而直接用端口线则只能多出一键 9 键 由此可见 在需要的键数比较多时 采用矩阵法来做键盘是合理的 扫描原理 把每个键都分成水平和垂直的两端接入 比如说扫描码是从垂直的入 那就代 表那一行所接收到的扫描码是同一个 bit 而读入扫描码的则是水平 扫描的动作是 先输入扫描码 再去读取输入的值 经过比对之后就可知道是哪个键被按下 比如说扫描码送入 01111111 前面的 0111 是代表此时扫描第一行 P1 0 列 而 后面的 1111 是让读取的 4 行接脚先设为 VDD 若此时第一行的第三列按键被按下 那读取的结果就会变成 01111101 注意 1111 变成 1101 其中 LSB 的第三个 bit 会 由 1 变成 0 这是因为这个按键被按下之后 会被垂直的扫描码电位 short 而把读 取的 LSB 的 bit 电位拉到 0 此即为扫描原理 由於这种按键是机械式的开关 当按键被按下时 键会震动一小段时间才稳定 为了避免让 8051 误判为多次输入同一按键 我们必须在侦测到有按键被按下 就 Delay 一小段时间 使键盘以达稳定状态 再去判读所按下的键 就可以让键盘的输 入稳定 键盘整体电路图如图 3 所示 第 7 页 h4 h3 h2 h1 l4l3l2l1 147A 0852 3 FE 9B6 DC 图3 键盘整体模框图 3 5 密码存储模块电路设计 用 EPROM 芯片 AT24C02 存储密码 AT24C02 是美国 Atmel 公司的低功耗 CMOS 型 EPROM 内含 256 8 位存储空间 具有工作电压宽 2 5 5 5 V 擦写次 数多 大于 10000 次 写入速度快 小于 10 ms 抗干扰能力强 数据不易丢失 体 积小等特点 而且他是采用了 I2C 总线式进行数据读写的串行器件 占用很少的资 源和 I O 线 并且支持在线编程 进行数据实时的存取十分方便 AT24C02 中带有 的片内地址寄存器 每写入或读出一个数据字节后 该地址寄存器自动加 1 以实现 对下一个存储单元的读写 所有字节均以单一操作方式读取 为降低总的写入时间 一次操作可写入多达 8 个字节的数据 I2C 总线是一种用于 I2C 器件之间连接的二线 制总线 他通过 SDA 串行数据线 及 SCL 串行时钟线 两根线在 连到总线上的器件 之间传送信息 并根据地址识别每个器件 AT24C02 正是运用了 I2C 规程 使用主 从机双向通信 主机 通常为单片机 和从机 AT24C02 均可工作于接收器和发送器状 态 主机产生串行时钟信号 通过 SCL 引脚 并发出控制字 控制总线的传送方向 并产生开始和停止的条件 无论是主机还是从机 接收到一个字节后必须发出一个 确认信号 ACK AT24C02 的控制字由 8 位二进制数构成 在开始信号发出以后 主 机便会发出控制字 以选择从机并控制总线传送的方向 管脚功能如下 SCL 为串行时钟 串行时钟输入管脚用于产生器件所有数据发送或接收的时钟 这是一个输入管脚 SDL 为串行数据 地址 双向串行数据 地址管脚用于器件所有数据的发送或接 收 SDL 是一个开漏输出管脚可与其它开漏输出或集电极开路输出进行线或 A0 A1 A2 为器件地址输入端 当使用 24C02 时最大可级联 8 个器件 如果 只有一个 24C02 被总线寻址 这三个地址输入脚 A0 A1 A2 可悬空或连接到 Vss WP 为写保护 如果 WP 管脚连接到 Vcc 所有的内容都被写保护只能读当 WP 第 8 页 管脚连接到 Vss 或悬空 允许器件进行正常的读 写操作 管脚图如图 4 所示 图 4 AT24C02 引脚图 3 6 显示模块电路设计 为了提高密码锁的密码显示效果能力 本设计的显示部分由液晶显示器 LCD1602 取代普通的数码管来完成 LCD1602 中所谓的 1602 即是 16 字符 2 行的字符型 LCD 显示器 它由 32 个字符点阵块组成 每个字符点阵块由 5 7 或 5 10 个点阵组成 可以显示 ASCII 码表中的所有可视的字符 它内置了字符产生器 ROM CGROM 字符 产生器 RAM CGRAM 和显示数据 RAM DDRAM CGROM 中内置了 192 个常用字符的字模 CGRAM 包含 8 个字节的 RAM 可存放用户自定义的字符 DDRAM 就是用来寄存待显示 的字符代码 1602 液晶显示器以其微功耗 体积小 显示内容丰富 超薄轻巧的诸多优点 在袖珍式仪表和低功耗应用系统中得到越来越广泛的应用本系统也将用到 1602 引脚及其具体功能如表 1 所示 表 1 1602 引脚及功能 编号符号引脚说明编号符号引脚说明 1VSS 电源地 9D2Data I O 2VDD 电源正极 10D3Data I O 3VL 液晶显示偏压信号 11D4Data I O 4RS 数据 命令选择端 H L 12D5Data I O 5R W 读 写选择端 H L 13D6Data I O 6E 使能信号 14D7Data I O 7D0Data I O15BLA 背光源正极 8D1Data I O16BLK 背光源负极 第 9 页 1 读操作时序图如图 5 所示 图 5 读操作时序图 2 写操作时序图如图 6 所示 图 6 写操作时序图 3 时序参数表如表 2 所示 表 2 时序参数表 极限值时序参数符号 最小值典型值最大值 单 位 测试条件 E 信号周期 tc400 ns E 脉冲宽度 tpw tF150 ns E 上升 下降沿时间 tR 25ns 引脚 E 地址建立时间 tsp130 ns 地址保持时间 tHD110 ns 引脚 E RS R W 第 10 页 数据建立时间 读操作 tD 100ns 数据保持时间 读操作 tHD220 ns 数据建立时间 写操作 tsp240 ns 数据保持时间 写操作 tHD210 ns 引脚 DB0 DB7 注意 对控制器每次进行读写操作之前 都必须进行读写检测 确保 STA7 0 显示器一直处于初始状态 当需要对密码锁进行开锁时 按下键盘上的开锁按 键后利用键盘上的数字键 0 9 输入密码 每按下一个数字键后在显示器上显示一个 输入多少位就显示多少个 当密码输入完成时 按下确认键 如果输入的密码 正确的话 LCD 子显示 RIGHT LCD 显示屏会显示 ERROR P2 0 输出的是低电 平 电子密码锁不能被打开 通过 LCD 显示屏 可以清楚的判断出锁所处状态 其 显示部分引脚接口如图 7 所示 图 7 显示电路原理图 3 7 报警部分 报警部分由喇叭电路组成 当有键按下时 每按一下 喇叭 koi 响一次 当密 码输入错误时 单片机的 P2 1 引脚为低电平 喇叭发出噪鸣声报警 如图 8 所示 第 11 页 图 8 报警电路原理图 3 8 开锁机构 用户通过LCD提示信息 用键盘输入正确密码 从而达到开锁的目的 当用户输 入的密码正确并且是在按下确定键的话 单片机便输出开门信号 送到开锁驱动 电 路 然后驱动电磁锁 达到开门的目的 电路驱动和开锁两级组成 由D5 R1 T10 组成驱动电路 其中T10可以选择普通的小功率三极管如9014 9018都可以满足要求 D5作为开锁的提示 由D6 C24 T11组成 其中D6 C24是为了消除电磁锁可能产生 的反向高电压以及可能产生的电磁干扰 T11可选用中功率的三极管如8050 电磁锁 的选用要视情况而定 但是吸合力要足够且由一定的余量 4 4 软件设计软件设计 4 1 软件设计原理 本设计主要由单片机 矩阵键盘 液晶显示器和密码存储等部分组成 其中矩 阵键盘用于输入数字密码和进行各种功能的实现 由用户通过连接单片机的矩阵键 盘输入密码 后经过单片机对用户输入的密码与自己保存的密码进行对比 从而判 断密码是否正确 然后控制引脚的高低电平传到开锁电路或者报警电路控制开锁还 是报警 实际使用时只要将单片机的负载由继电器换成电子密码锁的电磁铁吸合线 圈即可 当然也可以用继电器的常开触点去控制电磁铁吸合线圈 本系统共有两部 分构成 即硬件部分与软件部分 其中硬件部分由电源输入部分 键盘输入部分 密码存储部分 显示部分 报警部分组成 软件部分对应的由主程序 初始化程序 LCD 显示程序 键盘扫描程序 启动程序 关闭程序 键功能程序 密码设置程序 EEPROM 读写程序和延时程序等组成 流程图如图 9 所示 第 12 页 开始 初始化 模式选择 识别按键 密码输入手动清除 密码比较 开门 旧密码输入 新密码输入 存入缓存区 再次输入密码重新输入 设置完 毕返回 N A N B Y 图 9 主程序的流程图 4 2 LED 显示子程序 LED 显示流程图如图 10 所示 图 10 LED 显示流程图 4 3 键盘扫描及识别子程序 键盘采用查询的方式 放在主程序中 当没有按键按下的时候 单片机循环主 第 13 页 程序 一旦有按键按下 便转向相应的子程序处理 处理结束再返回 其程序流程 如图11所示 图 11 键盘扫描程序流程图 4 4 系统模块密码设置子程序 由于设计是分模块化进行 所以子程序是整体软件系统的组成部分 子程序不 但可以使程序化整为零 使其复杂简单化 同时也方便阅读 修改等 每个功能模 块都有它自己的子程序 在本设计中是用LCD显示数据 所以就要用到显示子程序 设计中用的是矩阵键盘 所以就用到键盘扫描子程序 例如还有显示初始化子 程序 LCD忙检测子程序 关闭状态显示子程序 开锁状态显示子程序 密码输入及 修改状态显示子程序 密码输入错误后的提示子程序等 密码修改子程序流程图如 下图12所示 第 14 页 选择模式 旧密码输入 新密码输入 存入缓存 再次输入密码 比较密码 重新输入 返回 Y N 是否大于 3 次 锁定 N Y 图 12 设置密码子程序 5 系统制作及调试分析 5 1 焊接注意事项 LCD 的注意事项 1 采用焊接方法将金属基 PIN 安装于 LCD 时 从玻璃末端到 PCB 的焊接位置的 长度至少 5mm 焊接温度必须在 260 以下 且焊接时间必须在 10 秒以内 以免焊 接过程中对装置的损坏 确保焊接性能 在 230 30 秒条件下 90 的焊料须紧密 附着于 PIN 上 2 对 LCD 基板或基 PIN 焊接位置的调整必须在安装前完成 严禁猛烈移动基 PIN 否则会机械地破坏 LCD 屏与基 PIN 之间的连接点 焊接时平放 LCD 尽量不 让 LCD 受力 3 焊接 LCD 基板时 将其小心 平衡地插入 PCB 插槽 以避免损坏基 PIN 或 LCD 基板 4 焊接时 LCD 基板不应长时间置于焊锡蒸汽中 清洗 PCB 时 必须避免污染 LCD 基板 否则可能损坏显示器表面的偏光片及封口胶 5 显示器表面的保护膜直到焊接完成才可揭掉 禁止手指及其它硬物接触偏光片 禁止水和其他化学物质沾污装置 因为这些物质会污染显示器表面 单片机焊接注意事项 80s51 单片机与其它单片机 dsp arm 芯片相比较而言是脆弱的 如果焊接时不小 第 15 页 心就很可能把芯片损坏 建议用比较好的恒温可调的烙铁 功率在 30 瓦左右 温度 控制在 260 到 300 度 建议采用点焊而不用拉焊 焊接时烙铁放在每个引脚的时间 不能太长 最好低于 3 秒 上边提到的方法还不能确保芯片完好 对芯片有危害的 还有带电烙铁的静电感应 烙铁质量不是太好的 焊接时可以把烙铁电源插头拔掉 其他的电子器件焊接须知 一般分四步骤进行 准备焊接 清洁被焊元件处的积尘及油污 再将被焊元器件 周围的元器件左右掰一掰 让电烙铁头可以触到被焊元器件的焊锡处 以免烙铁头伸向 焊接处时烫坏其他元器件 焊接新的元器件时 应对元器件的引线镀锡 加热焊接 将沾有少许焊锡和松香的电烙铁头接触被焊元器件约几秒钟 若是要拆下印刷板上 的元器件 则待烙铁头加热后 用手或银子轻轻拉动元器件 看是否可以取下 清理焊 接面 若所焊部位焊锡过多 可将烙铁头上的焊锡甩掉 注意不要烫伤皮肤 也不要甩到 印刷电路板上 用光烙锡头 沾 些焊锡出来 若焊点焊锡过少 不圆滑时 可以用电 烙铁头 蘸 些焊锡对焊点进行补焊 检查焊点 看焊点是否圆润 光亮 牢固 是否 有与周围元器件连焊的现象 电子密码锁的硬件联接原理图按下列顺序依次焊接 1 焊接单片机的晶振电路 复位电路等单片机的最小系统的外围电路 2 焊接 LCD 的相应管脚并把 LCD 的管脚单片机相连接 3 焊接键盘的按键电路 4 焊接电子密码锁的密码输入错误的报警电路 5 焊接密码锁的开锁机构电路 6 焊接其他接口及辅助电路 7 焊接接地及高电平 5 2 软件调试 在硬件支持的环境下 用proteus设计好的电路 Keil编好的程序编译成芯片可 识别的文件 利用PC机写进proteus程序图芯片内进行仿真测试 并对其出现的错误 进行修改 由图13 图14可看出最终调试成功 第 16 页 图 13 keil 编译程序成功 图 4 7 仿真成功密码正确 5 3 硬件调试 电源 晶振电路和复位电路都无异常 Lcd 焊接时的问题 1 接通电源后 lcd 无反应 各个引脚均属正常 推断可能是初始化程序出现问题 2 接通电源开门灯和报警电路就会工作 分析原因是单片机刚开始各个管脚输出 高电平 6 心得体会 课程设计是培养学生综合运用所学知识 发现 提出 分析和解决实际问题 锻炼 实践能力的重要环节 是对学生实际工作能力的具体训练和考察过程 随着科学技术 发展的日新日异 单片机已经成为当今计算机应用中空前活跃的领域 在生活中可 w1 w2 w3 w4 w5 w6 w7 w8 D7 14 D6 13 D5 12 D4 11 D3 10 D2 9 D1 8 D0 7 E 6 RW 5 RS 4 VSS 1 VDD 2 VEE 3 LCD2 LM016L 第 17 页 以说得是无处不在 因此作为二十一世纪的大学来说掌握单片机的开发技术是十分 重要的 回顾起此次单片机课程设计 至今我仍感慨颇多 的确 从选题到定稿 从理 论到实践 在整整两星期的日子里 可以说得是苦多于甜 但是可以学到很多很多 的的东西 同时不仅可以巩固了以前所学过的知识 而且学到了很多在书本上所没 有学到过的知识 通过这次课程设计使我懂得了理论与实际相结合是很重要的 只 有理论知识是远远不够的 只有把所学的理论知识与实践相结合起来 从理论中得 出结论 才能真正为社会服务 从而提高自己的实际动手能力和独立思考的能力 在设计的过程中遇到问题 可以说得是困难重重 这毕竟第一次做的 难免会遇到 过各种各样的问题 同时在设计的过程中发现了自己的不足之处 对以前所学过的 知识理解得不够深刻 掌握得不够牢固 对单片机汇编语言掌握得不好 通过这次 课程设计之后 一定把以前所学过的知识重新温故 这次课程设计终于顺利完成了 在设计中遇到了很多编程问题 在同学的帮助 下 终于游逆而解 非常感谢 参考文献 01 何宏主编 单片机原理与接口技术 北京 国防工业出版社 2006 07 02 杨西明 朱骐主编 单片机编程与应用入门 北京 机械工业出版社 2004 06 03 先锋工作室编著 单片机程序设计实例 北京 清华大学出版社 2003 01 04 谢宜仁主编 单片机实用技术问答 北京 人民邮电出版社 2003 02 05 房小翠 王金凤编著 单片机实用系统设计技术 北京 国防工业出版社 1999 06 06 各种网络教程及其他 07 王宽仁 可靠安全的智能密码锁 电子技术应用 2001 18 董继成 能防止多次试探密码的单片机密码锁 国外电子元器件 2004 3 09 赵益丹 徐晓林 周振峰编著 电子密码锁的系统原理 设计程序及流程图 嘉兴 学院学报 2003 15 10 张培仁 基于 C 语言编程 MCS 51 单片机原理与应用 北京 清华大学出版 社 2002 12 11 李朝清 PC 机及单片机数据通信技术 北京 北京航空航天大学出版社 1999 12 刘文涛 MCS 51单片机培训教程 C51 版 电子工业出版社 2005 8 第 18 页 附录附录 电子密码锁整体设计图电子密码锁整体设计图 第 19 页 附录附录 电子密码锁程序源代码电子密码锁程序源代码 include include define LCM Data P0 define uchar unsigned char define uint unsigned int define w 6 sbit lcd1602 rs P2 6 sbit lcd1602 en P2 7 sbit Scl P3 4 sbit Sda P3 5 sbit ALAM P2 1 sbit KEY P3 6 sbit YY P2 4 sbit open led P2 2 bit operation 0 bit pass 0 bit ReInputEn 0 bit s3 keydown 0 bit key disable 0 unsigned char countt0 second void Delay5Ms void unsigned char code a 0 xFE 0 xFD 0 xFB 0 xF7 unsigned char code start line password unsigned char code name Coded Management unsigned char code Correct correct unsigned char code Error error unsigned char code codepass pass unsigned char code LockOpen true unsigned char code SetNew SetNewWordEnable unsigned char code Input input unsigned char code ResetOK ResetPasswordOK unsigned char code initword Init password unsigned char code Er try error try again unsigned char code again input again unsigned char InputData 6 unsigned char CurrentPassword 6 1 3 1 4 2 0 unsigned char TempPassword 6 unsigned char N 0 unsigned char ErrorCont unsigned char CorrectCont 第 20 页 unsigned char ReInputCont unsigned char num flag 0 unsigned char code initpassword 6 1 2 3 4 5 6 void Delay5Ms void unsigned int TempCyc 5552 while TempCyc void Delay400Ms void unsigned char TempCycA 5 unsigned int TempCycB while TempCycA TempCycB 7269 while TempCycB void mDelay uint t uchar i while t for i 0 i 125 i void Nop void nop nop nop nop void Start void Sda 1 Scl 1 Nop Sda 0 第 21 页 Nop void Stop void Sda 0 Scl 1 Nop Sda 1 Nop void Ack void Sda 0 Nop Scl 1 Nop Scl 0 void NoAck void Sda 1 Nop Scl 1 Nop Scl 0 void Send uchar Data uchar BitCounter 8 uchar temp do temp Data Scl 0 Nop if temp else Sda 0 Scl 1 temp Data 1 第 22 页 Data temp BitCounter while BitCounter Scl 0 uchar Read void uchar temp 0 uchar temp1 0 uchar BitCounter 8 Sda 1 do Scl 0 Nop Scl 1 Nop if Sda temp temp 0 x01 else temp temp if BitCounter 1 temp1 temp 1 temp temp1 BitCounter while BitCounter return temp void WrToROM uchar Data uchar Address uchar Num uchar i uchar PData PData Data for i 0 i Num i Start Send 0 xa0 Ack Send Address i 第 23 页 Ack Send PData i Ack Stop mDelay 20 void RdFromROM uchar Data uchar Address uchar Num uchar i uchar PData PData Data for i 0 i0 x for y 110 y 0 y write 1602com uchar com lcd1602 rs 0 P0 com delay 1 lcd1602 en 1 第 24 页 delay 1 lcd1602 en 0 write 1602dat uchar dat lcd1602 rs 1 P0 dat delay 1 lcd1602 en 1 delay 1 lcd1602 en 0 void lcd init void write 1602com 0 x38 write 1602com 0 x0c write 1602com 0 x06 write 1602com 0 x01 unsigned char coding unsigned char m unsigned char k switch m case 0 x18 k 1 break case 0 x28 k 2 break case 0 x48 k 3 break case 0 x88 k A break case 0 x14 k 4 break case 0 x24 k 5 break case 0 x44 k 6 break case 0 x84 k B break case 0 x12 k 7 break case 0 x22 k 8 break case 0 x42 k 9 break case 0 x82 k C break case 0 x11 k break case 0 x21 k 0 break case 0 x41 k break 第 25 页 case 0 x81 k D break return k unsigned char keynum void unsigned char row col i P1 0 xf0 if P1 Delay5Ms if P1 i 0 P1 a i while i 4 if P1 break else i P1 a i else return 0 while P1 return row col else return 0 第 26 页 void OneAlam void ALAM 0 Delay5Ms ALAM 1 void TwoAlam void ALAM 0 Delay5Ms ALAM 1 Delay5Ms ALAM 0 Delay5Ms ALAM 1 void ThreeAlam void ALAM 0 Delay5Ms ALAM 1 Delay5Ms ALAM 0 Delay5Ms ALAM 1 Delay5Ms ALAM 0 Delay5Ms ALAM 1 void DisplayOne void DisplayOneChar 9 N 1 write 1602com yi 5 N write 1602dat 第 27 页 void DisplayChar void unsigned char i if pass 1 DisplayListChar 0 1 LockOpen write 1602com er for i 0 i 16 i write 1602dat LockOpen i else if N 0 DisplayListChar 0 1 Error write 1602com er for i 0 i 16 i write 1602dat Error i else DisplayListChar 0 1 start line write 1602com er for i 0 i 16 i write 1602dat start line i void DisplayInput void unsigned char i if CorrectCont 1 DisplayListChar 0 0 Input write 1602com er 第 28 页 for i 0 i 16 i write 1602dat Input i void ResetPassword void unsigned char i unsigned char j if pass 0 pass 0 DisplayChar ThreeAlam else if ReInputEn 1 if N 6 ReInputCont if ReInputCont 2 for i 0 i 6 if TempPassword i InputData i i else DisplayListChar 0 1 Error write 1602com er for j 0 j 16 j write 1602dat Error j ThreeAlam pass 0 ReInputEn 0 ReInputCont 0 第 29 页 DisplayChar break if i 6 DisplayListChar 0 1 ResetOK write 1602com er for j 0 j 16 j write 1602dat ResetOK j TwoAlam WrToROM TempPassword 0 6 ReInputEn 0 ReInputCont 0 CorrectCont 0 else OneAlam DisplayListChar 0 1 again write 1602com er for j 0 j 16 j write 1602dat again j for i 0 i 6 i TempPassword i InputData i N 0 void Alam KeyUnable void 第 30 页 P1 0 x00 ALAM ALAM Delay5Ms void Cancel void unsigned char i unsigned char j DisplayListChar 0 1 start line write 1602com er for j 0 j 16 j write 1602dat start line j TwoAlam for i 0 i 6 i InputData i 0 KEY 1 ALAM 1 flag 0 operation 0 pass 0 ReInputEn 0 ErrorCont 0 CorrectCont 0 ReInputCont 0 open led 1 s3 keydown 0 key disable 0 N 0 void Ensure void unsigned char i j RdFromROM CurrentPassword 0 6 if N 6 第 31 页 if ReInputEn 0 for i 0 i 6 if CurrentPassword i InputDa
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025甘肃省大数据中心招聘8人模拟试卷附答案详解
- 2025年琼海市校园招聘教育类专业技术人才(西安站)考前自测高频考点模拟试题及参考答案详解
- 2025第二季度贵州安顺市平坝区美农科技有限公司招聘9人考前自测高频考点模拟试题及1套参考答案详解
- 2025北京市第十九中学招聘模拟试卷及完整答案详解一套
- 海伦凯勒课件
- 2025年甘肃省定西市漳县武当乡选聘村干部模拟试卷及完整答案详解一套
- 2025呼伦贝尔市政务服务与数据管理局所属事业单位引进3名人才考前自测高频考点模拟试题及答案详解(名师系列)
- 2025年河北保定曲阳县公开选聘职教中心教师18名考前自测高频考点模拟试题附答案详解(模拟题)
- 2025年马鞍山和县公开引进高中教师12人模拟试卷及答案详解一套
- 2025甘肃金昌市公安局招聘公益性岗位人员58人模拟试卷及答案详解一套
- 法人车辆租给公司合同范本
- 山东威海旅游介绍PPT模板(推荐)
- 汉画像石课件
- 初中毕业证怎么从网上查询
- GB/T 32926-2016信息安全技术政府部门信息技术服务外包信息安全管理规范
- GB/T 26006-2010船用铝合金挤压管、棒、型材
- 建筑工程防火墙脚手架搭设施工方案
- 比较思想政治教育学全套课件
- 正常检验一次抽样与方案
- 炎症性肠病患者与营养支持
- 隧道施工监理实施细则(精编)
评论
0/150
提交评论