电子密码毕业论文(编辑修改稿)内容摘要:

许器件进行正常的读 /写操作 I2C 总线协议 I2C 总线协议定义如下 1 只有在总线空闲时才允许启动数据传送 2 在数据传送过程中当时钟线为高电平时数据线必须保持稳定状态不允许有跳变时钟线为高电平时数据线的任何电平变化将被看作总线的起始或停止信号 起始信号 时钟线保持高电平期间数据线电平从高到低的跳变作为 IC 总线的起始信号 停止信号 时钟线保持高电平期间数据线电平从低到高的跳变作为 I2C 总线的停止信号 LCD1602 显示器介绍 图 LCD1602 1602 液晶也叫 1602 字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵 型液晶模块。 它由若干个 5X7 或者 5X11 等 点阵 字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形(用自定义 CGRAM,显示效果也不好)。 1602LCD 是指显示的内容为 16X2,即可以显示两行,每行 16 个字符液晶模块(显示字符和数字)。 目前市面上字符液晶大多数是基于 HD44780 液晶芯片的,控制原理是完全相同的,因此基于 HD44780 写的控制程序可以很方便地毕业论文 (设计 ) 电子密码锁的设计 12 应用于市面上大部分的字符型液晶。 LCD1602 引脚说明 第 1 脚: VSS 为 电源地 第 2 脚: VCC 接 5V 电源正极 第 3 脚: V0 为液晶显示器对比度调整端,接正电 源时对比度最弱,接地电源时对比度最高(对比度过高时会 产生 “ 鬼影 ” ,使用时可以通过一个 10K 的电位器调整对比度)。 第 4 脚: RS 为 寄存器 选择,高电平 1 时选择 数据寄存器 、低电平 0 时选择 指令寄存器。 第 5 脚: RW 为读写信号线,高电平 (1)时进行读操作,低电平 (0)时进行写操作。 第 6 脚: E(或 EN)端为使能 (enable)端 ,高电平( 1)时读取信息,负跳变时执行指令。 第 7~ 14 脚: D0~ D7 为 8 位双向数据端。 第 15~ 16 脚: 空脚 或背灯电源。 15 脚背光正极, 16 脚背光负极。 硬 件电路设计 本设计有单片机 [7],矩阵键盘,液晶显示器和密码存储等部分组成。 其中矩阵键盘用于输入数字密码和进行各种功能的实现。 由用户通过连接单片机的矩阵键盘输入密码,后经过单片机对用户输入的密码与自己保存的密码进行对比,从而判断密码是否正确,然后控制引脚的高低电平传到开锁电路或者报警电路控制开锁还是报警。 硬件部分由电源输入部分、键盘输入部分、复位部分、晶振部分、显示部分、报警部分组成。 复位电路 单片机复位是使 CPU 和系统中的其他功能部件都处在一个确定的初始状态,并从这个状态开始工作,例如复位 后 PC= 0000H,使单片机从第 — 个单元取指令。 无论是在单片机刚开始接上电源时,还是断电后或者发生故障后都要复位。 在复位期间(即 RST 为高电平期间), P0 口为高组态, P1- P3 口输出高电平;外部程序存储器读选通信号 PSEN 无效。 地址锁存信号 ALE 也为高电平。 根据实际情况选择如图34 所示的复位电路。 该电路在最简单的复位电路下增加了手动复位按键,在接通电源瞬间,电容 C1 上的电压很小,复位下拉电阻上的电压接近电源电压,即 RST为高电平,在电容充电的过程中 RST 端电压逐渐下降,当 RST 端的电压小于某一数 [7] 毕业论文 (设计 ) 电子密码锁的设计 13 值后, CPU 脱离复位状态,由于电容 C1 足够大,可以保证 RST 高电平有效时间大于24 个振荡周期, CPU 能够可靠复位。 增加手动复位按键是为了避免死机时无法可靠复位。 当复位按键按下后电容 C1 通过 R5 放电。 当电容 C1 放电结束后, RST 端的电位由 R1 与 R2 分压比决定。 由于 R11R15 因此 RST 为高电平, CPU 处于复位状态,松手后,电容 C1 充电, RST 端电位下降, CPU 脱离复位状态。 R1 的作用在于限制按键按下瞬间电容 C1 的放电电流,避免产生火花,以保护按键触电。 图 复位电路 晶振电路 AT89C51[8]引脚 XTAL1 和 XTAL2 与晶体振荡器及电容 C C1 按图 35 所示方式连接。 晶振、电容 C2/ C3 及片内与非门(作为反馈、放大元件)构成了电容三点式振荡器,振荡信号频率与晶振频率及电容 C C2 的容量有关,但主要由晶振频率决定,范围在 0~ 33MHz 之间,电容 C C3 取值范围在 5~ 30pF 之间。 根据实际情况,本设计中采用 12MHZ 做系统的外部晶振。 电容取值为 22pF。 图 晶振电路 存储电路 与 400KHzI2C 总线兼容 , 到 伏工作电压范围 , 低 功耗 CMOS 技术 ,写保 [8] 毕业论文 (设计 ) 电子密码锁的设计 14 护功能 W 为高电平时进入写保护状态 , 页写缓冲器 , 自定时擦写周期 , 1,000,000编程 /擦除周期 可保存数据 100 年 , 8 脚 DIP SOIC 或 TSSOP 封装。 CAT24WC01/02/04/08/16 是一个 1K/2K/4K/8K/16K 位串行 CMOS E2PROM 内部含有 128/256/512/1024/2048 个 8 位字节 CATALYST 公司的先进 CMOS 技术实质上减少了器件的功耗 CAT24WC01 有一个 8 字节页写缓冲器 CAT24WC02/04/08/16 有一个 16字节页写缓冲器 该器件通过 I2C 总线接口进行操作有一个专门的写保护功能。 CAT24WC01/02/04/08/16 支持 I2C 总线数据传送协议 I2C 总线协议规定 , 任何将数据传送到总线的器件作为发送器 , 任何从总线接收数据的器件为接收器 , 数据传送是由产生串行时钟和所有起始停止信号的主器件控制的 , 主器件和从器件都可以作为发送器或接收器 , 但由主器件控制传送数据 , 发送或接收的模式。 图 存储电路 键盘输入电路 由于本设计所用到的按 键数量较多而不适合用独立按键式键盘。 采用的是矩阵式按键键盘,它由行线和列线组成,也称行列式键盘,按键位于行列的交叉点上,密码锁的密码由键盘输入完成,与独立式按键键盘相比,要节省很多 I/O 口。 本设计中使用的这个 4*4 键盘不但能完成密码的输入还能作特别功能键使用,比如清空显示功能等 [13]。 键盘的每个按键功能在程序设计中设置。 其大体功能(看键盘按键上的标记)及与单片机引脚接法 毕业论文 (设计 ) 电子密码锁的设计 15 图 键盘输入电路 显示电路 本设计的显示部分由液晶显示器 LCD1602 取代普通的数码管来完成。 当需要对密码 锁进行开锁时,按下键盘上的开锁按键后利用键盘上的数字键 0- 9 输入密码,每按下一个数字键后在显示器上显示一个 *,输入多少位就显示多少个 *。 当密码输入完成时,按下确认键,如果输入的密码正确的话, LCD 子显示 “ OK” , 亮绿色LED, 如果密码不正确, LCD 显示屏会显示 “ERROR” , 亮红色 LED. 1602LCD 主要技术参数: 显示容量 :162 个字符 芯片工作电压 :— 工作电流 :() 模块最佳工作电压 : 毕业论文 (设计 ) 电子密码锁的设计 16 图 显示电路 报警电路 报警部分由 陶瓷压电发声装置及外围电路组成,加电后不发声,当有键按下时,“ 叮 ” 声,每按一下,发声一次,密码正确时,不发声直接开锁,当密码输入错误时,单片机的 引脚为低电平,发出噪鸣声报 图 报警电路 毕业论文 (设计 ) 电子密码锁的设计 17 第四章 软件程序设计 本系统软件设计 [9][10]由主程序、初始化程序、 LCD 显示程序、键盘扫描程序、键功能程序、密码设置程序、 EEPROM 读写程序和延时程序等组成。 主流程 图 如图 41 所示为主程序流程图,开始接上电源,程序进行初始化设置,然后在键盘上输入密码,此系统进行键盘扫描,密码 正确,开锁成功, 绿灯亮。 密码错误则 出错报警 ,蜂鸣器响。 选择是否修改密码,若要修改密码,先输入旧密码密码,密码正确后设置新密码,确认后,密码修改成功,否则结束最终返回。 然后启动程序,进行保护,再次在键盘上输入密码,系统进行扫描,如果和之前一样,则执行相同程序,如不是,则执行另一种程序。 图 主流程图 按键 子程序 uchar scan(void) { uchar row,col。 uchar j,m。 P1=0xF0。 [9] [10] 毕业论文 (设计 ) 电子密码锁的设计 18 if((P1amp。 0xF0)!=0xF0) { delay(1)。 if((P1amp。 0xF0)!=0xF0) col=~(P1|0x0F)。 j=0。 P1=a[j]。 while(j=3) { if((P1amp。 0xF0)!=0xF0) { row=~a[j]。 break。 } else {j++。 P1=a[j]。 } } m=row+col。 return(m)。 } else return(0)。 } uchar coding(uchar m){ uchar k。 switch(m) { case(0x08+0x80):k=0。 break。 case(0x08+0x40):k=1。 break。 case(0x08+0x20):k=2。 break。 case(0x08+0x10):k=3。 break。 case(0x04+0x80):k=4。 break。 case(0x04+0x40):k=5。 break。 case(0x04+0x20):k=6。 break。 case(0x04+0x10):k=7。 break。 case(0x02+0x80):k=8。 break。 case(0x02+0x40):k=9。 break。 case(0x02+0x20):k=10。 break。 case(0x02+0x10):k=11。 break。 case(0x01+0x80):k=12。 break。 case(0x01+0x40):k=13。 break。 case(0x01+0x20):k=14。 break。 case(0x01+0x10):k=15。 break。 } 毕业论文 (设计 ) 电子密码锁的设计 19 return(k)。 } 密码设置子程序 void setpassword() { uchar tmp,key,i=0。 write_(0x38)。 write_(0x0c)。 write_(0x06)。 write_(0x01)。 gotoxy(1,0)。 write_str( )。 gotoxy(1,10)。 write_str(SET )。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。