单片机密码锁实验报告

合集下载

单片机电子密码锁报告

单片机电子密码锁报告

目录第1章概述1第2章系统总体方案设计2第3章硬件电路设计33.1 键盘电路设计33.2LED显示电路53.3 开锁电路73.4报警电路9第4章软件设计94.1软件设计思路94.2 各子程序设计10第5章系统调试16第6章心得体会17第7章参考文献18第8章附录198.1源程序清单198.2硬件原理图26第1章概述随着科技的发展,单片机已不是一个陌生的名词,它的出现是近代计算机技术发展史上的一个重要里程碑,因为单片机的诞生标志着计算机正式形成了通用计算机系统和嵌入式计算机系统两大分支。

单片机单芯片的微小体积和低的成本,可广泛地嵌入到如玩具、家用电器、机器人、仪器仪表、汽车电子系统、工业控制单元、办公自动化设备、金融电子系统、舰船、个人信息终端及通讯产品中,成为现代电子系统中最重要的智能化工具。

本文所涉及的是市场占有率最高的是MCS—51系列,因为世界上很多知名的IC生产厂家都生产51兼容的芯片。

到目前为止,MCS—51单片机已有数百个品种,还在不断推出功能更强的新产品。

本设计是基于单片机的密码锁设计方案,根据要求,给出了该单片XX码锁的硬件电路和软件程序,同时给出了单片机型号的选择、硬件设计、软件流程图、单片机存储单元的分配、汇编语言源程序及详细注释等内容。

第2章系统总体方案设计系统总体设计方案框图2.1:图2.1系统总体设计方案框本方案采用一种是用以89S51为核心的单片机控制方案。

利用单片机灵活的编程设计和丰富的I/O端口,及其控制的准确性,实现基本的密码锁功能。

初步设计思路如下:1.输入密码用矩形键盘,包括数字键和功能键。

2.LED数码管显示输入密码,用74JS247驱动数码管发光显示数码,用74LS138控制各位显示器分时进行显示。

3.用发光二极管代替开锁的电路,发光表示开锁。

4.输入密码错误次数超过3次,系统报警。

5.打开电源后,显示器显示“000000”,设原始密码为“123456”,只要输入此密码便了开门。

单片机密码锁课题设计报告

单片机密码锁课题设计报告

单片机开发与应用工程报告题目:电子密码锁设计学号:学生姓名:专业:信息工程年级:2010级课程名称:单片机开发与应用工程训练指导老师:年月日一、设计目的:用单片机实现一个电子密码锁二、设计要求:设计一个电子密码锁系统,用4位数码管显示设定密码.输入密码正确时,用绿色发光管显示。

错误时,用红色发光管闪动显示。

三次输入错误,发出蜂鸣报警。

可进行密码修改。

a)4位数码管显示:设置密码时显示数字,输入密码时显示“----”b)存储密码功能:密码设置及修改c)报警功能:蜂鸣器报警加红色发光管闪烁显示三、设计分析【系统的主要功能】本课题实际是设计一个电子密码锁,可以设置4位密码,用2个发光二极管和一个蜂鸣器来显示输入密码的错误与正确,另外还可以有秒表的功能。

一、时间模块:正常状态显示时钟,小时和分钟。

24小时制循环。

在温度模块时,长按set键,切换进入时间模块。

1、在时钟正常显示状态下按动KSET按钮,进入时钟调整:1)调整位闪烁,此时按动KADD键进行递增,按动KSUB键进行递减2)循环按动KSET键,调整位循环闪烁,一圈以后回到正常时钟状态3)在调整时钟状态按动KFUN键,确认时钟调整有效,并保存2、时钟正常状态按动KFUN键进入倒顺计时1)上电后首次进入计时状态则为默认的正向计时,此时时间不能调整,最大计时为99秒,计时精度为0.01秒2)在停止计时状态持续按动KSET键1秒,可进行倒顺计时转换3)倒计时状态默认的时间为30分钟,最大可定时100分钟,计时精度为1秒4)在倒计时状态复位情况下,可通过按动KADD或KSUB键进行时间的递增或递减调整,调整步长为10秒。

当数值小于10以后,下调步长为1秒。

5)在计时状态停止时按动KFUN键可复位计时时间6)按动KFUN键可启动或停止计时7)在计时过程中按动KADD或KSUB键,可暂停计时和连续计时8)倒顺计时的任意情况下按动KSET键,可退出计时回到正常的时钟状态二、密码模块:如果没得存储芯片或者存储芯片坏了上电时就自动进入时钟模块1、上电时显示----,红灯亮起,系统锁定2、输入正确密码,按Kfun键确认,红绿灯亮起,系统开放10秒然后红灯熄灭3、双灯亮起时,按动Kset键,相应位闪烁,按动Kadd或Ksub进行密码修改4、密码修改后,按动Kfun键,确定密码修改完成,嘟嘟嘟蜂鸣三声,红灯熄灭,系统显示----5、单灯亮时,需要输入正确密码,亮起双灯才能修改密码6、长按Kset键,系统锁定,红灯亮起【硬件电路分析】1.晶振电路单片机晶振的作用是为系统提供基本的时钟信号。

基于51单片机的密码锁设计报告

基于51单片机的密码锁设计报告

基于51单片机的密码锁设计报告课程:单片机原理学院:电子与信息工程学院专业:班级:姓名:学号:指导老师:完成日期:目录一、矩阵按键 (1)(1)按键接口 (1)(2)按键开关的抖动问题 (1)二、LCD1602液晶 (2)(1)1602 液晶的介绍 (2)(2)液晶的读写时序介绍 (4)(3)1602 液晶的指令介绍 (6)三、设计 (7)(1)输出密码后,显示LCD1602 (7)(2)输出密码后,交替亮灭显示LED (7)四、程序设计 (7)(1)主程序 (7)(二)LCD1602程序 (9)(3)矩阵键盘程序 (10)五、仿真截图 (12)(1)输出密码后,显示LCD1602 (12)(2)输出密码后,交替亮灭显示LED (15)基于51单片机的密码锁设计一、矩阵按键(1)按键接口键盘是由若干按键组成的开关矩阵,它是微型计算机最常用的输入设备,用户可以通过键盘向单片机输入指令、地址和数据。

一般单片机系统中采和非编码键盘,非编码键盘是由软件来识别键盘上的闭合键,它具有结构简单,使用灵活等特点,因此被广泛应用于单片机系统。

(2)按键开关的抖动问题组成键盘的按键有触点式和非触点式两种,单片机中应用的一般是由机械触点构成的。

在下图1、图2中,当按键被按下时,P1.0输入为高电平;当按键按下后,P1.0输入为低电平。

由于按键是机械触点,当机械触点断开、闭合时,会有抖动动,P1.0输入端的波形如图2所示。

这种抖动对于人来说是感觉不到的,但对单片机来说,则是完全可以感应到的,因为单片机处理的速度是在微秒级,而机械抖动的时间至少是毫秒级,对单片机而言,这已是一个“漫长”的时间。

