C51单片机密码锁的设计
毕业设计(论文)-基于51单片机控制的电子密码锁设计

基于51单片机控制的电子密码锁设计摘要:本设计以单片机以AT89C51作为密码锁监控装置的检测和控制核心,分为主机控制和从机执行机构,实现要是信息在主机的初步认证注册、密码信息的加密、钥匙丢失报废等功能。
根据51单片机之间的串行通信原理,这便对于密码信息的随机加密和保护。
而且采用键盘输入的电子密码锁具有较高的优势。
采用数字信号编码和二次调制方式,不仅可以实现多路信息的控制,提高信号传输的抗干扰性,减少错误动作,而且功率消耗低;反应速度快、传输效率高、工作稳定可靠等。
软件设计采用自上而下的模块化设计思想,以使系统朝着分布式、小型化方向发展,增强系统可扩展性和运行的稳定性。
测试结果表明,本系统各功能已达到本设计的所有要求。
关键词:AT89C51;密码锁;单片机设计;电子锁目录摘要 (1)关键词 (1)第一章密码锁的简介及现况 (1)1.1引言 (1)1.2电子密码锁的简介 (1)1.3电子密码锁发展趋势 (2)1.4本设计所要实现的目标 (2)1.5设计的密码锁的功能 (2)第二章设计方案的选择 (3)2.1方案的论证与比较 (3)第三章单片机的组成 (4)3.1AT89C51单片机的简介 (4)3.2电路图的绘制 (7)第四章单片机硬件资源 (7)4.1开锁机构 (7)4.2按键电路设计 (8)4.3显示电路设计 (10)4.4AT89C51单片机复位方式 (11)4.5密码锁的电源电路设计 (12)第五章程序调试 (13)5.1程序调试用到的软件及工具 (13)5.2KEIL C51简介 (14)5.3调试过程 (14)5.4调试、仿真与实现 (15)第六章软件设计 (16)6.1系统软件设计的总统思想 (16)6.2各子程序设计 (17)1 键盘扫描子程序 (17)2 LED显示子程序 (18)3 密码比较和报警程序 (19)设计总结与展望 (21)致谢 (22)附录:总原理图 (22)参考文献 (24)第一章密码锁的简介及现况1.1引言在日常的生活和工作中,住宅与部门的安全防范、单位的文件档案、财务报表以及一些个人资料的保存多以加锁的办法来解决。
51单片机简易密码锁

51单片机简易密码锁学号:201114040215HEBEI UNITED UNIVERSITY单片机课程设计说明书设计题目:简易电子密码锁学生姓名:李红辉专业班级:测控技术及仪器2学院:电气工程学院指导教师:曹晓华2014年06月05日成绩评定表AbstractIn daily life and work, the department of housing and security, unit documents, financial statements and some personal information to save more in order to lock the ways to solve. If use the traditional mechanical key to open the lock, people often need to carry multiple keys, use very convenient, and the key missing after security is compromised. With the continuous development of science and technology, people in daily life the demand is higher and higher safety insurance device. To meet the requirements of people on the use of the lock, increase its safety, use the password instead of the key combination lock arises at the historic moment. Combination lock with high safety, low cost, low power consumption, easy operation, etc.In the field of security technology to guard against, with electronic combination lock anti-theft alarm function gradually replace the traditional mechanical combination lock, overcoming the mechanical combination lock password quantity is little, the shortcomings of poor safety performance, make the combination lock both in technology and step in performance are improved greatly. With the development of large scale integrated circuit technology, especially the single chip microcomputer, appeared with the intelligent combination of the microprocessor, it besides has the function of electronic combination lock, also introduced the intelligent management, expert analysis system, and other functions, so that the combination lock of high security, reliability, and increasingly widely used.The course design of electronic combination lock based on MCU is introduced, the design of the hardware is mainly composed of AT89C52 minimum system, matrix circuit, 1602 LCD display circuit, power circuit and alarm circuit and so on several parts. Software is mainly composed of C language programming. The combination lock by the single chip microcomputer technology, through the matrix circuit setting, change passwords, passwordprotection, and by the LCD display password input, so as to realize the password Settings, protection.Key words: single chip microcomputer, trick lock, the 1602, the smallest system, matrix keyboard目录摘要 ............................................................................................ 错误!未定义书签。
基于51单片机密码锁设计与调试 电子信息工程毕业设计论文

