基于单片机实现电子密码锁的设计综合实验论文内容摘要:
VCC( 40 脚)和 VSS( 20 脚)为供电端口,分别接 +5V 电源的正负端。 P0~P3 为可编程通用 I/O 脚,其功能用途由软件定义,在本设计中, P0 端口( 32~39 脚)被定义为 N1 功能控制端口,分别与 N1的相应功能管脚相连接, 13 脚定义为 IR 输入端, 10 脚和 11 脚定义为 I2C 总线控制端口,分别连接 N1 的 SDAS( 18 脚)和 SCLS( 19 脚)端口, 12 脚、 27 脚及 28 脚定义为握手信号功能端口,连接主板 CPU 的相应功能端,用于当前制式的检测及会聚调整状态进入的控制功能。 其引脚图如图 所示: 攀枝花学院本科综合实验论文 8 图 AT89C52 的引脚图 Vcc:供电电压 Vss:接地。 P0 口 :在不接外存储器与不扩展 I/O 接口时,可作为准双向输入 /输出接口。 在接有片外存储器或扩展 I/O 接口时,分时复用为低 8 位地址总线和双向数据总线。 P1 口 :可作为准双向输入 /输出接口,对于 52 子系列 , 和 还可分别作为定时 /计数器 2 的计数 脉冲 输入 端 T2 和 外部控制端 T2EX。 P2 口 :可作为准双向输入 /输出接口,在接有片外 存储器或扩展 I/O 接口且寻址范围超过 256 个字节时, P2 口用于高 8 位地址总线。 P3 口 : 除了作为一般的 I/O 口线外,更重要的用途是它的第二功能 ,详见表。 表 P3口的第二功能 引脚号 功能特性 RXD (串行输入口) TXD (串行输出口) 0INT (外部中断 0请求输入端) 1INT (外部中断 1请求输入端) T0 (定时器 /计数器 0计数脉冲输入端) T1 (定时器 /计数器 1计数脉冲输入端) WR (片外数据存储器写选通信号输出端 攀枝花学院本科综合实验论文 9 RD (片外数据存储器读选通信号输出端) RST: 复位 输入。 当振荡器工作时, RST 引脚出现两个机器周期以上高电平将使单片机复位。 ALE/PROG: 当访问外部程序存储器或数据存储器时, ALE(地址锁存允许)输出脉冲用于锁存地址的低 8 位字节。 一般情况下, ALE 仍以时钟振荡频率的1/6 输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。 要注意的是:每当访问外部数据存储器时将跳过一个 ALE 脉冲。 PSEN: 程序储存允许( PSEN)输出是外部程序存储器的读选通信号,当AT89C52 由外部程序存储器取指令(或数据)时,每个机器周期两次 PSEN 有效,即输 出两个脉冲。 在此期间,当访问外部数据存储器,将跳过两次 PSEN 信号。 EA/VPP: 外部访问允许。 欲使 CPU 仅访问外部程序存储器(地址为0000H— FFFFH), EA 端必须保持低电平(接地)。 需注意的是:如果加密位 LB1 被编程,复位时内部会锁存 EA 端状态。 如 EA 端为高电平(接 Vcc 端), CPU 则执行内部程序存储器中的指令。 Flash 存储器编程时,该引脚加上 +12V 的编程允许电源 Vpp,当然这必须是该器件是使用 12V 编程电压 Vpp。 XTAL1: 振荡器反相放大器的及内部时钟发生器的输入端。 XTAL2: 振荡器反相放大器的输出端。 中断系统 ( 1)中断源 AT89C52 是一个多中断源单片机,有五个中断源:外部中断 0、定时器 0 中断、外部中断 定时器 1 中断和串行接受或发送中断。 各中断源的中断处理程序入口地址如下表 所示。 表 中断向量表 (2) 中断控制 中断的开发或禁止是由中断允许寄存器 IE 控制的。 IE 的格式如下: EA ES ET1 EX1 ET0 EX0 EA中断允许位。 EA=1,开放总中断,而各个中断源的中断请求允许还是禁中断源 入口地址 外部中断 0 0003H 定时器 0 000BH 外部中断 1 0013H 定时器 1 001BH 串行口 0023H 攀枝花学院本科综合实验论文 10 止,分别由各自的中断允许位确定; EA=0,禁止一切中断。 ES串行口中断允许位。 ET1 和 ET0 分别是定时器 T1 和 T0 的中断允许位。 EX1 和 EX0 分别是外部中断 1( INT1)和外部中断 0( INT0)的中断允许位。 中断源优先级控制 — 中断优先级寄存器 IP。 AT89C52 单片机有高低两个中断优先级, 5 个中断源可由程序设置为高优先级中断,实现二级中断嵌套。 一个正在执行的低优先级中断源的中断服务程序,能被高优先级中断源所中断,但不能被同级别的另一个中断源所中断。 AT89C52的 5 个中断源的优先级由中断优先级寄存器的 IP 的相应位设定。 IP 的格式如许下: PS PT1 PX1 PT0 PX0 PS 是串行口中断优先级控制位。 PT1 和 PT0 分别是定时器 T1 和 T0 的中断优先级控制位。 PX1 和 PX0 分别是外部中断 INT1 和 INT0 的中断优先级控制位。 中断优先级控制位的意义是: 0 设定为低优先级中断源; 1 设定为高优先级中断源。 如果同优先级的多个中断请求同时出现时,则按照 AT89C52 单片机的CPU 查询次序 确定哪个中断请求被响应,起查询次序为: IE0、 TF0、 IE TFR1 或 T1 (3)定时系统 在控制系统中,常常要求有一些实时时钟以实现定时或延时控制,如定时中断、定时检测、定时扫描等,也往往要求有计数器能对外部事件计数。 AT89C52单片机有两个定时器,称为定时器 0( T0)和定时器 1( T1)。 定时器结构 AT89C52 单片机的定时器又计数器 0、计数器 方式控制寄存器和定时器控制寄存器组成。 计数器 0 和计数器 1 分别由 8 位计数器 TH0、 TL0 和 THTL1 构成。 TH0、 TL0、 TH TL1 是不能位 寻址的特殊功能寄存器,通过对 TH0、TL0、 TH TL1 的初始化编程来控制 T0 和 T1 的计数初值。 AT89C52 单片机的两个计数器 TH0、 TL0 和 TH TL1 可以构成 16 位的计数器、 13 位的计数器和 8 位的计数器。 计数器是定时器 T0 和 T1 的核心,它可以对引线 T0 和 T1 来的外部事件计数;也可以对单片机的机器周期计数。 一个机器周期等于 12 个振荡脉冲周期,因此计数频率为振荡频率的 1/12。 这样,不但可以根据计数值计算出定时事件,也可以反过来安定时时间的要求来计算出计算器的预置值。 计数器是加法计数器,所以预置的计 数初值应为计数值的补码。 攀枝花学院本科综合实验论文 11定时器的工作方式 AT89C52 单片机的 T0 有方式 0、方式 方式 2 和方式 3 四种工作方式;T1 有方式 0、方式 1 和方式 2 三种工作方式。 工作方式控制器 TMOD:TMOD 寄存器是不能寻址的特殊功能寄存器,用于控制 T1 和 T0 的工作方式,各位的定于如下: GATE C/T M1 M0 GATE C/T M1 M0 TMOD 的高半字节和低半字节的定义相同,高半字节用于控制 T1,低半字节用于控制 T0,其中, GATE 是门控位。 GATE 为 1 时,定时器的计数器受外部引线 INT0 或 INT1 的输入电平 的控制,输入高电平计数,输入低电平停止计数,这时可以用于测量在 INTX 引线出现的正脉冲宽度; GATE 为 0 时,定时器的计数不受 INT0 或 INT1 的控制。 C/T 是定时器和计数器的选择位。 C/T 为 1,选择计数器方式,计数器 THi和 TLi 对 Ti 引线输入的外部事件计数; C/T 为 0,选择定时器方式,计数器 THi和 TLi 对机器周期计数。 M1 和 M0 是定时器的工作方式选择位。 M1 和 M0 这 2 位有 0011 四个状态,分别选择方式 0( 13 位定时器)、方式 1( 16 位定时器)、方式 2( 8 位自动重装定时器)和方式 3( T0 分成两个 8 位 的定时器)。 存储芯片 AT24C02 AT24C02 是美国 atmel 公司的 低功耗 CMOS 型 EEPROM,内含 256 8 位存储空间 ,具有工作电压宽 (~)、擦写次数多、写入速度快、抗干扰能力强、数据不易丢失、体积小等特点。 而且它是采用了 I2 C 总线式进行数据读写的串行器件,占用很少的资源和 I/O 线,并且支持在线编程,进行数据实时的存取十分方便, AT24C02 中带有的片内地址寄存器。 每写入或读出一个数据字 节后,该地址寄存器自动加 1,以实现对下一个存储单元的读写。 所有字节均以单一操作方式读取。 为降低总的写入时间,一次操作可写入多达 8 个字节的数据。 I2 C总线是一种用于 IC 器件之间连接的二线制总线。 他通过 SDA 及 SCL 两根线在连到总线上的器件之间传递信息 ,并根据地址识别每个器件。 AT24C02 正是运用了 I2 C 规程,使用主 /从机双向通信,主机和从机均可工作于接收器和发送器状态。 主机产生串行时钟信号并发出控制字,控制总线的传送方向,并 产生开始和停止的条件。 无论是主机还是从机,接收到一个字节 后必须发出一个确认信号ACK。 AT24C02 的控制字由 8 位二进制数构成,在开始信号发出以后,主机便会发出控制字,以选择从机并控制总线的传送方向。 仿真过程中用 24C02C 代替芯片 AT24C02。 管脚如图 所示。 管脚描述: 攀枝花学院本科综合实验论文 12 SCL 为串行时钟: 串行时钟输入管脚用于产生器件所有数据发送或接收的时钟,这是输入管脚。 SDA 为串行数据 /地址: 双向串行数据 /地址管脚用于器件所有数据的发送或接收,是一个开漏输出管脚可与其他开漏输出或集成电极开路输出进行线或。 A0、 A A2 为器件地址输入端: 当使用 24C02 时最大可级联 8 个器件,如果只有一个 24C02 被总线寻址,这三个地址输入脚 A0、 A A2 可以悬空或连接到 VSS。 WP 为写保护位: 如果 WP 管脚连接到 VCC,所有的内容都被写保护只能读,当 WP 连接到VSS 或悬空,允许器件进行正常读 /写操作。 图 AT24C02 引脚图 LM032L 显示器 现在的字符型液晶模块已经是单片机应用设计中最常用的信息显示器件了。 LM032L 型 LCD 显示模块具有体积小,功耗低,显示内容丰富等特点。 LM032L型 LCD 可以显示 2 行 20 个字符,有 8 位数据总线 D0~D7 和 RS, RW, E 三个控制端口,工作电压为 5V,并且具有字符对比度调节功能。 接口信号说明: LM032L 型 LCD 的接口信号说明如表 所示。 表 LM032L 型 LCD 的接口信号说明 基本操作程序: 读状态:令 RS=L, RW=L, E=H 输出: D0~D7=状态字 读数据:令 RS=H, RW=H, E=H 输出:无 攀枝花学院本科综合实验论文 13 写指令:令 RS=L, RW=L, D0~D7=指令码, E=高脉冲 输出 D0~D7=数据 写数 据:令 RS=H, RW=L, D0~D7=数据, E=高脉冲 输出:无 单片机最小系统 设计 主控芯片 AT89C52 的 XTAL2, XTAL1引脚外接上 12MHz石英晶体以及 30pF电容 C2 和 C3,构成并联谐振电路,在 RST 脚上外接按键与上电复位电路,在VCC 引脚接上 +5V 电压, EA 脚上接高电平, VSS 接地,就构成了单片机最小系统,如图 所示。 接通 +5V 电源后,用示波器检测 XTAL2 有无脉冲信号,在ALE/PROG 上检测到 12/6MHz 的脉冲,系统就可以进行工作。 图 AT89C52最小单片机系统结构图 键盘输入模块 由于本设计所用到的按键数量较多而不适合用独立按键式键盘。 所以采用的是矩阵式按键键盘,它由行和列组成 ,也称行列式键盘,按键位于行列的交叉点上,密码锁的密码由键盘输入完成,与独立式按键键盘相比,要节省很多 I/O口。 本设计中使用的这个 4 4键盘不但能完成密码的输入还能做特别功能键使用。 键盘的每个按键功能在程序设计中设置。 键盘如图。 攀枝花学院本科综合实验论文 14 图 键盘输入模块 密码存储 模块 如图。 AT24C02的 3脚是三条地址线,用于确定芯片的硬件地址,在 A。基于单片机实现电子密码锁的设计综合实验论文
相关推荐
ei2=P1^1。 sbit Been=P1^2。 sbit AN1=P3^3。 sbit AN2=P3^4。 sbit AN3=P3^5。 sbit AN4=P3^6。 sbit AN5=P3^7。 sbit D1=P1^3。 sbit D2=P1^4。 sbit D3=P1^5。 sbit D4=P1^6。 sbit D5=P1^7。 unchar table[]={0x3f, 0x06,
作键盘时,单片机的电源端才能得到 3V 电源,否则.单片机处于节电工作方式。 开锁步骤如下:首先按下键盘上的开锁按键,然后利用键盘上的数字键 0- 9 输入密码,最后按下确认键。 当用户输入一密码后,单片机自动识码,如果识码不符,则报警。 只有当识码正确,单片机才能控制电子锁内的微型继电器吸台。 当继电器吸台以后带动锁杆伸缩,这时,锁勾在弹簧的作用下弹起,完成本次开锁。 开锁以后
, 20H RET KS: PUSH PSW。 P0口数据处理子程序 CLR RS1 SETB RS0 MOV P1, 0FFH MOV A, P1 CPL A ANL A, 0FH MOV 20H, A CLR RS1 CLR RS0 POP PSW RET DIR: MOV R7, 20。 延时去抖动子程序 WW: MOV R3, 248 DJNZ R3, $ DJNZ R7, WW RET
} //写入数据: d for (i = 0。 i 8。 i ++) { if (d amp。 0x01) { SDA=1。 } else { 22 SDA=0。 } SCK=1。 SCK=0。 d = d 1。 } RST=0。 //停止 DS1302 总线 } //*************************从 DS1302 读出一字节数据 unsigned char
类科技的进步,科技改变生活,从设计中,我们还可以发现单片机在控制系统中无限的潜力,只要我们改变控制器中的程序,可以控制不同的设备,体现了集成芯片的共享性,可节约大量的的硬件资源。 当然,该系统还存 在不完善之处,它只是显现了一些基本功能,其开发潜力还很大,不如温度测试、计时、记费等功能,这有待以后继续开发 通过此次多功能数字钟设计制作,我们将从书本上学到的知识应用于实践,虽然过程中遇到了一些困难
} //写入数据: d for (i = 0。 i 8。 i ++) { if (d amp。 0x01) { SDA=1。 } else { 22 SDA=0。 } SCK=1。 SCK=0。 d = d 1。 } RST=0。 //停止 DS1302 总线 } //*************************从 DS1302 读出一字节数据 unsigned char