按键去抖课程设计

合集下载

数字逻辑电路(数电)课程设计_电子秒表_VHDL实现(含完整源代码!!)

数字逻辑电路(数电)课程设计_电子秒表_VHDL实现(含完整源代码!!)

电子科技大学UNIVERSITY OF ELECTRONIC SCIENCE AND TECHNOLOGY OF CHINA数字逻辑设计实验报告实验题目:电子秒表学生姓名:指导老师:一、实验内容利用FPGA设计一个电子秒表,计时范围00.00 ~ 99.00秒,最多连续记录3个成绩,由两键控制。

二、实验要求1、实现计时功能:域值范围为00.00 ~ 99.00秒,分辨率0.01秒,在数码管上显示。

2、两键控制与三次记录:1键实现“开始”、“记录”等功能,2键实现“显示”、“重置”等功能。

系统上电复位后,按下1键“开始”后,开始计时,记录的时间一直显示在数码管上;按下1键“记录第一次”,次按1键“记录第二次”,再按1键“记录第三次”,分别记录三次时间。

其后按下2键“显示第一次”,次按2键“显示第二次”,再按2键“显示第三次”,数码管上分别显示此前三次记录的时间;显示完成后,按2键“重置”,所有数据清零,此时再按1键“开始”重复上述计时功能。

三、设计思路1、整体设计思路先对按键进行去抖操作,以正确的得到按键信息。

同时将按键信息对应到状态机中,状态机中的状态有:理想状态、开始状态、3次记录、3次显示、以及其之间的7次等待状态。

因为需要用数码管显示,故显示的过程中需要对数码管进行片选和段选,因此要用到4输入的多路选择器。

在去抖、计时、显示的过程中,都需要用到分频,从而得到理想频率的时钟信号。

2、分频设计该实验中有3个地方需要用到分频操作,即去抖分频(需得到200HZ时钟)、计时分频(需得到100HZ时钟)和显示分频(需得到25kHZ时钟)。

分频的具体实现很简单,需首先算出系统时钟(50MHZ)和所需始终的频率比T,并定义一个计数变量count,当系统时钟的上升沿每来到一次,count就加1,当count=T时就将其置回1。

这样只要令count=1~T/2时clk=‘0’,count=T/2+1~T时clk=‘1’即可。

单片机课程设计--智能电子钟的设计

单片机课程设计--智能电子钟的设计

目录1引言 (1)1.1设计内容和要 (1)1.2 工作原理 (2)2总体设计 (2)2.1 方案设计 (2)2.2 系统框图 (2)2.3 核心芯片简介 (3)2.3.1 DS1302简介 (3)2.3.2 AT89C51简介 (3)3 智能电子钟软硬件电路的设计 (4)3.1 硬件设计 (4)3.1.1 复位电路设计 (4)3.1.2 DS1302与单片机的接口设计 (5)3.1.3 LED显示设计 (5)3.1.4 电源设计 (6)3.1.5 按键开关去抖设计 (6)3.1.6 时钟电路的设计 (7)3.1.7 电路总原理图设计 (8)3.2 软件设计 (8)3.2.1 流程图 (8)4protues仿真与调试 (11)4.1 电路的仿真 (11)4.2软件调试 (11)结论……………………………………………………………………………………………错误!未定义书签。

参考文献 (14)附录 (15)源程序 (15)1 引言电子时钟主要是利用电子技术将时钟电子化、数字化,拥有时钟精确、体积小、界面友好、可扩展性能强等特点,被广泛应用于生活和工作当中。

另外,在生活和工农业生产中,也常常需要温度,这就需要电子时钟具有多功能性。

本设计主要为实现一款可正常显示时钟/日历、带有定时闹铃的多功能电子时钟。

本文对当前电子钟开发手段进行了比较和分析,最终确定了采用单片机技术实现多功能电子时钟。