目录第一部分设计任务与调研 (1)第二部分设计说明 (2)第三部分设计成果 (5)第四部分结束语 (11)第五部分致谢 (12)第六部分参考文献 (13)第一部分设计任务与调研1.1设计的主要任务给抽屉设计一个四位密码的单片机密码锁控制系统,实现开锁功能,自动报警功能,改密功能,并取得仿真模拟调试成功。
1.2设计的思路本设计采用单片机为主控芯片,结合外围电路,组成电子密码锁,为了防止密码被窃取要求在输入密码时在LCD屏幕上显示*号,开锁密码位为四位。
能够让LCD1602显示器在密码正确时显示open!,密码错误时显示ERROR,输入密码时显示PASSWORD。
实现输入密码错误超过限定的三次电子密码时报警。
1.3设计的方法使用学校编写程序所学的单片机和C语言知识,利用在电工实训中学到的焊接技术焊接控制模块和LED接线及CAD所学的知识绘制驱动电路和控制电路,制作详细的设计方案和资料搜集后进行实际操作,通过程序设计,模拟仿真调试,修订完善后制作出成品。
1.4调研的目的和总结由于对电子密码锁的一些情况并不了解,为了使自己的电子密码锁能够更加完善,所以需要查阅大量的资料,通过查阅的资料与自己的想法进行一些结合做出取舍,最后获得了一些总结。
本设计从经济实用的角度出发,采用宏晶公司的单片机STC89C51与低功耗CMOS型作为主控芯片与数据存储器单元,结合外围的键盘输入、显示、报警、开锁等电路,用C语言编写主控芯片的控制程序,设计了一款可以多次更改密码具有报警功能的电子密码锁。
经实验证明,该密码锁具有设计方法合理,简单易行,成本低,安全实用等特点,符合住宅、办公室用锁要求,具有推广价值。
第二部分设计说明2.1设计方案2.1.1系统框架图本次设计选用单片机STC89C51作为系统的核心元件,利用单片机灵活的编程设计和丰富的IO端口及其控制的准确性,实现基本的密码锁功能。
在单片机的外围电路外接输入键盘用于密码的输入和一些功能的控制,外接LCD1602显示器用于显示作用。
51单片机电子密码锁课程设计

单片机技术及应用综合训练(设计报告)题目: 电子密码锁**: ***学院: 数理学院专业: 电子科学与技术班级: 112 学号: ********** ****: ***2014年5 月前言随着人们生活水平的提高,如何实现家庭防盗这一问题也变得尤为突出。
在科学技术不断发展的今天,电子密码防盗锁作为防盗卫士的作用显得日趋重要。
本文从经济实用的角度出发,系统由STC89C52与低功耗CMOS型E²PROM AT24C02作为主控芯片与数据存储器单元,结合外围的键盘输入、LCD显示、报警、开锁等电路模块。
它能完成以下功能:正确输入密码前提下,开锁;错误输入密码情况下,报警;密码可以根据用户需要更改。
用C语言编写的主控芯片控制程序与EEPROM AT24C02读写程序相结合,并用Keil软件进行编译,设计了一款可以多次更改密码,具有报警功能的电子密码控制系统。
本密码锁具有设计方法合理,简单易行,成本低,安全实用,保密性强,灵活性高等特点,具有一定的推广价值。
关键词:电子密码锁、报警、液晶显示目录一、选题要求 (1)二、硬件电路设计 (1)2.1 51单片机 (2)2.2 键盘电路 (2)2.3 液晶显示电路 (2)2.4 警报电路 (3)2.5 密码储存电路 (3)2.6 晶振、复位及关锁 (3)三、软件设计 (4)四、软硬件调试结果 (9)4.1 电路总原理图 (9)4.2 调试结果 (10)五、总结 (11)一、选题要求本文从经济实用的角度出发,设计采用单片机为主控芯片,结合外围电路,组成电子密码控制系统,密码锁共6位密码,每位的取值范围为0~9,用户可以自行设定和修改密码。
用户想要打开锁,必先通过提供的键盘输入正确的密码才可以,密码输入错误有提示,为了提高安全性,当密码输入错误三次将报警,期间输入密码无效,以防窃贼多次试探密码。
6位密码同时输入正确,锁才能打开。
锁内有备用电池,只有内部上电复位时才能设置或修改密码,因此,仅在门外按键是不能修改或设置密码的,因此保密性强、灵活性高。
基于51单片机的电子密码锁设计与应用研究

