按键去抖课程设计

合集下载

数字逻辑电路(数电)课程设计_电子秒表_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. 状态改变检测消抖:在按键电路中,通过检测按键的状态变化来判断按键是否按下或松开。

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

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

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

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

按键去抖说明教学提纲

按键去抖说明教学提纲

由于机械触点的弹性振动,按键在按下时不会马上稳定地接通而在弹起时也不能一下子完全地断开,因而在按键闭合和断开的瞬间均会出现一连串的抖动,这称为按键的抖动干扰,其产生的波形如图5.3.1 所示,当按键按下时会产生前沿抖动,当按键弹起时会产生后沿抖动。

这是所有机械触点式按键在状态输出时的共性问题,抖动的时间长短取决于按键的机械特性与操作状态,一般为10~100ms,此为键处理设计时要考虑的一个重要参数。

按键的抖动会造成按一次键产生的开关状态被CPU 误读几次。

为了使CPU 能正确地读取按键状态,必须在按键闭合或断开时,消除产生的前沿或后沿抖动,去抖动的方法有硬件方法和软件方法两种。

1. 硬件方法硬件方法是设计一个滤波延时电路或单稳态电路等硬件电路来避开按键的抖动时间。

图5.3.2 是由R2 和C 组成的滤波延时消抖电路,设置在按键S 与CPU 数据线Di 之间。

按键S 未按下时,电容两端电压为0,即与非门输入V i 为0,输出V o 为1。

当S 按下时,由于C 两端电压不能突变,充电电压V i 在充电时间内未达到与非门的开启电压,门的输出V o将不会改变,直到充电电压V i 大于门的开启电压时,与非门的输出V o 才变为0,这段充电延迟时间取决于R1、R2 和C 值的大小,电路设计时只要使之大于或等于100ms 即可避开按键抖动的影响。

同理,按键S 断开时,即使出现抖动,由于C 的放电延迟过程,也会消除按键抖动的影响图5.3.2 中,V1 是未施加滤波电路含有前沿抖动、后沿抖动的波形,V2 是施加滤波电路后消除抖动的波形。

2. 软件方法软件方法是指编制一段时间大于100ms 的延时程序,在第一次检测到有键按下时,执行这段延时子程序使键的前沿抖动消失后再检测该键状态,如果该键仍保持闭合状态电平,则确认为该键已稳定按下,否则无键按下,从而消除了抖动的影响。

同理,在检测到按键释放后,也同样要延迟一段时间,以消除后沿抖动,然后转入对该按键的处理。

篮球计时计分器

篮球计时计分器
1.1系统构成框图………………………………………………………………………2
1.2基本功能介绍………………………………………………………………………3
1.2.1比赛时间设置………………………………………………………………3
1.2.2按键及操作说明………………………………………………………………3
1.2.3比赛结束………………………………………………………………3
关键词:单片机;计时计分;AT89SC52;1602LCD;实时显示
Abstract
This design is based on the basic rules of basketball as the basis, to realize the real-time control of the basketball match. The hardware of system is mainly composed of singlechip AT89C52, 1602LCD, alarm circuit, a power switch / reset circuit, button control circuit of 5 parts. The part of software is programmed by C language to control the hardware, to display the scoring etc.. The design of the time basketball scoring device can carry out real-time display of scoring basketball game process, but also on the emergency situation in the game pause / continue processing. At the end of the game, the two teams score statistics can beselected, which team will win the game.

单片机按键去抖动程序设计思路

单片机按键去抖动程序设计思路

单片机按键去抖动程序设计思路1.硬件电路设计为了能够较好地去抖动按键,我们可以在按键的输入引脚上加一个RC组合电路,以延迟触发信号的上升沿和下降沿,从而消除抖动。

RC组合电路一般由一个电阻R和一个电容C组成,其原理是通过RC的时间常数来控制信号的上升和下降过程。

2.软件设计在单片机程序中,我们需要采取一定的算法来检测按键的真实触发信号,下面是一个简单的按键去抖动的程序设计思路:(1)初始化首先,我们需要对按键的输入引脚进行初始化,配置为输入模式,并设置为上拉电阻模式。