图1图2按键抖动波形为使CPU能正确地读出P1口的状态,对每一次按键只作一次响应,就必须考虑如何去除抖动,常用的去抖动的方法有两种:硬件方法和软件方法。

单片机中常用软件法,因此,对于硬件方法我们不介绍。

软件法,就是在单片机获得P1.0口为低的信息后,不是立即认定按键已被按下,而是延时10毫秒或更长一些时间后再次检测P1.0口,如果仍为低,说明按键的确按下了,这实际上是避开了按键按下时的抖动时间。

51单片机电子密码锁报告

51单片机电子密码锁报告

信息工程学院51单片机的密码锁控制器的设计实验报告专业:电气工程及其自动化班级:10040921基于51单片机的密码锁控制器设计一、设计目的:要求设计的电子密码锁的密码用键盘上的数字按键产生的6位数字码构成的密码。

如果输入密码正确开锁(发光二极管量),如果密码不正确,发出报警信号。

二、实验要求:1、显示位数:6位密码显示2、键盘设置密码三、设计方案:本设计包括矩阵键盘接口电路、密码锁的控制电路和输出显示电路等三部分。

键盘部分包括键盘扫描时序产生电路;键盘扫描;弹跳消除;键盘译码;按键存储。

程序控制包括数字按键的数字输入;存储及清除;功能按键的功能设计;移位寄存器的设计与控制;密码清除、变更、存储;激活开锁电路;密码核对;解除电锁电路。

输出显示电路的设计包括:数据选择;BCD对显示译码;七段显示扫描。

(1)密码数据输入:每按一个数字键,在显示器上显示一个“-”最多可设置6位密码。

(2)密码设置:每按一个数字键,就输入一个数值,并在显示器上的最右方显示出该数值,并将先前已经输入的数据依序左移一个数字位置。

注意:密码设置必须是在开锁状态下设置。

(3)数码清除:按下此键可清除前面所有的输入值,清除成为“000000”。

(4)密码更改:按下此键时将目前的数字设定成新的密码。

(5)激活电锁:按下此键可将密码锁上锁。

(6)解除电锁:按下此键会检查输入的密码是否正确,密码正确即开锁。

(7)密码错误:声光报警四、实验电路及连线:1、实验接线2、LED电平显示电路实验仪上装有8只发光二极管及相应驱动电路。

见下图,L0―L7为相应发光二极管驱动信号输入端,该输入端为高电压电平“1”时发光二极管点亮。

我们可以通过P1口对其直接进行控制,点亮或者熄灭发光二极管。

LED电平显示电路3、键盘及LED显示电路键盘和LED显示的地址译码见下图,做键盘和LED实验时,需要将KEY/LED CS接到相应的地址译码上。

位码输出的地址为0X002H,段码输出的地址为0X004H,键盘行码读回的地址为0X001H,此处X是由KEY/LED CS决定,参见地址译码。

单片机密码锁实习报告

单片机密码锁实习报告

单片机密码锁实习报告一、前言随着科技的不断发展,单片机技术在各个领域得到了广泛的应用。

本次实习,我选择了单片机密码锁的设计与实现作为课题,旨在掌握单片机的原理与应用,提高自己的动手实践能力。

二、实习目的1. 学习单片机的原理与编程方法,了解单片机在实际应用中的优势。

2. 掌握密码锁的设计原理,学会使用单片机实现密码锁功能。

3. 培养自己的团队协作能力和解决问题的能力。

三、实习内容1. 单片机密码锁的原理与功能介绍2. 单片机密码锁的硬件设计3. 单片机密码锁的软件编程4. 单片机密码锁的系统调试与优化四、实习过程1. 单片机密码锁的原理与功能介绍单片机密码锁是一种利用单片机作为控制核心,通过密码输入来控制电路或芯片工作的安全设备。

它具有安全性高、成本低、功耗低、易操作等优点,广泛应用于各种场合。

本次设计的单片机密码锁采用4x4矩阵键盘输入密码,当密码输入正确时,锁打开,否则锁定按键3秒钟并发出报警。

2. 单片机密码锁的硬件设计硬件设计是实现单片机密码锁功能的基础。

本次设计中,硬件部分主要包括4x4矩阵键盘、LED显示、蜂鸣器报警、电磁锁等。

其中,4x4矩阵键盘用于输入密码,LED显示用于显示输入的密码,蜂鸣器报警用于发出报警声音,电磁锁用于实现锁的开关。

3. 单片机密码锁的软件编程软件编程是实现单片机密码锁功能的关键。

本次设计中,软件部分主要实现以下功能:(1)键盘扫描:检测按键是否按下,并获取按键值。

(2)密码输入:将键盘输入的按键值转换为密码,并在LED显示上显示。

(3)密码判断:判断输入的密码是否正确,正确则开锁,错误则锁定按键3秒钟并发出报警。

(4)密码修改:提供一种方式修改密码,以提高安全性。

4. 单片机密码锁的系统调试与优化在完成硬件设计和软件编程后,进行系统调试与优化。

通过反复测试,发现并解决可能存在的问题,提高系统的稳定性和可靠性。

五、实习收获通过本次实习,我学到了很多关于单片机密码锁的知识,收获如下:1. 掌握了单片机的原理与编程方法,了解了单片机在实际应用中的优势。

单片机实习报告-密码锁

单片机实习报告-密码锁
RST:复位输入。当振荡工作时,RST引脚出现两个机器周期上高电平将使单片机复位。WDT益出将使该引脚输出高电平,设置SFR AUXR的DISRTO位(地址8EH)可打开或关闭该功能。DISRTO位缺省为RESET输出高电平打开状态。
ALE/PROG:当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。即使不访问外部存储器,ALE仍以时钟振荡频率的1/6输出的正脉冲信号,因此它可对外输出时钟或用于定时目地,要注意的是:第当访问外部数据存储器时将跳过一个ALE脉冲。如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作。该位禁位后,只有一条MOVX和MOVC指令ALE才会被激活。此外,该引脚伎被微弱拉高,单片机执行外部程序时,应设置ALE无效。
存储器结构:MCS-51单片机内核采用程序存储器和数据存储器空间分开的结构,均具有64KB外部程序和数据的寻址空间。
程序存储器:如果EA引脚接地(GND),全部程序均执行外部存储器。在AT89C54,假如接至Vcc(电源+),程序首先执行从地址0000H-0FFFH(4KB)内部程序存储器,再执行地址为1000H-FFFFH(60KB)的外部程序存储器。
2.
AT89C54具有如下特点:40个引脚,4k Bytes Flash片内程序存储器,128 bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。
此外,AT89C54设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。同时该芯片还具有PDIP、TQFP和PLCC等三种封装形式,以适应不同产品的需求。

密码锁单片机实习报告

密码锁单片机实习报告

一、前言随着科技的不断发展,单片机技术在各个领域得到了广泛的应用。