基于51单片机的电子密码锁设计与应用研究基于51单片机的电子密码锁设计与应用研究摘要:随着科技的不断发展,电子密码锁在我们的日常生活中被广泛应用。
本文以51单片机为核心,对电子密码锁进行了设计与研究。
通过对电子密码锁的原理、组成部分及其在实际应用中的优点进行了探讨,并详细介绍了设计过程和程序实现。
利用51单片机的高性能、低功耗和强大的扩展性,成功实现了电子密码锁的设计与应用。
实验结果表明,该电子密码锁具有良好的安全性和可靠性,可以满足人们对安全性的需求。
关键词:51单片机;电子密码锁;设计;应用;安全性引言随着信息技术和智能化的快速发展,电子密码锁作为一种安全可靠的门禁控制系统,已经在社会生活中得到广泛应用。
相比于传统的钥匙锁而言,电子密码锁具有更高的安全性、更方便的使用特点,成为现代化社会安全管理的重要组成部分。
51单片机作为一种常用的微控制器,具有高性能、低功耗、价格经济等优点,因此被广泛应用于电子密码锁的设计和研究中。
本文旨在通过基于51单片机的电子密码锁的设计与应用研究,探讨电子密码锁的工作原理、设计流程和实现方法,并对其在实际应用中的优势进行分析。
一、电子密码锁的原理与组成部分电子密码锁是一种基于数字电子技术的门禁控制系统,主要由输入模块、控制模块和输出模块组成。
1. 输入模块:输入模块主要用于输入开锁密码。
一般来说,输入模块可以使用按键、密码键盘、触摸屏等方式。
在本设计中,我们选择了密码键盘作为输入模块。
2. 控制模块:控制模块主要负责接收输入的密码并进行处理,判断是否正确并控制锁的开关状态。
51单片机就是一个常用的控制模块。
3. 输出模块:输出模块用于将控制模块的指令转化为实际操作,控制锁的开关或者报警功能。
一般来说,输出模块可以使用电磁铁、继电器、蜂鸣器等设备。
在本设计中,我们采用了电磁铁作为输出模块。
二、电子密码锁的设计过程1. 硬件设计电路连接:将密码键盘的输出与51单片机的输入口相连,将电磁铁与51单片机的输出口相连。
基于51单片机电子密码锁的课程设计_

