单片机课程设计报告--电子密码锁(3900字)

发表于:2016.10.25来自:www.ttfanwen.com字数:3900 手机看范文

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

电子密码锁

一、 课题概述

在日常生活和工作中,住宅与部门的安全防范、单位的文件档案、财务报表以及一些个人资料的保存多以加锁的办法来解决。若使用机械式钥匙开锁,人们常需携带多把钥匙,使用极不方便,且钥匙丢失后安在日常生活和工作中,住宅与部门的安全防范、单位的文件档案、财务报表以及一些个人资料的保存多以加锁的办法来解决。若使用机械式钥匙开锁,人们常需携带多把钥匙,使用极不方便,且钥匙丢失后安全性即大打折扣。为满足人们对锁的使用要求,增加其安全性,用密码代替钥匙的电子密码锁应运而生。

电子密码锁运用电子电路控制机械部分,使两者紧密结合,从而避免了因为机械部分被破坏而导致开锁功能失常的问题,而且密码输入错误时还有报警声,大大增加了密码锁的防盗功能。同时因为电子密码锁不需要携带钥匙,弥补了钥匙极易丢失和仿造的缺陷,方便了锁具的使用。电子锁由于具有设计、实现简便、制造成本低廉、使用灵活性好、安全系数高等优点,受到了广大用户的青睐。

二、 课程设计任务与要求

2.1 课程设计任务

本课题硬件部分要求在ZY15MCU12BC2实验平台上,设计组成电子密码锁系统,画出系统硬件电路图,设计编写键盘控制、LED显示、声光报警、密码输入和存储子程序供系统主程序调用。在调试程序时,要求整个系统工作正常、显示正确、结果满意,并希望同学能深入思考、精益求精,提出对课题的改进意见。特别是密码存储器和显示部分,

2密码存储是否考虑采用实验箱的IC 存储器AT24C1024,掌握该芯片的工作原理并完成

读、写程序的设计、编写和调试。

基于单片机的电子密码锁系统原理框图如下图1-1所示:

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

图1-1 基于单片机的电子密码锁系统原理框图

电子密码锁运用电子电路控制机械部分,使两者紧密结合,从而避免了因为机械部分被破坏而导致开锁功能失常的问题,而且密码输入错误时还有报警声,大大增加了密

码锁的防盗功能。同时因为电子密码锁不需要携带钥匙,弥补了钥匙极易丢失和仿造的缺陷,方便了锁具的使用。电子锁由于具有设计、实现简便、制造成本低廉、使用灵活性好、安全系数高等优点,受到了广大用户的青睐。

2.2 课程设计要求

2.2.1 基本设计要求

主要分为以下几个部分:

(1)用户密码通过键盘输入,密码输入正确后,输出开锁信号控制开锁电路开锁并发出两声短“滴”声提示音,密码正确指示灯绿灯亮,3秒延时后开锁信号与已开锁指示清零。

(2)密码输入错误时,发出一声长“滴”声错误指示提示音,密码错误指示灯黄灯亮,3秒延时后密码错误信号与密码错误指示清零;连续三次输入密码错误时,发出长鸣声报警,密码错误报警指示灯红灯闪烁, 6秒延时后锁定键盘,此后键盘将无法再次输入密码。

(3)用户密码可以通过键盘修改密码。密码修改成功时,密码修改成功指示灯绿灯亮,并发出一声长“滴”声提示音,3秒延时后密码修改成功信号指示清零。

(4)系统的工作状态由显示电路提示。

2.2.2 发挥设计要求

(1)显示部分采用LCD显示器代替数码管LED,这样使得显示功能大大增强,不仅可以显示数字、字符,还可以显示汉字,使LCD显示的系统当前操作界面(密码输入、修改密码、开锁、锁键盘等);

(2) 数码管LED部分显示当前键入的数字。

三、 设计方案

3.1 方案论证

用以AT89C52为可信的单片机控制方案。利用单片机灵活的编程设计和丰富的IO端口及其控制的精确性,不但能实现基本的密码锁功能,还能添加声光提示、LCD显示的功能。其具体原理图如图3-1所示

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

图1-2 单片机控制方案

3.2 设计原理

本设计主要由单片机、矩阵键盘、液晶显示屏、数码管和蜂鸣器等部分组成。其中矩阵键盘用于输入数字密码,由用户通过连接单片机的矩阵键盘输入密码后,经过单片机对用户输入密码与自己保存的密码进行比对,从而判断密码是否输入正确,然后控制引脚的高低电

平传到相应的电路表示开锁还是报警。电子密码锁电路包含:密码输入、密码修改、开锁示意电路、声光报警电路、LED显示当前键入数字电路及LCD显示电路。特别说明的是:LED显示当前键入数字电路在电子密码锁的应用中看似不合理,但在当前设计环境下,由于键盘输入不稳定,这样可以知晓键盘键入值,方便对电子密码锁测试的掌控。

本系统共有两部分构成,即硬件部分和软件部分。由于硬件部分是固定的即

ZY15MCU12BC2实验平台,因此这次在课程设计中主要就是根据硬件部分写出对应的软件部分。

其设计原理方框图如图3-2所示:

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

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

达到三次

少于三次

图3-2 设计原理方框图

四、 硬件系统说明与电路原理图

4.1 单片机最小系统电路

单片机最小系统由8051、74L373和2764组成,如图4-1所示:

图4-1 单片机最小系统图

4.2键盘输入电路及数码管LED显示当前键入数字电路

采用的是矩阵式按键键盘,它有行线和列线组成,也称行列式键盘,按键位于行列的交叉点上,电子密码锁有键盘输入,同时用六位LED灯实时动态显示当前输入的数字。其与单片机引脚接法如图3-2所示:

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

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

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

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

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

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

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

FGED

图4-2键盘输入电路及数码管LED显示当前键入数字电路

4.3 声光报警电路

声光报警电路由蜂鸣器和3个LED灯组成,单片机引脚P1.1、P1.2、P1.4和P1.5分别控制绿灯、红灯、蜂鸣器和黄灯,如图3-3所示:

图4-3 蜂鸣器及LED灯电路

4.4 LCD显示电路

LCD显示电路由8255和液晶显示屏12232组成,12232不仅可以显示数字、字

符,还可以显示汉字,使得密码锁系统的操作界面更友好和人性化,其与单片机引脚接法如图3-4所示:

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

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

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

22uF+

VCC

NetLabel106

图4-4点阵式液晶显示屏

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

五、 软件主要模块流程图

5.1 系统主程序设计

MAIN: MOV SP,#60H

SETB EX1

MOV 33H,#01H ;写入初始密码

MOV 34H,#02H

MOV 35H,#03H

MOV 36H,#09H

MOV 37H,#05H

MOV 38H,#06H

CLR SEC ;密码正确输入标志初始化 CLR SERR ;密码错误输入标志初始化 CLR SECC ;密码修改成功标志初始化 CLR SECLOCK ;锁键盘标志初始化

LCALL LCDDI

