




已阅读5页,还剩18页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
以AT89S51为核心的单片机控制密码锁设计计划书1、 概述本实验利用集成电路芯片AT89C51,LED数码管以及4X4矩阵式键盘来设计密码锁。将软件和硬件有机的结合起来,使得系统能够正确的开启密码,数码管能够正确的显示所设定的数字。2、 设计要求A 密码锁由4*4键盘和4 位数码管组成。B 当输入密码时,只显示8,当密码输入完毕按下确认键时,对输入的密码与设定的密码进行比较,若密码正确,则门打开,此处用LED发光二极管亮一秒作为提示。若密码不正确,则可以重新输入密码。如果连续三次输入密码错误,则禁止输入。3设计流程:查阅有关文献资料拟定电路原型依据题目功能要求,进行电路元件选择画出原理电路系统硬件电路图完成课题的程序设计程序设计清单写出设计报告。4可选器件:51系列单片机、24C01、LED数码管、74LS244、非门等5.设计方案采用一种是用以AT89S51为核心的单片机控制方案。利用单片机灵活的编程设计和丰富的IO端口,及其控制的准确性,不但能实现基本的密码锁功能,还能添加调电存储、声光提示控制功能。其原理如下图所示。各模块功能如下:1键盘输入模块:分为密码输入按键与功能按键,用于完成密码输入功能。2密码存储模块:用于完成掉电存储功能,使修改的密码断电后仍能保存。3晶振电路:用于单片机的起振。4复位电路:完成系统的复位。5LED显示模块:用于完成对系统状态显示及操作提示功能。6开锁电路:应用发光二极管模拟开锁,完成开锁及开锁提示。芯片功能介绍单片机AT89C51介绍 AT89C51是一种带4K字节闪存可编程可擦除只读存储器(FPEROMFlash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除1000次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。外形及引脚排列如下图所示:图1 AT89C51引脚图AT89C51管脚说明:VCC:供电电压。 GND:接地。 P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。 P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。 P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。 P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。 ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。 /PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。 /EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。 XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出。XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。由于输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。 整个PEROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处于低电平10ms 来完成。在芯片擦操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。 此外,AT89C51设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。在闲置模式下,CPU停止工作。但RAM,定时器,计数器,串口和中断系统仍在工作。在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。6、 键盘功能及工作原理键盘功能主要有按键识别、去抖、重键处理、发送扫描码、自动重发、接收键盘命令、处理命令等。键盘有编码键盘和非编码键盘。编码键盘程序设计简单,但硬件电路复杂,价格较高;非编码键盘用软件来实现识别键、编码转换、去抖等功能,硬件电路简单,价格便宜。现代微机系统中广泛采用非编码键盘。工业键盘多采用4行4列的二维矩阵行列结构。采用行扫描法识别按下的按键。本设计就采用行列式键盘,同时也能减少键盘与单片机接口时所占用的I/O线的数目,在按键比较多的时候,通常采用这样方法。其原理如右图所示。VCC4*4 行列式键盘原理电路图每一条水平(行线)与垂直线(列线)的交叉处不相通,而是通过一个按键来连通,利用这种行列式矩阵结构只需要N条行线和M条列线,即可组成具有NM个按键的键盘。在这种行列式矩阵键盘非键盘编码的单片机系统中,键盘处理程序首先执行等待按键并确认有无按键按下的程序段。当确认有按键按下后,下一步就要识别哪一个按键按下。对键的识别通常有两种方法:一种是常用的逐行扫描查询法;另一种是速度较快的线反转法。对照上图所示的4*4键盘,说明线反转个工作原理。首先辨别键盘中有无键按下,有单片机I/O口向键盘送全扫描字,然后读入行线状态来判断。方法是:向行线输出全扫描字00H,把全部列线置为低电平,然后将列线的电平状态读入累加器A中。如果有按键按下,总会有一根行线电平被拉至低电平从而使行线不全为1。判断键盘中哪一个键被按下使通过将列线逐列置低电平后,检查行输入状态来实现的。方法是:依次给列线送低电平,然后查所有行线状态,如果全为1,则所按下的键不在此列;如果不全为1,则所按下的键必在此列,而且是在与零电平行线相交的交点上的那个键。按键的操作面板如下图所示。 按键操作面板示意图按键包括有数字键和功能键。数字键包括09键,用于密码的输入。功能键有确认键。具体的功能定义如下表。按键键名功能说明09键数字键输入密码A键确认键密码输入完成硬件设计由实验要求采用4行4列的矩阵行列结构。89c51单片机有4个8位I/O端口,采用P1口低四位作为行扫描线,高四位作为列扫描线。软件设计 消抖及重键处理:通过软件上延时程序来消除抖动;采用后按键优先处理,即多键同时按下时,只重复发送最后按下键的扫描码。 程序包括键盘扫描子程序、发送键码子程序、发送数据子程序、接收命令子程序、主程序等。键盘扫描子程序用于扫描键状态,将被按键的位置号存入缓冲器中;发送键码子程序用于将缓冲区键的接通码或断开码发送给计算机键盘接口或者存在键盘密码缓冲区中;发送数据子程序用于将数据发给计算机键盘接口;接收命令子程序用于接收计算机键盘接口发来的键盘命令;主程序用于系统初始化,子程序调度,锁定状态的显示等。7、 时钟电路设计时钟电路为单片机产生时序脉冲,单片机所有运算与控制过程都是在统一的时序脉冲的驱动下的进行的,如果单片机的时钟电路停止工作(晶振停振),那么单片机也就停止运行了。当采用内部时钟时,连接方法如下图所示,在晶振引脚XTAL1(19脚)和XTAL2(18脚)引脚之间接入一个12MHZ晶振,两个引脚对地分别再接入一个电容即可产生所需的时钟信号,电容的容量一般在几十皮法,如33PF。8、 复位电路设计复位是单片机的初始化操作。单片机启运运行时,都需要先复位,其作用是使CPU和系统中其他部件处于一个确定的初始状态,并从这个状态开始工作。因而,复位是一个很重要的操作方式。但单片机本身是不能自动进行复位的,必须配合相应的外部电路才能实现。该复位电路采用按键电平复位式复位电路。当单片机已在运行当中时,按下复位键后松开,在复位引脚RET(9脚)脚持续出现24个振荡器脉冲周期(即2个机器周期)的高电平信号将使单片机复位。也能使RST为一段时间的高电平,从而实现上电或开关复位的操作9、开锁单元通过单片机送给开锁执行机构,电路驱动电磁锁吸合,从而达到开锁的目的。其原理如下图所示。密码锁开锁机构示意图当用户输入的密码正确而且是在规定的时间(普通用户要求在12s内输入正确的密码,管理员要求在5s输入正确的密码)输入的话,单片机便输出开门信号,送到开锁驱动电路,然后驱动电磁锁,达到开门的目的。在本次设计中,基于节省材料的原则,暂时用发光二极管代替电磁锁,发光管亮,表示开锁;灭,表示没有开锁。10、 AT24C02掉电存储单元的设计掉电存储单元的作用是在电源断开的时候,存储当前设定的单价信息。AT24C02是ATMEL公司的2KB字节的电可擦除存储芯片,采用两线串行的总线和单片机通讯,电压最低可以到2.5V,额定电流为1mA,静态电流10Ua(5.5V),芯片内的资料可以在断电的情况下保存40年以上,而且采用8脚的DIP封装,使用方便。其电路如图36所示。图36 掉电存储电路原理图图中R8、R10是上拉电阻,其作用是减少AT24C02的静态功耗,由于AT24C02的数据线和地址线是复用的,采用串口的方式传送数据,所以只用两根线SCL(移位脉冲)和SDA(数据/地址)与单片机传送数据。每当设定一次单价,系统就自动调用存储程序,将单价信息保存在芯片内;当系统重新上电的时候,自动调用读存储器程序,将存储器内的单价等信息,读到缓存单元中,供主程序使用。由于实验室没有这类器件,因此在实际制作过程中这项功能省略。11、总电路连线图12、程序框图附录-分工张向峰:设计电路原理图、设计与调试键盘扫描程序,Word文档部分整理,整体程序调试。高居顺:硬件开发板调试(未调试出结果),设计电路原理图,整体程序的调试,显示程序的设计与调试。张太玉:查阅相关文件,做程序框图,延时程序的设计,部分Word文档的整理。 隋仕坤:学习Proteus画电路原理图,密码输入程序与密码比较程序的编译与调试。高鹏辉:学习Proteus画电路原理图,开锁报警程序的编译与调试。附录-程序;以下4个字节显示存储区LED_BIT_1 EQU 30HLED_BIT_2 EQU 31HLED_BIT_3 EQU 32HLED_BIT_4 EQU 33H;以下4个字节存放初始密码WORD_1 EQU 34HWORD_2 EQU 35HWORD_3 EQU 36HWORD_4 EQU 37H;以下4个字节存放键盘输入的4位密码KEY_1 EQU 38HKEY_2 EQU 39HKEY_3 EQU 3AHKEY_4 EQU 3BHVAL EQU 3EH ;键值COUNT_1 EQU 3FH ;密码输入次数;*;以下为初始化程序,包括数据存储空间初始化,设置初始密码 ORG 0000H AJMP START ORG 0100HSTART: MOV VAL,#00H MOV R0,#00H MOV R1,#00H MOV R2,#00H MOV R3,#00H MOV R4,#00H MOV R5,#00H MOV R7,#00H MOV R6,#00H MOV A,#00H MOV B,#00H MOV KEY_1,#00H ;输入密码存储区清0 MOV KEY_2,#00H MOV KEY_3,#00H MOV KEY_4,#00H MOV WORD_1,#00H ;设置初始密码为0123 MOV WORD_2,#01H MOV WORD_3,#02H MOV WORD_4,#03H MOV P3,#00H;*; 主程序开始A0: MOV LED_BIT_1,#7FH ;显示存储区 开始显示8888 MOV LED_BIT_2,#7FH MOV LED_BIT_3,#7FH MOV LED_BIT_4,#7FH MOV COUNT_1,#03H ;密码错误次数置三 LCALL DISP ;调用数码显示子程序0123 等待按键 LCALL LSCAN ;调用按键程序 CJNE R3,#0AH,A0 ;是否为ENT键(3号键)不相等则跳转到A0 LCALL LE0 ;检测到“ENT”不显示 等待密码输入 LCALL DISPA00: LCALL INPUT1 ;转入密码输入程序 INPUT1A1: LCALL LSCAN ;密码输入完毕 检测“ENT” LCALL DISP CJNE R3,#0AH,A1 ;检测到“ENT” 则比较 LCALL DISP ;显示 0 LCALL LE0 ;显示区清空 LCALL COMPA ;转入密码比较程序COMPA CJNE R6,#01H,A2 ;返回值R6为1正确开锁否则调至A2检查密码错误次数 LCALL OPE ;密码正确 调用开锁程序 LJMP A0 ;开锁后返回A0A2: DJNZ COUNT_1,A3 ;三次错误则报警 LJMP ALARM A3: LCALL LE_NO ;错误未达三次则显示N 返回密码输入程序 LCALL DISP LCALL LE0 ;密码输入错误显示N后可继续输入密码 LJMP A00 ;未满三次继续调用密码输入程序;*; 读键值子程序LSCAN: ACALL KS1 ;调用判别有无按键闭合子程序 CJNE A,#0FH,LK1 ;有键闭合,则转LK1 SJMP LSCANLK1: ACALL DLY_S ;调用程序延时,消除抖动 ACALL KS1 ;消抖后再次判断是否有键闭合 CJNE A,#0FH,LK2 ;有键闭合,转LK2 AJMP LSCANLK2: MOV R2,#0EFH ;键盘列扫描模式,先扫描第一列 MOV R5,#00H;初始扫描第一列,列号为0LK3: MOV A,R2 ;使第一列为1,检测有无按键 MOV P1,A MOV A,P1 MOV B,A JB ACC.0,NEXT1 ;P1第0位为1,说明无键按下,转至NEXT1,即下一行 MOV A,#0 ;P1第0位为0,有键按下,行起始行键号为0 AJMP LKP ;跳转至LKP,计算键号NEXT1: JB ACC.1,NEXT2 ;P1第1位为1,说明无键按下,转至NEXT2,即下一行 MOV A,#4 ;P1第1位为0,有键按下,行起始行键号为4 AJMP LKP ;跳转至LKP,计算键号NEXT2: JB ACC.2,NEXT3 ;P1第2位为1,说明无键按下,转至NEXT3,即下一行 MOV A,#8 ;P1第2位为0,有键按下,行起始行键号为8 AJMP LKP ;跳转至LKP,计算键号NEXT3: JB ACC.3,NEXT ;P1第3位为1,说明无键按下,转至NEXT,即下一列 MOV A,#12 ;P1第3位为0,有键按下,行起始行键号为12 AJMP LKP ;跳转至LKP,计算键号LKP: ADD A,R5 ;行起始键号与列号之和为键号LK4: MOV VAL,A MOV R3,A SETB P3.0 LCALL DLY CLR P3.0 RETNEXT: INC R5 ;指向下一列,列号加1 MOV A,R2 JNB B.7,DONE ;是否4列全扫描完毕 RL A ;没有,准备扫描下一列 MOV R2,A AJMP LK3DONE: AJMP LSCAN ;回到键扫程序开始处KS1: MOV P1,#0FH ;将所有的列都置1,并将低四位作为输入口 MOV A,P1 ;读取行状态 RET ;*; 密码输入程序INPUT1: MOV R4,#04H MOV R0,#KEY_1INPUT: LCALL LSCAN ;没键按下时处理 JNB P1.0,INPUT_3 ;无按键则转INPUTJNB P1.1,INPUT_3JNB P1.2,INPUT_3JB P1.3,INPUTINPUT_3:MOV R0,VAL ;用来保存密码 INC R0 LCALL SHIFTL ;显示左移程序 LCALL DISP ;调用显示程序 DJNZ R4,INPUT ;4位密码是否输入完毕 INPUT_2:RET;*; 密码比较程序COMPA: MOV A,KEY_1 ;输入密码暂存第一位地址给A CJNE A,WORD_1,COMPA_1 ;不相等则跳出赋R6为0 MOV A,KEY_2 CJNE A,WORD_2,COMPA_1 MOV A,KEY_3 CJNE A,WORD_3,COMPA_1 MOV A,KEY_4 CJNE A,WORD_4,COMPA_1 MOV R6,#01H ;密码正确则赋R6为1,返回 AJMP COMPA_2COMPA_1:MOV R6,#00H COMPA_2:RET ;*; 开锁程序OPE: SETB P3.0 ;开锁 绿灯亮 LCALL LE8 LCALL DISP LCALL DLY_L ;调用延时程序 CLR P3.0 MOV COUNT_1,#03H RET;*; 密码3次错误报警程序ALARM:SETB P3.2 LCALL DISP LCALL DLY_L CLR P3.2 LJMP A0;*; 以下为各种显示赋值程序LE8: MOV LED_BIT_1,#80H ;显示存储区 显示8888 MOV LED_BIT_2,#80H MOV LED_BIT_3,#80H MOV LED_BIT_4,#80H RETLE_NO: MOV LED_BIT_1,#0FFH ;显示存储区 显示N MOV LED_BIT_2,#0FFH MOV LED_BIT_3,#0C0H MOV LED_BIT_4,#37H RETLE0: MOV LED_BIT_1,#0FFH ;显示存储区 显示. MOV LED_BIT_2,#0FFH MOV LED_BIT_3,#0FFH MOV LED_BIT
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 恶性肿瘤电磁干预-洞察及研究
- 大连工业大学《空中交通管理基础》2024-2025学年第一学期期末试卷
- 2025贵州望谟县县城学校考聘教职工434人笔试模拟试题及答案解析
- 2025广东阳江市阳西县织篢镇村(社区)招聘专职网格员9人笔试参考题库附答案解析
- 2025安徽芜湖南陵县小学编外聘用教师招聘30人笔试模拟试题及答案解析
- 地暖工程施工方案专项方案
- 2025年甘肃北方技工学校招聘考试参考题库附答案解析
- 2025云南玉溪易门县委宣传部招聘城镇公益性岗位工作人员1人笔试模拟试题及答案解析
- 2025浙江杭州市萧山区质量计量监测中心招聘事业单位工作人员3人笔试备考试题及答案解析
- 2025广西北海市银海区西塘社区卫生服务中心招聘1人笔试模拟试题及答案解析
- DB32T-蛋鸡养殖场健康生产规范(报批稿)编制说明
- 停车数据深度挖掘
- 产品研发与技术转移制度
- 八年级语文重点知识及文学常识归纳总结
- 台州市开发投资集团有限公司招聘笔试题库2024
- 乡镇供电所全能型员工评聘考试题库(精简600题)
- 机械设备投标书范本
- 河北安装工程消耗量定额计算规则
- 义务教育《数学课程标准》2022年版原文
- YC/T 310-2024烟草漂浮育苗基质
- 智慧公厕设备采购投标方案(技术方案技术标)
评论
0/150
提交评论