基于单片机的电子密码锁设计摘要随着人们生活水平的提高,如何实现家庭防盗这一问题也变得尤为突出。
在科学技术不断发展的今天,电子密码防盗锁作为防盗卫士的作用显得日趋重要。
本文从经济实用的角度出发,系统由STC89C52与低功耗CMOS型E²PROM AT24C02作为主控芯片与数据存储器单元,结合外围的键盘输入、LCD显示、报警、开锁等电路模块。
它能完成以下功能:正确输入密码前提下,开锁;错误输入密码情况下,报警;密码可以根据用户需要更改。
用C语言编写的主控芯片控制程序与EEPROM AT24C02读写程序相结合,并用Keil软件进行编译,设计了一款可以多次更改密码,具有报警功能的电子密码控制系统。
本密码锁具有设计方法合理,简单易行,成本低,安全实用,保密性强,灵活性高等特点,具有一定的推广价值。
关键词:电子密码锁;报警;液晶显示Design of Electric Password Lock Based on MCUAbstractAs people's living standards improve, the question how to achieve home security has become particularly prominent. In science and technology is developing continuously, electronic code lock as a security guard's role is increasingly important.This article from the economical point of view, the system by the STC89C52 with low power CMOS based E ² PROM AT24C02 as the master chip and the data memory unit, combined with the external keyboard, LCD display, alarm, unlock and other circuit modules. It performs the following functions: enter the password correctly under the premise of unlocking; wrong password case the alarm; password can be changed according to user needs. Master in C language control program and EEPROM AT24C02 chip to read and write process are combined and compiled with the Keil software, designed a number you can change the password, the password with an electronic alarm control system.The lock has a reasonable design, simple, low cost, safe and practical, confidentiality, flexibility, and high, with some promotional value.Key Words:Electric Password lock;Alarm; LCD Display目录引言 (8)第1章绪论 (9)1.1 电子密码锁的背景与研究意义 (9)1.2电子密码锁的现状及发展趋势 (9)1.3本章小结 (11)第2章系统整体方案设计 (12)2.1 设计目标 (12)2.2 主控部分的选择 (12)2.3 密码输入方式的选择 (12)2.4 本章小结 (13)第3章硬件系统设计 (14)3.1系统芯片介绍 (14)3.1.1单片机STC89C52功能介绍 (14)3.1.2 LCD1602显示器介绍 (15)3.1.3存储芯片AT24C02介绍 (16)3.1.4 I2C总线介绍 (16)3.2 硬件电路设计 (18)3.2.1 复位电路 (18)3.2.2 晶振电路 (19)3.2.3存储电路 (19)3.2.4 键盘输入电路 (20)3.2.5 显示电路 (21)3.2.6 电源输入电路 (22)3.2.7 报警电路 (22)3.2.8 开锁电路 (23)3.3 本章小结 (24)第4章软件程序设计 (25)4.1 主程序流程图 (25)4.2 按键软件设计 (25)4.2.1 按键功能程序流程图 (25)4.2.2 按键功能子程序 (26)4.3 密码设置软件设计 (27)4.3.1 密码设置程序流程图 (27)4.3.2 密码设置子程序 (28)4.4 开锁软件设计 (28)4.4.1 开锁程序流程图 (28)4.4.2 开锁功能子程序 (29)4.5 本章小结 (30)第 5 章系统仿真、调试及结论 (31)5.1 Proteus软件简介 (31)5.2 进入Proteus ISIS (31)5.3 工作界面 (31)5.4 各模块的电路图及说明 (33)5.4.1 电子密码锁系统主模块AT89C51单片机 (33)5.4.2 电子密码锁系统的键盘模块 (34)5.4.3 电子密码锁系统的显示模块 (34)5.4.4 电子密码锁系统的晶振复位电路 (35)5.4.5电子密码锁系统的掉电存储及报警电路 (35)5.4.6 电子密码锁系统的开锁电路 (35)5.4 本章小结 (36)结论与展望 (37)致谢 (38)参考文献 (39)附录A 密码锁电路原理图 (40)附录B 一篇引用的外文文献及其译文 (41)附录C 主要参考文献的题录及摘要 (47)附录D 主要C语言源程序 (49)插图清单图2- 1系统整体设计框图 (12)图3- 1 STC89C52引脚分布图 (14)图3- 2 AT24C02引脚图 (16)图3- 3开始结束信号图 (17)图3- 4复位电路原理图 (19)图3- 5晶振电路原理图 (19)图3- 6掉电存储电路原理图 (20)图3- 7键盘输入原理图 (21)图3- 8显示电路原理图 (22)图3- 9电源输入电路原理图 (22)图3- 10报警电路原理图 (23)图3- 11密码锁开锁机构示意图 (23)图3- 12开锁电路原理图 (24)图4- 1主程序流程图 (25)图4- 2按键功能流程图 (26)图4- 3密码设置流程图 (27)图4- 4开锁流程图 (29)图5- 1 Proteus启动时的屏幕 (31)图5- 2 Proteus ISIS的工作界面 (32)图5- 3 Proteus运行按键 (32)图5- 4 Proteus仿真图 (33)图5- 5 STC89C52单片机引脚图 (33)图5- 6键盘输入模块 (34)图5- 7密码显示模块 (34)图5- 8晶振及复位电路 (35)图5- 9掉电存储及报警电路 (35)图5- 10开锁电路 (36)表格清单表3-1 LCD1602引脚接口说明表 (8)表3-2 LCD1602基本操作程序 (15)引言在当今社会,安全防盗已成为社会问题,而锁自古以来就是防盗的重要工具,目前国内大部分人使用的还是传统的机械锁,然而,眼下假冒伪劣的机械锁互开率非常之高,此外,即使是一把质量过关的机械锁,通过急开锁,甚至可以在不损坏锁的前提下将锁打开。
(完整word版)基于51单片机的指纹密码锁设计
指纹识别技术在生物识别技术中相对来看是发展的最成熟的识别技术指纹锁则是指纹识别技术的代表作品指纹锁在当今安防系统中应运而生成为继机械锁密码锁感应锁之后另一代门锁的代表单体指纹代替钥匙或者密码成为开锁工具大大降低了安防系统的潜在安全隐患主要是因为指纹的独特生理附属性在一段比较长的历史时期内避免了遗失被盗被复制的隐患因此目前看来指纹锁几乎完美的解决了传统门锁存在的问题但是一把合格的指纹锁须采用国际领先水平的智能芯片和高标准的安装材料这就决定了其刚性成本很高同时由于拥有极高的科技附加值指纹锁市场价格普遍比较昂贵近年来
In traditional identity, we tend to use password encryption method, but this method only "anti-anti-villain is not a gentleman." In the eyes of clever hackers, password consists of several characters fragile too vulnerable. Now, the development of science and technology so that we have a new option - biometrics. The biometric technology used in notebook, door locks, etc., they can file for protection of property, and can be identifiable.biometric technology in fingerprint primary origin research, it is also the most widely used biometric technology.
C51单片机技术应用与实践-任务密码锁
第3篇单片机接口应用任务5、电子密码锁模块问题的提出:日常生活和工作中,住宅与部门的安全防范、单位的文件档案、财务报表以及一些个人资料的保存多以加锁的办法来解决。
若使用传统的机械式钥匙开锁,人们常需携带多把钥匙, 使用极不方便, 且钥匙丢失后安全性即大打折扣。
随着科技的发展和社会生活水平的提高,人们对日常生活中的安全保险器件的要求越来越高,电子安全密码锁是基于这一要求的保险器件,用密码代替钥匙。
目前使用的密码锁种类繁多,如指纹锁、红外密码锁、GPS密码锁、卡片锁等,各具特色,其中最为广泛的是键盘式电子密码锁(如图5-1),该产品主要应用于保险箱、保险柜等,还有一部分应用于保管箱和运钞车。
键盘式电子密码在键盘上输入,与打电话差不多,因而易于掌握,其突出优点是“密码”是记在被授权人脑子里的数字和字符,既准确又可靠,不会丢失,难以被窃。
尽管新式电子防盗锁层出不穷,但键盘式电子密码防盗锁不仅在市场上居于主流地位,而且,还经常作为其他类型电子防盗锁的辅助输入手段。
在安全技术防范领域,具有防盗报警功能的电子密码锁逐渐代替了传统的机械式密码锁,电子密码锁具有安全性高、成本低、功耗低、易操作等优点。
图5-1 电子密码箱图5-2 电子门禁系统5.1 I2C总线的基本原理I2C总线是英文“Inter Integrated Circuit Bus”内部集成电路的缩写,是一种串行的数据总线系统,源于计算机技术,是国际上最先进的大规模数字化集成电路,是通过时钟和数据总线的双向控制进行数据的读写。
现主要用于电视机的各个功能模块(亮度、色度、对比度、音量等)进行有效的跟踪控制,能够提高电视的可靠性,同时方便维修。
5.1.1 I2C总线结构I2C串行总线只有两根信号线,一根是双向的数据线SDA,另一根是双向的时钟线SCL。
所有连接到I2C总线上的芯片的数据引脚SDA都连接到总线的SDA线,各芯片的时钟引脚SCL 都连接到总线的SCL线。
基于51单片机电子密码锁的设计.doc
基于51单片机电子密码锁的设计..西安文理学院机械电子工程系专业课程设计报告专业班级课程题目学号学生姓名指导教师年月基于51单片机电子密码锁的设计摘要在这个信息和科技高速发展的时代,人们的生活水平越来越高,随之应运而生的人们的安全意识也越来越强,然而传统的机械锁由于设计和工艺简单,操作和携带不便,已经不能满足人们对于安全保证和生活便利的需求,于是电子密码锁本着它自身的保密性高、操作简单、灵活好用等特性逐渐进入人们的视野,并已被广大群众接纳和使用。
此次设计是以AT89C51单片机实现密码锁监控装置的检测和控制核心,实现密码信息的设定、加密、更改和错误输入发出警报等功能。
分为键盘输入(此处采用4×4矩阵键盘),显示输出(此处用LED显示屏),密码比对,实现开锁或警报的过程。
该设计根据51单片机之间的串行通信原理,便于对密码信息的随机加密和保护。
软件设计则是采用自上而下的模块化设计思想,以使系统朝着分布式、小型化方向发展,增强系统的可扩展性和运行的稳定性。
测试结果表明,该系统已达到本设计的各项功能的所有要求。
关键词:单片机;密码锁;4*4矩阵键盘;显示屏。
word教育资料目录1 绪论11.1 引言11.2 电子密码锁的背景11.3 键盘式电子密码锁的特点12 系统设计22.1系统总设计结构图22.2.开锁机构设计2 2.2.1主控芯片(AT89C51单片机)的简介33 系统硬件设计53.1键盘设计53.2系统电路设计63.2.1 键盘电路及连线图63.2.2数码管显示电路及连线图73.2.3开锁和警报电路及连线图(由LED和扬声器电路代替)8 3.3整体电路图的绘制84 软件设计104.1 系统软件设计思路104.2系统软件设计总流程图105 程序调试125.1 程序调试需要用到的软件和工具12word教育资料5.2 调试过程126 设计总结12致谢13参考文献14附录15word教育资料第一章绪论1.1 引言在这个信息和科技高速发展的时代,人们的生活水平越来越高,随之应运而生的人们的安全意识也越来越强,然而传统的机械锁由于设计和工艺简单,操作和携带不便,已经不能满足人们对于安全保证和生活便利的需求,于是电子密码锁本着它自身的保密性高、操作简单、灵活好用等特性逐渐进入人们的视野,并已被广大群众接纳和使用。
51单片机设计电子锁密码锁含代码
电子锁设计报告一,实验目的1. 学习8051定时器时间计时处理,键盘扫描及LED数码管显示的设计方法。
2. 设计任务及要求利用实验平台上8个LED数码管,设计带有报警功能的可掉电保存的电子密码锁。
3.通过本次实验,加强对所学知识的理解,增强编程能力及实践能力。
二,实验要求A.基本要求:1:用4×4矩阵键盘组成0-9数字键及确认键和删除键。
2:可以自行设定或删除8位密码,能够掉电保存。
3:用5位数码管组成显示电路提示信息,当输入密码时,只显示“8.”,当密码位数输入完毕按下确认键时,对输入的密码与设定的密码进行比较,若密码正确,则门开,此处用绿色led发光二极管亮一秒钟做为提示,若密码不正确,禁止按键输入3秒,同时用红色led发光二极管亮三秒钟做为提示;若在3秒之内仍有按键按下,则禁止按键输入3秒被重新禁止。
4:自由发挥其他功能.5:要求有单片机硬件系统框图,电路原理图,软件流程图B.拓展部分:无三,实验基本原理单片机密码锁是集计算机技术、电子技术、数字密码技术为一体的机电一体化高科技产品,具有安全性高,使用方便等优点。
本系统考虑到单片机密码锁成本及体积因素,在设计单片机密码锁部分时,以AT89S52单片机为核心,24C04、LED等构成外围电路。
本系统单片机密码锁硬件部分结构简单、成本低,软件部分使用电子加密提高锁的安全性,具有比较好的市场前景。
同时,由于本电子密码锁可以实现掉电保存,而且可以自行设计或者删除8位密码,所以具有较高的实用价值。
本密码锁采用5位数码管组成显示电路提示信息,当输入密码时,只显示“8.”,当密码位数输入完毕按下确认键时,对输入的密码与设定的密码进行比较,若密码正确,则门开,此处用绿色led 发光二极管亮一秒钟做为提示,若密码不正确,禁止按键输入3秒,同时用红色led 发光二极管亮三秒钟做为提示;若在3秒之内仍有按键按下,则禁止按键输入3秒被重新禁止。
此项功能方便用户使用。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#include #define uchar unsigned char uchar starbuf[10]; uchar wordbuf[8]; uchar pw[8]={1,2,3,4,5,6,7,8}; uchar pwbuf[8];
uchar count=0; // 初始没有输入密码,计数器设为0 uchar inputflag=0; // 先处于密码输入状态,非密码修改状态 bit enterflag=0; // 没有按下确认键 bit pwflag=0; // 密码标志先置为0 sbit warn=P3^6; sbit deng=P3^5; #define lcd_data P0
sbit rs=P2^7; sbit rw=P2^6; sbit e=P2^5;
///////////////////////LCD1602驱动程序/////////////////////// void delay_1602(unsigned int i) { while(i--); }
void enrw() { rs=0; rw=0; e=0; delay_1602(250); e=1; }
write_data(uchar c) { lcd_data=c; rs=1; rw=0; e=0; delay_1602(250); e=1; } init_lcd(void)//初始化 { lcd_data=0x01;//清屏幕 enrw(); lcd_data=0x38;//数据长度为8位,双行显示,5*7字符。 enrw(); lcd_data=0x0c;//打开显示开关 enrw(); lcd_data=0x06;//地址计数递增,显示屏不移动 enrw(); }
write_cmd(uchar m)//写命令,注意与写数据的区别 { lcd_data=m; enrw(); }
display(uchar row,uchar colum,uchar *s)//行 列 字符 写字符串,简单的指针应用 { uchar p;
if(row==1) p=0x82+colum-1; else p=0xC0+colum-1; write_cmd(p);
for(;*s!='\0';s++) write_data(*s); }
void lcd_display( unsigned char a, unsigned char b,unsigned char i) //行 列 数 { switch (i) { case 0: display( a,b, "0") ; break; /* 0 */ case 1: display( a,b, "1") ; break; /* 1 */ case 2: display( a,b, "2") ; break; /* 2 */ case 3: display( a,b, "3") ; break; /* 3 */ case 4: display( a,b, "4") ; break; /* 4 */ case 5: display( a,b, "5") ; break; /* 5 */ case 6: display( a,b, "6") ; break; /* 6 */ case 7: display( a,b, "7") ; break; /* 7 */ case 8: display( a,b, "8") ; break; /* 8 */ case 9: display( a,b, "9") ; break; /* 9 */ default: break; } }
/* 键消抖延时函数 */ void delay(unsigned int i) { int j; for(;i>0;i--) for(j=0;j<100;j++); }
/* 键扫描函数 */ uchar keyscan(void) { uchar scancode,tmpcode; P1 = 0xf0; // 发全0行扫描码 if ((P1&0xf0)!=0xf0) // 若有键按下 { delay(2); // 延时去抖动 if ((P1&0xf0)!=0xf0) // 延时后再判断一次,去除抖动影响 { scancode = 0xfe; //第一行变低 while((scancode&0x10)!=0) // 逐行扫描 { P1 = scancode; // 输出行扫描码 if ((P1&0xf0)!=0xf0) // 本行有键按下 { tmpcode = (P1&0xf0)|0x0f;
/* 返回特征字节码,为1的位即对应于行和列 */ return((~scancode)+(~tmpcode)); } else scancode = (scancode<<1)|0x01; // 行扫描码左移一位 } } } return(0); // 无键按下,返回值为0 } /* 密码比较函数 */ bit pwcmp(void) { bit flag; uchar i; for (i=0;i<8;i++) { if (pw[i]==pwbuf[i]) flag = 1; else { flag = 0; i=8; } } return(flag); }
/* 密码清除函数 */ void pwclk(unsigned char k) { unsigned char i; for (i=0;i<8;i++) { wordbuf[i] = 0; // 数码管显示00000000 starbuf[i] = 0; if(k==0) pwbuf[i] = 0; // 用FFFFFF清除已经输入的密码 else pw[i] = 0; // 用FFFFFF清除已经输入的密码 } }
/* 按键声响函数 */ void alarm() { unsigned char i; for(i=0;i<200;i++) { warn=!warn; delay(1); } }
/* 密码报警函数 */ void alarm1() { unsigned int i; for(i=0;i<2000;i++) { warn=!warn; delay(1); } }
/* 呼叫报警函数 */ void alarm2() { unsigned char i=12; unsigned char a,b; while(i>0) { for(a=0;a<150;a++) { warn=!warn; delay(1); } for(b=0;b<150;b++) { warn=!warn; delay(2); } i--; } }
/* 按键处理函数 */ void key_conduct(unsigned char a,unsigned char b) { switch(a) { case 0x48: // 1行1列,数字0 if (count<8) { if(b==0) { starbuf[count] = '*'; // 对应密码位上显示'*' pwbuf[count] = 0; } else { pw[count] = 0; wordbuf[count] = 0; lcd_display(2,count+1,wordbuf[count]); } count++; } alarm(); break; case 0x81: // 1行2列,数字1 if (count<8) { if(b==0) { starbuf[count] = '*'; // 对应密码位上显示'*' pwbuf[count] = 1; } else { pw[count] = 1; wordbuf[count] = 1; lcd_display(2,count+1,wordbuf[count]); } count++; } alarm(); break; case 0x41: // 1行3列,数字2 if (count<8) { if(b==0) { starbuf[count] = '*'; // 对应密码位上显示'*' pwbuf[count] = 2; } else { pw[count] = 2;