电子密码锁(上交)._第1页
电子密码锁(上交)._第2页
电子密码锁(上交)._第3页
电子密码锁(上交)._第4页
电子密码锁(上交)._第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基于单片机的电子密码锁设计第一章 绪 论1.1 电子密码锁简介电子密码锁是一种通过密码输入来控制电路或是芯片工作,从而控制机械开关的闭 合,完成开锁、闭锁任务的电子产品。其特点如下:1)保密性好,编码量多,远远大于弹子锁。随机开锁成功率几乎为零。2)密码可变,用户可以随时更改密码,防止密码被盗,同时也可以避免因人员的更替而使锁的密级下降。3)误码输入保护,当输入密码多次错误时,报警系统自动启动。4)无活动零件,不会磨损,寿命长。5)使用灵活性好,不像机械锁必须佩带钥匙才能开锁。6)电子密码锁操作简单易行,一学即会。1.2 本设计所要实现的目标本设计采用单片机为主控芯片,结合外围电路,组成电子密

2、码锁,用户想要打开锁, 必先通过提供的键盘输入正确的密码才能将锁打开,密码输入错误有提示,为了提高安全性,当密码输入错误三次将报警。密码可以有用户自己修改设定,锁打开后才能修改密码。修改密码之前必须再次输入就的密码,在输入新密码的时候要二次确认,以防止误操作。1.3 设计方案简介采用以单片机为核心的控制方案由于单片机种类繁多,各种型号都有其一定的应用环境,因此在选用时要多加比较, 合理选择,以期获得最佳的性价比。一般来说在选取单片机时从下面几个方面考虑:性能、 存储器、运行速度、I/O 口、定时/计数器、串行接口、模拟电路功能、工作电压、功耗、 封装形式、抗干扰性、保密性,除了以上的一些的还有

3、一些最基本的比如:中断源的数量和优先级、工作温度范围、 有没有低电压检测功能、单片机内有无时钟振荡器、有无上电复位功能等。在开发过程中单片机还受到:开发工具、编程器、开发成本、开发人员的适应性、 技术支持和服务等等因素。基于以上因素本设计选用单片机AT89S51作为本设计的核心元件,利用单片机灵活的编程设计和丰富的I/O端口,及其控制的准确性, 实现基本的密码锁功能。在单片机的外围电路外接输入键盘用于密码的输入和一些功能的控制,外接AT24C02芯片用于密码的存储,外接LCD1602显示器用于显示作用。当用户需要开锁时,先按键盘开 锁键之后按键盘的数字键 0-9输入密码。密码输完后按下确认键,

4、如果密码输入正确则开 锁,不正确显示密码错误重新输入密码,当三次密码错误则发出报警;当用户需要修改密码时,先按下键盘设置键后输入原来的密码,只有当输入的原密码正确后才能设置新密码。新密码输入无误后按确认键使新密码将得到存储,密码修改成功。第二章主要元器件2.1主控芯片AT89S51单片机AT89S51功能介绍AT89S51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROFalsh Programmableand Erasable Read Only Memory )的低电压,高性能 CMOS位微处理器,俗称单片机。该 器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-

5、51指令集和输出管脚相兼容。由于将多功能 8位CPU和闪烁存储器组合在单个芯片中,ATMEL的 AT89S51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案,AT89S51芯片引脚图如图2-1所示。 主要特性:与 MCS-51兼容 4K字节可编程闪烁存储器寿命:1000写/擦循环数据保留时间:10年全静态工作:0Hz-24Hz三级程序存储器锁定 128*8位内部RAM 32可编程I/O线两个16位定时器/计数器 5个中断源可编程串行通道低功耗的闲置和掉电模式片内振荡器和时钟电路 管脚说明:下面按其引脚功能分为四部分叙述这40条引脚的功能。1、主电源引脚 VSS和VSSA

6、T89S51芯片引脚图VSS( 40 脚)接 +5V 电压;VSS( 20 脚)接地。2、外接晶体引脚XTAL1和XTAL21234567891 01 11 21 31 41 51 61 71 81 920P1.0VCCP1.1P0. 0P1.2P0. 1P1.3P0. 2P1.4P0. 3P1.5P0. 4AT89 S5 1P1.6P0. 5P1.7P0. 6RSTP0. 7P3.0/RXDEAP3.1 /TXDALEP3.2/INT0PSENP3.3/INT1P2. 7P3.4/T0P2. 6P3.5/T1P2. 5P3.6/WRP2. 4P3.7/RDP2. 3XTAL1P2. 2XTA