密码锁作为一种安全可靠的开锁方式,也逐渐成为了人们生活中不可或缺的一部分。

本报告主要介绍了我在单片机实习期间,基于51单片机设计的电子密码锁的过程和实践。

二、实习目的和意义本次实习的目的是学习和掌握单片机原理及应用,提高自己的动手能力和创新能力。

通过设计电子密码锁,了解并掌握单片机在实际应用中的电路设计、编程和调试技巧。

此外,电子密码锁在生活中的应用广泛,具有较高的实用价值,可以为人们提供便捷、安全的生活环境。

三、实习内容1. 电路设计本次实习的电子密码锁主要由51单片机、4x4矩阵键盘、LCD1602液晶显示屏、AT24C02存储模块、报警系统和继电器等组成。

电路设计过程中,首先对各个模块进行选型,然后绘制原理图,最后搭建实物电路。

2. 编程设计根据电路设计,编写相应的程序代码,实现密码的输入、存储、比较和报警等功能。

程序设计过程中,采用C语言进行编程,通过Keil软件进行编译和调试。

3. 系统调试将编写好的程序烧录到单片机中,对整个系统进行调试。

调试过程中,检查各个模块是否正常工作,并对可能出现的问题进行排查和优化。

四、实习过程1. 电路设计首先,根据实习要求,选用AT89C52型51单片机作为核心控制器。

然后,设计4x4矩阵键盘,用于密码的输入。

接着,选用LCD1602液晶显示屏,显示密码输入界面和开锁状态。

为了实现密码的存储,选用了AT24C02存储模块。

最后,设计报警系统和继电器,实现密码错误报警和开锁功能。

2. 编程设计根据电路设计,编写相应的程序代码。

首先,实现矩阵键盘扫描函数,用于检测按键输入。

然后,编写密码存储和读取函数,将输入的密码存储到AT24C02模块中,并在下次开机时读取。

接下来,实现密码比较函数,判断输入的密码是否正确。

最后,编写报警和开锁函数,当密码错误时发出报警,正确时驱动继电器开锁。

3. 系统调试将编写好的程序烧录到单片机中,对整个系统进行调试。

基于单片机的电子密码锁实验报告

基于单片机的电子密码锁实验报告

201X年小学期单片机设计实验报告题目:基于16F877的电子密码锁班级:班内序号:实验组号:学生姓名:指导教师:基于16F877的电子密码锁实验摘要在日常的生活和工作中, 住宅与部门的安全防范、单位的文件档案、财务报表以及一些个人资料的保存多以加锁的办法来解决。

若使用传统的机械式钥匙开锁,人们常需携带多把钥匙, 使用极不方便, 且钥匙丢失后安全性即大打折扣。

具有防盗报警等功能的电子密码锁代替密码量少、安全性差的机械式密码锁已是必然趋势。

随着科学技术的不断发展,人们对日常生活中的安全保险器件的要求越来越高。

为满足人们对锁的使用要求,增加其安全性,用密码代替钥匙的密码锁应运而生。

密码锁具有安全性高、成本低、功耗低、易操作、记住密码即可开锁等优点。

目前使用的电子密码锁大部分是基于单片机技术,以单片机为主要器件,其编码器与解码器的生成为软件方式。

本系统由16F877单片机系统(主要是16F877单片机最小系统)、4×4矩阵键盘、LCD1602显示和报警系统等组成,具有设置、修改四位用户密码、输入提示音、密码错误报警等功能(本设计由单片机控制LCD显示,密码正确显示password ok!密码错误显示wrong,please reset!用户reset后进行重新输入。

由单片机控制矩阵键盘含有0-9数字键和A-F功能键。

按F键,则进行密码重置功能)。

本系统成本低廉,功能实用。

(宋体五号)A b s t r a c tIn 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 anti-theft alarm function such as electronic combination lock instead of password quantity is little, security, poor mechanical combination lock is inevitable trend. 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, remember password lock, etc.Currently use electronic combination lock is mostly based on single chip microcomputer technology, single chip microcomputer as the main device, the encoder and decoder for software.This system consists of 16 f877 microcontroller system (mainly minimum 16 f877 microcontroller system), 4 * 4 matrix keyboard, LCD1602 display and alarm system, etc, and has set up four, modify user password, password, input prompt error alarm functions (this design by the single chip microcomputer control LCD display, the password correctly display the password ok! Wrong password shows wrong, both please reset! The user to enter again after reset. By single-chip microcomputer control matrix keyboard contains 0-9 number keys and A - F function keys. Press the F key, then carries on the password reset function). This system is low cost, function and practical.WM function to control its turn. And this is so called navigating aptitudinally .关键字单片机——microcontroller 芯片——CMOS chip16F877一、PIC16F877系列单片机简介PIC16F87X ( 含873P874P876P877) 是美国微芯(Microchip) 公司推出的高性能单片机,除具有单片机的通用资源外,该系列单片机还采用哈佛总线结构、二级指令流水线取指方式、精简指令集(RISC)和内部具有E2 PROM 数据存储器及FLASH 结构的程序存储器、仅35 条单字节单周期指令、在系统串行编程技术和在线调试技术。

密码锁实验报告doc

密码锁实验报告doc

密码锁实验报告篇一:电子密码锁实验报告密码锁实验报告一,实验目的1. 学习8051定时器时间计时处理、跑马灯、按键扫描及LED数码管显示的设计方法。

2. 设计任务及要求利用实验平台上8个LED数码管,按键,跑马灯实现设置密码,密码锁的功能二,实验要求基本要求:1:用4×4矩阵键盘组成0-9数字键及确认键和删除键。

2:可以自行设定或删除8位密码。

3:用5位数码管组成显示电路提示信息,当输入密码时,只显示“8.”,当密码位数输入完毕按下确认键时,对输入的密码与设定的密码进行比较,若密码正确,则门开,此处用绿色led发光二极管亮一秒钟做为提示,若密码不正确,禁止按键输入3秒,同时用红色led发光二极管亮三秒钟做为提示;若在3秒之内仍有按键按下,则禁止按键输入3秒被重新禁止。

三,实验基本原理利用单片机定时器完成计时功能,定时器0计时中断程序每隔0.05s中断一次并当作一个计数,设定定时1秒的中断计数初值为20。

为了将时间在LED数码管上显示,可采用静态显示法和动态显示法,由于静态显示法需要译码器,数据锁存器等较多硬件,可采用动态显示法实现LED显示,通过对每位数码管的依次扫描,使对应数码管亮,同时向该数码管送对应的字码,使其显示数字。

由于数码管扫描周期很短,由于人眼的视觉暂留效应,使数码管看起来总是亮的,从而实现了各种显示。

四,实验设计分析针对要实现的功能,采用AT89S51单片机进行设计,AT89S51 单片机是一款低功耗,高性能CMOS8位单片机,片内含4KB在线可编程(ISP)的可反复擦写1000次的Flash 只读程序存储器,器件采用高密度、非易失性存储技术制造,兼容标准MCS- 51指令系统及80C51引脚结构。