本设计应用AT89C51芯片作为核心,6位LED数码管显示,使用DS1302实时时钟日历芯片完成时钟/日历的基本功能。

这种实现方法的优点是电路简单,性能可靠,实时性好,时间精确,操作简单,编程容易。

该电子时钟可以应用于一般的生活和工作中,也可通过改装,提高性能,增加新功能,从而给人们的生活和工作带来更多的方便。

1.1设计内容和要求以AT89C51单片机为核心,制作一个LCD显示的智能电子钟:(1) 计时:秒、分、时、天、周、月、年。

VHDL数字钟

VHDL数字钟

课程设计报告设计题目:用VHDL语言实现数字钟的设计班级:学号:姓名:指导老师:设计时间:摘要本设计是基于VHDL语言的数字钟,硬件平台是Xilinx的Virtex2系列FPGA 开发板。

该数字钟具备预置年月日时分秒的功能,通过按键还可以改变数字钟显示的内容和进入不同的设置状态,并通过加减按键调整系统时间。

在整个VHDl数字电路系统中,采用层次化设计方法,自顶向下进行设计。

设计中根据系统的功能要求合理划分出层次,进行分级设计和仿真验证,将较为复杂的数字系统逻辑简化为基本的模型从而降低实现的难度。

工程中底层实体实现了年月日、时分秒的双向计数器功能,另外还单独设计了系统的时钟模块,用来生成周期为125Hz的按键扫描时钟和周期为1Hz单位脉冲时钟。

为了消除按键的抖动,为此设计了按键消抖模块,采用了状态机来对按键进行消抖。

为了实现根据年份和月份对当前月的天数的判断逻辑,采用了函数对该逻辑进行分析,给出正确的判断结果。

为了提高利用率,在工程中建立了一个包集文件,对底层实体进行了统一封装,方便顶层的调用。

底层的所有实体系统的顶层主要完成了底层的元件例化,主控状态机对系统的状态转换进行控制,按键响应和时钟重新分配电路则完成了整个系统的控制逻辑。

关键词:层次化设计,元件例化,函数,状态机目录摘要 (2)一、课程设计目的 (4)二、课程设计内容及其要求 (4)三、VHDL程序设计 (5)1.设计方案论证 (5)2.设计思路与方法 (6)3.VHDL源代码及其仿真结果 (7)1、六进制可逆计数器 (7)2、十进制可逆计数器, (9)3、十二进制可逆计数器, (11)4、二十四进制可逆计数器 (13)5、天数计数器 (16)6、判断闰年和月份 (18)7、时钟分频模块 (22)8、按键消抖模块 (24)9、程序包 (27)10、顶层实体(主控状态机) (29)四、编程下载 (38)五、课程设计总结 (38)六、参考文献 (38)一、课程设计目的诞生于1983年的VHDL语言,在1987年被美国国防部和IEEE指定为标准硬件描述语言。

按键去抖课程设计

按键去抖课程设计

按键去抖课程设计一、课程目标知识目标:1. 学生能理解按键去抖的概念,掌握其工作原理;2. 学生能了解按键去抖在电路设计和编程中的应用;3. 学生能掌握相关电子元件的功能和电路连接方式。

技能目标:1. 学生能运用所学知识,设计并搭建简单的按键去抖电路;2. 学生能编写简单的程序,实现对按键去抖功能的控制;3. 学生能通过实际操作,分析并解决按键去抖过程中遇到的问题。

情感态度价值观目标:1. 培养学生对电子技术的兴趣,激发创新意识;2. 培养学生动手实践、合作探究的学习态度;3. 培养学生严谨、细致、勇于克服困难的品质。

课程性质:本课程为电子技术实践课程,旨在帮助学生将理论知识与实际操作相结合,提高学生的动手能力和创新能力。

学生特点:学生处于初中阶段,具有一定的物理知识和电子元件基础,对电子技术有一定的好奇心和兴趣。