MOV R5,#03H ;密码错误输入次数 MOV R6,#06H ;密码输入位数

MOV DPTR,#5FFFH

MOV A,#0DCH

MOVX @DPTR,A

LP: MOVX A,@DPTR

JB ACC.7,LP ;等待清屏结束 MOV A,#00H

MOVX @DPTR,A

MOV A,#34H ;时钟编程 MOVX @DPTR,A

CLR IT1 ;触发方式设置 NOP

SETB EA

NOP

MOV R0,#39H ;显示缓冲首址送R0 MOV R7,#06H

LLP: MOV @R0,#00H

INC R0

DJNZ R7,LLP

QC10: LCALL DISY ;等待中断

CJNE R6,#0H,N2

JNB SEC,N2 ;判断密码正确输入标志是否为一 LCALL CHANGE ;SEC=1,转入密码修改程序 N2:

LJMP QC10

(由于源程序过长,具体源程序见DZMMS--20092595.asm)

5.2系统主程序的流程图

系统主程序的流程图如图5-1所示:

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

六、 课程设计总结

短短的一个星期,从开始选题到完成选题,虽然碰到的很多问题让我头痛的问题,但是通过本次课程设计也是我受益匪浅,温习了以前所学过的知识,用理论联系实际并结合单片机原理课程和解决实际问题,巩固、加深和扩展了有关单片机设计方面的知识,尤其重要的是让我明白无论做什么事情都不能自认为简单或是困难,需要去实践以后才会真正理解。

比如一开始接到这个选题时,看到所需要的 LCD12232显示电路还有每个模块的各种芯片等以前一点没接触过,就觉得根本不可能完成,在这么短的时间内根本不可能完成。但是后来还是静下心来,从最近本的做起,从能实现最基本的功能做起,一点一点完成,在自己的努力下,完成了此次课程设计,到最后看看自己写的源程序代码,一股成就感油然而生。

这次的课程设计对我以后的发展与学习来说,都可以看作一笔不小的财富,不仅仅是知识上的收获,精神上的丰收更加重要。他告诉我们困难虽然在那里,但只要努力,从最基本的做起,就能实现一步一步实现宏伟的蓝图。

最后要谢谢所有在本次课程设计中帮助过我的老师和同学。

参考文献

1.王琼主编.单片机原理及应用(第一版).合肥:合肥工业大学出版社,2008

2.王琼主编.单片机原理及应.实验教程(第一版).合肥:合肥工业大学出版社,2005 3. 薛小铃, 刘志群, 贾俊荣编著.单片机接口模块应用与开发实例详解.北京.北京航空航天大学出版社,2010.1

4. 徐玮等编.C51单片机高效入门.北京.机械工业出版社,2010




第二篇:密码锁课程设计报告 26400字

1 引 言

1.1 电子密码锁简介

电子密码锁是一种通过密码输入来控制电路或是芯片工作,从而控制机械开关的闭合,完成开锁、闭锁任务的电子产品。它的种类很多,有简易的电路产品,也有基于芯片的性价比较高的产品。现在应用较广的电子密码锁是以芯片为核心,通过编程来实现的。其性能和安全性已经大大超过了机械锁。其特点如下:

(1)保密性好,编程量多,远远大于弹子锁。随机开锁成功率几乎为零。

(2)密码可变,用户可以随时更改密码,防止密码被盗,同时也可以避免

人员的更替而使锁的密级下降。

(3)误码输入保护,当当输入密码多次错误时,报警系统自启动。

(4)无活动零件,不会磨损,寿命长。

(5)使用灵活性好,不像机械锁必须佩带钥匙才能开锁。

(6)电子密码锁操作简单易行,一学即会。

1.2 电子密码锁的发展趋势

在日常生活和工作中,住宅与部门的安全防患、单位的文件档案、财务报表以及一些个人资料的保存多以加锁的方法解决。目前门锁主要用弹子锁,其钥匙容易丢失;保险箱主要用机械密码锁,其结构较为复杂,制造精度要求高,成本高,且易出现故障,人们常需携带多把钥匙,使用极不方便,且钥匙丢失后安全性即大打折扣。针对这些所具给人们带来的不便若使用机械式钥匙开锁,为满足人们对锁的使用要求,增加其安全性,用密码代替钥匙的密码锁应运而生。它的出现为人们的生活带来了很大的方便,有很广阔的市场前景。由于电子器件所限,以前开发的电子密码锁,其种类不多,保密性差,最基本的就是只依靠最简单的模拟电子开关来实现的,制作简单但很不安全,在后为多是基于EDA来实现的,其电路结构复杂,电子元件繁多,也有使用早先的20引脚的2051系列单片机来实现的,但密码简单,易破解。随着电子元件的进一步发展,电子密码也出现了很多的种类,功能日益强大,使用更加方便,安全保密性更强,由以前的但密码输入发展到现在的,密码加感应元件,实现了真正的电子加密,用户只有密码或电子钥匙中一样,是打不开锁的,随着电子元件的发展及人们对保密性需求的提1高出现了越来越多的电子密码锁。

1

出于安全、方便等方面的需要许多电子密码锁已相继问世。但这类产品的特点是针对特定有效卡、指纹或声音有效,且不能实现远程控制,只能适用于保密要求高且供个人使用的箱、柜、房间等。由于数学、字符、图形图像、人体生物特征和时间等要素均可成为钥匙的电子信息,组合使用这些信息能够使电子防盗锁获得高度的保密性,如防范森严的金库,需要使用复合信息密码的电子防盗锁,这样对盗贼而言是“道高一尺,魔高一丈”、组合使用信息也能够使电子防盗锁获得无穷扩展的肯,是产品多样化,对用户而言是“千挑百选、自得其所"。可以看出组合使用电子信息是电子密码锁以后的发展的趋势。

1.3设计目的与任务:

学生通过理论设计和实物制作解决相应的实际问题,巩固和运用在《单片机技术》中所学的理论知识和实验技能,掌握单片机应用系统的一般设计方法,提高设计能力和实践动手能力,为以后从事电子电路设计、研发电子产品打下良好的基础。

1.4设计内容与要求

设计一个具有特定功能的密码锁。该密码锁上电或按键复位后能自动显示系统提示符“P.”, 进入准备工作状态。该密码锁具有系统原始密码888888,用户可以设定并存储用户密码,密码输入时应处于保密显示状态,密码输入正确时应显示密码输入正确提示信息,否则,显示密码输入错误提示信息。

1.5本设计所要实现的目标

本设计采用单片机为主控芯片,结合外围电路,组成电子密码锁,该电子密码锁有个管理员密码和三个用户密码,用户想要打开锁,必先通过提供的键盘输入正确的密码才能将锁打开,密码输入错误有提示,为了提高安全性,当密码输入错误三次将报警。密码可以由用户自己修改设定,锁打开后才能修改密码。修改密码之前必须再次输入密码,在输入新密码时候需要二次确认,以防止误操作。当用户不记得密码时可通过专业认证服务用管理员密码使密码锁恢复出厂设置。

1.6设计总体方案及工作原理说明

