控制/MCU
电子密码锁是一种通过密码输入来控制电路或是芯片工作,从而控制机械开关的闭合,完成开锁、闭锁任务的电子产品。它的种类很多,有简易的电路产品,也有基于芯片的性价比较高的产品。应用较广的电子密码锁是以芯片为核心,通过编程来实现的。
(1)、开始执行时数码管每一位都显示“米”,点输入密码数码管只有第一位显示“米”,点击数字键进行数字选择;
(2)、按下“确认”键后跳到第二个数字,操作同第一步;
(3)、当四个密码选中完毕,按下“确认输入”键,显示输入的密码;
(4)、按下“开锁”键,若密码正确,同时显示*YES,密码锁打开;
(5)、按下“开锁”键,若密码错误,则显示ERRO,密码锁不能打开,按下“输入密码”键,即可重新输入密码。
(1)、在显示*YES时,按下“更改密码”键后,输入新的四位密码;
(2)、按下“确认输入”键,显示新密码,按下“确认”键,即可设定新密码。
若输入错误密码超过5次,警报会自动响起,只有再次输入正确密码后方可解除警报。
第一片8255
定义A.B.C口都为输出状态,A.B口控制数码管的输入口,对应相应的段码表,来显示。C口的PC0,PC1经过2-4译码器,来激活数码管1,2,3,4通道,并采用00,01,10,11,循环输出的方式,使数码管通道循环激活,实现动态显示。
第二片8255
定义A,B,C口都为输入状态,对应输入相应的按钮状态,对应相应的程序,实现相应功能。
使用0通道,方式3,对输入的始终信号分频,当输入密码次数大于5次时,初始化8253,并发出警报提示声。当输入密码正确后,激活1通道,警报提示声接触。
由于8086运行速度过快,数码管动态显示出现显示不全的现象,因此PC0,PC1输出经过2-4译码器之后,再激活数码管,起到缓冲作用。
16位数码管的数码管,由16个引脚控制,低电平有效,其中A-H控制外圈0, K-M控制内部*
S1-s4是通道控制,高电平有效。
本实验设计中,硬件部分涉及到了8086CPU、可编程并行接口8255A,并配合74LS373锁存器、74LS245缓冲器、74LS138译码器等基本元器件,实现了设想的电子密码锁。
8255A:如图,8255A的D0~D7端口与CPU数据线ADO~AD7相接,CPU通过控制线的片选、读、写信号接口对8255A进行读、写与片选操作。外设接口端的A0-A7八个开关连接245的A0-A7端口,将外设信息传送到245中,键入密码输入、密码确定、修改密码等多种功能。
如图,A口的PA0-PA7端口通过锁存器与数码管相连用于外圈显示,B口的PB0-PB7端口通过74LS373锁存器与数码管进行连接用于内部“米”字格的显示。
给8255A输入端口控制字: void fun82531()
{
__asm
{
mov dx, 0x8006
mov al, 0x37
out dx, al
}
outp(GATE0,0x02);
outp(GATE0,0x00);
}
void fun82532()
{
__asm
{
mov dx, 0x8006
mov al, 0x77
out dx, al
}
outp(GATE0,0x99); outp(GATE0,0x99); }
整个过程中主要是对是否有按键信息输入进行扫描判断,并将所得信息与灯管编号进行比对,确定所选择要键入数字的灯管。当目前的灯管数字被选出后,自动跳到下一个灯管,直到四位数字全部选择完毕。
四位密码选出后,显示四位选定数字,然后检测密码正确性,8255A通过端口A、B、C读取指令,根据检测结果,密码正确则输出代码显示*YES,错误则显示ERRO。
更改密码,键入“更改密码”控制字后,与输入密码的流程相同,先选择灯管,待选定数字后跳至下一个,直到四位数字全部选定,然后键入“确认更改”指令,则密码更改成功。
系统实现
如图,为本实验的Proteus仿真模拟图,整个实验共用到8086CPU一个、74LS245一个、可编程并行接口8255A一个,74LS273锁存器三个、74LS138译码器一个、数码管一个、与非门两个、开关八个、电阻八个。
全部0条评论
快来发表一下你的评论吧 !