这样可以确保在按键未按下时,输入引脚保持高电平。

(2)读取按键状态通过读取按键的输入引脚状态,来判断当前按键是否处于按下状态。

一般来说,输入引脚为高电平时表示按键未按下,为低电平时表示按键已按下。

(3)去抖动算法当检测到按键状态发生变化时,即从未按下到按下或从按下到未按下,可以认为触发了一次按键操作。

在这个过程中,我们需要使用去抖动算法来过滤掉抖动信号。

常见的去抖动算法有两种:软件延时法和状态延时法。

软件延时法是通过在检测到按键状态发生变化后,延时一段时间,再次读取按键状态来判断是否真正触发了按键操作。

通过调整延时时间,可以达到去抖动的效果。

但是使用软件延时法会占用较多CPU时间,因此在需要很高响应速度的系统中不适用。

状态延时法是通过引入一个状态变量,用来保存按键的状态。

在检测到按键状态发生变化后,将状态置为相反的值,并延时一段时间。

在延时结束后,读取按键状态和状态变量的值,如果相等则认为触发了按键操作,否则不触发。

需要注意的是,为了防止按键的持续震动导致多次触发,我们一般会设置一个最小的按键触发间隔。

即在两次按键操作之间需要间隔一段时间,才能再次触发。

(4)执行按键操作当确认触发了按键操作后,我们可以执行相应的操作,如触发一个中断、改变LED灯的状态等。

通过上述程序设计思路,可以实现按键去抖动的功能,从而得到准确的按键触发信号。

当然,具体的实现还需要根据具体的单片机平台和开发环境来进行调整。

多种波形发生器课程设计按键电路

多种波形发生器课程设计按键电路

多种波形发生器课程设计按键电路一、引言波形发生器是电子工程中常用的一种电路,它可以产生多种不同的波形信号,如正弦波、方波、三角波等。

在电子设计和测试中,波形发生器通常被用来产生标准信号或者测试信号。

本文将介绍多种波形发生器的课程设计,并着重介绍按键电路的设计。

二、多种波形发生器课程设计1. 正弦波发生器正弦波发生器是最基本的波形发生器之一,它可以产生一个连续变化的正弦信号。

在实际应用中,正弦波信号通常被用来作为参考信号或者测试信号。

正弦波发生器的基本原理是利用RC振荡电路来产生一个稳定的振荡频率,并且通过运算放大器对其进行放大。

具体实现方式可以采用集成电路或者离散元件进行搭建。

2. 方波发生器方波发生器可以产生一个由高低两个电平构成的方形脉冲信号。

在数字系统中,方波信号通常被用来表示“0”和“1”两个状态。

方波发生器的基本原理是利用开关电路来控制电路的通断,从而实现高低电平的切换。

具体实现方式可以采用集成电路或者离散元件进行搭建。

3. 三角波发生器三角波发生器可以产生一个由上升和下降两个斜率构成的三角形信号。

在音频系统中,三角波信号通常被用来作为音乐合成的基础信号。

三角波发生器的基本原理是利用积分电路来对方波信号进行积分,从而得到一个连续变化的三角形信号。

具体实现方式可以采用集成电路或者离散元件进行搭建。

4. 锯齿波发生器锯齿波发生器可以产生一个由上升和下降两个斜率构成的锯齿形信号。

在测试系统中,锯齿波信号通常被用来作为测试信号。

锯齿波发生器的基本原理是利用反向比例积分电路来对方波信号进行积分和反向放大,从而得到一个连续变化的锯齿形信号。

具体实现方式可以采用集成电路或者离散元件进行搭建。

三、按键电路设计在波形发生器的实际应用中,通常需要对波形信号进行调节和控制。

按键电路可以实现对波形发生器的控制和调节,使其更加灵活和方便。

按键电路的基本原理是利用开关电路来控制电路的通断,从而实现对波形发生器的控制。

