多功能密码锁-陈远宾.doc

  1. 1、本文档共13页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
多功能密码锁-陈远宾

课程设计—多功能密码锁 姓名:陈远宾 班级:电子3班 学号 课程设计—多功能密码锁 任务要求: 利用开发系统板设计一个多功能密码锁控制芯片。 利用开发板上的8个拨码开关设定开锁密码、输入开锁密码。8个LED灯显示工作状态以及输入密码正误提示。3个按键用来切换不同德模式,包括设定密码、开锁等。七段数码管用来显示输入密码的数值或者相应的编号。 系统的输入信号包括8个拨码开关和时钟信号,输出信号有8个LED、3个七段数码管。 多功能密码锁控制芯片需要8拨码开关,可以0~255,共计256个数,密码可以设定为0~255中任意一个数。2个按键可以作为控制开关,第一个按键代表设置密码状态,第二个按键代表上锁状态,第3个俺家那倒不输入密码开锁。同时8个发光二极管LED在不哦天哪状态下也有不同的含义: LED4: 设置密码信号灯 LED5: 上锁信号灯 LED6: 开锁信号灯 8个LED全亮: 密码错误,报警信号 系统的状态转换过程: 1. 当复位以后,系统进入等待状态,此时所有LED灯熄灭 2. 按下第一个键Keyin0,进入设置密码状态,表示设置密码。密码设置信号灯LED4亮,并且把拨码开关上的密码存入系统,有七段数码管显示此时的密码数据。 3. 按下第二个键Keyin1,进入锁定状态,即密码保护状态,上锁信号灯LED5亮,数码管显示“0”。 4. 处于锁定状态,按下第一个键Keyin0,系统判断密码(拨码开关代表的数值)是否正确,如果密码正确,则开锁信号灯LED6亮,表示开锁;如果密码错误,8个LED灯全亮,进入报警状态,表示报警。 5. 开锁之后,如果按下按键Keyin1,则可以再次锁定系统,等待下一次开锁操作。 二.系统设计 1.系统结构框图 多功能密码锁控制芯片系统结构框图如图: 2.系统原理分析 多功能密码分3个模块:分频模块、核心状态控制模块和按键与七段数码管控制。其中,分频器模块主要是产生供按键、七段数码管扫描的时钟,周期大约在0.001~0.0001s之间。同时,分频时钟也可以用于核心控制模块的基本控制,由于扫描时钟要和按键、七段数码管控制电路构成一个同步电路,因此,必须使用同一个分频时钟。 按键和七段数码管显示控制电路时对外部的控制以及动态显示硬件进行驱动,该模块嘟ianjia内进行扫描,输出经过扫描至后的按键结果,并且可以把核心模块输出的二进制显示数据转换为BCD吗,通过BCD译码和动态显示技术最终输出到动态七段数码管显示。 核心控制模块的作用是控制系统的状态。系统一共有5个状态,状态之间由外部按键和拨码进行切换,而状态显示则由LED灯以及数码管进行输出。 3.系统接口信号描述 多功能密码锁系统接口信号定义如表所示: 信号名 I/O 位宽 含义 clk 1 1bit 系统时钟输入 rst 1 1bit 系统复位信号 led 0 8bit 8个led数码管 boma 1 8bit 8个拨码开关 scan 0 4bit 动态显示扫描片选信号 m 0 7bit 七段数码管的段码控制信号 keyin0 1 1bit 矩阵键盘输入,2X4矩阵键盘第一行信号 keyin1 1 1bit 矩阵键盘输入,2X4矩阵键盘第二行信号 三.模块设计 1. 分频器模块设计 (1)模块原理分析。分频器完成由50MHz时钟产生0.001~0.0001s时钟的功能,原始 未分频时钟是50MHz,根据计算公式:n=T/2t,令n=5000,也就是每次计数5000个原始时钟周期以后就把输出的分频时钟信号反转一次。输出时钟频率而10KHz。 (2)模块接口定义。分频器模块接口定义如下表 信号名 I/O 位宽 含义 clk 1 1bit 系统50Hz时钟输入 clk1 0 1bit 分频后频率为5KHz的时钟输出 (3)模块Verilog代码设计,代码如下: //clk_div.v //Verilog 代码段6-19 module clk_div(clk,clk1); input clk; //输入时钟 output clk1; //输出时钟 reg[12:0] counter; //定义计数器来计数时钟,计数5000,需要用13位计数器 reg clk1; always@(posedge clk) if(counter==13d5000) //如果等于5000 begin counter=13b1; //把counter恢复成1 clk1=~clk1; //把clk1翻转 end else //如果不等于5000 counter=counter+1b1; //counter继续计数 endmodu

文档评论(0)

qiwqpu54 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档