这样,既能做到经济合理又能实现预期的功能。

1在程序方面,采用分块设计的方法,这样既减小了编程难度、使程序易于理解,又能便于添加各项功能。

程序可分为闹钟的声音程序、时间显示程序、日期显示程序,秒表显示程序,时间调整程序、闹钟调整程序、定时调整程序,延时程序等。

单片机密码锁实验报告

单片机密码锁实验报告

单片机系统设计实训报告专业:生产过程自动化姓名:李某班级学号:。

指导教师:。

实训期间:。

目录一.实验目的: (3)二.实验要求: (3)三.实验基本原理: (3)四.实验设计分析: (4)1.设计思想: (4)五.实验要求实现: (5)1. 电路设计: (5)2.主流程图: (7)3.4x4键盘行列式键盘原理电路图: (8)4. 显示模块 (9)五.总电路设计如下 (9)六.程序 (11)七.实验心得 (16)一.实验目的:1.熟悉单片机定时器的编程方法。

2.灵活运用单片机C语言程序中的字符串、数组、指针。

3.熟悉数码显示、LCM1602液晶显示器、YJD12864液晶显示器的编程方法。

4.熟悉掌握4x4矩阵键盘的C语言编程。

二.实验要求:1:用4×4矩阵键盘组成0-f数字键及。

2:可以自行设定或删除8位密码,3:用8位数码管组成显示电路提示信息,当输入密码时,只显示“8.”,当密码位数输入完毕按下确认键时,对输入的密码与设定的密码进行比较,若密码正确,则显示PASS,若密码显示错误时,显示ERR.4:自由发挥其他功能.5:要求有单片机硬件系统框图,电路原理图,软件流程图。

三.实验基本原理:这个密码锁的功能是使用矩阵键盘中的十六个键输入密码0到F还有,输入的同时在八位数码管上显示用户所输入的密码,未输入的位置用横杆填补表述未输入。

当输入的密码超出设置的位数时,数据溢出,清零。

用8位数码管组成显示电路提示信息,当输入密码时,只显示“8.”,当密码位数输入完毕按下确认键时,对输入的密码与设定的密码进行比较,若密码正确,则显示pass,若密码不正确,则显示err;模拟密码锁,密码固化到ROM 不能通过按键输入更改。

四.实验设计分析:1.设计思想:1. 本系统采用单片机AT89S51作为核心元件的一款具有本机开锁,加锁,修改密码和错误2.报警的电子密码锁。

3. 电子密码锁的原理是:从键盘输入一组密码,CPU把该密码和设置密码比较,对则将锁打开,错则要求重新输入,并记录错误次数,如果三次错误,则被强制锁定并报警。

单片机电子密码锁开闭窗帘控制实训报告

单片机电子密码锁开闭窗帘控制实训报告

单片机电子密码锁开闭窗帘控制实训报告
本次实训任务为设计实现基于单片机电子密码锁开闭窗帘控制系统。

以下为设计实现的基本流程:
1. 确定硬件平台:使用基于AT89S52单片机的开发板。

2. 确定开发环境:使用Keil μVision5开发环境。

3. 硬件电路设计:通过开发板提供的GPIO接口将电子密码锁和串口通信模块与单片机相连接,同时通过另一组GPIO接口将窗帘控制模块与单片机相连接。

4. 软件程序设计:
- 对于电子密码锁开关控制,通过四个按键进行操作,其中一个按键为开关电子密码锁的开关按键,另外三个按键为输入密码和确认键。

- 对于串口通信模块,通过与电脑相连,可以通过在电脑端输入开关密码,实现对电子密码锁的开关控制。

- 对于窗帘控制模块,通过单片机的GPIO向窗帘电机输出不同的电平,实现对窗帘的开闭控制。

5. 程序调试与实现:设计完成后,进行硬件与软件的联调,最终实现单片机电子密码锁开闭窗帘控制系统。

6. 实验结果:最终得到了一个正常工作的单片机电子密码锁开闭窗帘控制系统,可以通过按键操作、串口通信和窗帘开关接口实现对电子密码锁和窗帘的控制。

总的来说,本次实训任务涉及到了软硬件设计、程序开发、单片机底层控制、串口通信与驱动等多个方面的技术知识,在实践中得到了积极学习和实践。

单片机课程设计-电子密码锁-实验报告-

单片机课程设计-电子密码锁-实验报告-

单片机课程设计电子密码锁实验报告学院:电子信息工程学院班级:自***姓名:***学号:******指导教师:***单片机课程设计电子密码锁实验报告(一)实验目的1、了解电子密码锁工作原理和八段LED数码管显示原理。

2、掌握LED数码管显示器与单片机接口电路设计方法。

3、掌握实现密码锁功能的编程方法。

(二)设计实现功能(1)由程序设定初始密码,密码输入正确时锁打开,指示灯亮,发出“叮咚”的声音;密码输入不正确时,指示灯闪亮四次,发出“嘀嘀嘀滴”报警声。

(2)具有保护密码的功能,输入密码在数码管上显示可改为“88888”的方式,防止别人偷窥密码。

(3)具有修改密码的功能,密码输入错误可按DEL键进行删除。

(4)具有防止多次试探密码的电子密码锁并加报警功能,密码输入错误超过三次,将一直发出“滴滴滴滴。

”报警声。

(5)具有设定新密码的功能,输入密码后按CHG键,密码将被重新设定。

(三)整体电路设计思路核心用单片机AT89S52来实现此实验的要求。

用4*4键盘来输入密码。

每个按键有它的行值和列值,行值和列值的组合就是识别这个按键的编码。

矩阵的行线和列线分别通过两并行接口和CPU通信。

每个按键的状态同样需变成数字量“0”和“1”,开关的一端(列线)通过电阻接V CC,而接地是通过程序输出数字“0”实现的。

键盘处理程序的任务是:确定有无键按下,判断哪一个键按下,键的功能是什么;还要消除按键在闭合或断开时的抖动。

两个并行口中,一个输出扫描码,使按键逐行动态接地,另一个并行口输入按键状态,由行扫描值和回馈信号共同形成键编码而识别按键,通过软件查表,查出该键的功能。

用8个7段数码管来显示密码。

数码管的显示用扫描的方式,利用动态接口采用各数码管循环轮流显示的方法,当循环显示频率较高时,利用人眼的暂留特性,看不出闪烁显示现象,这种显示需要一个接口完成字形码的输出(字形选择),另一接口完成各数码管的轮流点亮(数位选择)。

单片机电子密码锁报告

单片机电子密码锁报告

单片机电子密码锁报告电子密码锁是以电子技术为基础所设计的一种安全性较高的锁具,它的开锁方式是通过输入正确的密码或刷卡等方式进行的,能够有效地保护物品的安全。