7、L2P2. 1VssP2. 0U14039383736353433323130292827262524232221XTAL1 (19脚)接外部晶体的一个引脚。 在单片机内部,它是一个反相放大器的输入端, 这个放大器构成了片内振荡器。当采用外部振荡器时,对HMOS单片机,此引脚应接地;对SHMO单片机,此引脚作为驱动端。XTAL2 ( 18脚)接外晶体的另一端。在单片机内部,接至上述振荡器的反相放大器的输 出端。采用外部振荡器时,对HMO单片机,该引脚接外部振荡器的信号,即把外部振荡器的信号直接接到内部时钟发生器的输入端;对XHMQS此引脚应悬浮。3、控制或与其它电源复用引脚RST/VPD AL

8、E/PROG PSEN和EA/VPP RST/VPD( 9脚)当振荡器运行时,在此脚上出现两个机器周期的高电平将使单片机复位。推荐在此引脚与 VSS引脚之间连接一个约 8.2k的下拉电阻,与 VSS引脚之间连接一 个约10卩F的电容,以保证可靠地复位。VSS掉电期间,此引脚可接上备用电源,以保证内部RAM的数据不丢失。当 VSS主电源下掉到低于规定的电平,而 VPD在其规定的电压范围(5 ± 0.5V )内,VPD就向内部RAM提 供备用电源。 ALE/PROG( 30脚):当访问外部存贮器时,ALE(允许地址锁存)的输出用于锁存地址的低位字节。即使不访问外部存储器,ALE端仍以不变

9、的频率周期性地出现正脉冲信号,此频率为振荡器频率的1/6。因此,它可用作对外输出的时钟,或用于定时目的。然而要注意的是,每当访问外部数据存储器时,将跳过一个ALE脉冲。ALE端可以驱动(吸收或输出电流)8个LS型的TTL输入电路。 对于EPROI#片机(如8751 ),在EPROMS程期间,此 引脚用于输入编程脉冲(PRO) PSEN( 29脚):此脚的输出是外部程序存储器的读选通信号。在从外部程序存储器取指令(或常数)期间,每个机器周期两次PSEN有效。但在此期间,每当访问外部数据存储器时,这两次有效的 PSEN信号将不出现。PSEN同样可以驱动(吸收或输出)8个LS型的TTL输入。PS (