采用以单片机为核心的控制方案,总体框图见图1.1.

由于单片机总类繁多,各种型号都用一定的应用环境,因此在选用时要多加比较,合理选择,以期获得最佳的性价比。一般来说在选择单片机时下面几个方面考虑:性能、存储器、运行速度、I/O口、定时/计数器、串行接口、模拟电路功能、工作电压、功耗、封装形式、抗干扰性、保密性,除了以上的一些还有

2

一些最基本的比如:中断源的数量和优先级、工作温度范围、有没有低电压检测功能、单片机内有无时钟振荡器、有无上电复位功能等。在开发过程中单片机还受到:开发工具、编程器、开发成本、开发人员的适应性、技术支持

和服务等等因素。基于以上因素本设计选用单片机AT89S52作为本设计的核心元件,利用单片机灵活的编程设计和丰富的I/O端口,以及控制的准确性,实现基本的密码锁功能。在单片机的外围电路外接输入键盘用于密码的输入和一些功能的控制,外接24C02B芯片用于密码的存储,外接LCD1602A显示器用于显示作用。当用户修要开锁时,先按键盘用户键之后按键盘的数字键0-9输入密码。密码输入完成后按下确认键,如果密码输入正确则开锁,不正确显示密码错误从新输入密码,当三次输入密码错误时则发出报警;当用户需要修改密码时,先按下用户键后再按设置键,接着输入原来的密码,只有当输入的原密码正确后才能设置新密码。新密码输入后按下确认键后系统要求再次输入新密码接着按下确认键当两次密码输入相同时新密码将得到存储,密码修改成功。

密码锁课程设计报告

图1.1 设计总体框图

3

2 硬件系统的设计

2.1设计原理

本设计主要有单片机、矩阵键盘、液晶显示器和密码存储部分构成。其中矩阵键盘用于输入数字密码和进行各种功能的实现。由用户通过连接单片机的矩阵键盘输入密码,后经过单片机对用户输入的密码与自己保存的密码进行对比,从而判断密码是否正确,然后控制引脚的高低电平传到开锁电路或者报警电路控制开锁还是报警,实际使用时只要将单片机的负载由显示灯换成电子密码锁的电磁铁吸合线圈即可,当然也可以用继电器的常开触点去控制电磁铁吸合线圈。

本系统共由两部分构成,及硬件部分和软件部分。其中硬件部分由电源输入口,键盘输入部分,密码存储部分,复位电路,晶振电路,显示部分,报警部分,开锁部分组成。软件部分对应的由主程序,初始化程序,LCD显示程序,键盘扫描程序,启动程序,关闭程序,键功能程序,密码设置程序,E2PROM读写程序和 延时程序等组成。其原理框图如图2.1所示

密码锁课程设计报告

图2.1 电子密码锁原理框图

2.2电路总体构成

在确定了选用什么型号的单片机后,就要确定外围电路。其外围电路包括电源输入口、键盘输入部分、密码存储部分、复位部分、晶振部分、显示部分、报

4

警部分、开锁部分。根据实际情况键盘输入部分选择4×4矩阵键盘,显示部分选择字符型液晶显示LCD1602,密码存储部分选用AT24C02芯片来完成。其原理图见附录1。

2.2.1键盘输入部分

按键采用矩阵式排列的独立式按键键盘,它由行线和列线组成,按键位于行列的交叉点上,密码锁的密码有按键输入完成,本设计中使用的这个4×4键盘不但能完成密码的输入还能作为特别功能键使用,比如清空显示功能等,键盘的每个按键功能在程序设计中设置。其大体功能(看按键上的标志)及与单片机引脚接法见附录1原理图。

2.2.2密码存储部分

用E2PROM芯片AT24C02存储密码。AT24C02是美国Atmel公司的低功耗CMOS型E2PROM,内含256×8位存储空间,具有工作电压宽(2.5~5.5V)、擦写次数多(大于10000次)、写入速度快(小于10ms)、抗干扰能力强、数据不易丢失、体积小等特点。而且它是采用了I2C总线式进行数据读取的串行器件,占用很少的资源和I/O线,并且支持在线编程,进行数据实时的存储十分方便。AT24C02中带有的片内地址寄存器。每写入或读出一个数据字节后,该地址寄存器自动加1,以实现对下一个存储单元的读写。所有字节均以单一操作方式读取。为降低总的写入时间,一次操作可写入多达8个字节的数据。I2C总线式一种用于IC器件之间连接的二线制总线。它通过SDA及SCL两根线在连到总线上的器件之间传送信息,并根据地址识别每个器件。AT24C02正是运用了I2C规程,使用主/从机双向通信,主机和从机均可工作于接收器和发送器状态。主机产生串行时钟信号并发出控制字,控制总线的传送方向,并产生开始和停止的条件。无论是主机还是从机,接收到一个字节后必须发出一个确认信号ACK。AT24C02的控制字有8位二进制数构成,在开始信号发出以后,主机便会发出控制字,以选择从机并控制总线的传送方向。其接线见附录1原理图。

2.2.3复位部分

单片机复位是使CPU和系统的其他功能部件处在一个正确的初始状态,并从这个状态开始工作,例如复位后PC=0000H,使单片机从第一个单元去指令。无论是在单片机刚开始接上电源时,还是断电后或者发生故障后都要复位。在复位期间(RST为高电平期间),P0口为高组态,P1-P3口输出高电平:外部程序存储器读选通信号PSEN无效。地址锁存信号ALE也为高电平。复位电路在最简单的复位电路下增加了手动复位按键,在接通电源瞬间,电容上的电压很小,复位

5

下拉电阻上的电压接近电源电压,即RST为高电平,在电容充电的过程中RST端电压逐渐下降,当RST端的电压小于某一数值后,CPU脱离复位状态,由于电容足够大,可以保证RST高电平有效时间大于24个振荡周期,CPU能够可靠复位。增加手动复位按键式为了避免死机时无法可靠复位。当复位按键按下后电容通过电阻放电,当电容放电结束后,RST端的复位由两电阻分压比决定。由于两电阻的电阻值差距大,因此RST为高电平,CPU处于复位状态。其接线见附录1原理图。

2.2.4晶振部分

AT89S52引脚XTAL1和XTAL2与晶体振荡器及其两电容的接线见附录1原理图。晶振、电容及片内与非门(作为反馈、放大元件)构成了电容三点式振荡器,振荡信号频率与晶振频率及电容的容量有关,但主要有晶振频率决定,范围在0 ~33MHz之间,电容取值范围在5 ~30pF之间。根据实际情况,本设计采用12MHz作为系统的外部晶振。电容取值为20pF。

2.2.5显示部分