而单片机电子密码锁就是一种基于单片机的电子密码锁系统,通过单片机的控制来实现密码的输入、判断、存储以及驱动电机等操作,这种锁具被广泛应用于门禁与保险箱等安全领域,具有安全性高、易操作等特点。

一、系统结构单片机电子密码锁是由单片机、液晶显示屏、按键、马达、继电器及外部供电等组成的系统,其中单片机充当着决策、控制、运算和存储等多重角色。

单片机的主控单元负责控制输入与输出,而输入主要是通过按键来完成密码输入以及各种命令的控制,外部输入的密码信号由单片机进行解析并进行验证操作,只有在密码正确的情况下才会通过控制继电器来打开锁具,否则发出报警信号以及短时间内禁止输入密码信号,以确保锁具系统的安全。

在系统的显示单元中,采用了液晶显示屏,用于显示电子密码锁的状态信息以及相关的输入结果,方便用户在操作过程中了解系统的运行情况,提高了整个系统的用户友好性。

此外,该系统还配备了一个马达,用于控制锁具的开关,当用户在输入正确的密码时,通过单片机的判断,驱动马达来以机械方式打开锁具,起到了保护物品安全的作用。

二、技术路线系统的设计中,使用了STC89C51单片机作为主控芯片进行控制,该单片机具有16KB的Flash存储器、1KB的RAM内存及32个输入输出线,可满足该系统的各种控制需求。

在系统的密码输入模块中,采用了4×4数字键盘,并借助单片机来进行扫描和管理。

通过按键输入,单片机将密码信号采集、存储和解析,只有密码符合设定要求时,才能使系统进行操作。

在系统的密码存储模块中,采用了24C01的EEPROM芯片,能够方便地保存密码信息,并且具有读写次数高、长期使用不会消失等好处。

在供电单元中,可以使用交流或者直流输入的电源供应,对于多种应用场合提供了很大的便利。

单片机密码锁实习报告

单片机密码锁实习报告

一、实习背景随着科技的不断发展,单片机在各个领域得到了广泛的应用。

为了提高对单片机应用的理解和实践能力,我们小组选择了单片机密码锁作为实习项目。

通过该项目,我们深入了解了单片机的编程和使用,并掌握了密码锁的工作原理。

二、实习目标1. 掌握ATmega16单片机的编程和硬件接口使用;2. 设计并实现一个基于ATmega16单片机的密码锁系统;3. 熟悉Proteus仿真软件的使用,对系统进行仿真验证;4. 分析项目过程中遇到的问题,并提出解决方案。

三、实习内容1. 硬件设计本系统主要由以下几个部分组成:(1)ATmega16单片机:作为系统的核心控制器,负责密码输入、验证、显示及控制蜂鸣器和LED指示灯;(2)矩阵键盘:提供用户输入接口,共16个按键,用于输入密码和控制系统功能;(3)LCD1602显示屏:用于显示当前系统状态、密码输入提示及修改提示等信息;(4)蜂鸣器:在密码输入错误或系统锁定时发出警报声;(5)LED指示灯:在密码正确时点亮,指示系统已解锁。

2. 软件设计(1)初始化模块:初始化LCD显示屏、键盘及相关硬件接口,显示锁定状态;(2)按键扫描:扫描矩阵键盘,获取用户输入的密码;(3)密码处理:验证用户输入的密码是否正确;(4)显示模块:在LCD显示屏上显示当前系统状态、密码输入提示及修改提示等信息;(5)定时器中断处理:实现密码修改功能,以及连续输入错误密码达到设定次数后的锁定状态。

3. Proteus仿真使用Proteus仿真软件对设计的密码锁系统进行仿真验证,确保硬件电路和软件程序的正确性。

四、实习成果1. 成功设计并实现了基于ATmega16单片机的密码锁系统;2. 掌握了ATmega16单片机的编程和硬件接口使用;3. 熟悉了Proteus仿真软件的使用,对系统进行了仿真验证;4. 通过项目实践,提高了对单片机应用的理解和实践能力。

五、实习体会通过本次单片机密码锁实习,我们深刻认识到单片机在各个领域的应用价值。

密码锁实习报告

密码锁实习报告

电子信息工程专业课程设计任务书题目:基于51单片机的电子密码锁设计设计内容设计制作和调试一个由8051MCU组成的密码锁系统。

通过这个过程学习熟悉键盘控制使用,掌握51系列单片机控制和测试方法。

设计以AT89C51单片机为核心,以4*4矩阵键盘做为系统的密码输入和调整密码,以发光二级管来代替磁力锁,完成基本要求,可以适当发挥进行扩展设计。

1)数码管显示:六位密码;2)键盘输入密码或密码修改;设计步骤一、总体方案设计其中,采用51系列MCU构成典型电路。

可选用适当的芯片;可选用/不选用LED/键盘驱动芯片;建议扩口用74244、74373扩展。

二、硬件选型工作三、硬件的设计和实现1.选择计算机机型(采用51内核的单片机);2.设计支持计算机工作的外围电路(EPROM、RAM、I/O端口、键盘、显示接口电路等);3.接口电路;4.其它相关电路的设计或方案(电源、通信等)四、软件设计1.分配系统资源,编写系统初始化和主程序模块;2.编写相关子程序;3.其它程序模块(显示与键盘等处理程序)。

五、编写课程设计说明书,绘制完整的系统电路图(A3幅面)。

课程设计说明书要求1.课程设计说明书应采用学院统一印制的课程设计(论文)说明书封面,书写应认真,字迹工整,论文格式参考国家正式出版的书籍和论文编排。

2.论理正确、逻辑性强、文理通顾、层次分明、表达确切,并提出自己的见解和观点。

3.课程设计说明书应有目录、摘要、序言、主干内容(按章节编写)、主要结论和参考书,附录应包括程序清单、系统方框图和电路原理图。

4.课程设计说明书应包括按上述设计步骤进行设计的分析和思考内容和引用的相关知识。

5.要求打印B5纸,排版要求请向指导教师索取。

6.每组单独一个题目,每组上限5人。

时间安排课程设计计划时间4周。

课程设计题目于15周下发。

课程设计完成后于18周四下午下班前送交电子信息办公室(实验楼三楼),届时指导教师安排短暂答辩。

辅导时间和地点答疑请直接与指导教师联系。

单片机 模拟密码门锁 设计报告

单片机 模拟密码门锁 设计报告

用单片机模拟密码门锁1.总体设计:1)所实现功能描述:密码门锁工作过程比较简单,用户只有输入了正确的密码,才开锁,当三次输入错误以后,则延时一段时间才允许再次输入。

2)设计方案的描述:(1) 鉴于实际条件的限制,我们只是从试验板上模拟这个过程,可以利用红绿灯的亮灭来模拟门的开关状态,用键盘来输入密码,用定时中断来延时。

(2)可以用某个特定键来进行密码输入完成后的确认,检测到这个键则进行密码比较并改变锁的状态。