教学要求:结合学生特点,注重理论与实践相结合,以学生为主体,教师为主导,引导学生主动探究,培养学生的实践能力和创新精神。

通过本课程的学习,使学生能够将所学知识应用于实际生活中,提高解决实际问题的能力。

二、教学内容1. 按键去抖概念及工作原理- 理解按键抖动的产生原因及影响;- 掌握按键去抖的常用方法和技术;- 学习相关电子元件(如电容、电阻、二极管等)的作用和选型。

2. 按键去抖电路设计与搭建- 学习并应用电路图绘制软件;- 设计简单的按键去抖电路;- 搭建电路,进行实际测试和调试。

3. 按键去抖编程控制- 学习编程语言(如C语言、Arduino等)的基本语法;- 编写按键去抖的程序代码;- 调试程序,实现按键去抖功能。

4. 实际应用案例分析- 分析实际应用中按键去抖的解决方案;- 学习如何根据需求选择合适的按键去抖方法;- 探讨按键去抖在电子产品中的重要性。

教学内容安排与进度:第1课时:按键去抖概念及工作原理第2课时:按键去抖电路设计与搭建第3课时:按键去抖编程控制第4课时:实际应用案例分析及总结教材章节及内容:《电子技术基础》第四章第三节:按键去抖技术《电子技术实践》第二章第五节:按键去抖电路设计与搭建《编程语言》第一章:基本语法与结构《Arduino编程与实践》第三章:数字输入输出控制三、教学方法1. 讲授法:- 在介绍按键去抖的概念、工作原理及相关电子元件的基础知识时,采用讲授法进行教学,使学生在短时间内快速掌握理论要点。

按键去抖课程设计

按键去抖课程设计

.目录摘要 (1)第一章EDA技术简介 (2)第二章按键去抖设计要求 (4)第三章按键去抖分析 (4)第四章按键去抖设计方案 (5)第五章按键去抖模块 (6)5.1 去抖动电路模块 (6)5.2 去抖动电路模块程序 (6)5.3 按键扫描模块 (9)5.4 按键扫描程序 (10)第六章按键去抖的顶层原理图设计 (11)6.1 顶层原理图的源文件 (11)6.2顶层原理图的时序仿真图 (12)第七章学习心得 (13)课程设计评分表............................................................................................................... 错误!未定义书签。

摘要为了解决FPGA/ CPLD 系统的按键抖动问题, 用VH DL 语言有限状态机的方法, 在S0 状态下检测到有按键操作则转入延时状态S1 ,延时结束后, 用状态S2 , S3 , S4 对按键进行连续三次取样,如果三次取样均为低电平, 则转入状态S5并输出按键确认信号,否则, 返回状态S0。

电路经仿真分析, 并下载到, EPM7128ATC100 芯片进行了验证, 能够确保每次按键操作,产生一次按键确认, 有很好的按键消抖效果, 性能稳定。

主要创新点是用VHDL语言有限状态机设计按键的消抖。

关键词:按键消抖; 电路仿真; VH DL;状态机第一章EDA技术简介随着电子技术和计算机技术的飞速发展,电子线路的设计工作也日益显得重要。

经过人工设计、制作实验板、调试再修改的多次循环才定型的传统产品设计方法必然被计算机辅助设计所取代,因为这种费时费力又费资源的设计调试方法既增加了产品开发的成本,又受到实验工作场地及仪器设备的限制。

为了克服上述困难,加拿大Interactive Image Technologies公司推出的基于Windows 95/98/NT操作系统的EDA软件(Electronics Workbench“电子工作台”,EWB)。

数字电子技术课程设计--电子秒表的设计

数字电子技术课程设计--电子秒表的设计