单片机课程设计报告(五人表决器)

单片机课程设计报告(五人表决器)

目录一、方案设计 (2)二、硬件电路设计 (2)三、软件设计说明 (6)四、程序清单 (7)五、制作调试说明 (12)六、操作使用说明 (13)七、总结 (13)单片机课程设计一、方案设计1、设计题目:5人表决器2、设计要求:1)、可供5—7个人进行表决,每个人有一个“同意”和一个“反对”按键,故一个人需要两个按键,表决时两个键先按下的一个有效,同时按下则表示无效,每次表决每个按键只能是第一次按下的有效,多按无效,用单片机设计表决器是硬件电路与软件设计相结合的一种设计,因此在硬件电路只能实现按键的按下与释放,不能智能的实现检测按键被按下几次,则可用软件设计来实现其功能。

2)会议主持人可利用按键控制表决的开始与结束,点亮黄灯用于显示表决开始,熄灭黄灯表示结束,并将表决结果用红灯与绿灯显示。

当不相等时,“同意”多于“反对”点亮绿灯,“同意”少于“反对”点亮红灯。

3)在实现上述功能的基础上增加“同意”数和“反对”数的显示。

二、硬件电路设计1、硬件设计思路:此次设计的题目是5人表决器,分析得设计的硬件电路选用P1口与P2口作为同意与反对按键的输入端。

又表决的开始与结束是由主持人来控制的,因此需要两个按键来表示表决的开始与结束,因此可采用外部中断0与外部中断1来控制表决的开始于结束。

故设计总共需要按键12个。

设计要求中需要四盏灯,分变为一个黄灯,一个绿灯和二个红灯,三盏灯用于输出显示,因此也可以征用单片机的I/O口,由于P1口与P2口作为同意与反对按键的输入端且P0口当做输出端口时可以不用接上拉电阻,因此可将三个显示灯接在P0口用于显示表决的结果。

还有一盏红灯用来做电源指示灯。

2、元器件参数确定:设计要求中需要三盏灯(黄灯,绿灯和红灯)用于输出显示,选用P0口的3个端口与显示灯相连接用于输出,由于输出端口输出的高电平一般为5V,而发光二极管允许的最大电流为5mA,因此需要用到限流电阻,发光二极管可降2V的电压,则限流电阻上的压降为3V,那么限流电阻的最小阻值为R=3V/5mA=600欧姆,由于输出的高电平不是5V,故用510欧姆的限流电阻。

课程设计报告(24秒篮球倒计时)