2.1)实验设备:8051单片机及其机器设备等。

2)设计方案:这个实验是单片机模拟数字密码锁的功能,程序初试设定一个默认密码1,程序运行后,如果连续输入三次密码错误,那么亮红灯,表示输入有误。

如果输入正确密码,则绿灯亮,表示门开。

这个程序密码默认是一位的,如果应用到实际中,会比较容易被破结,安全上有不足。

初始默认密码可以通过程序中的设置键号来改变。

3. 四、主要技术问题的描述:本题内容比较简单,主要技术点有如下几个:(1)主程序不断检测键盘按键并记录到缓冲区,当确认键被按下后进行密码比较。

(2)用一个存储单元存储错误次数,当到达错误次数以后,则启动定时中断,并设置某个标志位使主程序不记录下面的按键,定时停止以后再纪录。

4.方案的不足:该方案只适合比较简单的密码,一旦超过三位程序将无反应;另一方面,密码轻易被识破。

5.改进方案:将程序的密码设为多位以不易识破。

设置忘了密码后,可以找回的6.YNNYY7,实验程序:org 0000h ;设定初始值start: mov sp,#60h ;设置堆栈指针初值mov dptr,#0ff20hmov a,#03hmovx @dptr,amov 70h,#00hmov r1,#03hkey1: acall ks1 ;调用ks1jnz lk1n1: acall dirajmp key1lk1: acall diracall diracall ks1jnz lk2ajmp key1 ;跳转到key1 lk2: mov r2,#0fehmov r4,#0lk4: mov dptr,#0ff21hmov a,r2movx @dptr,ainc dptr ;数据指针+1inc dptrmovx a,@dptrjb acc.0,lone ;判断acc.0mov a,#0ajmp lkplone: jb acc.1,ltwomov a,#08hajmp lkpltwo: jb acc.2,lthrmov a,#10hajmp lkplthr: jb acc.3,lformov a,#18hsjmp lkplfor: jb acc.4,nextmov 70h,#19hajmp key1lkp: add a,r4mov 70h,apush acc ;压栈保存lk3: acall diracall ks1jnz lk3pop acclcall y1retnext: inc r4mov a, r2jnb acc.7,kndrl a ;左移mov r2,aajmp lk4knd: ajmp key1ks1: mov dptr,#0ff21hmov a,#0movx @dptr,ainc dptrmovx a,@dptrcpl a ;取反anl a,#1fhretdir: mov r0,#70hmov a,@r0anl a,#0fhmov 30h,amov a,@r0swap a ;高低位交换anl a,#0fhmov 31h,amov r0,#30h ;把30h值赋给r0mov r3,#01hdo1: mov a,r3mov dptr,#0ff21hmovx @dptr,ainc dptrmov a,@r0add a,#0dhmovc a,@a+pc ;查表dir1: movx @dptr,aacall dl1mov a,r3rl ajb acc.2,ld1mov r3,ainc r0ajmp do1ld1: retdseh: db 0f8h,99h,80h,92h,90h,82h,88h,83hdb 0f9h,0c0h,0a4h,8eh,0b0h,86h,0c6h,0a1h,0ffh,0c0h dl1: mov r7,#2 ;延时子程序dl: mov r6,#0ffhdl6: djnz r6,dl6djnz r7,dlrety1: cjne a,#8h,set1 ;设置初始密码ljmp next2set1: dec r1cjne r1,#0,y2clr p1.7lcall dlrsetb p1.7ljmp y2retnext2: clr p1.6lcall dlrrety2:ljmp key1dlr: mov r7,#250 ;延时子程序l2:mov r6,#124l1:djnz r6,l1djnz r7,l2retend8自评分:80实验心得:虽说这些程序不完全是自己的,但里面倾注了我白分之八十的心血。

电子行业单片机电子密码锁报告

电子行业单片机电子密码锁报告

电子行业单片机电子密码锁报告1. 引言电子行业在现代社会中起着重要的作用,单片机作为电子行业的核心部件之一,在各种设备中得到广泛应用。

其中,电子密码锁是一种能够提供安全保护的设备,通过输入正确的密码来解锁。

本报告将介绍单片机在电子密码锁中的应用及其工作原理。

2. 单片机在电子密码锁中的应用单片机作为电子密码锁的核心控制部件,具有以下几个重要的应用。

2.1 密码输入和验证在电子密码锁中,单片机负责接收用户输入的密码,并对其进行验证。

通过连接键盘到单片机的引脚,单片机可以读取用户输入的按键信息,并将其转化为密码进行验证。

2.2 控制电机动作电子密码锁通常配备了电机,用于控制锁的开关。

单片机可以通过控制电机的引脚来实现锁的开关动作。

通过使用单片机的PWM功能,可以实现电机的精确控制。

2.3 存储密码单片机还可以用来存储用户的密码。

通过将密码保存在单片机的内部存储器中,可以使密码锁在不断电的情况下保持密码的有效性。

3. 电子密码锁的工作原理电子密码锁通过将用户输入的密码与预存储的密码进行比对来判断是否解锁。

下面是电子密码锁的基本工作原理:1.单片机初始化:开机后,单片机将进行初始化操作,包括设置引脚、内部存储器和其他相关组件。

2.用户输入密码:用户使用键盘输入密码,在按下按键时,单片机读取按键值,并将其存储到缓冲区中。

3.密码验证:当用户输入完整的密码后,单片机将从缓冲区中读取密码并与预设密码进行比对。

如果输入的密码与储存的密码一致,单片机将执行解锁动作;否则,将执行错误处理流程。

4.控制电机动作:在验证密码通过后,单片机将通过PWM控制电机的转动。

根据设计要求,电机可以驱动锁的开关,实现开锁操作。

5.密码存储:单片机可以通过内部存储器来存储密码。

当用户需要修改密码时,单片机可以接收新密码,并将其保存到内部存储器中。

4. 单片机电子密码锁的优势与挑战虽然单片机在电子密码锁中具有许多优势,但也面临一些挑战。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

二○一六~二○一七学年第一学期电子信息工程系电子综合设计II报告书班级:电信(产业)1401班设计时间:2016/12/29学生姓名:学号:指导教师:二○一六年十二月一、设计要求.题目内容:设计一个基于51单片机的电子密码锁:1.可以使用4*4的矩阵键盘与红外遥控器输入密码。

2.可以通过按特殊组合键重设开锁密码。

3.显示通过1602液晶屏显示电子密码锁界面,输入密码时显示输入个数显示为‘*’,如果密码正确,进入欢迎界面。

4.密码连续输入3次错误报警,LCD显示报警,倒计时十秒后重新进入密码输入界面。

5.可以通过特殊的按键组合跳过输入界面直接进入欢迎界面。

实现方法:1.通过红外接收头,连接单片机的P3.2外部中断INT0口,可以实现单片机接收遥控器的信号输入。

2.通过矩阵键盘扫描函数,可以实现对键盘输入的响应。