数字电子技术课程设计--电子秒表的设计数字电子技术课程设计课程设计题目:电子秒表的设计目录摘要 (2)1引言 (3)1.1设计目的 (3)1.2技术要求 (3)1.2.1基本要求 (3)1.2.2提高要求 (3)1.3设计内容 (3)1.4工作原理 (3)2设计框图 (4)3各个部分功能简介 (5)3.1按键去抖电路 (5)3.2控制器电路 (6)3.3时钟产生电路 (8)3.4计时电路 (9)3.5显示译码电路 (10)3.6 50000分频电路 (11)4硬件仿真 (13)4.1顶层逻辑图 (13)4.2LB0介绍 (14)4.3硬件仿真 (14)5课程设计的心得体会 (15)参考文献 (16)附录 (17)摘要本文以数字电子技术作为理论基础、以quartusⅡ软件为开发平台、以相关电路知识作为辅助,实现电子秒表电路的设计和制作。

该电子秒表可以准确显示时间,范围为00.00—99.99。

并且可以手动调节时间,随时启动、清零、暂停记录时间等。

操作起来简易、方便。

首先,本文针对电子秒表进行初步框架设计,并在对多种方案进行了认真比较和验证的基础上,又进一步详细介绍了时间脉冲发生器、秒计数器、译码及驱动显示电路。

其次,在总体电路图组装完成以后,用quartusⅡ软件对设计好的电路进行了仿真与调试,并逐一解决设计过程中出现的一系列问题。

最后,对照着电子秒表设计方案,对制作好的电子秒表功能进行总体验证。

并利用学院的LB0开发板进行硬件仿真。

关键词:电子秒表计数器分频quartusⅡ、1引言1.1设计目的1)掌握同步计数器74160,74161的使用方法,并理解其工作原理。

2)掌握用74160,74161进行计数器、分频器的设计方法。

3)掌握用三态缓冲器74244和74160,74138,7448进行动态显示扫描电路设计的方法。

4)掌握电子秒表的设计方法。

5)掌握在EDA系统软件MAX + plus Ⅱ环境下用FPGA/CPLD进行数字系统设计的方法,掌握该环境下功能仿真、时序仿真、管脚锁定和芯片下载的方法。

按键消抖——硬件消抖和软件消抖

按键消抖——硬件消抖和软件消抖

按键消抖——硬件消抖和软件消抖一、按键电路常用的非编码键盘,每个键都是一个常开开关电路。

计数器输入脉冲最好不要直接接普通的按键开关,因为记数器的记数速度非常快,按键、触点等接触时会有多次接通和断开的现象。

我们感觉不到,可是记数器却都记录了下来。

例如,虽然只按了1下,记数器可能记了3下。

因此,使用按键的记数电路都会增加单稳态电路避免记数错误。

二、按键消抖通常的按键所用开关为机械弹性开关,当机械触点断开、闭合时,电压信号小型如下图。

由于机械触点的弹性作用, 一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开。

因而在闭合及断开的瞬间均伴随有一连串的抖动,如下图。

抖动时间的长短由按键的机械特性决定,一般为5ms~10ms。

这是一个很重要的时间参数,在很多场合都要用到。

按键稳定闭合时间的长短则是由操作人员的按键动作决定的,一般为零点几秒至数秒。

键抖动会引起一次按键被误读多次。

为确保CPU对键的一次闭合仅作一次处理,必须去除键抖动。

在键闭合稳定时读取键的状态,并且必须判别到键释放稳定后再作处理。

按键的抖动,可用硬件或软件两种方法。

三、硬件消抖在键数较少时可用硬件方法消除键抖动。

下图所示的RS 触发器为常用的硬件去抖。

图中两个“与非”门构成一个RS触发器。

当按键未按下时,输出为1;当键按下时,输出为0。

此时即使用按键的机械性能,使按键因弹性抖动而产生瞬时断开(抖动跳开B),中要按键不返回原始状态A,双稳态电路的状态不改变,输出保持为0,不会产生抖动的波形。

也就是说,即使B点的电压波形是抖动的,但经双稳态电路之后,其输出为正规的矩形波。

这一点通过分析RS触发器的工作过程很容易得到验证。

