键盘与接口显示电路EDA

河南科技大学

课程设计说明书

课程名称EDA技术

题目键盘及接口显示电路

学院车辆与动力工程学院

班级农业电气化与自动化091

学生姓名卢浩冉

指导教师罗四倍

日期2012年7月12号

键盘及接口显示电路

摘要

本文通过对4×4矩形键盘的信息采集,并能够在数码显示管上显示所按下的信息。通过循环输出行信号,检测列信号输入,将行列信号相并,来达到采集信号的目地,并通过译码在7段数码管上显示出来。此次设计,为了防止抖动引起的混乱,加入了一个防抖动环节。

在译完一个键值后,加了一个计算环节,一旦检测到列信号后,译码,紧跟着进入计数环节,此时键抖动不会进入其他环节,这样可以防止抖动。给精度较高的场合应用提供了良好的条件,为以后高精度的应用创造良好空间。设计中通过按键控制可以显示字符串,例如“HELLO”,较小的改动可以任意显示5个字符,这在广告中的用处随处可见,给现代生活带来了方便。

关键词:键盘扫描译码显示字符串

目录

第一章绪论 (4)

§1.1设计目的和意义 (4)

§1.2设计任务及要求 (4)

第二章总体设计 (5)

§2.1工作原理 (5)

§2.2设计思路 (5)

§2.3数码管显示译码模块设计 (6)

§2.4字符串“HELLO”的模块实现 (7)

§2.4.1七段数码管译码扫描显示 (7)

§2.4.2原理图 (8)

第三章仿真 (9)

§3.1键盘扫描功能的仿真 (9)

§3.2字符串的仿真 (10)

第四章程序 (11)

§4.1键盘扫描程序 (11)

§4.2字符串显示程序 (16)

第五章结论 (18)

参考文献 (19)

第一章绪论

§1.1 设计目的和意义

本次设计的目的就是通过实践深入理解计算机组成原理,了解EDA技术并掌握VHDL硬件描述语言的设计方法和思想。以计算机组成原理为指导,通过学习的VHDL语言结合电子电路的设计知识理论联系实际,掌握所学的课程知识和基本单元电路的综合设计应用。通过对掌握4×4键盘的扫描的巧妙实现和对字符串的显示过程.巩固和综合运用所学知识,提高IC设计能力,提高分析、解决计算机技术实际问题的独立工作能力。

§1.2 设计任务及要求

1.键盘扫描功能:能够对矩形键盘信息采集;

2.显示功能:能够显示相应的按键信息,并能够在按键控制下切换为字符串显示“HELLO”!

3.掌握数码管工作的原理,并能够对设计的程序进行仿真和测试,以实现相应的功能。

第二章总体设计

§2.1工作原理

可编程器件的KEY_HANG[3..0]行信号输出端不停循环输出“1110”“1101”“1011”“0111”。当没有键按下时可编程器件的KEY_LIE[3..0]列信号输入端检测到的是“1111”。当有按键按下时,如按下1,此时KEY_HANG[3..0]行信号输出为“0111”,即KEY_HANG[3..0]的3管脚为“0”,可由电路看出,此时输入端KEY_LIE[3..0]检测到的将是“0111”。KEY_LIE[3..0]的3管脚为0,可以在编写程序时,将输出信号KEY_HANG[3..0]与输入信号KEY_LIE[3..0]同时判断,比如可以认为当数据“KEY_HANG&KEY_LIE”为“01110111”时,可译码成数据1,。同理可得其他按键的编码。根据不同数据的编码译成不同的数据。

§2.2设计思路

1.循环输出行信号,检测列信号输入,将行列信号相并。

2.译键值。

3.去抖动。在译没一个键值后,为了防止抖动,加了一个计算环节,一旦检测到列信号后,译码,紧跟着进入计数环节,此时键抖动不会进入其他环节,这样可以防止抖动。

4.数码管译码、循环显示。

电路的具体功能罗列如下:

1) 采用4×4矩阵键盘作为操作数和操作符的输入设备。

2) 采用2位8段数码管作为输出显示设备,显示按下的数字及简单的功能。

3) 由于所有键盘在按下或者弹起的时候均有按键抖动,所以应该采用去抖电路,当检测到有按键按下去的时候,应该延时20ms后,再进行检测,如果仍有键盘按键被按下去的话,则进行键盘读值。

当CLK_1K上升沿到来时状态转为state0,然后判断列与非后的值,看是否有按键按下,如果有输入数据,则自动启动20ms的计数器,当计满数后,产生一个指示信号,此信号为1bit,高电平有效。当读到此指示信号后,便再次将row信号锁存至寄存器,便得到键盘的一个返回值。如果row没有变化,则state转换为state2,对第二行进行按键扫描。依此类推,扫描第三行与第四行。

因为普通的按键都是接触式的,当按键闭合或释放时,上下接触面都会产生一个很短暂的抖动,如图2.2所示,这个抖动时间一般都会持续5-10ms,虽然这个抖动时间很短,但对于FPGA工作在50M的高频率上的器件来说,还是可以捕捉的到的。为了使CPU对于一次按键操作只处理一次,在软件中必须加入去除抖动处理。如图2.1所

图2.1 按键闭合时产生的抖动

由图中可以看出,最简单的去抖方法就是每隔一段时间读一次键盘,时间间隔大于10ms即可。如果连续两次检测都有按键被按下,则可以肯定有按键被按下,而且也进入闭合稳定期。

§2.3数码管显示译码模块设计

数码管显示译码电路主要用来对实际的二进制数据装换为8段数码管的实际显示控制码,采用两个2位的8段共阴极数码管,数码管的显示方式有两种:静态显示和动态显示。具体如下:

静态显示方式:所谓静态显示就是指无论是多少位数码管,同时处于显示状态需要的硬件电路较多(每一个数码管都需要一个锁存器),将造成很大的不便,同时由于所有数码管都处于被点亮状态,所以需要的电流很大,当数码管的数量增多时,

对电源的要求也就随之增高。所以,在大部分的硬件电路设计中,很少采用静态显示方式。

动态显示方式:所谓动态显示,是指无论在任何时刻只有一个数码管处于显示状态,每个数码管轮流显示。

动态显示的优点是:硬件电路简单(数码管越多,这个优势越明显),由于每个时刻只有一个数码管被点亮,所以所有数码管消耗的电流较小;缺点是:数码管亮度不如静态显示时的亮度高,例如有8个数码管,以1秒为单位,每个数码管点亮的时间只有1/8秒,所以亮度较低;如果刷新率较低,会出现闪烁现象;如果数码管直接与单片机连接,软件控制上会比较麻烦等。

显示译码方式如下:

1) 时钟上升沿到来时分别对位选和段选进行译码。

2) 将输入的2bite位选数据译码成4比特数据控制数码管的2位,由于是共阴极数码管要选定相应的数码管则使该位位低电平,其它位为高电平即可,如:0000译码为0111_1111,对应于实验板上的左边第一位数码管。

3) 将输入的4bite段选数据译码为8比特数据控制8个LED的亮灭,最高位接A,最低位接小数点位DP。若要显示0则对应的译码为8’b1111_1100。

§2.4字符串“HELLO”的模块实现

§2.4.1 七段数码管译码扫描显示

clk:时钟输入端,此信号是串行扫描的同步信号。

data_control[7..0]:8个分别控制数码管显示的输入信号;

led_addr[7..0]:对8个数码管进行串行扫描的输出控制信号;

seg7_data[6..0]:驱动7段数码管各显示段的输出信号;

相关文档
最新文档