为了提高密码锁的密码显示效果能力。本设计的显示部分由液晶显示器LCD1602取代普通的数码管来完成。只有按下电源开关后,显示器才处于开启状态。同理只有按下电源开关后显示器才处于关闭状态。否则显示器将一直处于初始状态,当需要对密码锁进行开锁时,按下键盘上的开锁按键后利用键盘上的数字键0-9输入密码,每按下一个数字键后再显示器上显示一个*,输入多少位就显示多少个*,当密码输入完成时,按下确认键,如果输入的密码正确的话,显示真确的提示信息,单片机其中P1.2脚会输出高电平,使密码锁打开,如果密码不正确,就会显示错误的信息,盘P1.2脚输出的是低电平,电子密码锁不能打开,通过LCD显示屏,可以清楚的判断出锁所处的状态。其显示部分引脚接口见附录1原理图。

2.2.6报警部分

报警部分由发声装置及外围电路组成,加电后不发声,当有键按下时,“嗡”声,每按一下,发声一次,密码正确时,不发声直接开锁,当密码输入错误时,单片机的P1.3引脚为高电平,导通蜂鸣器发出噪鸣声报警。其图见附录1原理图。

2.2.7开锁部分

开锁控制电路的功能是当密码输入正确后将锁打开。系统使用单片机其中一引脚线发出信号,驱动外围电路将锁打开。用户通过按键任意设置密码,并存储在

6

E2PROM中作为锁码指令。开锁步骤如下:首先按下键盘上的用户按键,然后利用键盘上的数字键0-9输入密码,最后按下确认键。当用户输入一密码后,单片机自动识别,如果识别不符,则报警。只有当识别正确,单片机才能控制开锁电路将锁打开。完成本次开锁后,单片机自动清除掉由用户输入的这个密码。电路图见附录1原理图。

2.3图纸及元器件清单

设计电路原理图、PCB图、元器件布局图分别见附录1、附录2、附录3。 设计课题元器件清单见附录4。

2.4主要元器件介绍

2.4.1主控芯片AT89S52

AT89S52时一种低功耗,高性能CMOS 8位单片机,片内含8K字节 ISP的可反复擦写1000次的flash只读程序存储器,器件采用ATMEL 公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash 存储单元,功能强大的微型计算机的AT89S52可为许多嵌入式控制应用系统提供高性价比的解决方案。

AT89S52 性能简介:

AT89S52具有如下特点:40个引脚,8K字节Flash片内程序存储器,256字节的随机存储数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。

此外,AT89S52设计和配置了振荡频率可为0Hz可通过软件设置省电模式,空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM数据,停止芯片其它功能直至外中断激活或硬件复位。同时该芯片还具有PDIP、TQFP和PLCC等三种封装形式,以适应不同产品的需要。

2.4.2存储芯片AT24C02

AT24C02是美国Atmel公司的低功耗CMOS型E2PROM,内含256×8位存储空间,具有工作电压宽(2.5~5.5V)、擦写次数多(大于10000次)、写入速度快(小于10ms)、抗干扰能力强、数据不易丢失、体积小等特点。而且它是采用了I2C总线式进行数据读取的串行器件,占用很少的资源和I/O线,并且支持在线编程,进行数据实时的存储十分方便。AT24C02中带有的片内地址寄存器。每写入或读

7

出一个数据字节后,该地址寄存器自动加1,以实现对下一个存储单元的读写。所有字节均以单一操作方式读取。为降低总的写入时间,一次操作可写入多达8个字节的数据。I2C总线式一种用于IC器件之间连接的二线制总线。它通过SDA及SCL两根线在连到总线上的器件之间传送信息,并根据地址识别每个器件。AT24C02正是运用了I2C规程,使用主/从机双向通信,主机和从机均可工作于接收器和发送器状态。主机产生串行时钟信号并发出控制字,控制总线的传送方向,并产生开始和停止的条件。无论是主机还是从机,接收到一个字节后必须发出一个确认信号ACK。AT24C02的控制字有8位二进制数构成,在开始信号发出以后,主机便会发出控制字,以选择从机并控制总线的传送方向。

AT24C02的1、2、3脚是三条地址线,用于确定芯片的硬件地址。在AT89S52实验开发板上它们都接地,第8脚和第4脚分别为正、负电源口。第5脚SDA为串行数据输入/输出,数据通过这条双向I2C总线串行传送,在AT89S52实验开发板上和单片机的P1.1连接,第6脚SCL为串行时钟输入线,在AT89S52实验开发板上和单片机的P1.0连接。SDA和SCL都需要和正电源间各接一个5K的电阻上拉,第7脚写保护接地。

2.4.3 LCD 1602显示器

现在的字符型液晶显示器模块已经是单片机应用设计中最常用的信息显示器件了。1602型LCD显示模块具有体积小,功耗低,显示内容丰富等特点。1602型LCD可以显示2行16个字符 ,有8位数据总线D0-D7和RS,RW,E三个控制端口,工作电压为5V,并且具有字符对比度调节和背光功能。 接口信号说明

1602型LCD的接口信号说明如表2.1所示:

表2.1 1602型LCD的接口信号说明

密码锁课程设计报告

8

主要技术参数

1602型LCD的主要技术参数如表2.2 所示:

表2.2 1602型LCD的主要技术参数

密码锁课程设计报告

基本操作程序

读状态:输入:RS=L,RW=L,E=H 输出:D0 ~D7=状态字 读数据:输入:RS=H,RW=H,E=H 输出:无

写指令:输入:RS=L,RW=L,D0 ~D7=指令码,E=高脉冲 输出:D0 ~D7=数据 写数据:输入:RS=H,RW=L,D0 ~D7=数据,E=高脉冲 输出:无

2.4.4晶体振荡器

晶体振荡器,简称晶振,其作用在于产生原始的时钟频率,这个频率经过频率发生器的放大或缩小后就成了电脑中各种不同的总线频率。石英晶体振荡器是一种高精度和高稳定度的振荡器,石英晶体振荡器也称石英晶体谐振器,它用来稳定频率和选择频率,是一种可以取代LC谐振回路的晶体谐振元件。石英晶体振荡器广泛的应用在电视机、影碟机、录像机、无线通讯设备、电子钟表、单片机、数字仪器仪表等电子设备中。为数据处理设备产生时钟信号和特定系统提供基准信号。在单片机中为其提供时钟频率。

石英晶体振荡器是利用石英晶体(二氧化硅的结晶体)的压电效应制成的一种谐振器件,它的基本构成大致是:从一块石英晶体上按一定方位角切下薄片(简称为晶片,它可以是正方形、矩形或圆形等),在它的两个对应面上涂敷银层作为电极,在每个电极上个焊一根引线接到管脚上,再加上封装外壳就构成了石英晶体谐振器,简称为石英晶体或晶体、晶振。其产品一般用金属外壳封装,也有用玻璃壳、陶瓷或朔料封装的。只要在晶体振子板极上施加交变电压,就会使晶片产生机械变形振动,此现象即所谓逆压电效应。当外加电压频率等于晶体谐振器的固有频率时,就会发生压电谐振,从而导致机械变形的振幅突然增大。

9

3 软件系统的设计

3.1软件设计所用到的单片机资源情况

