




已阅读5页,还剩28页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于 AT89C51 单片机的密码锁设计 摘要 前使用的电子密码锁大部分是基于单片机技术 以单片机为主要器件 其编码器与解码器 的生成为软件方式 本系统由 AT89C51 单片机系统 主要是 AT89C51 单片机最小系统 4 4 矩阵键盘 LCD1602 显示和报警系统等组成 具有设置 修改六位用户密码 超次报警 超次锁定 密码错误报警等 功能 本设计由 P0 口控制 LCD 显示 密码正确显示 password ok 密码错误显示 password error 超过三次输入错误自动锁定 由 P1 口控制矩阵键盘含有 0 9 数字键和 A F 功能键 除 上述基本的密码锁功能外 依据实际的情况还可以添加遥控功能 本系统成本低廉 功能实用 关键词 单片机 密码锁 单片机设计 电子锁 ElectronicElectronic LockLock DesignDesign withwith 5151 SeriresSerires SingleSingle ChipChip ControllerController AbstractAbstract At present the use of electronic locks are mostly based on microprocessor main devices MCU the encoder and decoder built into software SCM system from the system Mainly AT89C51 microcontroller minimum system 4 4 Matrix keyboard LCD display and alarm system With the settings modify the eight user password Ultra alarm Ultra Lock Password error alarm and other functions P0 port to control the design of the LCD display Password correctly display password ok Password error display password error For more than three times to enter the error automatically lock The P1 port control keyboard matrix containing the number keys 0 9 and A F function keys The system cost effective practical function keywordskeywords singlechip cryptogram lock singlechip design electronics lock 目目 录录 1 绪论 1 1 1 背景 1 1 2 电子锁 1 1 3 电子密码锁的特点 1 1 4 电子密码锁的的发展趋势 1 2 总体方案 2 2 1 系统结构 2 2 2 总体方案比较与论证 3 2 3 各方案比较显示方案的选择 3 3 硬件设计 5 3 1 单片机 AT89C51 简介 5 3 2 输入键盘 5 3 3 显示部分 6 3 4 震荡电路 7 4 软件设计 7 4 1 软件设计方案 7 4 2 软件设计总流程图 8 4 3 具体功能软件实施 8 4 3 1 键盘扫描 8 4 3 2 密码修改 11 5 调试 12 5 1 调试前的准备 12 5 2 硬件调试 12 5 2 1 液晶显示模块的硬件调试 12 5 2 2 按键测试 13 5 3 软件调试 13 5 4 调试心得 14 总 结 15 参考文献 16 致 谢 17 附 录 18 附录一 硬件原理图 18 附录二 源程序 18 精品文档 1欢迎下载 1 绪论 1 1 背景 随着社会物质财富的日益增长 安全防盗已成为社会问题 而锁自古以来就是把守 门户的铁将军 人们对它要求甚高 既要安全可靠地防盗 又要使用方便 这也是制锁 者长期以来研制的主题 目前国内 大部分人使用的还是传统的机械锁 然而 眼下假 冒伪劣的机械锁泛滥成灾 互开率非常之高 所谓互开率 是各种锁具的一个技术质量 标准 也就是 1 把钥匙能开几把锁的比率 经国家工商局 国家内贸局 中国消协等部 门对锁具市场的调查 发现个别产品的互开率居然超标 26 倍 为何弹子锁的 互开率 会如此之高 据有关专家人士剖析 弹子锁质量好坏主要 取决于弹子数量的多少以及弹子的大小 而弹子的多少和大小受一定条件的限制 此外 即使是一把质量过关的机械锁 通过急开锁 甚至可以在不损坏锁的前提下将锁打开 机械锁的这些弊端为一种新型的锁 电子密码锁 提供了发展的空间 1 2 电子锁 电子锁是采取电子电路控制 以电磁铁或者卫星电机和锁体作为执行装置的机电一 体化锁具 相比传统的机械锁具 电子锁不使用金属钥匙 保密性 精度都有很大提高 电子锁的发明思路 源自古代发明的自动机械 例如古希腊数学家赫伦的液压自动 门 中国古代诸葛亮的木牛流马 它们以重力或蒸汽压力驱动 最广泛的用途乃是用在 古代墓道的地下机关 电子工业的诞生 使得以微小电量驱动机械成为可能 于是有了 电子锁一日千里的跃进 1 3 电子密码锁的特点 电子密码锁是一种通过密码输入来控制电路或是芯片工作 从而控制机械开关的闭 合 完成开锁 闭锁任务的电子产品 它的种类很多 有简易的电路产品 也有基于芯 片的性价比较高的产品 现在应用较广的电子密码锁是以芯片为核心 通过编程来实现 的 其性能和安全性已大大超过了机械锁 主要特点如下 1 保密性好 编码量多 远远大于弹子锁 随机开锁成功率几乎为零 2 密码可变 用户可以经常更改密码 防止密码被盗 同时也可以避免因人员的更 替 3 而使锁的密级下降 4 误码输入保护 当输入密码多次错误时 报警系统自动启动 防止试探密码 1 4 电子密码锁的的发展趋势 从目前的技术水平和市场认可程度看 使用最为广泛的是键盘式电子密码锁 该产 品主要应用于保险箱 保险柜和金库 还有一部分应用于保管箱和运钞车 键盘式电子 密码在键盘上输入 与打电话差不多 因而易于掌握 其突出优点是 密码 是记在被 授权人脑子里的数字和字符 既准确又可靠 不会丢失 除了忘记 难以被窃 除非自 己泄露 但是密码不能太简单 太简单了就容易被他人在键盘上试探出来 或者可能被 旁观者窥测出来 造成保密性不足 当然 密码又不能太复杂 太复杂了可能自己都糊 涂了 或者输入密码操作成功率低 造成使用不便 因此 为了发扬优点 克服弱点 键盘式电子密码也在不断发展中 如 任意设定密码 技术使得被授权人可以根据自己 的需要或喜好设定密码 常用常新 而 自动更改密码 技术使得本次输入的密码将自 动更改成下次应输入的密码 更改的规律不为他人所知 因而不怕旁观者窥测 独出心 裁的 键盘乱序显示 技术使得键盘上的固定键位每次显示出的字符不固定 并且显示 的窄小角度只能由操作者正面看得到 因而即使旁观者看见操作动作也难以窥测出密码 多重密码设定 技术使得单组密码不一定有效 适合多人分权使用 需要输入两组以 上的密码才被认可 大大提高了保密性 如果限定输入这些密码的先后顺序或时间区段 则保密性还可提高 在输入密码的过程中 为了限制试探密码的企图 通常输入错误码 若干次或若干时间内输入不正确 即 封锁 键盘 不再接受输入操作 总之 尽管新 式电子防盗锁层出不穷 但键盘式电子密码防盗锁不仅在市场上居于主流地位 而且 还经常作为其他类型电子防盗锁的辅助输入手段 2 总体方案 2 1 系统结构 本设计主要由单片机 矩阵键盘和数码管等部分组成 其中矩阵键盘用于输入数字 密码和进行各种功能的实现 由用户通过连接单片机的矩阵键盘输入密码 后经过单片 机对用户输入的密码与自己保存的密码进行对比 从而判断密码是否正确 并且通过单 片开锁机将控制引脚的高低电平送到液晶显示电路或者报警电路控制开锁还是报警 系 统整体框图如图 2 1 所示 AT89C51 键盘输入模块 复位电路 失电存储开锁电路 报警电路 显示模块 精品文档 3欢迎下载 图 2 1 系统结构框图 2 2 总体方案比较与论证 方案一 用以 74LS112 双 JK 触发器构成的数字逻辑电路作为密码锁的核心控制 共 设了 9 个用户输入键 其中只有 4 个是有效的密码按键 其它的都是干扰按键 若按下 干扰键 键盘输入电路自动清零 原先输入的密码无效 需要重新输入 如果用户输入 密码的时间超过 10 秒 一般情况下 用户不会超过 10 秒 若用户觉得不便 还可以修 改 电路将报警 20 秒 若电路连续报警三次 电路将锁定键盘 2 分钟 防止他人的非法 操作 采用数字电路设计的方案好处就是设计简单但控制的准确性和灵活性差 12 方案二 以 AT89C51 为核心的单片机控制方案 如图 2 2 所示 功能全单片机具有 资源丰富 速度快 编程容易等优点 利用单片机内部的随机存储器 RAM 和只读存储 器 ROM 及其引脚资源 外接显示器 键盘输入等实现数据的处理传输和显示功能 基 本上能实现设计指标 而且单片机编程设计灵活 I O 端口丰富 控制的准确性高 不但 能实现基本的密码锁功能 还能添加调电存储 声光提示甚至添加遥控控制等附加功能 此外单片机方案有较大的活动空间 不但能实现所要求的功能 还能在很大的程度上扩 展功能 而且还可以方便的对系统进行升级 键盘输入 AT89C51 失电存储 输入错误锁定 延时报警 开锁控制 显示 图 2 2 单片机控制方案 2 3 各方案比较显示方案的选择 方案一 由于液晶显示器每一个点在收到信号后就一直保持那种色彩和亮度 恒定 发光 因此液晶显示器画质高 同样液晶屏的功率消耗比较小 液晶是平板型结构 由两 片玻璃组成的夹层盒 面积可大可小 安装时占用面积小减小了设备的体积 液晶的信 息量大相同的面积上与数码管比可以显示更多的信息 且他本身没有老化问题寿命极长 与数码管相比液晶屏显示的更能够看懂 他能将英文细腻的显示出来是数码管做不到的 然而液晶屏也可在阳光下工作 具有防风 防雨 防水功能 这就说明能够使用在室外 但是液晶在阳光强的时候会反光是视角模糊看不清楚 对于这个现象由于屏幕较小可以 用手挡住阳光是自己看的清楚一点 图 2 3 液晶显示 方案二 用数码管来显示 与液晶相同也能显示数字和字母 但是在显示字母的时 候没有液晶那么细腻很难辨认 而且用数码管显示一个较长的英文就会用到好几个数码 管扩大了空间 就显得美观 数码管的优点是在强光下也能看清上面显示的内容 图 2 4 数码管显示 综合两方案的比较用液晶显示比较合适 精品文档 5欢迎下载 3 硬件设计 3 1 单片机 AT89C51 简介 AT89C51 是美国 ATMEL 公司生产的 低电压 高性能 CMOS8 位单片机 片 内含 4K bytes 的可反复擦写的只读程 序存储器 EPROM 和 128bytes 的随 机存取数据序存器 RAM 器件采用 ATMEL 公司的高密度 非易失性存储技 术生产 兼容标准 MCS 51 指令系统 片内置通用 8 位中央处理器 CPU 和 FLASH 存储单元 AT89C51 单片机为许多嵌入式控制系统提供了一种灵活行高且价廉的方 案 8031 CPU 与 MCS 51 兼容 4K 字节可编程 FLASH 存储器 寿命 1000 写 擦循环 全静态工作 0Hz 24KHz 三级程序存储器保密锁定 128 8 位内部 RAM 32 条可编程 I O 线 两个 16 位定时器 计数器 6 个中断源 可编程串行通道 低功耗的闲置和掉电模式 片内振荡器和时钟电路 3 2 输入键盘 如图 3 2 所示 采用 4 4 触点式键盘 分别有数字键 确定键 清除键和干扰键 图 3 1AT89C51 芯片 图 3 2 AT89C51 引脚图 BCD P1 0 P1 1 P1 2 P1 3 P1 4 P1 5 P1 6 P1 7 789清清除除 S3654 S4321 确确认认S20S1 图 3 2 按键图 3 3 显示部分 为了提高密码锁的密码显示效果能力 本设计的显示部分由液晶显示器 LCD1602 取 代普通的数码管来完成 只有按下键盘上的开启按键后 显示器才处于开启状态 同理 只有按下关闭按键后显示器才处于关闭状态 否则显示器将一直处于初始状态 当需要 对密码锁进行开锁时 按下键盘上的开锁按键后利用键盘上的数字键 0 9 输入密码 每 按下一个数字键后在显示器上显示一个 输入多少位就显示多少个 当密码输入完成 时 按下确认键 如果输入的密码正确的话 LCD 子显示 RIGHT 单片机其中 P2 0 引角会输出低电平 使三极管 T2 导通 电磁铁吸合 电子密码锁被打开 如果密码不正 确 LCD 显示屏会显示 ERROR P2 0 输出的是高电平 电子密码锁不能被打开 精品文档 7欢迎下载 3 4 震荡电路 本设计晶振选择频率为 12MHZ 电容选择 30pF 如图 3 4 经计算得单片机工作 胡机器周期为 12 1 12M 1us 4 软件设计 4 1 软件设计方案 主要完成 开始时液晶显示提示输入密码 输入密码后按下确认键 系统会将所输 入与系统密码进行比对 若输入密码正确则显示 SORRCET 开锁 然后可以选择上锁或 者修改密码 选择修改密码则可以对系统进行修改密码操作 在修改密码前要输入正确 旧的密码 正确输入旧密码之后 会有提示输入两次新密码 若两次密码一致 则修改 成功 期间操作出现失误 系统会返回初始状态 操作错误超过 3 次 系统会锁定键盘 并报警用以防止恶意试探密码 软件采用模块化设计 在程序中以一个主函数 多个子 函数的方式编写 这样多有利程序的可读 可移植等 函数共包含 1 主函数 2 键盘扫描函数 3 显示扫描函数 4 延时函数 4 2 软件设计总流程图 开始 初始化 等待用户选择 用户1模式 输入密码 密码是否正确 用户2模式 密码是否正确 LED提示 锁开 LCD显示 成功 再次输入 新密码 LED提示 报警 LCD显示 失败 输入密码 输入新密码 两次密码 是否一样 LCD显示 修改成功 LCD显示 修改失败 返回 等待关锁 12 Y N Y Y N 图 4 1 密码锁的总流程图 4 3 具体功能软件实施 4 3 1 键盘扫描 键盘设计应用编程式扫描方式 利用 CPU 完成其它工作的空余时间来调用键盘扫描 子程序 响应键盘输入的要求 在执行键功能时 CPU 不再响应键输入要求 直到 CPU 开 始重新扫描键盘为止 扫描程序包括 1 判别有无按键按下 2 扫描键盘 取得闭合键的行 列值 3 判断闭合键是否释放 如未释放继续等待 4 将闭合键号保存 同时转去执行该闭合键的功能 uchar get key uchar row code 精品文档 9欢迎下载 uchar col code P1 0 xf0 if P1 0 xf0 delayms 10 if P1 0 xf0 fm 0 delayms 2 row code 0 xfe while row code 0 x7f P1 row code if P1 row code col code P1 return col code row code row code row code 1 0 x01 fm 1 return 0 x00 开始 调用按键查 询子程序 有键按下吗 延时消抖 确实有键 按下吗 送列扫描字 读行线状态 第0行按下 第1行按下 第2行按下 第3行按下 修改列号 4列扫描完 Y Y 延时消抖 N N 键号为00 N Y N N N Y 键号为04 键号为08 键号为12 相加计算键号 Y Y Y 调用按键查询子程序 按键释放吗 返回 Y N N 图 4 2 键盘扫描流程图 精品文档 11欢迎下载 4 3 2 密码修改 用户能根据自己的需要修改密 码 按下选择键用户进行密码的修 改 首先输入旧密码一次 如果正 确便进行密码的修改再输入新的密 码两次 两次的密码进行比较 如 果两次密码相同密码修改成功 不 同就会从新输入新的密码 再进行 比较 相同之后提示密码设置成功 函数名称 各种密码比较 输 入子程序 void mima uchar key i uchar idata temp1 password 6 0 0 0 0 0 0 IIC 里的密码 uchar idata temp3 password 6 0 0 0 0 0 0 用于普通用户密比较 uchar idata temp2 password 6 0 0 0 0 0 0 用于 OLD 密码验证 uchar idata temp4 password 6 0 0 0 0 0 0 用于 2 次密码比较 key step choose 用 户模式选择 开始 初始化 报警程序 再次输入 输入旧密码 确认程序 输入新密码 再次输入新密 码 确认程序 按下设置键 输入旧密码正确 两次输入相同 开始 次数 3 返回 Y N Y N N 图 4 3 密码修改流程图 5 调 试 5 1 调试前的准备 Proteus 软件是英国 Labcenter electronics 公司出版的 EDA 工具软件 该软件中国 总代理为广州风标电子技术有限公司 它不仅具有其它 EDA 工具软件的仿真功能 还能 仿真单片机及外围器件 它是目前最好的仿真单片机及外围器件的工具 虽然目前国内 推广刚起步 但已受到单片机爱好者 从事单片机教学的教师 致力于单片机开发应用 的科技工作者的青睐 Proteus 是世界上著名的 EDA 工具 仿真软件 从原理图布图 代 码调试到单片机与外围电路协同仿真 一键切换到 PCB 设计 真正实现了从概念到产品 的完整设计 是目前世界上唯一将电路仿真软件 PCB 设计软件和虚拟模型仿真软件三合 一的设计平台 其处理器模型支持 8051 HC11 PIC10 12 16 18 24 30 DsPIC33 AVR ARM 8086 和 MSP430 等 2010 年 即将增加 Cortex 和 DSP 系列处理器 并持续增加其他系列处理器模型 在编译方面 它 也支持 IAR Keil 和 MPLAB 等多种编译器 5 2 硬件调试 5 2 1 液晶显示模块的硬件调试 利用 proteus 画好相应的硬件流程图 注意液晶显示器 LCD1602 的各个引脚 尤其 与单片机的接口 在硬件调试的测试软件中要对它的控制引脚进行定义 他的硬件调试 电路如图 5 1 所示 图 5 1 硬件显示调试图 精品文档 13欢迎下载 5 2 2 按键测试 在 proteus 中连接好按键和 LED 灯 P2 口是按键 P1 口相对应的位置连接 LED 灯 程序内容如下 include main while 1 P1 P2 把该程序编译生成 HEX 文件下载到仿真文件中 程序的内容很简单 在 P2 口有按键 按下时把 P2 口的键值取过来放到 P1 口点亮 LED 灯 目的是查看此种按键设计是否正确 可用 5 3 软件调试 联机调试 用 kill 和 proteus 进行联机调试 在两个软件中分别进行相应的设置 然后开始联 机调试 如图 5 3 5 4 所示 XTAL2 18 XTAL1 19 ALE 30 EA 31 PSEN 29 RST 9 P0 0 AD0 39 P0 1 AD1 38 P0 2 AD2 37 P0 3 AD3 36 P0 4 AD4 35 P0 5 AD5 34 P0 6 AD6 33 P0 7 AD7 32 P1 0 1 P1 1 2 P1 2 3 P1 3 4 P1 4 5 P1 5 6 P1 6 7 P1 7 8 P3 0 RXD 10 P3 1 TXD 11 P3 2 INT0 12 P3 3 INT1 13 P3 4 T0 14 P3 7 RD 17 P3 6 WR 16 P3 5 T1 15 P2 7 A15 28 P2 0 A8 21 P2 1 A9 22 P2 2 A10 23 P2 3 A11 24 P2 4 A12 25 P2 5 A13 26 P2 6 A14 27 U1 AT89C51 VCC GND R1 10K R2 10K R3 10K R4 10K R6 510 R7 510 R8 510 VCC D5 LED BLUE D6 LED BLUE D7 LED BLUE D8 LED BLUE R5 510 图 5 2 按键调试图 图 5 3 联机调试 Keil C 界面 图 5 4 联机调试 Protues 界面 5 4 调试心得 由此可见调试部分是多么重要 在调试中学到了不少有用的知识 做出来的成品是 经过多次修改的 并不是感觉做的很完善了就好了 而是要确保没一点错误 要达到没 有错误就要不断检验 不断修改 所以好的产品是要经过无数次的修改 完善 最终才 精品文档 15欢迎下载 能做成 所以在以后写的程序中要注意程序的完善 完整 尽自己最大努力 做出最好 的程序 及产品 除此之外 在对本课题的设计中 我还理解了团队合作的重要性 如果没有团队的 合作不可能短时间内完成对本课题的设计 所以在以后的设计中 应该注意这个问题 总 结 通过这次对 基于AT89C51的密码锁设计 的制作过程 加强了我们动手 思考和解 决问题的能力 在设计过程中我们先后利用keil软件进行编程 Proteus进行仿真 protel进行原理 图的绘制 最后再利用仿真进行检查看程序是否能显示其功能 在过程中让我进一步深 刻的学习各种软件的利用以及各种软件给我们带来的便利 特别是proteus在没有实物的 情况下进行仿真进行程序的检查看是否能现实功能 通过这次课程设计使我懂得了理论与实际相结合是很重要的 只有理论知识是远远 不够的 只有把所学的理论知识与实践相结合起来 从理论中得出结论 才能真正为社 会服务 从而提高自己的实际动手能力和独立思考的能力 在设计的过程中遇到问题 可以说得是困难重重 难免会遇到过各种各样的问题 同时在设计的过程中发现了自己 的不足之处 对以前所学过的知识理解得不够深刻 掌握得不够牢固 所以还得继续努 力 进一步提升自己 参考文献 1 石文轩 宋薇 基于单片机 MCS 一 51 的智能密码锁设计 M 武汉工程职业技术学院学报 2004 01 2 祖龙起 刘仁杰 一种新型可编程密码锁 J 大连轻工业学院学报 2002 01 3 叶启明 单片机制作的新型安全密码锁 J 家庭电子 2005 10 4 郭海英 基于单片机的电子安全密码锁的设计 M 现代电子技术 2005 13 5 李明喜 新型电子密码锁的设计 J 机电产品开发与创新 2004 03 6 董继成 一种新型安全的单片机密码锁 J 电子技术 2004 03 7 祖龙起 刘仁杰 孙乃凌 一种新颖的电子密码锁 J 电子世界 2001 10 8 李明喜 新型电子密码锁的设计 J 机电产品开发与创新 2004 03 9 杨茂涛 一种电子密码锁的实现 J 福建电脑 2004 08 10 瞿贵荣 实用电子密码锁 J 家庭电子 2000 07 11 王千 实用电子电路大全 M 电子工业出版社 2001 p101 12 何立民 单片机应用技术选编 M 北京 北京航空大学出版社 1998 13 李华 MCS 51 系列单片机使用接口技术 M 北京航空航天大学出版社 1993 14 彭为 单片机典型系统设计实例精讲 M 北京 电子工业出版社 2006 15 潘永雄 新编单片机原理与应用 M 西安 西安电子科技大学出版社 2003 16 童诗白 华成英 模拟电子技术基础 M 北京 高等教育出版社 2000 17 阎石主 数字电子技术基础 M 北京 高等教育出版社 1998 精品文档 17欢迎下载 致 谢 在这份大学的最后一页里 我要感谢的人很多 首先要感谢我的学校 感谢在这三 年中交给我的做人道理 让我从一个懵懂得高中生变成一个成熟的青年 还要感谢我的 论文指导老师许老师 在她的指导下我完成了论文 许老师多次询问研究进程 并为我 指点迷津 帮助我开拓研究思路 精心点拨 热忱鼓励 许老师一丝不苟的作风 严谨 求实的态度 踏踏实实的精神 不仅授我以文 而且教我做人 给以终生受益无穷之道 我从心里感谢他 还要感谢的是我们各课任课老师 他们从大一把我们迎进来 到现在 把我们送走 在三年来一直照顾我们的学习和生活 所以在这里也一定要特别感谢他们 当然 还要感谢寝室的兄弟们在我完成论文的过程中给予我的帮助和鼓励 也是他们陪 我度过这三年的生活最后要感谢的就是我的父母 朋友 对于他们我更是有千言万语 还是汇聚成一句话 感谢你们一直都伴随着我 现在即将挥别我的学校 老师 同学 还有我三年的大学生活 虽然依依不舍 但 是对未来的路 我充满了信心 最后 感谢在大学期间认识我和我认识的所有人 有你 们伴随 才有我大学生活的丰富多彩 绚丽多姿 0 0 附 录 附录一 硬件原理图 EA VPP 31 X1 19 X2 18 RESET 9 RD P37 17 WR P36 16 P32 INT0 12 P33 INT1 13 P34 T0 14 P35 T1 15 P10 1 P11 2 P12 3 P13 4 P14 5 P15 6 P16 7 P17 8 P00 39 P01 38 P02 37 P03 36 P04 35 P05 34 P06 33 P07 32 P20 21 P21 22 P22 23 P23 24 P24 25 P25 26 P26 27 P27 28 PSEN 29 ALE PRDG 30 P31 TXD 11 P30 RXD 10 U1 AT89C52 1 2 3 4 5 6 7 8 16 15 14 13 12 11 10 9 RP1 RESPACK4 A0 1 A1 2 A2 3 VSS 4 VCC 8 WP 7 SCL 6 SDA 5 U3 24C02 R1 330 R2 330 D1 D2 Q1 2N3906 LS1 Buzzer 33pF C1 S1 SW PB S2 SW PB S3 SW PB S4 SW PB S5 SW PB S6 SW PB S7 SW PB S8 SW PB S9 SW PB S10 SW PB S11 SW PB S12 SW PB S13 SW PB S14 SW PB S15 SW PB S16 SW PB R3 1K 12 Y1 GND GND GND VCC VCC VCC VSS1 VDD2 VL 3 RS 4 RW 5 E 6 D0 7 D1 8 D2 9 D3 10 D4 11 D5 12 D6 13 D7 14 BLA 15 BLK 16 1 P00 P01 P02 P03 P04 P05 P06 P07 P00 P01 P02 P03 P04 P05 P06 P07 P00 P01 P02 P03 P04 P05 P06 P07 E E P20 P21 P20 P21 P22 P23 P24 P25 P26 P27 P22 P23 P26 33pF C2 C3 R4 1K VCC GND VCC P25 P24 P10 P11 P12 P13 P14 P15 P16 P17 P10 P11 P12 P13 P14P15P16P17 P36 P37 1 1 2 2 3 3 4 4 5 5 6 6 GND 7 8 8 9 9 10 10 11 11 12 12 13 13 VCC 14 U2 74LS00 GND VCC P36 P37 P27 E 附录二 源程序 项目名称 多功能数字密码锁设计 功能 除了基本的密码验证功能外 还添加超级用户的功能 选择用户 1 选择以普通用户进入系统 普通用户的初始密 为 000000 选择用户 2 以超级用户进入 在你输入普通 用户的密码之后可以随意修改普通用户的密码 并保存在 EEPROM 里 防止掉电数据消失 如果程序跑飞了 或者死机了又或者 忘记密码 可以按着 REST 键 30 秒左右 等待 Lcd1602 屏幕上显示 Rest Succes 重新恢复初始密码 精品文档 19欢迎下载 函数名称 定义头文件 include include include include 函数名称 定义向量 define uchar unsigned char define C02 write 0 xa0 define C02 read 0 xa1 define no0 0 x28 define no1 0 x14 define no2 0 x24 define no3 0 x44 define no4 0 x12 define no5 0 x22 define no6 0 x42 define no7 0 x11 define no8 0 x21 define no9 0 x41 define enter 0 x88 define backspace 0 x81 函数名称 定义数组 define lcm write cmd add XBYTE 0 x80FF define lcm write data add XBYTE 0 x81FF define lcm read busy add XBYTE 0 x82FF define lcm read data add XBYTE 0 x83FF uchar idata temp5 password 6 0 x00 0 x00 0 x00 0 x00 0 x00 0 x00 uchar idata key code no0 no1 no3 no4 no5 no6 no7 no8 no9 函数名称 定义位 函数功能 sbit SCL P3 0 sbit SDA P3 1 sbit i P3 2 sbit correct P3 4 sbit wrong P3 5 sbit fm P3 3 bit ack 函数名称 采用中断 0 函数功能 控制节拍 10ms void int0 interrupt 1 TH0 0 xd8 TL0 0 xef musiccount n 函数名称 lcd 读数据子程序 uchar lcm read data void uchar lcm data lcm wait lcm data lcm read data add return lcm data 函数名称 lcd 定位置子程序 函数功能 决定是显示在上面一行 还是下面一行 void lcm setxy uchar x uchar y if y 1 lcm write cmd x 0 x80 if y 2 lcm write cmd x 0 xc0 函数名称 lcd 写字符串子程序 函数功能 显示字符串 void lcm write string uchar string uchar i 0 while string i 0 精品文档 21欢迎下载 lcm write data string i i 函数名称 lcd 交替显示程序 void lcm roll display uchar string uchar y uchar counter lcm write cmd 0 x06 lcm setxy 0 y while string counter 0 lcm write data string counter counter if counter 19 lcm setxy 19 y longdelay 2 lcm write cmd 0 x07 lcm setxy 19 y while string counter 0 lcm write data string counter counter if counter 19 lcm setxy 19 y longdelay 2 函数名称 lcd 初始化子程序 函数功能 初始化 void lcm init delayms 20 lcm write cmd add 0 x38 delayms 4 lcm write cmd add 0 x38 delayms 1 lcm write cmd add 0 x38 lcm write cmd 0 x38 lcm write cmd 0 x0f lcm write cmd 0 x01 lcm write cmd 0 x06 函数名称 键盘扫描子程序 函数功能 停下 IIC 使它在停止状态 uchar get key uchar row code uchar col code P1 0 xf0 if P1 0 xf0 delayms 10 if P1 0 xf0 fm 0 delayms 2 row code 0 xfe while row code 0 x7f P1 row code if P1 row code col code P1 return col code row code row code row code 1 0 x01 fm 1 return 0 x00 函数名称 判断密码 精品文档 23欢迎下载 void convert code uchar string uchar counter 0 for counter 0 counter 6 counter switch string case no0 string 0 x00 break case no1 string 0 x01 break case no2 string 0 x02 break case no3 string 0 x03 break case no4 string 0 x04 break case no5 string 0 x05 break case no6 string 0 x06 break case no7 string 0 x07 break case no8 string 0 x08 break case no9 string 0 x09 break default break string 函数名称 密码比较 函数功能 密码校验 bit compare string uchar string1 uchar string2 uchar counter for counter 0 counter 6 counter if string1 counter string2 counter return 0 return 1 函数名称 用户输入密码 函数功能 密码 bit input password uchar password uchar counter uchar key lcm setxy 0 2 for counter 0 counter 7 counter longdelay 3 if counter0 lcm setxy counter 2 lcm write data 精品文档 25欢迎下载 password counter 0 x00 lcm setxy counter 2 counter if key enter lcm setxy 0 1 return 0 if counter 6 do key get key while key backspace if key backspace lcm setxy counter 2 lcm write data password counter 0 x00 lcm setxy counter 2 counter if key enter return 1 函数名称 各种密码比较 输入子程序 void mima uchar key i uchar idata temp1 password 6 0 0 0 0 0 0 IIC 里的密码 uchar idata temp3 password 6 0 0 0 0 0 0 用于普通用户密比较 uchar idata temp2 password 6 0 0 0 0 0 0 用于 OLD 密码验证 uchar idata temp4 password 6 0 0 0 0 0 0 用于 2 次密码比较 if key no1 I2C receive string temp1 password 6 0 x00 lcm write cmd 0 x01 lcm write cmd 0 x06 lcm setxy 2 0 lcm write string input password if input password temp2 password convert code temp2 password if compare string temp1 password temp2 password lcm setxy 0 2 lcm write string correct flagone 1 longdelay 6 return else lcm setxy 0 2 lcm write string wrong password for i 6 i 0 i wrong wrong correct correct longdelay 1 flagone 2 longdelay 6 return else lcm setxy 0 2 lcm write string error for i 6 i 0 i wrong wrong correct correct lo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度网络剧改编及衍生品制作电视剧剧本授权合同
- 2025年绿色能源项目融资反担保保证合同规范文本
- 二零二五年度电子信息企业项目外包劳动合同规范
- 二零二五年度中药提取原料安全运输合作协议
- 2025年度建筑避雷设施升级改造工程合同
- 2025年机制纸及纸板制造行业研究报告及未来行业发展趋势预测
- 2025年企业员工定制化健康体检与全面保险服务协议
- 2025年度全球贸易车辆租赁与全方位跨境物流配送合同
- 2025智慧链家居改造工程承揽施工合同
- 2025年公司营业执照租赁与工商注册流程管理服务合同
- 《数字技术应用 基础模块(WPS Office 上册)》 课件全套 第1-3单元 探索数字世界 数字技术应用基础 -编程的魅力 程序设计入门
- 质量控制在银行业中的应用
- 热射病的护理诊断和措施
- 三年级科学教材培训心得
- 鼻的症状学相关知识
- QC/T 1209-2024汽车噪声与振动(NVH)术语和定义
- 中职生劳动教育试题答案
- 现代学徒制课题:市域产教联合体与行业产教融合共同体内开展现场工程师培养的机制创新研究(研究思路模板、技术路线图)
- 餐厅开荒保洁操作技术方案
- 2024年春季小学三年级英语课件教学方法探索
- 部编人教版小学四年级上册语文词语表注音
评论
0/150
提交评论