利用电容的放电延时,采用并联电容法,也可以实现硬件消抖:四、软件延时消抖如果按键较多,常用软件方法去抖,即检测出键闭合后执行一个延时程序,产生5ms~10ms的延时,让前沿抖动消失后再一次检测键的状态,如果仍保持闭合状态电平,则确认为真正有键按下。

按键消抖原理

按键消抖原理

按键消抖原理
按键消抖原理是指通过某种方法在按键被按下或松开时,消除或减少按键的抖动现象,使输入信号得到稳定的识别和处理。

在实际应用中,按键在被按下或松开时,由于机械结构的原因,往往会引起按键的不稳定状态,表现为按键在短时间内多次触发开关。

这种按键抖动不仅会导致输入信号的波动,还可能对系统造成误操作或不良影响。

为了解决按键抖动问题,常用的按键消抖原理主要有以下几种:
1. 软件延时消抖:通过在程序中设定一个适当的延时时间,当按键被按下或松开后,延时一段时间再读取按键状态,以判断按键是否稳定。

如果经过延时后按键状态仍然相同,则可以认为按键已经稳定按下或松开,从而减少抖动的影响。

2. 硬件滤波消抖:通过在按键电路上设计滤波器或添加电容元件,可以对按键信号进行滤波处理,去除短时间内的干扰信号,使输入信号更加稳定。

常用的滤波电路包括RC滤波电路、OTA滤波电路等。

3. 状态改变检测消抖:在按键电路中,通过检测按键的状态变化来判断按键是否按下或松开。

当按键在短时间内发生多次状态变化时,只会认为按键状态发生了一次改变,从而忽略了抖动现象。

这种方式适用于按键状态改变的速度较慢的情况。

通过以上的按键消抖原理,可以有效地减少按键抖动现象,提
高按键输入的可靠性和稳定性。

在实际应用中,可以根据具体情况选择适合的原理和方法来实现按键消抖,以满足不同的需求。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

目录摘要 (1)第一章 EDA技术简介 (2)第二章按键去抖设计要求 (3)第三章按键去抖分析 (3)第四章按键去抖设计方案 (4)第五章按键去抖模块 (5)5.1 去抖动电路模块 (5)5.2 去抖动电路模块程序 (5)5.3 按键扫描模块 (7)5.4 按键扫描程序 (8)第六章按键去抖的顶层原理图设计 (9)6.1 顶层原理图的源文件 (9)6.2顶层原理图的时序仿真图 (10)第七章学习心得 (11)课程设计评分表............................................................................................... 错误!未定义书签。

摘要为了解决FPGA/ CPLD 系统的按键抖动问题, 用VH DL 语言有限状态机的方法, 在S0 状态下检测到有按键操作则转入延时状态S1 ,延时结束后, 用状态S2 , S3 , S4 对按键进行连续三次取样,如果三次取样均为低电平, 则转入状态S5并输出按键确认信号,否则, 返回状态S0。

电路经仿真分析, 并下载到, EPM7128ATC100 芯片进行了验证, 能够确保每次按键操作,产生一次按键确认, 有很好的按键消抖效果, 性能稳定。

主要创新点是用VHDL语言有限状态机设计按键的消抖。

关键词:按键消抖; 电路仿真; VH DL;状态机第一章 EDA技术简介随着电子技术和计算机技术的飞速发展,电子线路的设计工作也日益显得重要。

经过人工设计、制作实验板、调试再修改的多次循环才定型的传统产品设计方法必然被计算机辅助设计所取代,因为这种费时费力又费资源的设计调试方法既增加了产品开发的成本,又受到实验工作场地及仪器设备的限制。

为了克服上述困难,加拿大Interactive Image Technologies公司推出的基于Windows 95/98/NT操作系统的EDA软件(Electronics Workbench“电子工作台”,EWB)。

他可以将不同类型的电路组合成混合电路进行仿真。

