数电课程设计电子密码锁..doc
文本预览下载声明
数字逻辑设计
课程设计报告书
题目名称:电子密码锁
学 院:光 电 信 息 学 院
小组成员:钟永捷2011059080024
侯晨涛2011059170003
徐 昊2011059060029
指导教师:李 力
日 期: 2013年6月28日
小组成员分工情况
侯晨涛:所有编程工作、资料查找 工作量:60%
钟永捷:辅助编程、图表制作、资料查找 工作量:20%
徐 昊:论文写作、图表制作、资料查找 工作量:20%
题目分析
输入信号
通过扫描键盘的行与检测键盘的列得到输入信号。
输出信号
通过译码器得到的显示器显示信息,开关锁动作。
设计总框图
各模块说明
键盘扫描模块
原理
通过时序信号产生脉冲,不间断地向矩阵键盘的行输入1110-1101-1011-0111的循环序列。同时将各列的电平置高,检测矩阵键盘各列的电平变化。若在一定时间内,扫描到第列电平为零时恰好第行的输入电平也为零,则判断键盘上位置上键被按下。
模块框图
状态表
此模块只需要通过编码器实现即可,假定前四位表示各行扫描结果,后三位表示各列扫描的结果。
动作 行输入 列输入 状态命名 编码输出 按下“0”键 0111 101 S0 0000 按下“1”键 1110 110 S1 0001 按下“2”键 1110 101 S2 0010 按下“3”键 1110 011 S3 0011 按下“4”键 1101 110 S4 0100 按下“5”键 1101 101 S5 0101 按下“6”键 1101 011 S6 0110 按下“7”键 1011 110 S7 0111 按下“8”键 1011 101 S8 1000 按下“9”键 1011 011 S9 1001 按下“#”键 0111 011 S10 1010 按下“*”键 0111 110 S11 1011
仿真结果
Key_in代表按键按下与否情况,Key_mem将其记录并输出,scan为行扫描信号,Key_out为按键输出值。如上仿真结果所示,当scan为1110时,扫描第一行。按下第一个键,即Key_in为110,此时Key_out为0001,即输出值为1。其它状态依此类推。
输入模块
原理
设置两个寄存器,一个作为用户所想设置密码的密码寄存器。另一个寄存器则是将键盘Input的键值存储起来。最后通过一个比较器将两个寄存器的值进行比较。若相同则输出“open”,反之,输出“error”。比较器内部通过多位异或门实现。
模块框图
状态图
仿真结果
删除字符
第一次输入值为0101,Number_sig第0到3位将其保存。第二次输入值为0011,Number_sig第4到7位将其保存。第三次输入值为0001,Number_sig第8到11位将其保存。第四次输入值为1010,即删除键。第五次输入值为0111,Number_sig第8到11位的值由0001变为0111,即实现了删除功能。
密码输入正确
Correct=1说明密码输入正确,Number_sig的值为000011001101111000000000,Number_sig的值通过七段显示译码器之后将使数码管显示OPEn00。
密码输入错误
Correct=1说明密码输入正确,Number_sig的值为110111111111000011110000,Number_sig的值通过七段显示译码器之后将使数码管显示ERROR0。
密码判断及更改
原理
密码判断模块:通过比较器将输入寄存器与存储寄存器中的数据进行比较,如果数据相同,则判断密码正确。如果数据不同,则返回输入等待状态,并对输入寄存器中的数据清零。
密码更改模块:将第一次与第二次输入寄存器中的数据输入比较器比较,如果数据相同则将该数据输入进密码存储寄存器中。如果数据不同,则返回数据输入前的数据等待状态。
模块框图
仿真结果
main_state为10000即update状态,按键六次输入值为0110,0110,0110,0110,0110,0010,第二次输入相同。即将密码由666666改为266666。第二次输入完成same为1,说明两次输入相同。按“#”键确认后。当状态变为01000时,即in_put输入密码Inputpd为001001100110011001100110即266666,correct为1说明密码修改成功并开锁。
主状态机
原理
状态分五个状态:Waits,Input,Pass,Update,Forbid。
在Waits状态下,摁下“#”进入密
显示全部