10、程序计数 EA/VPP (引脚):当EA端保持高电平时,访问内部程序存储器,但在器)值超过OFFFH(对851/8751/80S51 )或仆FFH(对8052)时,将自动转向执行外部程序 存储器内的程序。当 EA保持低电平时,则只访问外部程序存储器,不管是否有内部程序存 储器。对于常用的8031来说,无内部程序存储器,所以EA脚须常接地,这样才能只选择外部程序存储器。对于EPRO型的单片机(如 8751),在EPROM编程期间,此引脚也用于施加21V的编程电源(VPP。4. 控制或与其它电源复用引脚RST/Vpd , ALE/PROG PSEN和EA/Vpp。RST/Vpd当振荡器运行时。在此

11、引脚上出现两个机器同期的高电平(由低到高跳变),将使单片机复位。在VSS掉电期间,此引脚可接上备用电源,由Vpd向内部RAM提供备用电源,以保持内部RAM中的数据。ALE/PROG正常操作时为ALE功能(允许地址钱存),提供把地址的低字节锁存到外部锁 存器。ALE引脚以不变的频率(振荡周期的 1/6 )周期性地发出正脉冲信号。因此,它可用 作对外输出的时钟, 或用于定时目的。但要注意, 每当访问外部数据存储器时,将跳过一个 ALE脉冲。ALE端可以驱动(吸收或输出电流)八个 LSTTL电路。对于EPROM型单片机,在EPROM编程期间,此引脚接收编程脉冲(PRO勘能)。PSEN外部程序存储器读

12、选通信号输出端。在从外部程序存储器取指令(或数据)期间;PSEN在每个机器周期内两次有效。PSEN同样可以驱动八个 LSTTL输入。EA/ Vpp EA为内部程序存储器和外部程序存储器选择端。当EA为高电平时,访问内部程序存储器(PS值小于4K)。当EA为低电平时,则访问外部程序存储器。对于EPROI型单片机,在EPROlMw程期间,此引脚上加21VEPRO编程电源(Vpp)。5、输入/输出(I/O )引脚P0、P1、P2、P3 (共32根) P0 口( 39脚至32脚):是双向8位三态I/O 口,在外接存储器时,与地址总线的低8位及数据总线复用,能以吸收电流的方式驱动8个LS型的TTL负载。

13、 P1 口( 1脚至8 脚):是准双向8位I/O 口。由于这种接口输出没有高阻状态,输入也不能锁存,故不是真正的双向I/O 口。P1 口能驱动(吸收或输出电流)4个LS型的TTL负载。对8052、8032 , P1.0引脚的第二功能为 T2定时/计数器的外部输入,P1.1引脚的第 二功能为T2EX捕捉、重装触发,即T2外部控制端。对EPROMS程和程序验证时,它接收低8位地址。 P2 口( 21脚至28脚):是准双向8位I/O 口。在访问外部存储器时,它可以作为扩展电路高8位地址总线送出高 8位地址。在对EPROMS程和程序验证期间, 它接收高8位地 址。P2可以驱动(吸收或输出电流)4个LS

14、型的TTL负载。 P3 口( 10脚至17脚):是准双向8位I/O 口,在MSS-51中,这8个引脚还用于专门功能,是复用双功能口。P3能驱动(吸收或输出电流) 4个LS型的TTL负载。作为第一功能使用时,就作为普通I/O 口用,功能和操作方法与 P1 口相同。作为第二功能使用时,各引脚的定义如表所示。值得强调的是,P3 口的每一条引脚均可独立定义为第一功能的输入输出或第二功能。表2-1 P3 口管脚备选功能P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2/INT0 (外部中断0)P3.3/INT1 (外部中断1)P3.4T0 (记时器0外部输入)P3.5T1 (记时器1外部输

15、入)P3.6/WR (外部数据存储器写选通)P3.7/RD (外部数据存储器读选通)2.2存储芯片AT24C02如图2-2为AT24C02的芯片引脚图。1A0VGC56AlWP37A2SCL48GNDSDL图 2-2 AT24C02的芯片引脚图特点:低压和标准电压运行模式2.7 (VCC = 2.7V to 5.5V)1.8 (VCC = 1.8V to 5.5V)内建128x8存储序列,2线制串行接口,双向数据传送协议,100kHz(1.8V,2.5V,2.7V)和400kHz(5V)兼容,写同步时钟(最大10ms),高可靠性,极限:1M写时钟周期,数据保存:100 年,不断推进的芯片等级扩

16、大了设备的可用温度范围。AT24C02提供电可擦除的串行 1024位存储或可编程只读存储器 (EEPROM)128字(8位/ 字)。芯片在低压的工业与商业应用中进行了最优化。设备操作:CLOCK和DATA变化:SDA管脚通常外部要拉高。SDA管脚上的数据只能在 SCL低期间改 变。数据在SCL高期间改变定义为一个开始或停止信号。开始状态:在任何操作之前必须有一个开始信号-在SCL为高时SDA上产生一个下降 沿。停止状态:SCL为高时SDA产生一个上升沿是停止信号,停止信号后将停止所有通信。 在一个读的序列之后,停止信号将让EEPRO进入备用电源模式。2.3 LCD16022 显示器液晶显示模块

17、已作为很多电子产品的通过器件,如在计算器、万用表、电子表及很多家用电子产品中都可以看到,显示的主要是数字、专用符号和图形。1602型LCD显示模块具有体积小,功耗低,显示内容丰富等特点。1602型LCD可以显示2行16个字符,有8位数据总线D0-D7和RS,R/W,EN三个控制端口,工作电压为5V,并且具有字符对比度调节和背光功能。接口信号说明:1602型LCD的接口信号说明如表 2-2所示。表2-2 LCD1602接口信号说明编号符号引脚说明编号符号引脚说明1VSS电源地9D2数据2VDD电源正极10D3数据3VL液晶显示偏压11D4数据4RS数据/命令选择12D5数据5R/W:读/写选择:

18、13D6数据6E使能信号14D7数据7D0数据15BLA背光源正极8D1数据16BLK背光源负极1602型LCD主要技术参数:显示容量:16 X2个字符 芯片工作电压 45 5.5V工作电流:2.0mA(5.0V)模块最佳工作电压:5.0V字符尺寸:2.95 X 4.35(WX H)mm1602型LCD基本操作程序如下表所示:表2-3 LCD1602基本操作程序读状态输入RS=L, R/W=H E=H输出D0 D7= 犬态字写指令输入RS=L, R/W=L, D0 D7=指令码,E=高脉冲输出无读数据输入RS=H R/W=H E=H输出D0 D7= 据写数据输入RS=H R/W=L, D0-

19、D7=据,E=高脉冲输出无2.4晶体振荡器晶体振荡器,简称晶振,其作用在于产生原始的时钟频率,这个频率经过频率发生器的放大或缩小后就成了电脑中各种不同的总线频率。以声卡为例,要实现对模拟信号44.1kHz或48kHz的采样,频率发生器就必须提供一个 44.1kHz或48kHz的时钟频率。如果需要对这 两种音频同时支持的话,声卡就需要有两颗晶振。但是现在的娱乐级声卡为了降低成本,通常都采用SCR将输出的采样频率固定在 48kHz,但是SRC会对音质带来损害,而且现在的娱 乐级声卡都没有很好地解决这个问题。现在应用最广泛的是石英晶体振荡器。石英晶体振荡器是一种高精度和高稳定度的振荡器,石英晶体振荡

20、器也称石英晶体谐振器,它用来稳定频率和选择频率,是一种可以取代LC谐振回路的晶体谐振元件。石英晶体振荡器广泛地应用在电视机、影碟机、录像机、无线通讯设备、电子钟表、单片机、数字仪 器仪表等电子设备中。为数据处理设备产生时钟信号和为特定系统提供基准信号。在单片机中为其提供时钟频率。石英晶体振荡器是利用石英晶体 (二氧化硅的结晶体)的压电效应制成的一种谐振器件, 它的基本构成大致是:从一块石英晶体上按一定方位角切下薄片(简称为晶片,它可以是正方形、矩形或圆形等),在它的两个对应面上涂敷银层作为电极,在每个电极上各焊一根引 线接到管脚上,再加上封装外壳就构成了石英晶体谐振器,简称为石英晶体或晶体、晶

21、振。 其产品一般用金属外壳封装,也有用玻璃壳、陶瓷或塑料封装的。只要在晶体振子板极上施 加交变电压,就会使晶片产生机械变形振动,此现象即所谓逆压电效应。当外加电压频率等于晶体谐振器的固有频率时,就会发生压电谐振,从而导致机械变形的振幅突然增大。第三章硬件系统设计3.1 设计原理本设计主要由单片机、矩阵键盘、液晶显示器和密码存储等部分组成。其中矩阵键盘 用于输入数字密码和进行各种功能的实现。由用户通过连接单片机的矩阵键盘输入密码,后经过单片机对用户输入的密码与自己保存的密码进行对比,从而判断密码是否正确,然后控制引脚的高低电平传到开锁电路或者报警电路控制开锁还是报警,实际使用时只要将单片机的负载

22、由继电器换成电子密码锁的电磁铁吸合线圈即可,当然也可以用继电器的常开触点去控制电磁铁吸合线圈。本系统共有两部分构成, 即硬件部分与软件部分。 其中硬件部分由电源输入部分、键盘输入部分、密码存储部分、复位部分、晶振部分、显示部分、报警部分、开锁部分组成,软件部 分对应的由主程序、初始化程序、LCD显示程序、键盘扫描程序、启动程序、关闭程序、建功能程序、密码设置程序、EEPRO读写程序和延时程序等组成。图3-1电子密码锁原理框图3.2 电路总体构成在确定了选用什么型号的单片机后,就要确定在外围电路, 其外围电路包括电源输入部分、键盘输入部分、密码存储部分、复位部分、晶振部分、显示部分、报警部分、开

23、锁部 分组成,根据实际情况键盘输入部分选择4*4矩阵键盘,显示部分选择字符型液晶显示LCD1602密码存储部分选用 AT24C02 芯片完成J_L4I<IfTf*mntn11I I 判 I>fchAlAT Ji* *PaTi'iS.slBsuWTC41 LTDJ-OKDDlVPF1 I1WXT舸XT.4UTrrar FSM.图3-2电路总体结构图3.3 电源输入电路密码锁主要控制部分电源需要用5V直流电源供电,其电路如图3-3所示,而5V电源输入时往往伴有杂波,所以加一个VCC2.2uFC4的电容滤波。这样输出的电压一般能满足要求。2 PIN3.4 键盘输入电路由于本设计所

24、用到的按键数量较多而不适合用独立按键式键盘。采用的是矩阵式按键 键盘,它由行线和列线组成,也称行列式键盘,按键位于行列的交叉点上,密码锁的密码由键盘输入完成,与独立式按键键盘相比,要节省很多I/O 口。本设计中使用的这个 4*4键盘不但能完成密码的输入还能作特别功能键使用,比如清空显示功能等。键盘的每个按键功能在程序设计中设置 。其大体功能(看键盘按键上的标记)及与单片机引脚接法如图3-4所图3-4键盘输入原理图机通讯,电压最低可以到 2.5V,额定电流为 以在断电的情况下保存 40年以上,而且采用 所示。U31234A0VCCA1WPA2SCLGNDSDLAT24C0 2VCC678P3.5

25、P3.6P3.7R95.1 kR1 05.1 k3.5 密码存储电路AT24C02是ATMEL公司的2KB字节的电可擦除存储芯片,采用两线串行的总线和单片1mA静态电流10Ua(5.5V),芯片内的资料可 8脚的DIP封装,使用方便。其电路如图3-5VCC图中1、2、3脚是三条地址线,用于确定芯片的硬件地址,在AT89S51 上它们都能接地,第5脚和第8脚分别为正、负电源。 AT24C02中带有片内地址寄存器,每写入或读出一个数 据字节后,该地址寄存器自动加1,以实现对下一个储存单元的读写,所有字节均以单一操作方式读取。3.6 复位电路单片机复位是使CPU和系统中的其他功能部件都处在一个确定的

26、初始状态,并从这个状态开始工作,例如复位后PC= 0000H,使单片机从第一个单元取指令。无论是在单片机刚开始接上电源时,还是断电后或者发生故障后都要复位。在复位期间(即RST为高电平期间),P0 口为高组态,P1- P3 口输出高电平;外部程序存储器读选通信号PSEN无效。地址锁存信号ALE也为高电平。根据实际情况选择如图 2-8所示的复位电路。该电路在最简单的复位电 路下增加了手动复位按键,在接通电源瞬间,电容C1上的电压很小,复位下拉电阻上的电压接近电源电压,即RST为高电平,在电容充电的过程中 RST端电压逐渐下降,当RST端的 电压小于某一数值后,CPU脱离复位状态,由于电容 C1足

27、够大,可以保证 RST高电平有效时间大于24个振荡周期,CPU能够可靠复位。增加手动复位按键是为了避免死机时无法可 靠复位。当复位按键按下后电容C1通过R5放电。当电容 C1放电结束后,RST端的电位由R11与R15分压比决定。由于 R11<<R15因此RST为高电平,CPU处于复位状态,松手后, 电容C1充电,RST端电位下降,CPU脱离复位状态。R11的作用在于限制按键按下瞬间电容 C1的放电电流,避免产生火花,以保护按键触电。K1VCCR1 1r41R1 51 Ok图3-6 复位电路原理图3.7 晶振电路AT89C51引脚XTAL1和XTAL2与晶体振荡器及电容 C2 C1按

28、图3-7所示方式连接。晶振、电容C2/ C3及片内与非门(作为反馈、放大元件)构成了电容三点式振荡器,振荡信 号频率与晶振频率及电容C1、C2的容量有关,但主要由晶振频率决定,范围在 033MHz之间,电容C2 C3取值范围在530pF之间。根据实际情况,本设计中采用12MHZ做系统的外部晶振。电容取值为 20pF。XT AL1 XT AL2图3-7晶振电路原理图3.8 显示电路为了提高密码锁的密码显示效果能力。本设计的显示部分由液晶显示器LCD1602取代普通的数码管来完成。只有按下键盘上的开启按键后,显示器才处于开启状态。同理只有按下关闭按键后显示器才处于关闭状态。否则显示器将一直处于初始

29、状态,当需要对密码锁进行开锁时,按下键盘上的开锁按键后利用键盘上的数字键0-9输入密码,每按下一个数字键后在显示器上显示一个 *,输入多少位就显示多少个 *。当密码输入完成时,按下确认键, 如果输入的密码正确的话,LCD子显示“ RIGHT”单片机其中P2.0引角会输出低电平,使三极管T2导通,电磁铁吸合,电子密码锁被打开,如果密码不正确,LCD显示屏会显示“ERROR, P2.0输出的是高电平,电子密码锁不能被打开。通过LCD显示屏,可以清楚的图3-8显示电路原理图3.9 报警电路“叮”报警部分由陶瓷压电发声装置及外围电路组成,加电后不发声,当有键按下时, 声,每按一下,发声一次,密码正确时

30、,不发声直接开锁,当密码输入错误时,单片机的 P2.1弓I脚为低电平,三极管 T3导喇叭发出噪鸣声报警。如图3-9所示:图3-9报警电路原理图3.10 开锁电路通过单片机开锁执行机构,电路驱动电磁锁吸合,从而达到开锁的目的。 其原理如图3-10所示。图3-10密码锁开锁机构示意图当用户输入的密码正确时,单片机便输出开门信号,送到开锁驱动电路, 然后驱动电磁锁,达到开门的目的。其实际电路如图3-11所示。电路由驱动和开锁两级组成。由D1、R12、Q1组成驱动电路,其中 Q1可以选择普通的小功率三极管如 8050、9018都可以满足要求。D1是开锁指示灯;由 D2、C5组成开锁。其 中D2、C5是

31、为了消除电磁锁可能产生的反向高电压以及可能产生的电磁干扰。电磁锁的选 用要视情况而定,但是吸合力要足够且有一定的余量。在设计中,暂时用发光二极管代替电磁锁,发光管亮,表示开锁;灭,表示没有开锁。8od LLLLCS®CO口 口口口 口 口口口 口 0 口口口口口口口口口口口口口口g第四章软件程序设计本系统软件设计由主程序、初始化程序、LCD显示程序、键盘扫描程序、键功能程序、密码设置程序、EEPRO读写程序和延时程序等组成。4.1主程序流程图如图4-1为主程序流程图,开始接上电源,程序进行初始化设置,然后在键盘上输入 密码,此系统进行键盘扫描,密码正确,开锁成功,密码错误3次出错报警

32、,选择是否修改密码,若要修改密码,先输入旧密码,密码正确后设置新密码,错误时报警,需要两次确认 新密码,确认后,密码修改成功,否则结束最终返回。然后启动程序,进行保护,再次在键 盘上输入密码,系统进行扫描,如果和之前一样,则执行相同程序,如不是,则执行另一种 程序。图4-1主程序流程图4.2 按键软件设计如图4-2按键功能流程图,在按键当中,有与输入、开锁、清除、设置、确认的程序相对应的按键,并按顺序与输入的数相比较,当输入正确时,进入密码程序,错误时进行清除,输入两次新密码正确时,可进行重新设置密码,最后确认程序。图4-2按键功能流程图4.3 密码设置软件设计如图4-3为密码设置流程图,开始

33、按下设置键,输入旧密码,如果错误累计三次, 进行报警程序。如果输入正确,可以修改密码,确认后再次输入新密码,如果两次输入一样,则 输入成功。如果两次输入的新密码不一样,则修改密码失败,重新返回设置新密码。开始图4-3 密码设置流程图4.4 开锁软件设计如图4-4开锁流程图,开始时按开锁键,输入密码,如果输入正确,则开锁成功。如果 输入错误累计达到三次,则执行报警程序。开始初始化按开锁键输入密码M_输入次数加 1按确认键-r-图4-4开锁流程图程序清单 :F_F1 BIT 2CH显示缓冲区F_F2 BIT 2DHLED1 EQU 6FHPSW_F BIT 2EHBUFF EQU 6EH确的标志位

34、TIMERS1 EQU 6DH ;输入回车口资源定义的次数SPK BIT P2.1TIMERS2 EQU 6CH ;报警的次WP BIT P3.5数SDA BIT P3.6LED6 EQU 6AH数据端密码缓冲区SCL BIT P3.7PS1 EQU 69HPS2 EQU 78HORG 0000HPS3 EQU 67HAJMP MAINPS4 EQU 66HORG 000BHPS5 EQU 65H;AJMP TIMER0PS6 EQU 64HORG 001BHPS7 EQU 63H;AJMP TIMER1PS8 EQU 62HORG 0030HAT24C02 读取缓冲区密码是否正定义串口AT1

35、EQU61HMOVTMOD, #11HAT2EQU60HMOVTH0, #3CHAT3EQU5FHMOVTL0, #0B0HAT4EQU5EHMOVTH1, #3CHAT5EQU5DHMOVTL1, #0B0HAT6EQU5CHCLRF_0 ;AT7EQU5BH位AT8EQU5AHCLRF_1MAIN:MOV SP, #70H清除标志按键标志位CLRF_2F_0 BIT 20HCLRF_3F_1 BIT 21HCLRF_4F_2 BIT 22HCLRF_5F_3 BIT 23HCLRF_6F_4 BIT 24HCLRF_7F_5 BIT 25HCLRF_8F_6 BIT 26HCLRF_9F_

36、7 BIT 27HCLRBUF_FULLF_8 BIT 28HCLRCH_STATEF_9 BIT 29HCLRFLAG1CH_STATE BIT 2AH ; 系统更改的状态标志CLRF_F1CLR F_F2位,为 1 表示 busyFLAG1 BIT 2BH ; 功能键标志CLR PSW_F位,为 1 表示功能按键MOV BUFF,#00H调用LCALL INITPS ;初始化环SUBB A, #01H境JNZ PS_2LCALL INITATMOV PS1, BUFF ;依照顺序LCALL XSA ; 调用默认显示存放密码MOV TIMERS1,#00HAJMP NEXTNOPPS_2:M

37、OV A, TIMERSMOV PS1, #11H ;初始化密SUBB A, #02H码 830620CLR CMOV PS2, #0AHJNZ PS_3MOV PS3, #02HMOV PS2, BUFFMOV PS4, #13HAJMP NEXTMOV PS5, #0BHPS_3:MOV A, TIMERSMOV PS6, #02HCLR CSTART:NOP ;程序开始SUBB A, #03HLCALL CH_KEY ;检查键盘JNZ PS_4AJMP START ;返回MOV PS3, BUFFAJMP NEXTCH_KEY:LCALL KS ;检查有没有PS_4:MOV A, TIM

38、ERS按键按下CLR CJNZ LK1SUBB A, #04AJMP CH_KEYJNZ PS_5LK1:MOV PS4, BUFFLCALL T12MSAJMP NEXTACALL KSPS_5:MOV A, TIMERSJNZ LK2CLR CRETSUBB A, #05JNZ PS_6LK2:MOV PS5, BUFFNOPAJMP NEXTLCALL SBIE ;按键识别PS_6:MOV A, TIMERS子程序CLR CMOV BUFF, A ;送缓冲区SUBB A, #06H以识别是数字键还是功能键?JNZ CH_KEYLCALL CH_KF ;判断按键MOV PS6, BUFF功

39、能。NEXT:LCALL XSCJB FLAG1 ,KEY_FUN ;标志为 1,MOV R7, TIMERS ;比较输则为功能键入的次数。* 数字按键输入并且存放到缓冲区CJNE R7, #06H ,FULL内等待比较 *FULL:JC NEXT9KEY_DIG:NOP ;设一标SETB BUF_FULL志,辨别输入是否满MOV TIMERS,#06H;SETB TR0CLR L3INC TIMERS ;输入数NOP字的位数CLR P2.1MOV A, TIMERSLCALL T100MSDCLR CSETB P2.1NOPAJMP CH_KEYFU1:NOPNEXT9:CLR P2.1入一

40、位,鸣叫一声。CLR L3LCALL T100MSDSETB L3SETB P2.1密码输延时100msAJMP CH_KEY*CL:NOPSETB L3MOV BUFF, #00H;消密码缓冲MOV TIMERS,#00HLCALL INITPS;消除AT缓冲,调电存储后一定要加上LCALLXSCLCALL BPLCALL BPLCALL T100MSDLCALL BPCLR FLAG1AJMP CH_KEYLCALLXSCJB F_F1, NEXT_F1CLR L1LCALL BPSETB F_F1AJMP CH_KEYNEXT_F1:SETB L1LCALL BPCLR F_F1;LCA

41、LL CH_STATE现在的状态以防误按;SETB TR1警限制暂时不开;INC F_F1CLR FLAG1AJMP CH_KEYFU2:NOP查看报FU4:NOPLCALL BPLCALL T100MSDLCALL BPLCALL T100MSDLCALL BPLCALL T100MSDLCALL BPLCALL T100MSDLCALL BPCLR FLAG1AJMP CH_KEYJB F_F2, NEXT_F2CLR L2LCALL BPSETB F_F2AJMP CH_KEYNEXT_F2:SETB L2LCALL BPCLR F_F2CLR FLAG1AJMP CH_KEY*注意清楚

42、缓冲区时 AT1.AT8不应在初始化 中执行,以防两缓冲区都为0,相同开锁*CLR_BUF:MOV R7, #06HMOV R0, #6FHFU3:NOPLCALL BPLCALL T100MSDLCALL BPLCALL KILLXS ;CLR FLAG1关闭显示LOOP1:MOV A, #00HMOV R0, ADEC R0DJNZ R7,L OOP1RET*初始化显示缓冲区以及其他缓AJMP CH_KEY*检验密码正误锁定,鸣笛程*显示子程序*INITPS:PUSH ACCPUSH PSWMOV R7, #06HMOV R1, #PS1MOV A, #00HINIT_PS:MOV R1,

43、 ADEC R1DJNZ R7, INIT_PSPOP PSWPOP ACCNOPRETINITAT:PUSH ACCPUSH PSWMOV R7,#06HMOV R1,#AT1MOV A, #00HINIT_AT:MOV R1, ADEC R1DJNZ R7, INIT_ATMOV TIMERS,#00H ;密码输入的次数清零。POP PSWPOP ACCRET*C_PSW:PUSH PSWPUSH ACCMOV R2,#06HMOV R0,#PS1MOV R1,#AT1C_P:CLR CMOV A,R0SUBB A,R1JNZ RETURNDEC R0DEC R1DJNZ R2,C_PNO

44、PSETB PSW_FAJMP EXIT7RETURN:CLR PSW_FEXIT7:NOPPOP ACCPOP PSWRET* 序 *LOCK_1M:MOV R4,#3CH; 锁定 1 分钟M1_LOOP:L CALL SECDJNZ R4,M1_LOOPNOPRETWARN2S:PUSH PSWPUSH ACCMOV R5, #14H;调用 20 次BP,报警2sWARN:L CALL BPDJNZ R5,WARNNOPPOP ACCPOP PSWNOPRETBP:CLR SPK;鸣笛子程序LCALL T100MSDSETB SPKNOPRET*锁定状态显示。XSA:PUSH ACCPUS

45、H PSWMOV A, TIMERS1MOV DPTR, #TABMOVC A, A+DPTRMOVSBUF,A;送已经输入密码的次数JNB TI, $CLR TIMOVSBUF,#0FEH;送短线JNB TI, $CLR TIMOVSBUF,#OFEH;送短线JNB Tl, $CLRTl;送 FMOV SBUF, #78HJNB Tl, $CLR TlMOV SBUF, #78HJNB Tl, $CLR TlMOV SBUF, #11HJNB Tl, $CLR TlPOP PSWPOP ACCRET成功开锁状态显示XSB:PUSH ACCPUSH PSWMOV A, TIMERS1MOV D

46、PTR, #TABMOVC A, A+DPTRMOV SBUF, AJNB Tl, $CLR TlMOV SBUF, #0FEHJNB Tl, $CLR TlMOV SBUF, #0FEHJNB Tl, $CLR TlMOV SBUF, #10HJNB Tl, $CLR TlMOV SBUF, #10HJNB Tl, $CLR TlMOV SBUF, #10HJNB Tl, $CLR TlPOP PSWPOP ACCRET密码输入及修改状态XSC:PUSH ACCPUSH PSWLCALL KILLXSSETB RS1 ;切换到第三组寄存器防止操作数读取错误。MOV R6, TIMERSMOV

47、 A, R6SUBB A, #01HJNC SC0JZ SC1SC0:MOV SBUF, #0FEHJNB Tl, $CLR TlSC1:MOV A, R6SUBB A, #02HJNC SC11JNZ SC2SC11:MOV SBUF,#0FEHJNB Tl, $CLR TlSC2:MOV A, R6SUBB A, #03HJNC SC22JNZ SC3SC22:MOV SBUF, #0FEHJNB Tl, $CLR TlSC3:MOV A, R6SUBB A, #04HJNC SC33JNZ SC4SC33:MOV SBUF, #0FEHJNB Tl, $CLR TlSC4:MOV A, R6SUBB A, #05HJNC SC44JNZ SC5SC44:MOV SBUF, #0FEHJNB Tl, $CLR TlSC5:MOV A, R6SUBB A, #06HJNC SC55JNZ SC6SC55:MOV SBUF, #0FEHJNB Tl, $CLR TlSC6:M0V A, R6SUBB A, #07HJNC SC66JNZ EXIT_CSC66:MOV SBUF, #0FEHJNB TI, $CLR TINOPNOP

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论