EWB是用在计算机上作为电子线路设计模拟和仿真的新的软件包,是一个具有很高实用价值的计算机辅助设计工具。

目前已在电子工程设计等领域得到了广泛地应用。

与目前流行的电路仿真软件相比较,EWB具有界面直观、操作方便等优点。

他改变了有些电路仿真软件输入电路采用文本方式的不便之处,该软件在创建电路、选用元器件的测试仪器等均可以直接从屏幕图形中选取,而且测试仪器的图形与实物外形基本相似,从而大大提高了电子设计工作的效率。

此外,从另一角度来看,随着计算机技术和集成电路技术的发展,现代电子与电工设计,已经步入了电子设计自动化(EDA)的时代,采用虚拟仿真的手段对电子产品进行前期工作的调试,已成为一种发展的必然趋势。

通过对实际电子线路的仿真分析,从而提高对电路的分析、设计和创新能力。

第二章按键去抖设计要求按键开关是电子设备实现人机对话的重要器件之一。

由于大部分按键是机械触点, 在触点闭合和断开时都会产生抖动。

为避免抖动引起误动作造成系统的不稳定,就要求消除按键的抖动, 确保按键每按一次只做一次响应[ 1, 2] 。

随着可编程逻辑器件的综合性能的不断提高,它已经象单片机一样, 广泛应用在各种数字逻辑领域。

用可编程逻辑器件直接获取键盘信息也得到广泛的应用。

这里提出用VHDL 语言编程的有限状态机的设计方法来实现按键的消抖, 经仿真分析和下载实现,这种方法设计的消抖电路能够很好地实现电路功能,进行快速按键时都能保证每按一次做一次的响应, 且性能稳定。

本课程设计的具体要求如下:(1) 设计一个4路独立键盘输入电路,读取键盘的键值并通过发光二极管显示出来。

(2) 输入为时钟信号CLK(50MHz),按键状态KEY1,KEY2,KEY3,KEY4。

(3) 输出为D1,D2,D3,D4。

根据按键的状态控制发光二极管的亮灭。

第三章按键去抖分析按键消抖的关键是提取稳定的低电平(或高电平) 状态, 滤除按键稳定前后的抖动脉冲。

在用基于VHDL 语言的时序逻辑电路设计按键消抖电路时, 可以用一个时钟脉冲信号对按键状态进行取样,当第一次采样到低电平时,启动延时电路,延时结束后,再对按键信号进行连续三次取样, 如果三次取样都为低电平,则可以认为按键已经处在稳定状态, 这时输出一个低电平的按键确认信号,如果连续三次的取样中, 至少有一次是高电平,则认为按键仍处在抖动状态, 此时不进行按键确认,按键输出信号为高电平。

第四章按键去抖设计方案按键消抖一般采用硬件和软件消抖两种方法。

硬件消抖是利用电路滤波的原理实现,软件消抖是通过按键延时来实现。

在微机系统中一般都采用软件延时的消抖方法。

在用可编程逻辑器件FPGA/ CPLD 设计数字系统中, 也可以用VHDL 语言设计相应的时序和逻辑电路,对按键信号进行处理,同样可以达到消抖目的。

本文利用Altera公司的可编程逻辑器件CPLD 和Quartus,设计性能可靠的按键消抖电路。

该控制电路采用VH DL 语言的有限状态机的设计法来描述和实现, 其状态转换图如图1所示。