P0口作为显示输出,P2口作为键盘输入,用到外部中断0即P3.2脚,P1.2脚和P1.3脚分别与开锁电路与报警电路相连,P1.1和P1.0分别于外部存储芯片AT24C02 的SDA和SCL脚相连,P1.5、P1.6、P1.7分别于液晶显示器的E、RW、RS脚相连。

3.2软件系统的模块功能

本系统软件设计由主程序、初始化程序、LCD显示程序、键盘扫描程序、键功能程序、密码设置程序、E2PROM读写程序和延时程序等组成。

3.3软件系统主要程序设计流程图

密码锁课程设计报告

图3.1 主程序流程图

10

密码锁课程设计报告

图3.2 键功能程序流程图

11

密码锁课程设计报告

图3.3 密码设置流程图

12

密码锁课程设计报告

图3.4 开锁流程图

3.4软件系统程序清单

软件系统程序清单见附录6。

13

4 结 论

4.1 设计结论及使用说明

本程序从经济实用的角度出发,采用美国Atmel公司的单片机AT89S52与低功耗CMOS型E2PROM AT24C02作为主控芯片与数据存储单元,结合外围的键盘输入、显示、报警、开锁等电路并用汇编语言编写主控芯片的控制程序,研制了一款可以多用户使用可多次更改密码具有报警功能的电子密码锁。设计完全可行可以达到设计目的。使用单片机制作的电子密码锁具有软硬件设计简单,易于开发,成本低,安全可靠,操作方便等特点,可用于住宅、办公室的保险箱及档案柜等需要防盗的场所,有一定的实用性。该电路设计还具有按键有效提示,输入错误提示,控制开锁电平,控制报警电路,修改密码,多用户使用等功能。可在意外泄密的情况下随时修改密码。保密性强,灵活性高,特别适用于家庭、办公室、学生宿舍及宾馆等场所。

使用说明:本密码锁能同时供3个用户使用,初始密码为888888,当用户要开锁时,先要按下自己的用户位,再输入正确的密码,按下确定键后就能实现开锁,如果连续3次输入不正确,密码锁就会报警;当用户要重设密码时,要先按下自己的用户键,再按下重设键,紧接着输入原先的密码,按下确定键后如果密码正确才能输入新密码,输入新密码按下确定键后还要重新输入一次新密码,当两次输入新密码相同时,按下确定键后密码修改成功,否则不成功,需重新修改。

4.2程序仿真

程序仿真图见附录5。

4.3设计体会

通过本次课程设计实践,我对汇编语言有了更深的理解,特别是标志位的使用,通过灵活使用标志位,可以加强软件系统各模块之间的联系,达到意想不到的效果。同时也加深了对设计方法的理解,进一步理解了软件设计中整体与局部的关系,本次实践我就运用了从整体到局部的设计思想,达到了满意的效果,它使我少走了很多弯路,既节约了时间,又很好的组织了软件系统各部的联系。

14

4.4教学建议

对于单片机与汇编语言的学习,我觉得应该加强创造性思维的培养,同时结合实验加以实践。我觉得思维是知识的灵魂,只有加强了思维的训练与培养,才能使知识的能量达到最大化。就像好的文章要有好的作家,要有他们那种创造精妙语言的思维,软件系统设计也是一种对语言的运用实践,精妙的思维也就必不可少。创造性思维是丰富的,因此应加强老师与同学们、同学们之间的思维互动,加强探讨,加强课程设计实践。

15

参考文献

[1] 李广弟 ,朱月秀 ,冷祖祁.单片机基础[M].第三版.北京:北京航空航天大

学出版社,2007.0-260

Li guangdi ,Zhu yuexiu ,Leng zuqi.Microcontroller based[M].The Third Edition.Beijing:Beijing University of Aeronautics and Astronautics Press,2007.0-260

[2] 李朝青.单片机原理及接口技术[M].北京:北京航空航天大学出版社,

1998.26-40

Li Chaoqing.SCM Principle and Interface Technology[M].Beijing:

Beijing University of Aeronautics and Astronautics Press,1998.26-40

[3] 何立明.单片机高级教程[M].北京:北京航空航天大学出版社,2000.37-51

He Liming.Advanced MicrocontrollerTutorial[M].Beijing:Beijing

University of Aeronautics and Astronautics Press,2000.37-51

16

致 谢

这半年不知不觉就过去了,在这学期中,有些人是要我去感谢的。

在这学期中,我要感谢的人很多,首先要感谢我的学校,感谢在这学期中给了我一个好的学习环境,还要感谢我的指导老师王老师在他的指导下我完成了此次单片机课程设计,王老师多次询问课程设计进程,并帮助我开阔思路。王老师一丝不苟的作风,严谨求实的态度,不仅授我以文,而且教我做人。我从心里感谢他。还要感谢我的同学,在我完成课程设计的过程中给予我的照顾和帮助,最后要感谢的是我的父母、兄弟、朋友,对于他们我更是千言万语,总之一句话:感谢他们一直都伴随着我。

17

附录1

密码锁课程设计报告

18

附录2

密码锁课程设计报告

19

附录3

密码锁课程设计报告

20

附录4

密码锁课程设计报告

21

附录5

密码锁课程设计报告

22

附录6

RS BIT P1.7

RW BIT P1.6

E BIT P1.5

ENTER BIT 22H

OPEN BIT P1.2

SPEAK BIT P1.3

PASSBUF EQU 40H

KEYNUMBER EQU 41H ;存放识别后的按键号

CWCS EQU 44H ;44H号单元存放输入错误的次数 ZDCS0 EQU 45H ;45H为定时器0中断次数 ZDCS1 EQU 46H ;46H为定时器1中断次数 BAOJING BIT 20H

CAOSHI BIT 21H

CHUSHI BIT 23H

YONGFU1 BIT 24H

YONGFU2 BIT 25H

YONGFU3 BIT 26H

RESET BIT 27H

RESET1 BIT 28H

RESET2 BIT 29H

RESET3 BIT 30H

SANCHU BIT 31H

SDA BIT P1.1 ;定义串口数据端

SCL BIT P1.0

;********密码缓冲区***************

PS1 EQU 69H

PS2 EQU 68H

PS3 EQU 67H

PS4 EQU 66H

PS5 EQU 65H

23

PS6 EQU 64H

;********24C02读取缓冲区*************

AT1 EQU 63H

AT2 EQU 62H

AT3 EQU 61H

AT4 EQU 60H

AT5 EQU 5FH

AT6 EQU 5EH

ORG 0000H

AJMP MAIN

ORG 0003H

AJMP KEY_INT

ORG 000BH

AJMP INTT0

ORG 001BH

AJMP INTT1

ORG 0030H

;///////////////主程序开始 ///////////////

MAIN: MOV 30H, #07H ;管理员密码为7位

MOV 42H, #200 ;设定报警的时间,42H单元里的数*50MS MOV 43H, #250 ;设定开门时间

MOV 47H, #250 ;输入密码时间设定,50MS倍数 MOV SP, #70H

CLR OPEN

CLR SPEAK ;初始化输出设备

CLR ENTER ;标志位初始化

MOV TMOD, #11H ;定时器工作方式1