课程设计报告(24秒篮球倒计时)
图 5 计数模块
14
3. 按键消抖电路
由于实际中的按键在按下和弹起时会产生很高频率的抖动脉冲,该脉冲会影 响电路的性能,出现按键按一次电路跳动多次的现象,因此需要进行消抖来消除 这种影响,消抖的方法很多,这里采用 RC 充放电电路和斯密特触发器进行消抖, 电路图见图 6。当按键 A 按下时,电容 C1 两端的电压不会突变,所以需要等一 段放电时间,才能降到斯密特触发器的门限电压,斯密特触发器才会发生反转, 而此时按键按下产生的电路抖动已经消除。同理当按键弹起时也能消除抖动。
12
图 3 方案二电路图
方案选择 两方案的秒脉冲发生部分都是有 555 多谐振荡电路组成,基本无多大区别。 主要区别在于计数部分,方案一采用加计数器,方案二采用减计数器。由电路结 构来看,方案一用到了异或门和七个非门,较方案二复杂的多。在功能实现方面, 方案二满足设计要求。方案一在接通电源时若将置数键置于计数位置,74LS161 将从 0000 开始加计数对应反码 1111 无法显示,而方案二不会出现该问题。综合 分析,采用方案二。
19
进行焊接:先焊电容和电阻等较小、较矮的器件,再焊芯片插座和排针等较 大、较高的器件。焊接时才发现实验室现有的自复位按钮和之前 PCB 上的自复 位按钮的封装并不完全一样,最后将现有的自复位按钮插脚弄弯后进行强耦合。 除了不是很美观外并不影响性能。
全部焊好后再检查一遍,看是否存在漏焊虚焊等情况。 装配 检查完毕后将芯片和数码管按照原理图和 PCB 稳当的插在对应位置,此时 应当注意芯片的引脚要和 PCB 上的相对应。具体办法为看芯片和 PCB 上芯片的 小“U”槽对应。 待全部安装完成后,再检查一遍有无安装错误和安装松动等,如有及时改正。 待检查完毕,确认无误后即可开始进行硬件测试。 调试 测试时,为防止直接短路烧毁电源和引发火灾等情况,应先用万用表欧姆档 放在电源接头端测试一下输入电阻,如果输入电阻很小的话不能接通电源防止短 路。如果输入电阻很大,再接通电源进行测试。该设计中焊接装配完成后测试输 入电阻很大,接近断路状态。 通入额定电源,查看现象。该设计中最开始接通电源后,只有高位数码管显 示 2,低位不显示。将数码管拆下换过位置后低位正常显示 4,高位不显示。最 后确定为其中一只数码管坏了或用错了,经用万用表测试后发现这只数码管是共 阳的,最后查证为商家发错货了,最后换成两只共阴的数码管,接通电源后两只 数码管均正常显示,显示值为 24。证明硬件电路并无重大错误。 点击开始按钮,电路开始进行倒计时,而且按键按下和弹起时并无闪烁和跳 变情况,说明消抖电路如期正常工作。但是倒计时频率很快,说明电路还有问题。 电路中涉及到频率的就只有 555 定时器组成的时钟源,说明时钟源处有问题。而 一般影响频率的就是电阻和电容,经过排查,发现一个电阻焊错了,一个 47k 欧 姆的电阻焊成了 200 欧姆的电阻。拆下重新焊接后解决了该问题,倒计时周期约 为 1S。测试暂停、继续、复位功能均能达到要求。 至此整个设计和制作过程基本完结。最后的硬件电路能很好的实现设计要求。 实物图如图 12 所示。

EDA课程设计

EDA课程设计

键盘控制电路的设计摘要矩阵键盘控制接口电路是最基本的输入电路,在当今社会的各个领域起着不可替代的作用。

例如计算机的键盘、手机的键盘等各式电子产品都广泛应用了该技术。

在课程设计中,系统开发平台为Windows XP,利用QuartusⅡ自行设计并修改的键盘输入显示电路是通过VHDL语言和图形混合编辑的。

程序和电路图通过调试、运行和波形仿真后,初步达到了设计目标,并且在经过具体的数字实验箱验证后,实现了键码的对应显示。

关键词:键盘控制;QuartusⅡ;VHDL;图形编辑1引言本课程设计是一个简易的利用键盘来控制电路的实验,先是对该4*4键盘进行编码即一个键盘位置对应一个数值或符号的电路。

本设计只是对键盘进行十六进制数的编码,有防抖动的功能,其主要目的是为了避免按键时键盘产生的按键抖动效应。

最后是一个按键检测的程序,当有按键时则输出对应的键码值。

1.1课程设计的目的通过课程设计,使我们对QuartusII和Max+PlusⅡ这两个软件有所了解,在电脑上对实际电路应用的设计和仿真更简便、精确且易于实现。

同时在经过对键盘控制电路在电脑上仿真再到数字实验箱上的实现这一过程,一方面让我更深入的理解到电路设计的方法,掌握了平常我们按一个键码后再显示,这一现象的全过程。

另一方面增强了我的动手能力,真正的将书本上的理论知识和实践联系在一起了。

1.2课程设计的要求这一次课程设计首先要求我们对EDA技术有一定的了解,并掌握QuartusII平台的一些基本使用方法,以及VHDL语言的基本语法结构和编程思路。

其次了解键盘控制电路的设计原理,分析程序或图形中的各输入,输出以及中间信号的逻辑关系。

为避免误操作信号的发生,还必须有弹跳消除的电路。

