基于单片机实现电子密码锁内容摘要:
完成。 其原理图如图 31所示。 图 31 电路原理图 键盘输入模块 由于本设计所用到的按键数量较多而不适合用独立按键式键盘。 采用的是矩阵式按键键盘,它由行和列组成,也称行列式键盘,按键位于行列的交叉点上,密码锁的密码由键盘输入完成,与独立式按键键盘相比,要节省很多 I/O口。 本设计中使用的这个 4 4键盘不但能完成密码的输入还能作特别功能键使用。 键盘的每个按键功能在程序设计中设置。 它与单片机的连接如图 32所示。 图 32 键盘输入模块 密码存储模 块 图 33所示 AT24C02 的 3脚是三条地址线,用于确定芯片的硬件地址。 在 AT89S51 试验开发板上它们都接地,第 5 脚和第 8脚分别为正、负电源。 第 8江苏信息职业技术学院 2020 届毕业设计(论文) 6 脚 SDL 为串行数据输入 /输出,数据通过这条双向 I178。 C 总线串行传送,在 AT89S52试验开发板上和单片机的。 第 6脚 SCL 为串行时钟输入线,在 AT89S52试验开发板上和单片机的。 SDL和 SCL 都需要和正电源间各接一个 的电阻上拉。 第 6脚接。 AT24C02 中带有片内地址寄存器。 每写入或读出一个数据字节后,该地址寄存器自 动加 1,以实现对下一个存储单元的读写。 所有字节均以单一操作方式读取。 为降低总的写入时间,一次操作可写入多达 8 个字节的数据。 图 33 密码存储电路 复位部分 单片机复位是使 CPU和系统中的其他功能部件都处在一个确定的初始状态,并从这个状态开始工作。 该电路在最简单的复位电路下增加了手动复位按键,在接通电源瞬间,电容 C1上的电压很小,复位下拉电阻上的电压接近电源电压,即 RST为高电平,在电容充电的过程中 RST端电压逐渐下降,当 RST端的电压小于 某一数值后, CPU脱离复位状态,由于电容 C1足够大, 可以保证 RST高电平有效时间大于24个振荡周期, CPU能够可靠复位。 增加手动复位按键是为了避免死机时无法可靠复位。 当复位按键按下后电容 C1通过 R5放电。 当电容 C1放电结束后, RST端的电位由 R5与 R6分压比决定。 由于 R5R6 因此 RST为高电平, CPU处于复位状态,松手后,电容 C1充电, RST端电位下降, CPU脱离复位状态。 R5的作用在于限制按键按下瞬间电容 C1的放电电流,避免产生火花,以保护按键触电。 其电路如图 34所示。 江苏信息职业技术学院 2020 届毕业设计(论文) 7 图 34 复位电路 晶振部分 AT89S52引脚 XTAL1和 XTAL2与晶体振荡器及电容 C C3按图 45所示方式连接。 晶振、电容 C2/ C3及片内与非门(作为反馈、放大元件)构成了电容三点式振荡器,振荡信号频率与晶振频率及电容 C C3的容量有关,但主要由晶振频率决定,范围在 0~ 33MHz之间,电容 C C3取值范围在 5~ 30pF之间。 根据实际情况,本设计中采用 12MHZ作为系统的外部晶振。 电容取值为 10pF。 其电路图如图 35所示。 图 35 晶振电路 显示模块 显示部分由液晶显示器 LCD1602取代普通的数码管完成。 开锁时,按下 键盘上的开锁按键后,利用键盘上的数字键 0- 9输入密码,每按下一个数字键后在显示器上显示一个 *,输入多少位就显示多少个 *。 当密码输入完成时,按下确认键,如果输入的密码正确的话, LCD显示“ DOOR OPEN”,单片机其中 低电平,使三极管 T2导通,电磁铁吸合,继电器开关跳转,电子密码锁被打开,如果密码不正确, LCD显示屏会显示“ CODE WRONG”, ,电子密码锁不能打开。 通过 LCD显示屏,可以清楚地判断出密码锁所处的状态。 电路图如图 36所示。 江苏信息职业技术学院 2020 届毕业设计(论文) 8 图 36 显示电路 报警部分 报警部分由陶瓷压电发声装置及外围电路组成,加电后不发声,当有键按下时,“叮”声,每按一下,发声一次,密码正确时,不发声直接开锁,当密码输入错误时,单片机的 ,三极管 T3导通蜂鸣器发出噪声报警。 如图 37所示。 图 37 报警电路 开锁部分 开锁控制电路的功能是当输入正确的密码后将锁打开。 系统使用单片机其中一引脚线发出信号,经三极管放大后,由继电器驱动电磁阀动作将锁打开。 用户通过键盘任意设置密码,并储存在 E2PROM中作为锁码指令。 只有用 户操作键盘时,单片机的电源端才能得到 3V电源,否则,单片机处于节电工作方式。 开锁步骤如下:首先按下键盘上的开锁按键,然后利用键盘上的数字键 0- 9输入密码,最后按下确认键。 当用户输入密码后,单片机自动识别密码,如果密码不符,则报警。 只有当密码正确,单片机才能使继电器处于开锁状态。 具体电路如图 38所示。 图 38 开锁电路 江苏信息职业技术学院 2020 届毕业设计(论文) 9 4 系统软件设计 系统程序流程图 主程序流程图 主程序设计流程图如图 41所示。 图 41主程序流程图 开始 初始化 开锁 修改 密码正确 输入旧密码 开锁 出错报警 原密码相同 返回 设新密码 江苏信息职业技术学院 2020 届毕业设计(论文) 10 键功能程序流程图 键功能程序流程图如图 42所示。 Y N Y N Y N Y N 图 42 键功能流程图 开锁程序流程图 开锁程序流程图如图 43所示。 键功能程序 键值 =0~9。 键值 =开锁。 键值 =确认。 键值 =设置。 返回 密码输入程 序 确认程序 设置程序 开锁程序 江苏信息职业技术学院 2020 届毕业设计(论文) 11 Y 图 43 开锁流程图 子程序举例 开 锁子程序 CL:NOP SETB L3 MOV BUFF, 00H。 消密码缓冲 MOV TIMERS,00H 开锁 LCD 初始化 输入密 码 按开锁键 报警程序 确认程序 输入密码正确。 开锁成功 返回 N 江苏信息职业技术学院 2020 届毕业设计(论文) 12 LCALL INITPS。 消除 AT 缓冲,加调电存储后一定要加上 LCALL XSC LCALL BP LCALL BP LCALL T100MSD LCALL BP CLR FLAG1 AJMP CH_KEY FU4:NOP LCALL BP LCALL T100MSD LCALL BP LCALL T100MSD LCALL BP LCALL T100MSD LCALL BP LCALL T100MSD LCALL BP CLR FLAG1 AJMP CH_KEY FU3:NOP LCALL BP LCALL T100MSD LCALL BP LCALL KILLXS。 关闭显示 CLR FLAG1 AJMP CH_KEY FU1:NOP LCALL XSC JB F_F1, NEXT_F1 CLR L1 LCALL BP SETB F_F1 AJMP CH_KEY NEXT_F1:SETB L1 LCALL BP CLR F_F1 LCALL CH_STATE。基于单片机实现电子密码锁
相关推荐
六、附录 系统总硬件电路原理图 include include include include define PCF8591 0x90 //PCF8591 地址 define AT24C02 0xa0 // AT24C02 地址 sfr AUXR = 0x8E。 define uchar unsigned char define uint unsigned int sbit sda=P2^0。
度,可编程为 9位~ 12 位转换精度,测温分辨率可达 摄氏度,分辨率设定参数以及用户设定的报警温度存储在 EEPROM 中,掉电后依然保存。 被测温度用符号扩展的 16位数字量方式串行输出;其工作电源既可以在远端引入,也可以采用寄生电源方式产生;多个 DS18B20可以并联到 3 根或 2 根线上, CPU只需一 根端口线就能与诸多 DS18B20 通信,占用微处理器的端口较少
经过一个放大电路即可发送给 ADC0804 采集,信号经过 A/D 转换模块后传送进入单片机进行 4 处理。 单片机内部程序中预先设定报警临界 值,包括温度过高报警和气体浓度过高报警。 单片机正常工作后,判断所接收到的数据是否达到报警临界值,如果到达报警值单片机控制蜂鸣器和 LED 灯进行报警,如果没有达到报警值单片机继续接收并处理新数据。 如果单片机接收到报警按键信号,直接报警。 单片机实时向
温度来洗涤可充分溶解洗衣粉,加快洗衣粉中弱酸性物质与污物的化学反应速度,提高洗衣粉中酶的活性,同时有利于溶解汗渍, 血渍,降低灰尘,油污的粘附作用,从而可在同样的洗净比下大幅度降低洗涤过程对机械力的需求。 3) 温度高有利于污物在水中的扩散。 4) 高温能有效的杀死一些细菌。 没有 加温的洗涤的波轮式洗衣机无论怎样的水流,要达到一定的洗净比,都必须有足够的机械力,而机械力对衣物是由损伤的
库设备较多,相互连锁繁杂 统。 江苏科技大学南徐学院本科毕业论文 11 控制过程具有很强的时序性。 现场环境恶劣,粉尘、潮湿、振动、噪声、电磁干扰都比较严重,给电设备运行及检修都带来不便。 整个系统控制分散,覆盖距离远。 立体车库监控系统的主要功能 为了保证一次设备运行的可靠与安全,需要有许多辅助电气设备为之服务,能够实现某项控制功能的若干个电器组件的组合,称为控制回路或二次回路。
begin//倒 计时 case(countm) 1:begin//主干道的 绿 灯倒 计时 if(numm6) begin if(numm[3:0]==0) begin numm[3:0]=9。 numm[7:4]=numm[7:4]1。 lampm[1]=1。 end else begin numm[3:0]=numm[3:0]1。 lampm[1]=1。 end end else