3.通过引脚的高低电平变化频率,控制蜂鸣器的输入占空比和频率(低电平时间固定,通过输入给函数值的不同改变高电平时间,固定响300个周期),对不同按键实现不同声音响应。

4.1602显示屏有16*2个单元格,每个单元格由5*8个像素点组成,可以很好的显示数字,符号,英文字符。

功能需求分析:液晶屏显示:根据题意,需要设计并显示输入密码界面、修改密码界面、欢迎界面、错误警告界面密码输入:根据题意,每次输入一个数字,则显示一个‘*’符号代替,只能看出输入的位数,若输入密码位数达到六位,则与正确密码比较,若正确,进入系统。

根据日常的手机使用习惯,默认长度为6位,且第六位输入之后立即判断,正确则进入,错误则清空重输。

组合键实现密码修改:密码修改必须通过不易被他人发现的特殊方法改变,所以设计为,若同时按住矩阵键盘的5,10 或6,9两个键,则进入密码修改函数。

输入密码错误三次则报错:一般的密码系统对密码输入错误次数过多的情况进行了限制,所以在密码锁里设置,若密码输入错误三次,则进入警报界面,显示10s倒计时,必须在倒计时结束后才能再次输入密码。

组合键实现跳过密码:如果系统主人临时忘记了密码,则需要一些补救的备用措施,所以在电子锁里设计了,如果同时按下0,15或3,12键,则跳过密码输入阶段,直接进入欢迎界面。

红外控制:在很多时候,需要通过远程通信输入密码,进入某个远程服务器系统。

所以,通过红外设备模拟远程通信就显得很有必要。

再此系统中,通过把红外接收引脚接到外部中断INT0口,实现接收红外遥控器的数据。

重新输入:如果密码输入的过程中,发现输错了一位数,方便起见,要设置重新输入的功能,即矩阵按键为11,或红外遥控键值为12时,重新输入密码,并且不计入输错次数。

二、 系统总体设计框架系统模块分布图:电子密码锁系统密码输入及显示蜂鸣器模块重设密码跳过密码输入过程警告音1602显示模块按键音管理员模块输入密码界面警告界面重设密码界面欢迎界面详细流程框图:开始若为重置密码指令红外外部中断键盘扫描错误警报进入欢迎界面输入界面是否为特殊组合键输入是否达到6位是否与正确密码相同错误次数达到三次?系统锁定,并倒计时十秒将输入密码暂存在数组用*显示密码位数是否是否是否是否将输入的六位六位密码数组与正确值比较若为跳过密码指令输入密码界面重置密码界面输入是否达到6位将输入密码存入正确密码数组中,完成重置否是三、运行结果密码输入:每次输入一个数字,则显示一个‘*’符号。

密码修改:通过特殊组合按键,进入密码修改函数。

三次报错:若密码输入错误三次,则进入警报界面。

特殊键清除:通过特殊组合按键,进入密码修改函数。

红外控制:通过红外遥控器输入密码。

重新输入:通过红外遥控器的12号按键或矩阵键盘的11号按键可以重新输入密码。

四、实验小结本次实验,用51单片机实现了电子密码锁系统,虽然内容较基础,但是还是新学到了一些新知识,如红外线的数据传输方式,外部中断的合理使用。

同时也遇到了一些问题:用红外遥控器输入密码的时候,总会在短时间内把一个键值发给单片机发送两次,但是原因不是太清楚,可能是红外遥控器的抬起也算一个命令,然后我再判断主函数的红外线标志位判断的地方,加了0.5秒的延迟,解决了问题。

以后有时间再把红外接收器的数据手册详细看看,研究问题出在哪里。

总体来说,这一次的动手设计还是让自身能力提高了不少,但其实我学习的东西还远远不够,在以后的学习里,我会抓紧课外时间多学习知识,才能将自身解决实际问题的能力快速提高。