最后在实验箱上验证程序时,要求数码管和发光二极管能显示与编码的相同数值。

1.3设计平台本课程设计中的分频电路、键盘编码、防抖动、键盘识别等内容都是基于QuartusII 平台的,所以在这设计之前有必要对QuartusII和EDA技术进行初步的了解。

实验05按键消抖

实验05按键消抖

实验5 按键消抖1. 实验目的1. 掌握QuartusII的硬件描述语言设计方法2. 了解同步计数器的原理及应用3. 设计一个带使能输入、进位输出及同步清零的增1四位N (N<16)进制同步计数器2. 准备知识在按键使用的过程中,常常遇到按键抖动的问题,开关在闭合(断开)的瞬间,不能一接触就一直保持导通(断开),因为开关的机械特性,重要经历接触-断开-再接触-再断开,最终稳定在接触位置,这就是开关的抖动,即虽然只是按下按键一次然后放掉,结果在按键信号稳定前后,竟出现了一些不该存在的噪声,这样就会引起电路的误动作。

在很多应用按键的场合,要求具有消抖措施。

按键抖动与开关的机械特性有关,其抖动期一般为5-10ms。

图5.1 按键电平抖动示意图按键的消除抖动分为硬件消除抖动和软件消除抖动。

硬件消除抖动一般采用滤波的方法,通常在按键两端并联一个1~10u左右的电容,有时这样也不能完全消除按键的抖动。

软件消除抖动的方法有多种,常用的是延时扫描和定时器扫描。

延时扫描其原理为:检测到按键操作后延时一端时间(如10ms)后,再检测是否为仍然为同样的按键操作状态,如果相同,就认为是进行了按键操作,然后对该操作进行相应的处理。

定时器扫描的原理是:每隔一端时间(几毫秒)扫描一次键盘,如果连续两次(或3次)的所获得的按键状态相同,就输出按键状态,然后再对这种按键状态进行处理,这里的扫描时间间隔和连续判断按键状态的次数是有关系的,一般总时间要大于按键的抖动期。

如果总时间太长,则感觉按键迟钝,太短可能不能完全消除抖动,要根据实际的情况合适的选择。

在实际电路设计中,经常采用的是软硬件相结合对按键进行消除抖动的处理方法。

本实验采用的方法:实验箱按键的硬件电路是共阳极电路,按下按键时输出到FPGA管脚的电平为低电平,松开按键时为高电平。

我们采用5ms的定时器扫描FPGA管脚电平,如果连续3次为低电平时,存储连续按键状态的次数CNT的值加1,直到该计数值等于10(或再大一些),就不再累加(防止长按该值溢出而重新计数),此时认为按键已稳定,输出按键操作标志;在该过程中,一旦FPGA管脚电平为低电平就对CNT复位清零并同时对按键操作标志位复位,即一个异步复位。

按键去抖课程设计报告书

按键去抖课程设计报告书

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

摘要为了解决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)。

基于51单片机的电子琴设计课程设计

基于51单片机的电子琴设计课程设计

基于51单片机的电子琴设计课程设计单片机原理》课程设计前言本课程设计旨在通过基于51单片机的电子琴设计,加深学生对单片机原理的理解和应用。

在本设计中,我们将介绍电子琴的设计要求、所用设备及软件以及总体设计方案。

随后,我们将详细介绍系统硬件设计中琴键控制电路、音频功放电路、时钟-复位电路和LED显示电路的设计。

第1章基于51单片机的电子琴设计1.1 电子琴的设计要求在电子琴的设计中,我们需要考虑琴键数量、音频输出质量、电源电压和外部接口等因素。

在本设计中,我们将采用25个琴键,保证音频输出质量和电源电压稳定,并提供外部接口以便于扩展和调试。

1.2 电子琴设计所用设备及软件在本设计中,我们将使用51单片机、琴键、音频功放、时钟、LED显示器等设备,并使用Keil C51编译器进行软件开发。

1.3 总体设计方案在总体设计方案中,我们将采用按键扫描方式实现琴键控制,使用PWM技术实现音频输出,使用外部晶振提供时钟信号,并使用LED显示器显示琴键状态。