MOV TH0, #3CH ;初值50MS

MOV TL0, #0BH

MOV TH1, #3CH

MOV TL1, #0BH

SETB EA

SETB ET0

24

SETB ET1

MOV TCON, #00H ;电平触发 ACALL INITPS ;初始化环境 ACALL INITAT NOP

START: CLR CHUSHI

START8: MOV R0, 30H

SS1:

INIT: ACALL SELLCD ;CLR YONGFU1 CLR YONGFU2 CLR YONGFU3 CLR RESET CLR RESET1 CLR RESET2 CLR RESET3 CLR SANCHU

MOV R1, #31H

INC R1

DJNZ R0, SS1 ;MOV P2, #0F0H ;MOV R1, #31H ;CLR BAOJING ;CLR CAOSHI ;MOV ZDCS1, #00H ;ACALL LINE1 ;MOV DPTR,#MES_P ;ACALL DISPLAY

SETB EX0 ;JNB CHUSHI,KEYIN

MOV PS1, #08H ;25

将输入密码缓冲单元清零 初始化按键口

从31号单元开始存放按建输入的密

报警标志清零 密码超时标志

超时后对定时器1中断次数清零,便于

下一轮重新计时

设定液晶工作方式

在第一行显示 显示请输入密码 开中断,允许键盘输入 初始化密码888888

MOV @R1, #00H

MOV PS2, #08H

MOV PS3, #08H

MOV PS4, #08H

MOV PS5, #08H

MOV PS6, #08H

SETB YONGFU1

ACALL AT_WR

ACALL T100MSD

SETB YONGFU2

ACALL AT_WR

ACALL T100MSD

ACALL AT_WR

AJMP START

KEYIN : JB RESET3,START

JB CAOSHI,CHUWU ;超时转到错误程序

JNB ENTER, KEYIN ;等待ENTER按下

CLR ENTER

CLR EX0 ;密码输入完后锁定键盘

;/////////////密码判断程序///////////////

JB YONGFU1,COMP1

JB YONGFU2,COMP1

JB YONGFU3,COMP1

COMP:

MOV DPTR, #PASS

MOV R4, 30H ;密码的长度

MOV A, #0

MOV R1, #31H

LOOP: MOV R5, A

MOVC A, @A+DPTR

MOV PASSBUF,A ;取出系统设定的密码

MOV A, @R1 ;从31号单元开始取出输入的密码 CJNE A, PASSBUF,CHUWU ;比较

MOV A, R5

26

INC A

INC R1 ;取下一位 DJNZ R4,LOOP

AJMP MATCH

COMP1: LCALL AT_RADE

MOV R4, #06H

MOV R1, #PS1

MOV R0, #AT1

LOOP1: MOV PASSBUF,@R0

MOV A, @R1

CJNE A, PASSBUF,ERR

DEC R0

DEC R1

DJNZ R4, LOOP1

JB RESET, MATCH2

AJMP MATCH1

COMP2: MOV R4, #06H

MOV R1, #PS1

MOV R0, #38H

LOOP2: MOV PASSBUF,@R0

MOV A, @R1

CJNE A, PASSBUF,ERR

DEC R0

DEC R1

DJNZ R4, LOOP2

AJMP ZHONG12

CHUWU: AJMP ERR

;******** 正确 ************

MATCH: MOV A, #01H

ACALL ENABLE ;清屏,光标复位

ACALL LINE1 ;从第一行开始显示 MOV DPTR, #MES_C

27

ACALL DISPLAY ;显示"请进" ACALL LINE2

MOV DPTR, #TAB_1

ACALL DISPLAY

SETB OPEN ;开门

MOV CWCS, #00H ;输入错误次数清零 MOV R6, 43H

ACALL DELAY

CLR OPEN ;复位

SETB CHUSHI

AJMP START8

MATCH1:MOV A, #01H

ACALL ENABLE ;清屏,光标复位

ACALL LINE1 ;从第一行开始显示 MOV DPTR, #MES_C

ACALL DISPLAY ;显示"请进" ACALL LINE2

MOV DPTR, #TAB_1

ACALL DISPLAY

SETB OPEN ;开锁

MOV CWCS, #00H ;输入错误次数清零 MOV R6, 43H

ACALL DELAY

CLR OPEN ;复位

AJMP START

MATCH2:ACALL WRDATA4

MOV CWCS, #00H ;输入错误次数清零 MOV R1, #38H SETB RESET1 SETB SANCHU SETB EX0 AJMP KEYIN

;***********错误************

28

ERR: ACALL BACK

MOV R6, #03H

ACALL DELAY

ACALL BACK ;输错提示音,鸣两下 MOV A, #01H

ACALL ENABLE

ACALL LINE1

MOV DPTR, #MES_E

ACALL DISPLAY ;显示错误

MOV R6, #40H

ACALL DELAY

INC CWCS MOV A, CWCS

CJNE A, #03H,EE0

EE0: JC ERROUT ;输错不到三次返回

MOV CWCS, #00H ;清零 ACALL WRANING ;报警

ERROUT: JB RESET2,KEY_RTN

AJMP START

;////////////按键中断服务程序////////////// KEY_INT:PUSH ACC

PUSH PSW

CLR EX0

ACALL DELAY12MS ;延时消抖

SETB TR1 ;启动定时器

ACALL SMKEY ;按键识别

MOV A, KEYNUMBER ;返回按键号

ACALL BACK ;按键发声

MOV R3, A

CJNE R3, #0DH,K4;reset键是否按下

ACALL WRDATA3

AJMP KEY_RTN

K4: CJNE R3, #0AH,K5

29

ACALL WRDATA2

AJMP KEY_RTN

K5: CJNE R3, #0BH,K6

ACALL WRDATA2

AJMP KEY_RTN

K6: CJNE R3, #0CH,K2

ACALL WRDATA2

AJMP KEY_RTN

K2: CJNE R3, #0EH,ZHONG ;DEL

JB SANCHU ,DIAO1

JB YONGFU1,DIAO

JB YONGFU2,DIAO

JB YONGFU3,DIAO

MOV R1, #31H

ACALL WRDATA2

AJMP KEY_RTN

DIAO1: JB RESET2 ,DIAO

MOV R1, #38H

ACALL WRDATA2

AJMP KEY_RTN

DIAO: MOV R1, #PS1

ACALL WRDATA2

AJMP KEY_RTN

ZHONG:

CJNE R3, #0FH,K1 ;ENTER

JB RESET2, ZHONG11

JB RESET1, ZHONG10

SETB ENTER

CLR TR1 ;

MOV ZDCS1, #00H ;

AJMP KEY_RTN

K1: JB YONGFU1,K3

JB YONGFU2,K3 是否按下 是否按下 按下确认后关毕定时器对中断次数清零

30

JB YONGFU3,K3

ADD A, #30H ;将按键号转换为ASCⅡ码 MOV @R1, A ;将输入的密码存入缓冲单元 INC R1 ;修改地址

ACALL WRDATA1 ;输入一位显示一个"*" AJMP KEY_RTN