五、参考文献[1] 谭浩强,C语言程序设计,清华大学出版社,2005[2] 张毅刚,单片机原理及接口技术,人民邮电出版社,2011六、附录:源程序/******************************************************************************* * 电子密码锁系统 Designed By 曹子龙 2016/12/29 * *******************************************************************************/#include<reg51.h>#include"lcd.h" //包含控制1602的初始化程序及写入命令的程序#define GPIO_KEY P1 //矩阵键盘接口sbit IRIN=P3^2; //红外线接口sbit Beep = P2^0; //蜂鸣器接口unsigned char code CDIS0[16]={" Set Code: "}; //用来初始化1602屏幕显示内容的字符串数组unsigned char code CDIS1[16]={" Enter Code: "};unsigned char code CDIS2[16]={" Code: "};unsigned char code CDIS3[16]={" Welcome to "};unsigned char code CDIS4[16]={" My System!"};unsigned char code CDIS5[16]={" Warning: "};unsigned char code CDIS6[16]={" Please Wait s!"};unsigned int RIGHTCODE[6]={9,7,0,2,2,9};//初始正确密码unsigned int Code[6]; //用来存放输入密码unsigned int KeyValue; //用来储存键值unsigned int Key_Flag=0; //有按键按下时置为1unsigned int HongwaiValue; //用来储存键值unsigned int Hongwai_Flag=0; //有红外信号时置为1unsigned int Annum=0; //用来储存按键次数unsigned int Wrongnum=0; //用来储存错误次数unsigned int CodeFlag=0; //用来标识密码是否输入正确unsigned int CodeDel=0; //特殊组合键可以清除密码unsigned char IrValue[6]; //暂存接收到的红外信号unsigned char Time;unsigned char WrongTime; //用来储存错误等待时间void SetCode(); //重置密码函数void hongwai(); //将红外接收的值变为对应的按键值void IrInit(); //红外初始化void DelayMs(unsigned int );void beep(unsigned int); //可让蜂鸣器实现不同频率声音的函数void KeyScan(); //键盘扫描函数/******************************************************************************* * 函数名 : main* 函数功能 : 主函数*******************************************************************************/void main(){unsigned char i;IrInit();LcdInit();LcdWriteCom(0x80); //初始化LCD1602显示,展示密码输入界面for(i=0;i<16;i++){LcdWriteData(CDIS1[i]);}LcdWriteCom(0x80+0x40);for(i=0;i<16;i++){LcdWriteData(CDIS2[i]);}while(1){KeyScan(); //扫描键盘if(CodeDel==4) //若输入正确的组合按键,可重设密码SetCode();else if(CodeDel==2) //若输入正确的组合按键,则清除密码,直接进入系统{Wrongnum=0; //若输入正确,错误次数清零Annum=0; //密码计数器清零CodeDel=0; //组合键标志位清0Key_Flag=0; //按键标志位清0Hongwai_Flag=0; //红外标志位清0LcdWriteCom(0x80); //进入欢迎界面 5sfor(i=0;i<16;i++){LcdWriteData(CDIS3[i]);}LcdWriteCom(0x80+0x40);for(i=0;i<16;i++){LcdWriteData(CDIS4[i]);}DelayMs(50000);LcdWriteCom(0x80);for(i=0;i<16;i++) //等待结束后,次数清零,显示输入密码界面{LcdWriteData(CDIS1[i]);}LcdWriteCom(0x80+0x40);for(i=0;i<16;i++){LcdWriteData(CDIS2[i]);}}if(Key_Flag==1){Key_Flag=0;Code[Annum-1]=KeyValue; //将输入值存入密码数组中beep(KeyValue * 30);LcdWriteCom(0xc0+6+Annum);LcdWriteData(42);}if(Hongwai_Flag==1) //若接受到了红外数据{DelayMs(500);if(Hongwai_Flag==1) //不知道因为什么原因,红外接收的中断会开启两次,为了防止数据重复,写了此次延时判断{Annum++; //按键次数加1Hongwai_Flag=0;Code[Annum-1]=HongwaiValue;//将输入值存入密码数组中beep(HongwaiValue * 40);LcdWriteCom(0xc0+6+Annum);LcdWriteData(42);}}if(Annum>=6) //6位密码输入完毕或检测到特殊组合按键{CodeFlag=1; //暂时令标志位为1,若密码有错误,则再置0for(i=0;i<6;i++){if(Code[i]!=RIGHTCODE[i]) //若密码与正确密码不相等CodeFlag=0;}if(CodeFlag==0) //若输入错误,清零重新输入,并将错误输入次数加一{Wrongnum++;if(Wrongnum==3) //若错误次数达到三次{beep(100); //警报LcdWriteCom(0x80); //显示错误信息,等待10sfor(i=0;i<16;i++){LcdWriteData(CDIS5[i]);}LcdWriteCom(0x80+0x40);for(i=0;i<16;i++){LcdWriteData(CDIS6[i]);}WrongTime='9'; //等待时间while(WrongTime!='0'){LcdWriteCom(0x80+0x40+13);LcdWriteData(WrongTime);DelayMs(10000);WrongTime--;}Wrongnum=0;}Annum=0;Key_Flag=0; //按键标志位清0Hongwai_Flag=0; //红外标志位清0LcdWriteCom(0x80);for(i=0;i<16;i++) //等待结束后,次数清零,显示输入密码界面{LcdWriteData(CDIS1[i]);}LcdWriteCom(0x80+0x40);for(i=0;i<16;i++){LcdWriteData(CDIS2[i]);}}if(CodeFlag==1) //密码输入正确{Wrongnum=0; //若输入正确,错误次数清零Annum=0; //密码计数器清零LcdWriteCom(0x80); //进入欢迎界面 5sfor(i=0;i<16;i++){LcdWriteData(CDIS3[i]);}LcdWriteCom(0x80+0x40);for(i=0;i<16;i++){LcdWriteData(CDIS4[i]);}DelayMs(50000);LcdWriteCom(0x80);for(i=0;i<16;i++) //等待结束后,次数清零,显示输入密码界面{LcdWriteData(CDIS1[i]);}LcdWriteCom(0x80+0x40);for(i=0;i<16;i++){LcdWriteData(CDIS2[i]);}/*标志清零需放在后面,因为在密码输入正确后的显示时间内,外部中断或按键都会使标志位为1,进而在再次显示密码时弹出一位密码值*/Key_Flag=0; //按键标志位清0Hongwai_Flag=0; //红外标志位清0}}}}/******************************************************************************* * 函数名 : SetCode()* 函数功能: 设置密码*******************************************************************************/ void SetCode(){int i,j=0;Wrongnum=0; //错误次数清零Annum=0; //密码计数器清零CodeDel=0; //组合键标志位清0Key_Flag=0; //按键标志位清0Hongwai_Flag=0; //红外标志位清0LcdWriteCom(0x80);for(i=0;i<16;i++) //初始化LCD1602显示,显示设置密码界面{LcdWriteData(CDIS0[i]);}LcdWriteCom(0x80+0x40);for(i=0;i<16;i++){LcdWriteData(CDIS2[i]);}DelayMs(1000);while(j<6){KeyScan(); //扫描键盘if(Key_Flag==1){Key_Flag=0;RIGHTCODE[j]=KeyValue;beep(KeyValue * 30);LcdWriteCom(0xc0+7+j);LcdWriteData(42);j++;DelayMs(1000);}if(Hongwai_Flag==1) //若接受到了红外数据{DelayMs(500);if(Hongwai_Flag==1) //不知道因为什么原因,红外接收的中断会开启两次,为了防止数据重复,写了此次延时判断{Hongwai_Flag=0;RIGHTCODE[j]=HongwaiValue;beep(HongwaiValue * 40);LcdWriteCom(0xc0+7+j);LcdWriteData(42);j++;DelayMs(1000);}}}LcdWriteCom(0x80);for(i=0;i<16;i++) //初始化LCD1602显示,展示密码输入界面{LcdWriteData(CDIS1[i]);}LcdWriteCom(0x80+0x40);for(i=0;i<16;i++){LcdWriteData(CDIS2[i]);}Wrongnum=0; //错误次数清零Annum=0; //密码计数器清零Key_Flag=0; //按键标志位清0Hongwai_Flag=0; //红外标志位清0}/******************************************************************************* * 函数名 : DelayMs()* 函数功能 : 延时*******************************************************************************/void DelayMs(unsigned int x) //0.14ms误差 0us{unsigned char i;while(x--){for (i = 0; i<13; i++){}}}/******************************************************************************* * 函数名 : IrInit()* 函数功能 : 初始化红外线接收*******************************************************************************/void IrInit(){IT0=1;//下降沿触发EX0=1;//打开中断0允许EA=1; //打开总中断IRIN=1;//初始化端口}/******************************************************************************* * 函数名 : ReadIr()* 函数功能 : 读取红外数值的中断函数*******************************************************************************/void ReadIr() interrupt 0{unsigned char j,k;unsigned int err;Time=0;DelayMs(70);if(IRIN==0) //确认是否真的接收到正确的信号{err=1000; //1000*10us=10ms,超过说明接收到错误的信号/*当两个条件都为真是循环,如果有一个条件为假的时候跳出循环,免得程序出错的时侯,程序死在这里*/while((IRIN==0)&&(err>0)) //等待前面9ms的低电平过去{DelayMs(1);err--;}if(IRIN==1) //如果正确等到9ms低电平{Hongwai_Flag=1; //正确收到信号,标志位置1err=500;while((IRIN==1)&&(err>0)) //等待4.5ms的起始高电平过去{DelayMs(1);err--;}for(k=0;k<4;k++) //共有4组数据{for(j=0;j<8;j++) //接收一组数据{err=60;while((IRIN==0)&&(err>0))//等待信号前面的560us低电平过去{DelayMs(1);err--;}err=500;while((IRIN==1)&&(err>0)) //计算高电平的时间长度。

相关文档
最新文档