第2章系统硬件设计2.1 琴键控制电路在琴键控制电路中,我们将采用矩阵按键扫描方式,通过51单片机的IO口进行扫描和检测。

同时,我们还将使用电容式触摸开关来实现琴键的触发。

2.2 音频功放电路在音频功放电路中,我们将采用TDA7297芯片作为功放,通过PWM技术实现音频输出,并通过滤波电路滤除杂音和谐波。

2.3 时钟-复位电路在时钟-复位电路中,我们将采用12MHz晶振作为时钟源,并使用复位电路确保系统在上电时能够正确运行。

2.4 LED显示电路在LED显示电路中,我们将采用MAX7219芯片实现LED点阵显示,并通过SPI接口与51单片机进行通信。

同时,我们还将使用CD4511芯片实现数码管显示琴键状态。

通过本课程设计,我们可以深入理解单片机原理的应用,掌握电子琴的设计和制作技术,提高自身的实践能力和创新能力。

2.5 整体电路本章将介绍电子琴的整体电路设计。

5_按键防抖动电路设计

5_按键防抖动电路设计

一、实验电路图、状态图、流程图、程序代码、仿真代码、仿真波形图(可以只写出核心功能代码,代码要有注释)
设计思路:
在第一个状态时,等待按键按下,一旦有按键按下(按键下降沿到来),便跳转到第二个状态,抖动滤除状态。

在第二个状态,有检测到高电平(上升沿),就会被认为是毛刺,进而返回第一个状态继续等待下降沿。

等毛刺被滤除后(计数满)则进入按下稳定状态。

在按下稳定状态,等待释放(上升沿),同按键按下的状态,再次滤除释放按键的抖动。

等抖动滤除后,恢复到第一个状态。

状态转移图:
程序代码:
译码器模块:
Modelsim测试代码:
Modelsim功能仿真波形图:。

门禁电子密码锁说明书

门禁电子密码锁说明书
3.2、线反转法
线反转法先把行线设为输入,列线设为输出且输出0,然后读取行线的状态值暂存寄存器,然后行列线互换,列先设为输入,行线设为输出,读取列线的值之后和之前行线的值相或得到每个键的状态值,查表找出哪颗键被按下即可。
逐行(列)扫描法比较麻烦,因此采用线反转法。
4、数码管显示方案设计:
数码管显示数字时是把每个数字的段码送到数码管段选口,然后选通数码管位选码,则数码管就显示对应的数字,每个数字的段码采用查表的方式查找,把每个数字的段码都写在一个数组,通过数组下标查找到对应段码送出去显示。输入密码时数码管要显示输入的状态‘-’,采用一个数组存储‘-’,初始数组内容全0,数码管全灭,每输入一个密码,该数组对应位置就存入‘-’的段码,然后通过缓冲单元输出到数码管。
case(2):LSA=0; LSB=1; LSC=0; break;
case(3):LSA=1; LSB=1; LSC=0; break;
case(15):k15(); break;
}
}
}
程序开始先进行滚动存储,lb[5]这个数组用来存储最近5次按键状态值的,接着判断这5个单元内容是否相等,如果不等则退出该函数,相等则接着判断是否是按下,若pd[1]为0x0f且pd[0]不为0x0f则是按键按下,然后查表找到与当前按下的键状态值相等的位置,记录得到键值,执行对应键功能。
软件延时会有一个等待按键释放的过程,因此按下按键数码管会灭一小段时间,结果不太理想,但滚动滤波法只判断按键按下的那个状态(下降沿),因此不会出现数码管灭的情况,因此采用滚动滤波法。
3、按键扫描方案设计与论证:
3.1、逐行(列)扫描法
逐行扫描法把行(列)线其中一位置为0,然后观察列(行)线电平变化,若为0了,则把行首值+列值得到键值确定哪颗按键按下,若没变化在把后一行(列)线置为0,依次扫描过去。
  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。

相关文档
最新文档