K3:

MOV @R1, A

DEC R1

ACALL WRDATA1

KEY_RTN:POP PSW

POP ACC

SETB EX0

RETI

ZHONG10:ACALL WRDATA5

SETB RESET2

MOV R1,#PS1

CLR TR1

MOV ZDCS1, #00H

AJMP KEY_RTN

ZHONG11:SETB RESET3

AJMP COMP2

ZHONG12:ACALL AT_WR

CLR TR1 ;按下确认后关毕定时器 MOV ZDCS1, #00H ;对中断次数清零

AJMP KEY_RTN

;************按键识别程序*************

SMKEY: MOV A, P2

ANL A, #0F0H

WKEY: MOV B, A ;反转法查询

MOV P2, #0FH

NOP

MOV A, P2

31

ANL A, #0FH ORL A, B MOV P2, #0F0H ;还原P1口初态 CJNE A, #7EH,WKEY1 MOV KEYNUMBER,#00H AJMP RETURN MOV KEYNUMBER,#01H AJMP RETURN MOV KEYNUMBER,#02H AJMP RETURN MOV KEYNUMBER,#03H AJMP RETURN MOV KEYNUMBER,#04H AJMP RETURN MOV KEYNUMBER,#05H AJMP RETURN MOV KEYNUMBER,#06H AJMP RETURN MOV KEYNUMBER,#07H AJMP RETURN MOV KEYNUMBER,#08H AJMP RETURN MOV KEYNUMBER,#09H AJMP RETURN

32

WKEY1: CJNE A, #0BEH,WKEY2 WKEY2: CJNE A, #0DEH,WKEY3 WKEY3: CJNE A, #0EEH,WKEY4 WKEY4: CJNE A, #7DH,WKEY5 WKEY5: CJNE A, #0BDH,WKEY6 WKEY6: CJNE A, #0DDH,WKEY7 WKEY7: CJNE A, #0EDH,WKEY8 WKEY8: CJNE A, #7BH,WKEY9 WKEY9: CJNE A, #0BBH,WKEY10

WKEY10: CJNE A, #0DBH,WKEY11

MOV KEYNUMBER,#0AH SETB YONGFU1 MOV R1, #PS1 AJMP RETURN

WKEY11: CJNE A, #0EBH,WKEY12 MOV KEYNUMBER,#0BH SETB YONGFU2

MOV R1, #PS1 AJMP RETURN

WKEY12: CJNE A, #77H,WKEY13 MOV KEYNUMBER,#0CH SETB YONGFU3

MOV R1, #PS1

AJMP RETURN

WKEY13: CJNE A, #0B7H,WKEY14 MOV KEYNUMBER,#0DH SETB RESET

AJMP RETURN

WKEY14: CJNE A, #0D7H,WKEY15 MOV KEYNUMBER,#0EH AJMP RETURN

WKEY15: CJNE A, #0E7H,RETURN MOV KEYNUMBER,#0FH 号码

RETURN: MOV P2, #0F0H NOP

NOP

MOV A, P2

CPL A

ANL A, #0F0H

JNZ RETURN ; RET ;判断哪个键按下,返回相应按键等待按键松开

33

;///////////初始化显示缓冲区以及其他缓冲区//////////

INITPS:

MOV R7, #06H

MOV R1, #PS1

MOV A, #00H

INIT_PS: MOV @R1, A

DEC R1

DJNZ R7, INIT_PS

NOP

RET

INITAT:

MOV R7, #06H

MOV R1, #AT1

MOV A, #00H

INIT_AT: MOV @R1, A

DEC R1

DJNZ R7, INIT_AT

RET

;////////////液晶工作方式设置//////////////

SELLCD: MOV A, #01H ;清屏,光标复位

ACALL ENABLE

MOV A, #38H ;设置显示模式,8位两行,5*7点阵 ACALL ENABLE

MOV A, #0DH ;显示器开,允许内烁

ACALL ENABLE

MOV A, #06H ;文字不动,光标右移

ACALL ENABLE

RET

;******** 液晶执行指令**********

ENABLE: CLR RS

CLR RW ;RS,RW同为低电平时写入指令

34

MOV P0, A

CLR E ;E由高变低时执行指令 ACALL WAIT

SETB E

RET

;********判断液晶是否忙的子程序********

WAIT: MOV P0, #0FFH

CLR RS

SETB RW ;RW

CLR E

NOP

SETB E

JB P0.7, WAIT

RET

;*******显示的起始地址*********

;在第一行

LINE1: MOV A, #80H

ACALL ENABLE

RET

;在第二行

LINE2: MOV A, #0C0H

ACALL ENABLE

RET

; 显示程序

DISPLAY: MOV R7, #00H

NEXT: MOV A, R7

MOVC A, @A+DPTR

CJNE A, #10H,DSP

RET

DSP: ACALL WRDATA

INC R7

AJMP NEXT

35 为高,RS为低时可读忙信号

;*******将A里面的数据写入液晶**********

WRDATA: SETB RS

CLR RW

MOV P0, A CLR E

ACALL WAIT

SETB E

RET

WRDATA1: SETB RS

CLR RW

MOV A,#00H

MOV DPTR, #XINGHAO MOVC A, @A+DPTR

MOV P0, A

CLR E

ACALL WAIT

SETB E

RET

WRDATA2: JB RESET2, WRDATA5

JB RESET1, WRDATA4

JB RESET, WRDATA3

ACALL SELLCD ACALL LINE1

JNB YONGFU1,FU22

MOV DPTR, #MES_P1

ACALL DISPLAY

RET

FU22: JNB YONGFU2,FU33

MOV DPTR, #MES_P2 ACALL DISPLAY

RET

36

FU33: JNB YONGFU3,FU

MOV DPTR, #MES_P3

ACALL DISPLAY RET ACALL DISPLAY RET FU: MOV DPTR, #MES_P

WRDATA3: ACALL SELLCD ACALL LINE1 MOV DPTR, #MES_O

ACALL DISPLAY RET

WRDATA4: ACALL SELLCD ACALL LINE1 MOV DPTR, #MES_N

ACALL DISPLAY RET

WRDATA5: ACALL SELLCD ACALL LINE1 MOV DPTR, #MES_A

ACALL DISPLAY RET

;********* 报警程序********** WRANING: SETB TR0

ACALL BACK MOV R4, #00H ACALL D2 JNB BAOJING, WRANING RET

; *******发声程序***********

BACK: MOV R0, #100 KK1: CPL SPEAK

ACALL DELAY2MS

37

DJNZ R0, KK1 ;不断取反P2.0使其产生一定频率的方波 RET ;延时的长短可以改变输出的频率 推动扬声器 ;**********报警时间设定***********

INTT0: PUSH ACC

PUSH PSW

MOV TH0, #3CH

MOV TL0, #0BH

INC ZDCS0

MOV A, ZDCS0

CJNE A, 42H,INTT0OUT

MOV ZDCS0, #00H

SETB BAOJING ;置标志位

CLR TR0 ;关闭定时器

INTT0OUT:POP PSW

