版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、www.yoryu-整理摘 要随着科技和人们的生活水平的提高,如何实现家庭防盗这一问题也变的尤其的突出,传统机械锁由于构造简单,被撬事件屡见不鲜;电子锁由于其保密性高,使用灵活性好,安全系数高,受到了广大用户的青睐。本设计以单片机AT89C51作为密码锁监控装置的检测和控制核心,分为主机控制和从机执行机构(本设重点介绍主机设计),实现钥匙信息在主机上的初步认证注册、密码信息的加密、钥匙丢失报废等功能。根据51单片机之间的串行通信原理,这便于对密码信息的随机加密和保护。而且采用键盘输入的电子密码锁具有较高的优势。采用数字信号编码和二次调制方式,不仅可以实现多路信息的控制,提高信号传输的抗干扰性,
2、减少错误动作,而且功率消耗低;反应速度快、传输效率高、工作稳定可靠等。软件设计采用自上而下的模块化设计思想,以使系统朝着分布式、小型化方向发展,增强系统的可扩展性和运行的稳定性。测试结果表明,本系统各项功能已达到本设计的所有要求。关键词:单片机;密码锁;存储器,电子锁。Electronic Lock Design with 51 Serires Single Chip ControllerAbstractAlong with the exaltation of social science and the living level of people, how carry out the fa
3、mily to guard against theft, this problem also change particularly outstanding.Because of the simple construct of traditional machine lock,the affairs of theft is hackneyed.the electronics lock is safer because of its confidentiality, using the vivid good, the safe coefficient is high, being subject
4、ed to the large customer close.It can carry out the key information to register in the main on board initial attestation, the password information encrypt etc. Go to correspond by letter the principle according to the string between 51 machines, this is easy to encrypt and protect to the passwords i
5、nformation random. Adopt the numerical signal codes,not only can carry out many controls of the road information, raise the anti- interference that signal deliver, reduce the mistake action,but also the power consume is low, Respond quickly,the efficiency deliver is high, work stable credibility etc
6、. The software design adoption the design thought from top to bottom, to make the system toward wear distribute type,turn to the direction development of small, strengthen the system and can expand the stability and circulate.Test the result enunciation, various functions of this system are already
7、all request of this design.keyword:singlechip;cryptogram lock; register; electronics lock.目录1 绪论11.1 引言11.2 电子密码锁的背景11.3 电子锁设计的意义的本设计特点22.系统设计32.1系统总设计结构图32.2开锁机构设计32.2.1主控芯片AT89C51单片机的简介43系统硬件设计73.1键盘设计73.2系统电路设计:83.2.1 晶振时钟电路83.2.2复位电路设计93.2.3 存储器的介绍93.2.4串口引脚功能介绍9 3.2.5其它引脚93.3电路图的绘制93.3.1 PROTEL
8、 99 SE简介:124.软件设计174.1 系统软件设计整体思路174.2系统软件设计流程图185 程序调试195.1 程序调试用到的软件及工具195.2 KEIL C51简介195.3 调试过程195.4 硬件仿真206 设计总结与展望22致 谢23参考文献24附录|c语言程序25III1 绪论1.1 引言随着人们生活水平的提高,如何实现家庭防盗这一问题也变的尤其的突出,传统的机械锁由于其构造的简单,被撬的事件屡见不鲜,电子锁由于其保密性高,使用灵活性好,安全系数高,受到了广大用户的喜爱。锁是置于可启闭的器物上,用以关住某个确定的空间范围或某种器具的,必须以钥匙或暗码打开的扣件。锁具发展到
9、现在已有若干年的历史了,人们对它的结构、机理也研究得很透彻,因此,不用钥匙就能打开的方法和工具也层出不穷。现代人类文明社会里,由于社会中各种矛盾冲突十分剧烈,人们的思想道德观念,价值观念,文化修养水平等差异,群众中良莠不齐,善良的人们能够自觉规范自已的行为,“非礼不为”,虽无钥匙亦不会乱闯。然而,那些毫无道德观念的盗贼却想方设法利用高科技手段撬门开锁,使广大居民防不胜防。为什么会出现这种情况呢?因为传统锁具都存在致命的弱点:第一、 锁芯采用常见的铜、铝、锌等材料,抵抗不了强力破坏;第二、 锁具制作工艺,技术落后,无法阻止技术手段的开启。目前,市场上很多国内外的锁具,实际上都不具备真正的防盗功能
10、。在惯偷面前,两根钢丝或几件简单的工具就可以把这些锁打开,有的惯偷甚至公开扬言:“没有我打不开的锁。”其实,不是他们多高明,而是一般锁具技术原理太过简单。面对这一残酷的现状,新时代提出了锁具必须革命的迫切的要求。1.2 电子密码锁的背景随着社会科技的进步,锁已发展到了密码锁、磁性锁、电子锁、激光锁、声控锁等等。在传统钥匙的基础上,加了一组或多组密码,不同声音,不同磁场,不同声波,不同光束光波,不同图像。(如指纹、眼底视网膜等)来控制锁的开启。从而大大提高了锁的安全性,使不法之徒无从下手,人们也就能对自身财产安全有了更多的保障。当今安全信息系统应用越来越广泛,特别在保护机密、维护隐私和财产保护方
11、面起到重大作用,而基于电子密码锁的安全系统是其中的组成部分,因此研究它具有重大的现实意义。1.3 电子锁设计的意义的本设计特点单片机,亦称单片微电脑或单片微型计算机。它是把中央处理器(CPU)、随机存取存储器(RAM)、只读存储器(ROM)、输入/输出端口 (I/0)等主要计算机功能部件都集成在一块集成电路芯片上的微型计算机。 计算机的产生加快了人类改造世界的步伐,但是它毕竟体积大。微计算机(单片机)在这种情况下诞生了,它为我们改变了什么?纵观我们现在生活的各个领域,从导弹的导航装置,到飞机上各种仪表的控制,从计算机的网络通讯与数据传输,到工业自动化过程的实时控制和数据处理,以及我们生活中广泛
12、使用的各种智能IC 卡、电子宠物等,这些都离不开单片机。以前没有单片机时,这些东西也能做,但是只能使用复杂的模拟电路,然而这样做出来的产品不仅体积大,而且成本高,并且由于长期使用,元器件不断老化,控制的精度自然也会达不到标准。在单片机产生后,我们就将控制这些东西变为智能化了,我们只需要在单片机外围接一点简单的接口电路,核心部分只是由人为的写入程序来完成。这样产品的体积变小了,成本也降低了,长期使用也不会担心精度达不到了,且容易升级改善。 电子锁可以在日常生活和现代办公中,住宅与办公室的安全防范、单位的文件档案、财务报表以及一些个人资料的保存等多种场合使用。大大提高了主人物资的安全性,安全可以代
13、替老式机械锁。目前使用的密码锁种类繁多,各具特色。本文从经济实用的角度出发,采用AT89C2051单机,研制了一款具有防盗自动报警功能的电子密码锁。该密码锁设计方法合理,简单易行,成本低,符合住宅、办公室用锁要求,具有一定的推广价值。(1)系统设置6位密码,密码通过键盘输入,若密码正确,则将锁打开。(2)密码由用户自己设定,在密码输入正确下,用户可自行修改密码或者是开门。(3)具有自动报警功能。自动报警分现场报警和远程报警两种。现场报警由扬声器发出报警声。(4)两种情况下可报警:一是密码输入错误3次,则报警;二是非正常开门,如破门而入的情况,可通过系统的红外监视装置监测,同时报警,保证了系统的
14、安全性。系统工作时,用户通过按键输入6位密码,单片机将输入密码与设定密码进行比较,若密码正确,则发出开锁信号,将门打开,系统不报警;若密码不正确,则有相应的指示灯闪动,并要求重新输入密码,重新输入密码的次数不能超过3次,若3次输入的密码都不正确,则发出报警信号。2.系统设计2.1系统总设计结构图图2-1系统总设计结构图 本设计由主控芯片51单片机,单片机时钟电路,键盘,存储器,报警系统和开锁电路组成。单片负责控制整个系统的执行过程。2.2开锁机构设计通过单片机送给开锁执行机构,电路驱动电磁锁吸合,从而达到开锁的目的。本设计通过P3.0接一个3极管驱动继电器打开电磁阀线圈实现开关门。AT89C5
15、1电磁阀开锁驱动电路密码正确图22 密码锁开锁机构示意图当用户输入的密码正确而且是在规定的时间及次数输入之内,单片机便输出开门信号,送到开锁驱动电路,然后驱动电磁锁,达到开门的目的。2.2.1主控芯片AT89C51单片机的简介AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROMFalsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功
16、能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器。主要特性: ·与MCS-51 兼容 ·4K字节可编程闪烁存储器 ·寿命:1000写/擦循环 ·数据保留时间:10年 ·全静态工作:0Hz-24MHz ·三级程序存储器锁定 ·128×8位内部RAM ·32可编程I/O线 ·两个16位定时器/计数器 ·5个中断源 ·可编程串行通道 ·低功耗的闲置和掉电模式 ·片内振荡器和时钟电路管脚说明: VCC:供电电压。 GND:接地
17、。 P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。 P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电
18、流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。 P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。 P3口也可作为AT89C51的一些特殊功能口,如下表所示: P3.0 RXD(串行输入口) P3.1 TXD(串行输出口) P3.2 /INT0(外部
19、中断0) P3.3 /INT1(外部中断1) P3.4 T0(记时器0外部输入) P3.5 T1(记时器1外部输入) P3.6 /WR(外部数据存储器写选通) P3.7 /RD(外部数据存储器读选通) P3口同时为闪烁编程和编程校验接收一些控制信号。 RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。 ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每
20、当用作外部数据存储器时,将跳过一个ALE脉冲。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。 /PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。 /EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。 XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出。图2-3 AT
21、89C51芯片图3系统硬件设计3.1键盘设计为了使本电路更加简洁,本电子锁的密码锁采用简单的阿拉珀数字进行输入作为电路的密码输入。P1口控制3*4的键盘硬件设备可实现密码的输入与更改。图如下: 图31键盘电路3.2系统电路设计:本系统电路主芯片AT89C51,晶振和两个电容组成的时钟脉冲,一个电阻和一个电解电容和一个按键组成的复位电路,一个lcd1602构成的密码显示器,一个蜂鸣器,1个红LED构成报警电路,一个绿色的LED,一个NPN三极管加上一个继电器组成的驱动电路构成了系统电路。3.2.1 晶振时钟电路单片机XIAL1和XIAL2分别接30PF的电容,中间再并个12MHZ的晶振,形成单片
22、机的晶振电路。 图31 晶振电路3.2.2复位电路设计图32 复位电路3.2.3 存储器的介绍采用存储器主要的功能是存储密码,不要在掉电时丢失,他工作时的作用是读写密码。存储器如下: 图3.2.3 存储器3.2.4串口引脚功能介绍 单片的P0口外接lcd1602,作为密码输入显示器;P3.0外接蜂鸣器,当P3.0被置0时,蜂鸣器发出声音;P2.7口外接发光二极管用作系统报警状态提示。3.2.4 其它引脚 ALE引脚悬空,复位引脚接到复位电路、VCC接电源、VSS接地、EA接电源3.3电路图的绘制用PROTEL 99 SE绘制的完整电路图如下:图33 系统电路图Lcd1602会显示你按键是否正确
23、对应你要输入的数字密码。由于采取上电先输入密码,输入密码正确后,会有两个选项,如果再输入1,就是开门,输入2就是修改密码。设置密码后若输入密码不对的前2次不会报警,最后一次会有20秒报警,按发错误除外(但有两秒报警,并且须全部密码重新输入)。本电路设置六位密码,由于每位数字键均可以设置电路密码,由表示该电路已设置了密码,等待输入密码进行比较。3.3.1 PROTEL 99 SE简介:Protel99SE是Protel公司近10年来致力于Windows平台开发的最新结晶,能实现从电学概念设计到输出物理生产数据,以及这之间的所有分析、验证和设计数据管理。因而今天的Protel最新产品已不是单纯 的
24、PCB(印制电路板)设计工具,而是一个系统工具,覆盖了以PCB为核心的整个物理设计。 最新版本的Protel软件可以毫无障碍地读Orcad、Pads、Accel(PCAD)等知名EDA公司设计文件,以便用户顺利过渡到新的EDA平台。Protel99 SE共分5个模块,分别是原理图设计、PCB设计(包含信号完整性分析)、自动布线器、原理图混合信号仿真、PLD设计。 以下介绍一些Protel99SE的部分最新功能:可生成30多种格式的电气连接网络表;强大的全局编辑功能;在原理图中选择一级器件,PCB中同样的器件也将被选中; 同时运行原理图和PCB,在打开的原理图和PCB图间允许双向交叉查找元器件、
25、引脚、网络既可以进行正向注释元器件标号(由原理图到PCB),也可以进行反向注释(由PCB到原理图),以保持电气原理图和PCB在设计上的一致性;满足国际化设计要求(包括国标标题栏输出,GB4728国标库); * 方便易用的数模混合仿真(兼容SPICE 3f5);支持用CUPL语言和原理图设计PLD,生成标准的JED下载文件; * PCB可设计32个信号层,16个电源-地层和16个机加工层;强大的“规则驱动”设计环境,符合在线的和批处理的设计规则检查; 智能覆铜功能,覆铀可以自动重铺; 提供大量的工业化标准电路板做为设计模版; 放置汉字功能; 可以输入和输出DXF、DWG格式文件,实现和AutoC
26、AD等软件的数据交换; 智能封装导航(对于建立复杂的PGA、BGA封装很有用); 方便的打印预览功能,不用修改PCB文件就可以直接控制打印结果; 独特的3D显示可以在制板之前看到装配事物的效果; 强大的CAM处理使您轻松实现输出光绘文件、材料清单、钻孔文件、贴片机文件、测试点报告等; 经过充分验证的传输线特性和仿真精确计算的算法,信号完整性分析直接从PCB启动; 反射和串扰仿真的波形显示结果与便利的测量工具相结合。4.软件设计4.1 系统软件设计整体思路一个应用系统要完成各项功能,首先必须有较完善的硬件作保证。同时还必须得到相应设计合理的软件的支持,尤其是微机应用高速发展的今天,许多由硬件完成
27、的工作,都可通过软件编程而代替。甚至有些必须采用很复杂的硬件电路才能完成的工作,用软件编程有时会变得很简单,如数字滤波,信号处理等。因此充分利用其内部丰富的硬件资源和软件资源,采用与C51系列单片机相对应的高级语言和结构化程序设计方法进行软件编程。程序设计语言有三种:机器语言、汇编语言和高级语言。机器语言是机器唯一能“懂”的语言,用汇编语言或高级语言编写的程序(称为源程序)最终都必须翻译成机器语言的程序(成为目标程序),计算机才能“看懂”,然后逐一执行。高级语言是面向问题和计算过程的语言,它可通过于各种不同的计算机,用户编程时不必仔细了解所用的计算机的具体性能与指令系统,而且语句的功能强,常常
28、一个语句已相当于很多条计算机指令,于是用高级语言编制程序的速度比较快,也便于学习和交流,于是本系统却选用了高级语言。4.2系统软件设计流程图 图41 系统程序设计结构图5 程序调试和硬件仿真把也写好的C语言程序的载入软件调试工具,检查软件是否有设法错误,再根据软件提示对本程序进行修改,直到没有错误再生成单片机能运行的机器码,再用51开发板或其它单怎机写入工具把机器码写入单片机进行实际的程序调试,根据实际情况再对程序的不足加以修改,直到满足设计要求。5.1 程序调试用到的软件及工具调试本程序需要用到KEIL C51,及proteus软件。5.2 KEIL C51简介Keil C51是美国Keil
29、 Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用C来开发,体会更加深刻。Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。 C51工具包的整体结构: uVision与Ishell分别是C51 for Windows和for Dos的集成开发环境(IDE),可以
30、完成编辑、编译、连接、调试、仿真等整个开发流程。开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。然后分别由C51及A51编译器编译生成目标文件(.OBJ)。目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS)。ABS文件由OH51转换成标准的Hex文件,以供调试器dScope51或tScope51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如EPROM中。5.3 软件调试过程 首先打开KEIL C51主程序,新建工程,新建文本框写入程序,保存,检查是否有语法错误,经反复检查无误后c语言,生成51单片机
31、可执行的HEX文件。然后用proteus中的匹配的烧录软件把HEX文件写入Proteus中的单片机。图51 keil c51调试介面5.4 硬件仿真 电子密码锁系统在软件设计和硬件设计上已经基本上完成,下一步进入硬件和软件的联调,下面就是软硬件的联调效果。5.4.1 唤醒系统时的界面 当锁完门后,人不在是,单片机会进入沉睡状态,当有人来时,单片机会自己的睡醒,睡醒界面如下: 图.2 输入密码状态 本系统的初始密码设置为000000,下面输入密码时的电路的工作界面图如下: 图.3 输入密码三次错误时图本系统输入三次密码错误后将会报警,显示器也会显示warning;
32、仿真图如下: 图.4 密码输入正确时的图 本系统密码输入正确后,所显示的图,以及密码修改和开始时的界面图如下: 图 密码正确时的图图 门打开和绿色led亮图 修改密码时的界面图修改密码成功时的显示 本系统通过软件仿真和硬件仿真后,完全能够实现任务书上的所有功能,每一次功能的实现和我预想的一样完成所有的操作,从仿真结果可以看出功能在井井有条的完成着,仿真图也代表着这次系统设计基本完成。6 设计总结与展望实践是检验真理的唯一标准,当然也是检验学习成果的标准。在经过一段时间的学习之后,我们需要了解自己的所学应该如何应用在实践中,
33、因为任何知识都源于实践,归于实践,所以要将所学的知识在实践中来检验。在做毕业设计期间,在老师的指导下,通过自身的不断努力,无论是思想上,学习上,都取得了长足的发展和巨大的收获,现将工作总结如下:思想上,学会了用科学的精神去解决问题。很多事情看起来是很简单的问题,但实际做起来去会发现有许多奥妙!这是因为其中蕴含着许多科学的问题。运用科学的方法去解决问题,这是我这次实训给我带来的思想上的改变。学习上,使自已在大学所以的知识在这次得到实践,学到一些书本上无法学到的经验,对电子元件有了进一步的认识。电子锁是信息化时代发展的产物,应时而生,我相信随着科技的不断发展,将来的电子锁一定更加完美,更加人性化,
34、更加便宜,更加安全。致 谢在本次论文设计过程中,周老师对该论文从选题,构思到最后定稿的各个环节给予细心指引与教导,使我得以最终完成毕业论文设计,在此表示衷心的感谢。此外在学习中,老师严谨的治学态度、丰富渊博的知识、敏锐的学术思维、精益求精的工作态度以及侮人不倦的师者风范是我终生学习的楷模。另外在完成毕业设计的过程中,还得到众多朋友的关心支持和帮助,在此,谨向老师同学和朋友致以衷心的感谢和崇高的敬意!最后,我要向百忙之中抽时间对本文进行审阅,评议和参与本人论文答辩的各位老师表示感谢参考文献1 李朝青.单片机原理及接口技术(简明修订版)M.北京:北京航空航天大学出版社,19982 李全利.单片机原
35、理及接口技术M.高等教育出版社,20033 PROTEL99 SE电路设计与制板M.机械工业出版社,20074 杨将新,李华军,刘到骏等.单片机程序设计及应用(从基础到实践)J电子工业出版社,20065 Steven F.Barrett.Daneil J.Pack.Embedded SystemM.北京:电子工业出版社,20066 周立功.LPC900系列Flash单片机应用技术J.北京航空航天大学出版社, 20047 黄智伟.全国大学生电子设计竞赛训练教程M.北京:电子工业出版社, 2005附录|c语言程序#include<reg51.h>#include<intrins.
36、h>#define uchar unsigned char#define uint unsigned intsbit RS = P20;sbit RW = P21;sbit E = P22;sbit P2_3 = P23;sbit P2_4 = P24;sbit P2_5 = P25;sbit reset = P26;sbit Sound = P27;sbit scl = P36;sbit sda = P37;sbit led = P30;uchar scan_16;uchar password_17;uchar newpassword_16;uchar password_47=0,0,
37、0,0,0,0,1;uchar code scan6="*"uchar code table=0x7b,0xed,0xeb,0xe7,0xdd,0xdb,0xd7,0xbd,0xbb,0xb7,0x7d,0x77;uchar code table1="Input Code"uchar code table2="Function Select"uchar code table3="Input Code Again"uchar code table4="1Open 2Reset"uchar code
38、 table5="Input New Code"uchar code table6="Comfirm New Code"uchar code table7="Success!"uchar code table8="Failure!"uchar code table9="Warning!"uchar code Array1= 0x1C, 0x20,0x20, 0x20,0x1C,0x20,0x18,0x20, 0x20,0x80,0xFF,0x20;void Read_Code(uchar pas
39、sword,uchar address,uchar num);void Write_Code(uchar Data,uchar address,uchar num);void Start();void stop();void Ack();void NoAck();uchar read_byte();void write_byte(uchar date);void lcd_init();void write_com(uchar com);void write_data(uchar date);void delay();void delay_ms(uint z);void print(uchar
40、tab,uchar len,uchar loc,bit res);void num9();void num10();void num11();void Test1();void Test2();void Sound_Delay(uchar n);void Music();void Alarm();void Music1();void errorMusic(uint t);char scan_num=-1; /键盘号数uchar scan_len=0; /输入数的长度uchar yes,key,flag;uchar Sound_Signal;/定义音符大小 uchar Sound_Pace;/定
41、义节拍大小uchar Counter1;uchar error;void main()P2_3 = 1; /密码锁关P2_4 = 1;P2_5 = 1;Sound = 1;EA=1; /开总中断EX0=1; /开外部中断0IT0=1; /中断0下降沿触发TMOD=0x01; /定时器0工作方式1TH0=0xff;TL0=0xff;ET0=1; /开定时器0中断P1=0xf0;led = 1;if( reset = 0) /如果键按下,则密码清零,恢复出厂设置Write_Code(password_4,0,6);Read_Code(password_1,0,7); /从24C02中读密码if(p
42、assword_16 = 1) /之前对各卡的第七位分别写入1,2,3flag = 1;if(password_16 = 2)flag = 2;if(password_16 = 3)flag = 3;lcd_init(); /LCD初始化while(1)if(scan_num!=-1)if(scan_num<=9)num9(); /数字09处理if(scan_num=10)num10(); /删除if(scan_num=11)if(scan_len = 6)num11(); /确定Music();if(key = 2) /再次输入新密码后确认键key = 0;Test2();return
43、;Test1(); /提示"Input Code"输入的密码确认后判断是否正确void Read_Code(uchar password,uchar address,uchar num) /从24C02中读数据uchar i;for(i=0;i<num;i+) Start(); /开始信号write_byte(0xa0); /写控制字Ack(); /应答信号write_byte(address+i);/读地址Ack(); /应答信号Start(); /开始信号write_byte(0xa1); /读控制字Ack(); /应答信号passwordi = read_byt
44、e(); /读数据NoAck();/非应答信号stop(); /停止信号 void Write_Code(uchar Data,uchar address,uchar num)/把数据写到24C02 uchar i;for(i=0;i<num;i+) Start();/开始信号write_byte(0xa0);/写控制字Ack();/应答信号write_byte(address+i);/写地址Ack();/应答信号write_byte(Datai);/写数据Ack();/应答信号stop();/停止信号delay_ms(10); void Start() /开始信号sda = 1;del
45、ay();scl = 1;delay();sda = 0;delay();void stop() /停止信号sda = 0;delay();scl = 1;delay();sda = 1;delay();void Ack() /应答信号uchar i;scl = 1;delay();while(sda = 1)&&(i < 250)i+;scl = 0;delay();void NoAck() /非应答信号 sda=1;delay();scl=1;delay();scl=0;delay();uchar read_byte() /读字节数据uchar i,k;scl = 0
46、;delay();sda = 1;delay();for(i = 0;i < 8;i+)scl = 1;delay();k = (k<<1)|sda;scl = 0;delay();return k;void write_byte(uchar date)/写字节数据uchar i,temp;temp = date;for(i = 0;i < 8;i+)temp = temp<<1;scl = 0;delay();sda = CY;delay();scl = 1;delay();scl = 0;delay();sda = 1;delay();void lcd_
47、init()/uchar i;write_com(0x38);/设置16*2显示,5*7点阵,8位数据接口write_com(0x0c);/设置开显示,不显示光标write_com(0x06);/写一个字符后地址指针加1write_com(0x01);/显示清0,数据指针清0write_com(0x80 + 0x03);/设置数据地址指针位置/*for(i = 0;i <10;i+)write_data(table1i);delay_ms(5);与下句语句等价 */print(table1,10,0x83,1); /LCD显示“Input Code” /*LCD显示,输出函数*/void
48、 print(uchar tab,uchar len,uchar loc,bit res)uchar i,n;if(res=1)write_com(0x01); /光标复位write_com(loc); /设置显示起始位置 for(n=0;n<len;n+)i=tabn;write_data(i);for(n=len;n<6;n+) write_data(32); /空格 void write_com(uchar com) /向LCD写命令RS = 0;RW = 0;P0 = com;delay_ms(5);E = 1;delay_ms(5);E = 0;void write_da
49、ta(uchar date) /向LCD写数据RS = 1;RW = 0;P0 = date;delay_ms(5);E = 1;delay_ms(5);E = 0;/*按下键盘产生中断,中断程序*/void EX_INT0() interrupt 0 uchar aa,bb,i,j;EA = 0; /关总中断P1 = 0xf0;if(P1 & 0xf0) != 0xf0)delay_ms(5);if(P1 & 0xf0) != 0xf0)aa = 0xfe;for(i = 0;i < 4;i+)P1 = aa;if(P1 & 0xf0) != 0xf0)bb =
50、 P1;for(j=0;j<16;j+)if(bb = tablej) scan_num = j;elseaa = _crol_(aa,1);P1 = 0xf0;EA=1; /开总中断/*输入数字09处理函数*/void num9()uchar i;if(scan_len>5)return;if(yes = 1) / 提示“Input Code”输入正确密码后if(scan_num = 1) /键1开锁键Music();yes = 0;scan_num=-1;if(flag = 1)flag = 0;P2_3 = 0;if(flag = 2)flag = 0;P2_3 = 0;P2_4 = 0;if(flag = 3)flag = 0;P2_3 = 0;P2_4 = 0;P2_5 = 0;print(table1,10,0x83,1); /LCD显示“Input Code”if(scan_num = 2)/键2设置新密码Music();yes = 0;print(table5,14,0x81,1); /LCD显示
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年连云港小型客运从业资格证考试培训试题和答案
- 2024年荷泽小型客运从业资格证考试
- 人教部编版六年级语文上册《语文园地四》精美课件
- 玻璃采购与专业安装一体化协议模板
- 幼儿园幼小衔接教育活动总结
- 教师资格考试高级中学音乐面试试题及解答参考
- 水利施工方案技术措施
- 公司三重一大的自查报告及整改措施
- 2024年宁波市住宅商品房买卖合同(限售)
- 职业生涯规划心得体会
- 平台分销返佣合作协议
- 中国城市行政代码
- 低纤维蛋白原血症的护理查房
- 数学4教材介绍
- 全国大学生职业生涯规划大赛
- 肩关节镜术的健康宣教
- 关于学校安全保卫工作存在的问题及对策
- 2024年广西铝业集团有限公司招聘笔试参考题库附带答案详解
- 2024年西藏开发投资集团有限公司招聘笔试参考题库含答案解析
- 爱校主题班会课件
- 黑龙江省哈尔滨市南岗区2023-2024学年九年级上学期期末语文试题
评论
0/150
提交评论