图1 按键去状态转换图电路的复位信号Reset 有效时,电路进入复位状态S0 ,在S0 状态下时钟信号CLK 以一定的频率采样按键输入信号Key in,如果采样到Key in= 1 则停留在S0状态,并继续采样按键输入信号的状态,一旦采样到输入信号是低电平,即Key in= 0 ,则转入S1 延时状态,进行消抖延时,当延时结束时Delay end= 1 ,则转入在S2 状态,在此状态下时钟信号CLK 以一定频率采样按键输入Key in 的状态,如果采样到Key in 为高电平即Key in= 1 则转回状态S0 ,表示按键仍处在抖动状态,如果采样到Key in= 0 , 则转入状态S3 ; 状态S3 , S4 的转换过程和条件跟S2 相同, 在S4 状态下, 如果Key in= 0 则转入S5 状态, 当到达状态S5 时,表示经过S2 , S3 , S4 三个连续状态检测按键输入Key in的状态都为 0 ,则认为按键处在稳定状态, 并在 S5 输出按键确认信号 Key conf i rm= 1 。

同时在状态 S5下时钟信号CLK 检测按键输入状态,当检测到按键输入Key in= 0 ,表示按键仍未释放, 则停留在S5 继续检测按键输入信号状态,如果检测到Key in= 1 , 表示按键已经释放, 则转回状态 S0 , 等待下一次按键操作。

第五章 按键去抖模块5.1 去抖动电路模块clk :时钟,reset :复位信号,din :按键信号输入,dout :按键去抖动信号输出。

由于按键抖动的时间一般为5到10ms ,因此输入时钟clk 使用200Hz 时钟脉冲(周期为5ms ),即5ms 采样一次按键信号,当连续两次采样到的按键信号都为低电平时,认为按键稳定的按下。

在按键稳定按下后,采样到按键为高电平时,认为按键释放5.2 去抖动电路模块程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all; use ieee.std_logic_arith.all; entity debounce is port(clk,reset:IN std_logic;debounceinstclk reset din doutdin: IN std_logic;dout: OUT std_logic);end debounce;architecture a of debounce istype state is (s0,s1,s2);signal current: state;beginprocess(clk,reset,din)beginif(reset='1') thencurrent <= s0;dout <= '1';elsif(clk'event and clk='1') then case current iswhen s0 =>dout <= '1';if(din='0') thencurrent <=s1;elsecurrent <= s0;end if;when s1=>dout <='1';if(din='0') thencurrent <= s2;elsecurrent <= s0;end if;when s2 =>dout <='0';if(din='0') thencurrent <= s2;elsecurrent <= s0;end if;when others =>dout <='1';current <=s0;end case;end if;end process;end a;5.3 按键扫描模块输入信号:clk :时钟,50MHz ;reset :复位信号;key1, key2, key3, key4:按键信号输入。

输出信号:led1, led2, led3, led4:发光二极管信号输出。

keypadinstclk reset key1key2key3key4led1led2led3led45.4 按键扫描程序第六章按键去抖的顶层原理图设计6.1 顶层原理图的源文件6.2顶层原理图的时序仿真图消抖电路的仿真图如上图所示。

当复位信号Reset= 0 时, 状态机Key 处在S0 状态, 同时以CLK的时钟频率采样按键输入信号Din 的状态, 当CLK 第一次采样到Din 为低电平时,此时可能发生了按键操作, 随即状态机Key 进入S1 消抖延时状态,当延时结束时delay end= 1 (延时结束信号) ,跟接着状态机KEY 的S2 , S3 , S4 连续三个状态对按键输入信号Din进行采样,当三个状态下采样到Din 信号都是低电平, 则转入S5 状态,并产生按键确认信号Key conf irm= 1 ,同时在S5 状态下等待按键释放, 在此状态下当CLK 时钟信号检测到Din 为高电平时转回状态S0。

因按键释放瞬间也会发生抖动, 所以由波形图可以看出当按键释放瞬间由状态S5 转回状态S0 , 在S0 状态下因按键抖动CLK 时钟又检测到Din 为低电平, 随即转入S1 进行消抖延时, 经过S1 的消抖延时后, 按键已经稳定, Din 为稳定的高电平, 所以在状态S2 检测到Din为高电平,则转入S0 状态, 到此时完成一次按键的操作, 等待下一次按键操作,如果没有按键操作,即按键没按下,则一直保持在状态S0。

相关文档
最新文档