POP ACC

RETI

;***********输入超时**********

INTT1: PUSH ACC

PUSH PSW

INC ZDCS1 MOV A, ZDCS1 CLR TR1 ;关闭定时器 SETB CAOSHI ;时间到置标志位 MOV ZDCS1, #00H ;中断次数清零 CJNE A, 47H,INTT1OUT

INTT1OUT:POP PSW

POP ACC

RETI

;///////////延时程序/////////////

DELAY: MOV R4, #38H

D1: MOV R5, #0F9H

DJNZ R5, $

38

DJNZ R4, D1

DJNZ R6, DELAY RET

DELAY2MS:MOV R4, #02H

D2: MOV R5, #0F0H

DJNZ R5, $

DJNZ R4, D2

RET

DELAY12MS:

MOV R4, #24

D3: MOV R5, #248

DJNZ R5, $

DJNZ R4, D3

RET

T100MSD: MOV R3, #200

D11: MOV R4, #125

D12: DJNZ R4, D12

DJNZ R3, D11

RET

;///////////24C02读写程序///////////// AT_RADE:

MOV R0, #AT1

MOV R6, #06H

MOV R5, #08H

JNB YONGFU1, READ1

MOV R7, #00H

AJMP DIAO9

READ1: JNB YONGFU2, READ2

MOV R7, #10H

AJMP DIAO9

READ2: MOV R7, #20H

DIAO9: LCALL READ

NOP

39

NOP

RET

AT_WR:

MOV R0, #PS1

MOV R6, #06H

MOV R5, #08H

SETB RESET1

JNB YONGFU1, WRT1

MOV R7, #00H

CLR YONGFU1

AJMP DIAO10

WRT1: JNB YONGFU2, WRT2

MOV R7, #10H

CLR YONGFU2 AJMP DIAO10

WRT2: MOV R7, #20H

DIAO10: LCALL WRT

NOP

NOP

RET

;*******读串行数据,R0:RAM的起始地址,R5:位计数器 ;R6:读的字节数,R7:读的起始地址*********

READ: NOP

NOP

LCALL START0 LCALL WRB LCALL ACK JB F0, RD_FAIL LCALL WRB LCALL CHK JB F0, RD_FAIL

40

MOV A, #0A0H MOV A, R7

LCALL START0

MOV A, #0A1H

LCALL WRB

LCALL CHK

JB F0, RD_FAIL

RD_N: NOP

NOP

LCALL RDB

MOV @R0, A

DJNZ R6, GO_ACK

LCALL N_ACK

RD_FAIL: NOP

LCALL STOP

MOV A, #0FFH

RET

GO_ACK: NOP

NOP

DEC R0

LCALL ACK

AJMP RD_N

;*****写串行器件 R0:RAM的起始地址,R5:位计数器 ;R6:写的字节数,R7:写的起始地址******

WRT: NOP

NOP

LCALL START0

MOV A, #0A0H

LCALL WRBYT

LCALL CHK

JB F0, WR_FAIL

MOV A, R7

LCALL WRBYT

LCALL CHK

JB F0, WR_FAIL

41

WR_N: NOP

NOP

MOV A, @R0 LCALL WRBYT

LCALL CHK

JB F0, WR_FAIL DEC R0

DJNZ R6, WR_N

WR_FAIL: NOP

LCALL STOP

MOV A, #0FFH RET

START0: NOP

NOP

SETB SDA

SETB SCL

NOP

NOP

CLR SDA

NOP

NOP

CLR SCL

NOP

RET

STOP: NOP

NOP

CLR SDA

SETB SCL

NOP

NOP

SETB SDA

NOP

NOP

42

CLR SCL

NOP

RET

ACK: NOP

NOP

CLR SDA

SETB SCL

NOP

NOP

CLR SCL

SETB SDA

NOP

RET

N_ACK: NOP

NOP

SETB SDA

SETB SCL

NOP

NOP

CLR SCL

CLR SDA

NOP

RET

CHK: NOP

NOP

SETB SDA

NOP

NOP

SETB SCL

NOP

NOP

MOV C, SDA MOV F0, C

43

CLR SCL

NOP

NOP

RET

RDB: NOP

NOP

SETB SDA

MOV R5, #8

RD_B: NOP

NOP

CLR SCL

NOP

NOP

SETB SCL

NOP

NOP

MOV C, SDA

RLC A

NOP

NOP

SETB SDA

CLR SCL

DJNZ R5, RD_B

NOP

RET

;******** 一字节数据发送子程序********** WRBYT: MOV R5,#8

WLP: RLC A

JC WR1

ACALL ACK

DJNZ R5,WLP

RET

WR1: ACALL N_ACK

44

DJNZ R5, WLP

RET

WRB: NOP

NOP

MOV R5, #8

WR_B: NOP

NOP

SETB SDA

RLC A

JC WR_1

CLR SDA

NOP

WR_1: SETB SCL

NOP

NOP

CLR SCL

NOP

CLR SDA

NOP

DJNZ R5, WR_B

NOP

RET

PASS: DB "2008620",10H

MES_P: DB "PASS?",10H

MES_P1: DB "PASS1?",10H

MES_P2: DB "PASS2?",10H

MES_P3: DB "PASS3?",10H

MES_C: DB "Welcome!",10H

MES_E: DB "ERROR",10H

TAB_1: DB " My master!",10H XINGHAO: DB "*"

MES_O: DB "OPASS?",10H

MES_N: DB "NPASS?",10H

45

MES_A: DB "Again?",10H END

46

更多类似范文
┣ 电子密码锁 20700字
┣ 电子密码锁论文 6700字
┣ 更多电子密码锁设计报告
┗ 搜索类似范文

更多相关推荐:
毕业论文实践报告----智能电子密码锁设计16800字

毕业设计论文报告题目智能电子密码锁设计院别专业班级姓名学号xxxxxxx指导教师xxx20xx年4月无锡科技职业学院毕业论文中文摘要在日常的生活和工作中住宅与部门的安全防范单位的文件档案财务报表以及一些个人资料...

电子电路课程设计密码锁(满分实验报告)5700字

1电子电路课程设计报告密码锁设计报告摘要本系统是由键盘和报警系统所组成的密码锁系统完成键盘输入开锁超时报警输入位数显示错误密码报警复位等数字密码锁的基本功能关键字数字密码锁GAL16V828C64解锁与报警12...

电子密码锁设计报告6600字

电子技术课程设计题目名称电子密码锁重庆大学电气工程学院20xx年6月电子密码锁摘要本文的电子密码锁是利用数字电子技术中基于JK触发器的锁存电路实现主电路的密码的修改和检测功能再通过555定时器和一些基本的门电路...

实验报告.2密码破解实验500字

电子证据实验报告实验二指导教师学院班级学号姓名考号实验日期小组成员实验一密码破解实验一实验目的1学会用Archpr软件对压缩文件简单密码的破解2学会用aopr软件对文件密码的破解二实验内容1用Archpr软件对...

专栏推荐
大家在关注

地图地图CC