矩阵键盘EDA技术课程设计

矩阵键盘EDA技术课程设计
矩阵键盘EDA技术课程设计

《电子设计EDA》课程设计

专业:电子信息科学与技术

班级:2010级电信本(1)班

姓名: ***

学号: *********

指导老师: ***

完成时间: 2012.11—2012.12

教师评分:

目录

一、绪论 (1)

1.1 FPGA概况 (1)

1.2 本课题的研究意义 (2)

二、课程设计的任务和目的 (3)

三、矩阵键盘接口电路的原理与总体设计 (3)

3.1 矩阵键盘接口电路的原理 (3)

3.2 总体设计 (5)

四、各模块的设计及仿真 (6)

4.1 键盘扫描电路 (6)

4.2 键盘译码电路和按键标志位产生电路 (8)

4.3 时钟产生模块 (10)

4.4 键盘接口电路顶层电路实现 (12)

五、参考文献 (13)

六、心得体会 (13)

七、附录 (14)

7.1 源程序代码 (14)

2

题目:矩阵键盘控制接口设计

一、绪论

1.1 FPGA概况

早期的可编程逻辑器件只有可编程只读存储器(PROM)、紫外线可擦除只读存储器(EPROM)和电可擦除只读存储器(E2PROM)三种。由于结构的限制,它们只能完成简单的数字逻辑功能。

其后出现了一类结构上稍复杂的可编程芯片,即可编程逻辑器件(PLD),它能够完成各种数字逻辑功能。典型的PLD由一个“与”门和一个“或”门阵列组成,而任意一个组合逻辑都可以用“与—或”表达式来描述,所以PLD能以乘积和的形式完成大量的组合逻辑功能。

这一阶段的产品主要有PAL(可编程阵列逻辑)和GAL(通用阵列逻辑)。 PAL由一个可编程的“与”平面和一个固定的“或”平面构成,或门的输出可以通过触发器有选择地被置为寄存状态。PAL器件是现场可编程的,它的实现工艺有反熔丝技术、EPROM技术和E2PROM技术。还有一类结构更为灵活的逻辑器件是可编程逻辑阵列(PLA),它也由一个“与”平面和一个“或”平面构成,但是这两个平面的连接关系是可编程的。PLA 器件既有现场可编程的,也有掩膜可编程的。在PAL的基础上又发展了一种通用阵列逻辑(GAL、Generic ArrayLogic),如GAL16V8、GAL22V10等。它采用了E'PROM工艺,实现了电可擦除、电可改写,其输出结构是可编程的逻辑宏单元,因而它的设计具有很强的灵活性,至今仍有许多人使用。这些早期的PLD器件的一个共同特点是可以实现速度特性较好的逻辑功能,但其过于简单的结构也使它们只能实现规模较小的电路。

为了弥补这一缺陷,20世纪80年代中期,Altera和Xilinx分别推出了类似于PAL 结构的扩展型CPLD(Complex Programmable Logic Dvice)和与标准门阵列类似的FPGA(FieldProgrammable Gate Array),它们都具有体系结构和逻辑单元灵活、集成度高以及适用范围宽等特点。这两种器件兼容了PLD和通用门阵列的优点,可实现较大规模的电路,编程也很灵活。与门阵列等其他ASIC(Application Specific IC)相比,它们又具有设计开发周期短、设计制造成本低、开发工具先进、标准产品不需测试、质量

1

稳定以及可实时在线检验等优点,因此被广泛应用于产品的原型设计和产品生产(一般在10 000件以下)之中。几乎所有应用门阵列、PLD和中小规模通用数字集成电路的场合均可应用FPGA和CPLD器件。

1.2 本课题的研究意义

近年来EDA技术在电子领域引发的技术革命,推动着电子技术的迅猛发展,为世人所瞩目,而FPGA为代表的可编程逻辑器件的应用,更是受到业内人士的普遍关注。伴随着大规模集成电路和计算机技术的高速发展,在设计工业自动化,仪器仪表,计算机设计与应用、通信、国防等领域的电子系统中,FPGA技术的含量正以惊人的速度提升。将尽可能大的完整的电子系统在单一FPGA芯片中实现已成为现实,电子类新技术项目的开发也更多地依赖于FPGA技术的应用。

作为FPGA研究课题之一的矩阵键盘控制接口电路的设计,在FPGA设计中是一个经常被提到的话题,就像是利用PFGA设计数字中一样,虽然简单,但是却是一个很有研究意义的话题,涉及到怎么样才能是FPGA资源更加充分利用,现在很多电子产品都涉及到按键,小的有独立按键,大的有N*N的矩阵键盘,独立按键由于案件的个数少,也就没必要考虑资源的利用问题了。而矩阵键盘,由于按键多,对整个系统的影响大,所以肯定要考虑资源的利用问题,而且还要考虑一下电路里面的时序问题。本次设计要求设计一个4*9矩阵键盘,也就是行为4,列为9,一共可以设计36个按键。其中设计方法为:一般判断键盘中有没有按键按下是通过航线送入扫描信号,然后从列线中读取状态得到的,其方法是依次给行线送入低电平,检查列线的输入。如果列线信号趣味高电平,则代表低电平信号所在的行中无按键按下,反之,则有,则在低电平信号所在的行和出现低电平的交叉处有按键按下。

一共有三个模块,分别为:扫描电路模块、时钟产生模块、键盘译码电路和按键标志位产生电路。扫描模块中是为了产生扫描信号,来利用扫描信号来扫描键盘中中是否有按键按下。键盘译码电路和按键标志位产生电路是为了配合扫描模块来扫描电路中是否有按键按下,而且还要求它来产生按键标志信号,以便和外部电路握手。时钟产生电路是为了产生不同频率的信号,来驱动上面两个电路的运转。

在设计完各个模块后,还要对每个模块进行仿真,在仿真的过程中要对参数精心设计,要不然看不出结果的。

2

二、课程设计的任务和目的

20世纪90年代,国际上电子和计算机技术较先进的国家,一直在积极探索新的电子电路设计方法,并在设计方法、工具等方面进行了彻底的变革,取得了巨大成功。在电子技术设计领域,可编程逻辑器件(如CPLD、FPGA)的应用,已得到广泛的普及,这些器件为数字系统的设计带来了极大的灵活性。这一切极大地改变了传统的数字系统设计方法、设计过程和设计观念,促进了EDA技术的迅速发展。

本次设计在EDA开发平台QUARTUSⅡ7.2上利用VHDL语言设计矩阵键盘控制接口电路。要求设计一个4×9矩阵键盘,一共有三个模块,分别为:扫描电路模块、时钟产生模块、键盘译码电路和按键标志位产生电路。扫描模块中是为了产生扫描信号,来利用扫描信号来扫描键盘中是否有按键按下。键盘译码电路和按键标志位产生电路也是为了配合扫描模块来扫描电路中是否有按键按下,而且还要求它来产生按键标志信号,以便和外部电路握手。时钟产生电路是为了产生不同频率的信号,来驱动上面两个电路的运转。

通过对课题的分析研究,掌握了VHDL语言编程方法,同时也增强了个人的学习能力和动手能力。

三、矩阵键盘接口电路的原理与总体设计

本章首先介绍矩阵键盘的设计思路,总体来说行线输出是低电平,一旦有键按下,则输入线就会被拉低,这样,通过读入输入线的状态就可得知是否有键按下了。最后介绍4*9键盘的总体设计思路。

3.1 矩阵键盘接口电路的原理

在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式。在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。这样,一个端口就可以构成4*4=16个按键,比之直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显,比如再多加一条线就可以构成20键的键盘,而直接用端口线则只能多出一键(9键)。由此可见,在需要的键数比较多时,采用矩阵法来做键盘是合理的。矩阵式结构的键盘显然比直接法要复杂一些,识别也要复杂一些,列线通过电阻接正电源,并将行线所接的FPGA的I/O口作为输出端,而列线所接的I/O口

3

则作为输入。这样,当按键没有按下时,所有的输出端都是高电平,代表无键按下。行线输出是低电平,一旦有键按下,则输入线就会被拉低,这样,通过读入输入线的状态就可得知是否有键按下了。

行列式键盘的电路原理如图3.1.1所示:(为了说明问题以4*4为例)

Keyin3

Keyin2

Keyin1

Keyin0

FPGA

Keydrv0

Keydrv0 Keydrv0 Keydrv01

5

234

678

90A B

C D E F

+5

v

+5V

图3.1.1 行列式键盘的电路原理图

设置扫描信号为keydrv3~keydrv0,列线按键输入信号keyin3~keyin0与按键位置的关系如表3.1.1所示:

表3.1.1 扫描信号和列线按键输入信号与按键之间的关系表

keydrv3~keydrv0 keyin3~keyin0 对应的按键

1110 1110 1 1101 2 1011 3 0111 4 1110 5

1101 1101 6 1011 7 0111 8

4

5 1011

1110

9 1101 0 1011 A 0111

B 1110

C 0111 1101

D 1011 E

0111

F

3.2 总体设计

矩阵键盘控制系统的总体设计如图3.2.1所示:

图3.2.1 键盘接口电路结构图

由行列式键盘原理就可以知道,要正确的完成键盘输入工作必须有按键扫描电路产

生keydrv3~keydrv0信号,同时还必须有按键译码电路从keydrv3~keydrv0信号和keyin3~keyin0信号中译码出按键的值。此外,一般还需要一个按键发生信号用于和其他模块接口,通知其他模块键盘上有按键动作发生,并可以从键盘上读取按键的键值。由于各个模块需要的时钟频率是不一样的,因此时钟产生模块就是用于产生各个模块需要的时钟信号。因此得到键盘接口电路的结构如上图所示。

键盘译码电路

按键标志产生电路

4*9键盘

时钟产生电路

扫描电路

keyvalu

keypresse

clk

Keydrv[3..0]

四、各模块的设计及仿真

4.1 键盘扫描电路

键盘扫描电路是用于产生keydrv3~keydrv0信号,其变化的顺序依次是1110---1101---1011---0111---……周而复始地扫描。其停留在某个状态的时间大约为10ms。更短的停留时间是没有必要的,因为人按键的时间大约为10ms,不可能有更快的按键动作发生;另外,更短的停留时间还容易采集到抖动信号,会干扰判断,而太长的停留时间则会使某些较快的按键东走丢失。

键盘扫描电路的外部接口电路如图4.1.1所示,其中clk_scan是周期为10ms的扫描时钟,keydrv为输出到键盘的扫描信号,宽度为4位。

图4.1.1 键盘扫描电路的外部接口电路图

其VHDL描述如下:

LIBRARY ieee;

USE ieee.std_logic_1164.all;

ENTITY key_scan IS

-- {{ALTERA_IO_BEGIN}} DO NOT REMOVE THIS LINE!

PORT

(

clk_scan : IN STD_LOGIC; --扫描时钟,周期10ms

keydrv : OUT STD_LOGIC_VECTOR(3 DOWNTO 0)

--输出扫描信号

);

-- {{ALTERA_IO_END}} DO NOT REMOVE THIS LINE!

END key_scan;

-- Architecture Body

ARCHITECTURE key_scan_architecture OF key_scan IS

CONSTANT s0 :STD_LOGIC_VECTOR (3 DOWNTO 0):="1110" ;

--定义状态机编码

CONSTANT s1 :STD_LOGIC_VECTOR (3 DOWNTO 0):="1101" ;

CONSTANT s2 :STD_LOGIC_VECTOR (3 DOWNTO 0):="1011" ;

CONSTANT s3 :STD_LOGIC_VECTOR (3 DOWNTO 0):="0111" ;

SIGNAL present_state:STD_LOGIC_VECTOR(3 DOWNTO 0);

6

--状态机现态

SIGNAL next_state:STD_LOGIC_VECTOR(3 DOWNTO 0);

--状态机次态

BEGIN

--状态更新进程

PROCESS(clk_scan)

BEGIN

IF(clk_scan'event and clk_scan='1') then

present_state<=next_state;

END IF;

END PROCESS;

--状态译码

PROCESS (present_state)

BEGIN

CASE present_state IS

WHEN s0=>next_state<=s1;

WHEN s1=>next_state<=s2;

WHEN s2=>next_state<=s3;

WHEN s3=>next_state<=s0;

--多余状态处理

WHEN OTHERS=>next_state<=s0;

END CASE;

END PROCESS;

--输出译码

keydrv<=present_state;

END key_scan_architecture;

以上程序采用一个状态机来实现扫描电路。该状态机是一个one-hot状态机,并且输出值就是状态机的状态,没有通过一个逻辑电路来做输出译码。这样的好处是得到的输出信号比较“干净”,没有毛刺。

其仿真波形如图4.1.2所示:

图4.1.2 键盘扫描电路的仿真图

7

从图4.1.2中很容易发现present_state的值的变化是随着扫描信号key_scan的上升沿的到来而变化的,也就是key_scan每来一个脉冲,相应的present_state的值就变化一次。很容易发现keydrv的值的变化顺序为1110---1101---1011---0111,也就是每个key_scan来一个脉冲时,保证keydrv相邻的值只有一个变化,这样为了防止产生不必要的毛刺。present_state值和keydrv值是相同的,只不过一个用的是二进制,一个用的是十进制,所以它的变化为14—13—11—7。

4.2 键盘译码电路和按键标志位产生电路

键盘译码电路是从keydrv3~keydrv0和keyin3~keyin0信号中译码出按键的键值的电路,它的真值表就是以前行扫描信号、列扫描与按键位置的关系图。按键标志位产生电路是产生按键标志位信号keypressed的电路。由于这两个电路关系紧密,因此放入同一个模块中实现,其外部接口图如图4.2.1所示。其中clk为局信号,它是由FPGA 芯片的外部晶振给出的。clk在系统中的频率是最高,其他时钟都是它的分频产生。keydrv为键盘扫描信号,keyin为键盘输入信号,keyvalue为键值(代表按键所在的位置),keypressed表示有一个按键被按下,每发生一次按键动作,keypressed就输出一个宽度为全局时钟周期的正脉冲。该信号用于与其他模块握手,负责通知其他模块键盘是否有按键发生。其他模块在keypressed有效时,可以读取键值。

图4.2.1 键盘译码电路的外部接口

其VHDL实现如下:

LIBRARY ieee;

USE ieee.std_logic_1164.all;

USE ieee.std_logic_arith.all;

ENTITY keydecoder IS

PORT(

clk : IN STD_LOGIC; --全局时钟

clk_scan : IN STD_LOGIC; --扫描时钟

8

keyin : IN STD_LOGIC_VECTOR(8 DOWNTO 0); --键盘输入keydrv : IN STD_LOGIC_VECTOR(3 DOWNTO 0); --扫描信号

keyvalue : OUT STD_LOGIC_VECTOR(8 DOWNTO 0);--键值

keypressed : OUT STD_LOGIC --有按键按下

);

END keydecoder;

ARCHITECTURE keydecoder_architecture OF keydecoder IS

--TEMP <=keyin & keydrv;

SIGNAL temp:STD_LOGIC_VECTOR(12 DOWNTO 0) ;

SIGNAL temp_pressed: STD_LOGIC;

SIGNAL keypressed_asy: STD_LOGIC;

SIGNAL q1,q2,q3,q4,q5,q6 :STD_LOGIC;

BEGIN

temp<=keyin & keydrv;

--译码进程

参见附录程序

--按键标志产生电路

process (clk_scan)

begin

if (clk_scan'event and clk_scan='1') then

q1<=temp_pressed;

q2<=q1;

q3<=q2;

q4<=q1;

end if;

keypressed_asy<=q1 or q2 or q3 or q4 ;

end process;

--同步化keypressed_asy

process(clk)

begin

if(clk'event and clk='1') then

q5<=keypressed_asy;

q6<=q5;

end if;

keypressed<=q5 and not(q6) ;

end process;

END keydecoder_architecture;

上面程序是改进的程序,原程序是:

--同步化有键被按下

PROCESS(clk)

BEGIN

IF(clk'event and clk ='1')THEN

9

q1<=temp_pressed;

q2<=q1;

END IF;

keypressed<=q1 and not(q2) ;

END PROCESS;

END keydecoder_architecture;

上面程序中有两个进程。第一个进程负责译码,值得注意的是WHEN OTHEN语句有没有对temp_pressed和keyvalue信号赋值,这相当于不改变temp_presed和keyvalue 信号的值,即实现了锁存输出。在不需要锁存输出时,在WHEN O-THEN语句中,一定要对所有的case语句中出现的信号逐一赋值,以免产生意想不到的结果。第二个进程负责把按键同步信号同步化与全局时钟同步的并且脉宽为一个周期的脉冲。重新编写按键发生标志电路,该电路不仅要解决按键抖动导致一次按键被当成多次的问题,同时还要解决按键太长导致一次按键被当成多次的问题。考虑这些因素之后,编写的程序应该是阴影部分的程序。

该电路的仿真结果如图4.2.2所示:

图4.2.2 键盘译码电路仿真图

通过仿真波形图可以看出,按键的抖动不会影响输出结果;无论一个按键动作持续时间有多久,但仍然认为是一个按键。

4.3 时钟产生模块

时钟产生模块是用于扫描时钟的,它的输出供给给键盘扫描模块和按键标志位的产生模块,其外部接口图如图4.3.1所示:

10

图4.3.1 时钟产生模块外部接口电路其VHDL实现如下:

LIBRARY ieee;

USE ieee.std_logic_1164.all;

USE ieee.std_logic_ARITH.all;

ENTITY clk_gen IS

PORT

(clk : IN STD_LOGIC; --全局时钟

clk_scan : OUT STD_LOGIC --扫描时钟

);

END clk_gen;

ARCHITECTURE clk_gen_architecture OF clk_gen IS

--做程序仿真时,用这个语句

signal cnt :integer range 0 to 150;

--需要下载到芯片上时,替换为下面这个语句

signal cnt :integer range 0 to 119999;

begin

--计数模块

process(clk)

begin

if(clk'event and clk ='1') then

if (cnt=cnt'high) then

cnt<=0;

else

cnt<=cnt+1;

end if;

end if;

end process;

--译码输出

process(cnt,clk)

begin

if(clk'event and clk='1') then

if cnt>=cnt'high/2 then

clk_scan<='1';

else

clk_scan<='0';

11

end if;

end if;

end process;

END clk_gen_architecture;

该程序主要包含有一个计数器模块和一个译码输出模块,该程序是通过计数器模块实现分频的。要从12MHZ全局时钟得到100HZ的时钟,必须进行120000倍的分频。这么大的分频需要仿真时间很久。仿真时一般采用小分频来代替,(在本程序中采用150分频来仿真)以便快速观察到结果。等到真正下载到电路上时,就需要采用120000分频了。该电路的仿真结果如图4.3.2所示:

图4.3.2 时钟产生模块的仿真图

4.4 键盘接口电路顶层电路实现

键盘接口电路的顶层电路只是把键盘扫描模块、键盘译码且按键标志位产生模块和时钟产生模块连接起来,其结构如图4.4.1所示:

图4.4.1 键盘接口电路的顶层电路

该电路的仿真波形如图4.4.2所示:

图4.4.2 键盘接口电路的顶层电路仿真图

12

五、参考文献

[1] 潘松,黄继业. EDA技术实用教程[M]. 北京:科学出版社,2010.

[2] 黄正槿,徐坚. CPLD系统设计技术入门与应用[M]. 北京:电子工业出版社,2006.

[3] 徐惠民,安德宁. 数字逻辑设计与VHDL描述[M]. 北京:机械工业出版社,2008.

[4] 周国祥. 汇编语言程序设计[M]. 合肥:合肥工业大学出版社,2010.

[5] 赵曙光. 可编程逻辑器件原理开发与应用[M]. 西安:西安电子科技大学出版社,2008.

[6] 求是科技. CPLD/FPGA应用开发技术与工程实践[M]. 北京:人民邮电出版社,2007.

六、心得体会

矩阵式键盘是一种常见的输入装置,在日常的生活中,矩阵式键盘在计算机、电话、手机、微波炉等电子产品上已被广泛应用,各式各样的矩阵键盘控制着各种各样的功能。矩阵键盘控制接口电路是最基本的输入电路,我们利用软件Quartus II自行设计并修改的键盘输入显示电路是通过VHDL语言的编写并实现了键码的对应显示,在设计中发现了许多问题,比如去按键抖动,这个过程很有意思但却很繁琐,在利用Quartus II 进行仿真的时候,要细心地对参数进行设置,最后才能够仿真出结果。

本次设计中最为突出的是对键盘译码电路和按键标志位产生电路的设计,主要是去抖动,其中重要一点是按键去抖动电路不仅要解决按键抖动导致一次按键被当成多次的问题,同时还要解决按键太长导致一次按键被当成多次的问题。否则,当设计的键盘在实际中应用的时候,就会出现错误,所以应该把之前的程序重新编写。在新程序中:

◆多了一个输入信号clk_scan,它是用于产生扫描信号的时钟,周期为10ms。

◆按键信号tepm_pressed首先通过clk_scan信号的上升沿采样,通过采样后,抖动

噪声被消除。

◆采样后得到信号被分别延迟1~4个clk_csan周期得到4个信号q1、q2、q3、q4。

这四个信号进行或运算得到一个宽度约为80ms并且与全局时钟异步的按键信号keypressed_asy。原来程序中一个长时间的按键过程有可能被认为是多次按键,通过这种方法使得一个长时间的按键仍然是一次按键。

◆把keypressed_asy同步化。

◆消除了按键抖动。

13

七、附录

7.1 源程序代码

PROCESS (temp)

BEGIN

case temp is

when "1111111101110"=>keyvalue<=conv_std_logic_vector(1,9);

temp_pressed <='1';

when "1111111101101"=>keyvalue<=conv_std_logic_vector(2,9);

temp_pressed <='1';

when "1111111101011"=>keyvalue<=conv_std_logic_vector(3,9);

temp_pressed <='1';

when "1111111100111"=>keyvalue<=conv_std_logic_vector(4,9);

temp_pressed <='1';

when "1111111011110"=>keyvalue<=conv_std_logic_vector(5,9);

temp_pressed <='1';

when "1111111011101"=>keyvalue<=conv_std_logic_vector(6,9);

temp_pressed <='1';

when "1111111011011"=>keyvalue<=conv_std_logic_vector(7,9);

temp_pressed <='1';

when "1111111010111"=>keyvalue<=conv_std_logic_vector(8,9);

temp_pressed <='1';

when "1111110111110"=>keyvalue<=conv_std_logic_vector(9,9);

temp_pressed <='1';

when "1111110111101"=>keyvalue<=conv_std_logic_vector(10,9);

temp_pressed <='1';

when "1111110111011"=>keyvalue<=conv_std_logic_vector(11,9);

temp_pressed <='1';

when "1111110110111"=>keyvalue<=conv_std_logic_vector(12,9);

temp_pressed <='1';

when "1111101111110"=>keyvalue<=conv_std_logic_vector(13,9);

temp_pressed <='1';

when "1111101111101"=>keyvalue<=conv_std_logic_vector(14,9);

temp_pressed <='1';

when "1111101111011"=>keyvalue<=conv_std_logic_vector(15,9);

temp_pressed <='1';

when "1111101110111"=>keyvalue<=conv_std_logic_vector(16,9);

temp_pressed <='1';

when "1111011111110"=>keyvalue<=conv_std_logic_vector(17,9);

temp_pressed <='1';

when "1111011111101"=>keyvalue<=conv_std_logic_vector(18,9);

temp_pressed <='1';

14

when "1111011111011"=>keyvalue<=conv_std_logic_vector(19,9);

temp_pressed <='1';

when "1111011110111"=>keyvalue<=conv_std_logic_vector(20,9);

temp_pressed <='1';

when "1110111111110"=>keyvalue<=conv_std_logic_vector(21,9);

temp_pressed <='1';

when "1110111111101"=>keyvalue<=conv_std_logic_vector(22,9);

temp_pressed <='1';

when "1110111111011"=>keyvalue<=conv_std_logic_vector(23,9);

temp_pressed <='1';

when "1110111110111"=>keyvalue<=conv_std_logic_vector(24,9);

temp_pressed <='1';

when "1101111111110"=>keyvalue<=conv_std_logic_vector(25,9);

temp_pressed <='1';

when "1101111111101"=>keyvalue<=conv_std_logic_vector(26,9);

temp_pressed <='1';

when "1101111111011"=>keyvalue<=conv_std_logic_vector(27,9);

temp_pressed <='1';

when "1101111110111"=>keyvalue<=conv_std_logic_vector(28,9);

temp_pressed <='1';

when "1011111111110"=>keyvalue<=conv_std_logic_vector(29,9);

temp_pressed <='1';

when "1011111111101"=>keyvalue<=conv_std_logic_vector(30,9);

temp_pressed <='1';

when "1011111111011"=>keyvalue<=conv_std_logic_vector(31,9);

temp_pressed <='1';

when "1011111110111"=>keyvalue<=conv_std_logic_vector(32,9);

temp_pressed <='1';

when "0111111111110"=>keyvalue<=conv_std_logic_vector(33,9);

temp_pressed <='1';

when "0111111111101"=>keyvalue<=conv_std_logic_vector(34,9);

temp_pressed <='1';

when "0111111111011"=>keyvalue<=conv_std_logic_vector(35,9);

temp_pressed <='1';

when "0111111110111"=>keyvalue<=conv_std_logic_vector(36,9);

temp_pressed <='1';

when others =>

temp_pressed<='0';

end case;

end process;

15

EDA课程设计---流水灯设计

EDA课程设计流水灯设计

目录 一、摘要··3 二、流水灯设计目的··4 三、流水灯设计流程··4 四、流水灯设计程序··5 五、流水灯设计管脚分配··7 六、功能仿真图··8 七、原理图波形图··9 八、设计注意事项··10

九、课程设计总结··11 十、参考文献··12 十一、评分表··13 一、摘要 随着EDA技术发展和应用领域的扩大与深入,EDA技术在电子信息、通讯、

自动控制及计算机应用等领域的重要性突出。随着技术市场与人才市场对EDA 的需求不断提高,产品的市场需求和技术市场的要求也必然会反映到教学领域和科研领域中来。因此学好EDA技术对我们有很大的益处。EDA是指以计算机为工具,在EDA软件平台上,根据设计社描述的源文件(原理图文件、硬件描述语言文件或波形图文件),自动完成系统的设计,包括编译、仿真、优化、综合、适配(或布局布线)以及下载。 流水灯是一串按一定的规律像流水一样连续闪亮,流水灯控制是可编程控制器的一个应用,其控制思想在工业控制技术领域也同样适用。流水灯控制可用多种方法实现,但对现代可编程控制器而言,基于EDA技术的流水灯设计也是很普遍的。 课程设计主要的目的是通过某一电路的综合设计,了解一般电路综合设计过程、设计要求、应完成的工作内容和具体的设计方法、通过设计也有助于复习、巩固以往的学习内容、达到灵活应用的目的。在设计完成后,还要将设计的电路进行安装、调试以加强学生的动手能力。在此过程中培养从事设计工作的整体观念。 课程设计应强调以能力培养为主,在独立完成设计及制作任务同时注意多方面能力的培养与提高,主要包括以下方面: ·独立工作能力和创造力。 ·综合运用专业及基础知识,解决实际工程技术问题的能力。 ·查阅图书资料、产品手册和各种工具书的能力。 ·写技术报告和编制技术资料的能力。 ·实际动手能力。

4X4扫描式矩阵键盘课程设计

4X4扫描式矩阵键盘课程设计 课程设计名称: 4_4扫描式矩阵键盘设计 姓名:DUKE 班级:电子1008班 学号:10086 成绩: 日期:2014年1月6日

摘要 随着21世纪的到来,电子信息行业将是人类社会的高科技行业之一,式设施现代化的基础,也是人类通往科技巅峰的直通路。电子行业的发展从长远来看很重要,但最主要的还是科技问题。 矩阵式键盘提高效率进行按键操作管理有效方法,它可以提高系统准确性,有利于资源的节约,降低对操作者本身素质的要求。是它能准时、实时、高效地显示按键信息,以提高工作效率和资源利用率。 矩阵式键盘乃是当今使用最为广泛的键盘模式,该系统以N个端口连接控制N*N个按键,显示在LED数码管上。单片机控制依据这是键盘显示系统,该系统可以对不同的按键进行实时显示,其核心是单片机和键盘矩阵电路部分,主要对按键与显示电路的关系、矩阵式技术及设备系统的硬件、软件等各个部分进行实现。 4*4矩阵式键盘采用AT89C51单片机为核心,主要由矩阵式键盘电路、译码电路、显示电路等组成,软件选用C语言编程。单片机将检测到的按键信号转换成数字量,显示于LED显示器上。该系统灵活性强,易于操作,可靠性高,将会有更广阔的开发前景。

目录 第一章:系统功能要求-------------------------------------------------------- 1.1 4*4 矩阵式键盘系统概述------------------------------------------------ 1.2 本设计任务和主要内容--------------------------------------------------- 第二章:方案论证--------------------------------------------------------------- 第三章:系统硬件电路的设计------------------------------------------------ 3.1 单片机控制系统原理----------------------------------------------------- 3.2 原理图绘制说明---------------------------------------------------------- 3.3 画出流程图---------------------------------------------------------------- 3.4 原理图绘制--------------------------------------------------------------- 第四章:系统程序的设计------------------------------------------------------ 4.1 程序的编写步骤----------------------------------------------------------- 4.2 编写的源程序-------------------------------------------------------------- 第五章:调试及性能分析------------------------------------------------------ 第六章:心得体会--------------------------------------------------------------- 参考文献----------------------------------------------------------------------------

矩阵键盘的工作原理和扫描确认方式

9.3.1 矩阵键盘的工作原理和扫描确认方式 来源:《AVR单片机嵌入式系统原理与应用实践》M16华东师范大学电子系马潮 当键盘中按键数量较多时,为了减少对I/O 口的占用,通常将按键排列成矩阵形式,也称为行列键盘,这是一种常见的连接方式。矩阵式键盘接口见图9-7 所示,它由行线和列线组成,按键位于行、列的交叉点上。当键被按下时,其交点的行线和列线接通,相应的行线或列线上的电平发生变化,MCU 通过检测行或列线上的电平变化可以确定哪个按键被按下。 图9-7 为一个 4 x 3 的行列结构,可以构成12 个键的键盘。如果使用 4 x 4 的行列结构,就能组成一个16 键的键盘。很明显,在按键数量多的场合,矩阵键盘与独立式按键键盘相比可以节省很多的I/O 口线。 矩阵键盘不仅在连接上比单独式按键复杂,它的按键识别方法也比单独式按键复杂。在矩阵键盘的软件接口程序中,常使用的按键识别方法有行扫描法和线反转法。这两种方法的基本思路是采用循环查循的方法,反复查询按键的状态,因此会大量占用MCU 的时间,所以较好的方式也是采用状态机的方法来设计,尽量减少键盘查询过程对MCU 的占用时间。 下面以图9-7 为例,介绍采用行扫描法对矩阵键盘进行判别的思路。图9-7 中,PD0、PD1、PD2 为3 根列线,作为键盘的输入口(工作于输入方式)。PD3、PD4、PD5、PD6 为4根行线,工作于输出方式,由MCU(扫描)控制其输出的电平值。行扫描法也称为逐行扫描查询法,其按键识别的过程如下。 √将全部行线PD3-PD6 置低电平输出,然后读PD0-PD2 三根输入列线中有无低电平出现。只要有低电平出现,则说明有键按下(实际编程时,还要考虑按键的消抖)。如读到的都是高电平,则表示无键按下。 √在确认有键按下后,需要进入确定具体哪一个键闭合的过程。其思路是:依

EDA课程设计报告

湖北职业技术学院《EDA技术》课程设计报告 题目动态输出4位十进制频率计的设计所在学院电子信息工程学院 专业班级电信08304 学生姓名马强 学号08024839 指导教师王芳 完成日期2010年11月18 日

目录 一、概述 (3) 二、设计正文 (4) (一)设计目的 (4) (二)设计实现 (4) 1、端口说明 (4) 2、Cnt10模块说明 (5) 3、Tctl模块说明 (6) 4、锁存器reg16模块说明 (8) 5、Scan_led模块说明 (9) 6、顶层文件仿真 (10) 7、硬件下载 (11) 三、总结 (13) 四、感言 (14) 五、参考文献 (15)

概述 此次设计的主要目的是学习掌握频率计的设计方法;掌握动态扫描输出电路的实现方法;学习较复杂的数字系统设计方法。通过单位时间(1秒)内频率的计数来实现频率计的设计。此设计主要用四位十进制计数器,所以频率计数范围为100~9999Hz。然后锁存防止闪烁显示,最后由译码扫描显示电路输出到数码管进行显示输出。并且下载后会有一秒钟的延时后才会显示输出所计频率输出。设计下载后能够进行仿真频率的计数和静态显示,但是分频的设计程序有所缺陷导致长时间显示后会有1Hz的抖动。通过这次的设计能够更清楚的理解VHDL程序的描述语言,进行简单程序的编写和仿真。

动态输出4位十进制频率计的设计 一、目的 1.学习掌握频率计的设计方法。 2.掌握动态扫描输出电路的实现方法。 3.学习较复杂的数字系统设计方法 二、设计实现 4位十进制频率计外部接口如图1所示,顶层文件如图2所示,包含4中模块;Tctl、reg16、scan_led和4个cnt10。 (1)端口说明 F1Hz:给Tctl模块提供1Hz的频率输入。 Fin:被测频率输入。 scan_led:给scan_led模块提供扫描输入频率输入。 bt[1..0]:片选信号输出。 sg[6..0]:译码信号输出。 cout:进位输出。

扫描式矩阵键盘课程设计

扫描式矩阵键盘课程设 计 Company number【1089WT-1898YT-1W8CB-9UUT-92108】

4X4扫描式矩阵键盘课程设计课程设计名称: 4_4扫描式矩阵键盘设计 姓名: DUKE 班级:电子1008班 学号: 10086 成绩: 日期: 2014年1月6日 摘要 随着21世纪的到来,电子信息行业将是人类社会的高科技行业之一,式设施现代化的基础,也是人类通往科技巅峰的直通路。电子行业的发展从长远来看很重要,但最主要的还是科技问题。 矩阵式键盘提高效率进行按键操作管理有效方法,它可以提高系统准确性,有利于资源的节约,降低对操作者本身素质的要求。是它能准时、实时、高效地显示按键信息,以提高工作效率和资源利用率。 矩阵式键盘乃是当今使用最为广泛的键盘模式,该系统以N个端口连接控制N*N个按键,显示在LED数码管上。单片机控制依据这是键盘显示系统,该系统可以对不同的按键进行实时显示,其核心是单片机和键盘矩阵电路部分,主要对按键与显示电路的关系、矩阵式技术及设备系统的硬件、软件等各个部分进行实现。 4*4矩阵式键盘采用AT89C51单片机为核心,主要由矩阵式键盘电路、译码电路、显示电路等组成,软件选用C语言编程。单片机将检测到的按键信号

转换成数字量,显示于LED显示器上。该系统灵活性强,易于操作,可靠性高,将会有更广阔的开发前景。 目录 第一章:系统功能要求-------------------------------------------------------- 1.1 4*4 矩阵式键盘系统概述------------------------------------------------ 1.2 本设计任务和主要内容--------------------------------------------------- 第二章:方案论证--------------------------------------------------------------- 第三章:系统硬件电路的设计------------------------------------------------ 3.1 单片机控制系统原理----------------------------------------------------- 3.2 原理图绘制说明---------------------------------------------------------- 3.3 画出流程图---------------------------------------------------------------- 3.4 原理图绘制---------------------------------------------------------------

EDA技术课程设计报告

课程设计任务书设计题目1:数码管显示数字钟设计

院(系)分管领导:教研室主任:指导教师: 2017年6月23日

目录 第1章引言 0 第2章电路原理 0 第3章程序设计 (1) 顶层模块设计 (2) 时钟分频模块设计 (2) 按键驱动模块设计 (2) 时钟计数模块设计 (3) 整点报时模块 (4) LED灯花样显示模块 (5) 数码管显示模块设计 (5) 第4章调试、测试分析及结果 (7)

调试 (7) 测试分析 (7) 结果 (9) 第5章小结 (10) 参考文献 (11) 附录电路图及程序 (11)

第1章引言 EDA是电子设计自动化(Electronic Design Automation)的缩写,在20世纪60年代中期从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来的。 EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言VHDL 或者Verilog HDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。EDA技术的出现,极大地提高了电路设计的效率和可操作性,减轻了设计者的劳动强度。 Verilog HDL是一种硬件描述语言,以文本形式来描述数字系统硬件的结构和行为的语言,用它可以表示逻辑电路图、逻辑表达式,还可以表示数字逻辑系统所完成的逻辑功能。 此次课程设计我们运用QuartusⅡ这个软件,使用Verilog HDL语言进行编程。 数字钟是一种用数字电路技术实现时、分、秒计时的钟表。与机械钟相比具有更高的准确性和直观性,具有更长的使用寿命,已得到广泛的使用。数字钟的设计方法有许多种,例如可用中小规模集成电路组成电子钟,也可以利用专用的电子钟芯片配以显示电路及其所需要的外围电路组成电子钟,还可以利用单片机来实现电子钟等等。这些方法都各有其特点,其中利用单片机实现的电子钟具有编程灵活,以便于功能的扩展。 本次课程设计要求利用EDA技术,设计一个数码管显示数字钟的样品,数字钟要求具备以下功能: 1、具有时、分、秒,计数显示功能,以24小时循环计时; 2、具有清零,调节小时、分钟功能; 3、具有整点报时功能,整点报时的同时LED花样显示。 第2章电路原理 数码管显示数字钟设计,运用到8位数码管,要求其中6位数码管动态显示,分别显示时、分、秒的计数,同时对时间进行设置,数字钟的总体功能按照要求可以分为基本的数字时钟显示(具有时、分、秒,计数显示功能,以24小时循环计时)、手动校准(具有清零,调节小时、分钟功能)、整点报时、LED灯花样显示

单片机矩阵键盘设计方案

1、设计原理 (1)如图14.2所示,用单片机的并行口P3连接4×4矩阵键盘,并以单片机的P3.0-P3.3各管脚作输入线,以单片机的P3.4-P3.7各管脚作输出线,在数码管上显示每个按键“0-F”的序号。 (2)键盘中对应按键的序号排列如图14.1所示。 2、参考电路 图14.2 4×4矩阵式键盘识别电路原理图 3、电路硬件说明 (1)在“单片机系统”区域中,把单片机的P3.0-P3.7端口通过8联拨动拨码开关JP3连接到“4×4行列式键盘”区域中的M1-M4,N1-N4端口上。 (2)在“单片机系统”区域中,把单片机的P0.0-P0.7端口连接到“静态数码显示模块”区域中的任何一个a-h端口上;要求:P0.0对应着a,P0.1对应着b,……,P0.7对应着h。 4、程序设计内容 (1)4×4矩阵键盘识别处理。 (2)每个按键都有它的行值和列值,行值和列值的组合就是识别这个按键的编码。矩阵的行线和列线分别通过两并行接口和CPU通信。键盘的一端(列线)通过电阻接VCC,而接地是通过程序输出数字“0”实现的。键盘处理程序的任务是:确定有无键按下,判断哪一个键按下,键的功能是什么?还要消除按键在闭合或断开时的抖动。两个并行口中,一个输出扫描码,使按键逐行动态接地;另一个并行口输入按键状态,由行扫描值和回馈信号共同形成键编码而识别按键,通过软件查表,查出该键的功能。 5、程序流程图(如图14.3所示) 6、汇编源程序 ;;;;;;;;;;定义单元;;;;;;;;;; COUNT EQU 30H ;;;;;;;;;;入口地址;;;;;;;;;;

ORG 0000H LJMP START ORG 0003H RETI ORG 000BH RETI ORG 0013H RETI ORG 001BH RETI ORG 0023H RETI ORG 002BH RETI ;;;;;;;;;;主程序入口;;;;;;;;;; ORG 0100H START: LCALL CHUSHIHUA LCALL PANDUAN LCALL XIANSHI LJMP START ;;;;;;;;;;初始化程序;;;;;;;;;;

EDA课程设计

课程设计说明书 课程:EDA技术基础 题目:数字钟的设计 闹钟与整点报时模块 学生姓名:XXX 学号201265110204 班级 :1203班 专业:电子信息与科学 指导教师:XXX 2014年12月20日 长沙理工大学课程设计任务书 物理与电子科学学院电子信息与科学专业1203班姓名王玲课程名称EDA技术基础 题目数字钟的设计

长沙理工大学课程设计成绩评定表

目录 1数字钟设计闹钟模块基本任务要求4 2设计思想4 3简述闹钟模块的输入与输出5 4分进程描述6 5仿真结果与分析7 6简述数字钟的设计总成果10 7总结11 参考文献13 代码附件13

基本任务要求:运用QuartusⅡ13.1软件平台,用VHDL语言描述并设计的闹钟模块满足可调闹钟时间,当时钟时间到达闹钟时间后会响闹铃,(由于实验室权限问题会以FPGA开发板上12个LED灯交替发光来表现);整点报时过程表现为整点的前十秒内响铃,(以FPGA开发板上一个LED灯交替发光来实现)。 设计思想:闹钟模块要以分频模块、计数器模块和译码显示模块为基础,将闹钟模块分为三个进程,一个进程用来实现调闹钟,一个进程来实现闹响闹钟(即实现LED灯交替发光),另一个进程来是实现整点报时。 (上面截图为数字钟整体编译后的RTL电路的闹钟模块) 简述闹钟模块图的输入与输出:上图中的输入粗黑实线为计数器模块输出的小时、分钟的高低位和秒钟的高位(都用四位的二进制表示);输出的粗黑实线为定的闹钟时间(包括小时和分钟),将送到译码显示模块显示闹钟时间,闹钟时间与时钟都在FPGA上的数码管显示,用二选一实现交替显示。clk和clk1都是经过分频器分出的不同频率的信号分别用于整点报时的闪灯脉冲与闹钟调时、闹响的闪灯脉冲。

课程设计-制作单片机的4X4矩阵键盘

课程设计-制作单片机的4X4矩阵键盘

目录 摘要.............................................. 错误!未定义书签。第一章硬件部分 (5) 第一节AT89C51 (5) 第二节4*4矩阵式键盘 (8) 第三节LED数码管 (11) 第四节硬件电路连接 (13) 第二章软件部分 (15) 第一节所用软件简介 (15) 第二节程序流程图 (18) 第三节程序 (20) 第三章仿真结果 (23) 心得体会 (26) 参考文献 (27)

第一章硬件部分 第一节AT89C51 AT89C51是一种带4K字节FLASH存储器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位微处理器,俗称单片机。AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。引脚如图所示 AT89C5 图1 AT89C51管脚 图 AT89C51其具有以下特性: 与MCS-51 兼容 4K字节可编程FLASH存储器 寿命:1000写/擦循环 数据保留时间:10年

全静态工作:0Hz-24MHz 三级程序存储器锁定 128×8位内部RAM 32可编程I/O线 两个16位定时器/计数器 5个中断源 可编程串行通道 低功耗的闲置和掉电模式 片内振荡器和时钟电路 特性概述: AT89C51 提供以下标准功能:4k 字节Flash 闪速存储器,128字节内部RAM,32 个I/O 接口,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89C51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。 管脚说明: VCC:供电电压。 GND:接地。 P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P0口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的低八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须接上拉电阻。 P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为低八位地址接收。

矩阵键盘设计实验报告

南京林业大学 实验报告 基于AT89C51 单片机4x4矩阵键盘接口电路设计 课程机电一体化设计基础 院系机械电子工程学院 班级 学号 姓名 指导老师杨雨图 2013年9月26日

一、实验目的 1、掌握键盘接口的基本特点,了解独立键盘和矩阵键盘的应用方法。 2、掌握键盘接口的硬件设计方法,软件程序设计和贴士排错能力。 3、掌握利用Keil51软件对程序进行编译。 4、用Proteus软件绘制“矩阵键盘扫描”电路,并用测试程序进行仿真。 5、会根据实际功能,正确选择单片机功能接线,编制正确程序。对实验结果 能做出分析和解释,能写出符合规格的实验报告。 二、实验要求 通过实训,学生应达到以下几方面的要求: 素质要求 1.以积极认真的态度对待本次实训,遵章守纪、团结协作。 2.善于发现数字电路中存在的问题、分析问题、解决问题,努力培养独立 工作能力。 能力要求 1.模拟电路的理论知识 2.脉冲与数字电路的理念知识 3.通过模拟、数字电路实验有一定的动手能力 4.能熟练的编写8951单片机汇编程序 5.能够熟练的运用仿真软件进行仿真 三、实验工具 1、软件:Proteus软件、keil51。 2、硬件:PC机,串口线,并口线,单片机开发板 四、实验内容 1、掌握并理解“矩阵键盘扫描”的原理及制作,了解各元器件的参数及格 元器件的作用。 2、用keil51测试软件编写AT89C51单片机汇编程序 3、用Proteus软件绘制“矩阵键盘扫描”电路原理图。 4、运用仿真软件对电路进行仿真。 五.实验基本步骤 1、用Proteus绘制“矩阵键盘扫描”电路原理图。 2、编写程序使数码管显示当前闭合按键的键值。 3、利用Proteus软件的仿真功能对其进行仿真测试,观察数码管的显示状 态和按键开关的对应关系。 4、用keil51软件编写程序,并生成HEX文件。 5、根据绘制“矩阵键盘扫描”电路原理图,搭建相关硬件电路。 6、用通用编程器或ISP下载HEX程序到MCU。 7、检查验证结果。

EDA课程设计说明书参考格式

<>课程设计说明书 题目 院、部: 学生姓名: 指导教师:王晓丽职称助教 专业: 班级: 完成时间:

摘要(三号,黑体,居中,字间空两格字符) (空二行换行) 空4格打印摘要内容(小四号宋体,行距20)。 关键词:(摘要内容后下空一行打印“关键词”三字(小四号黑体),其后为关键词(小四号宋体),每一关键词之间用分号隔开,最后一个关键词后不打标点符号。 ABSTRACT ①居中打印“ABSTRACT”,再下空二行打印英文摘要内容。②摘要内容每段开头留四个空字符。③摘要内容后下空一行打印“Key words”,其后为关键词用小写字母,每一关键词之间用分号隔开,最后一个关键词后不打标点符号。 Key words :aaa;bbb;ccc

目录(3号,黑体,居中) (空1行,以小4号黑体设置字体及大小,行间距22、字间距标准) 1 XXXXXX………………………………………………………………………… 1.1 XXXXXX……………………………………………………………………… 1.2 XXXXXX……………………………………………………………………… ┇ 2 XXXXXX………………………………………………………………………… 2.1 XXXXXX……………………………………………………………………… 2.2 XXXXXX……………………………………………………………………… ┇ 3 4 结束语 参考文献………………………………………………………………………………. 致谢……………………………………………………………………………………附录……………………………………………………………………………………

EDA技术实践课程设计--24进制计数器课件

东北石油大学EDA技术实践课程设计 课程EDA技术实践课程设计 题目24进制计数器 院系电气信息工程学院电气系 专业班级 学生姓名 学生学号 指导教师 年7月25日

EDA技术实践课程设计任务书 课程EDA技术实践课程设计 题目24进制计数器 专业电气工程及其自动化姓名学号 主要内容: 1.熟练掌握Quartus II软件的使用。 2.熟练掌握在QuartusII平台上用原理图或者VHDL语言进行电路设计的方法。 3.学会用例化语句对EDA电路设计中顶层电路进行描述。 基本要求: 1.熟悉仿真开发软件Quartus II的使用; 2.根据功能要求,用原理图或文本输入方式完成设计; 3.用Quartus II做波形仿真调试; 4.下载至EDA试验仪调试设计。 主要参考资料: [1]潘松,黄继业. 《EDA技术实用教程》[M].北京:科学出版社,2002. [2]卢杰,赖毅. 《VHDL与数字电路设计》[M].北京:科学出版社,2001. [3]张明. 《Verilog HDL实用教程》[M].成都:电子科技大学出版社,1999. [4]郑家龙,王小海,章安元.《集成电子技术基础教程》[M].北京:高等教育出版社,2002. [5]王金明,杨吉斌. 《数字系统设计与Verilog HDL》[M].北京:电子工业出版社,2002. 完成期限 指导教师 专业负责人 年7 月18日

目录 1设计 (1) 2方案选择与电路原理图的设计 (1) 2.124进制计数器的基本原理 (1) 2.2设计流程图 (1) 2.3原理图 (1) 374LS161元件说明 (2) 3.1 简介 (2) 3.274ls161管脚图与介绍 (2) 3.374ls161功能表 (3) 3.474ls161主要特点 (3) 4设计过程 (4) 4.1新文件的建立 (4) 4.2宏功能模块的使用 (5) 4.3普通元件的添加 (8) 4.4 电路连接 (9) 5功能仿真 (9) 6出现的问题及调试方法 (11) 7总结 (11) 参考文献 (12) 附录VHDL语言编写的该程序清单 (13)

单片机课程设计4X4矩阵键盘显示

长沙学院 《单片机原理及应用》 课程设计说明书 题目液晶显示4*4矩阵键盘按键号 程序设计 系(部)电子与通信工程系 专业(班级)电气1班 姓名龙程 学号09 指导教师刘辉、谢明华、王新辉、马凌 云 起止日期— 长沙学院课程设计鉴定表

《单片机技术及应用》课程设计任务书系(部):电子与电气工程系专业:11级电子一班指导教师:谢明华、刘辉

目录 前言 .......................................................................................................................................... 错误!未定义书签。 一、课程设计目的 .................................................................................................................... 错误!未定义书签。 二、设计内容及原理 ................................................................................................................ 错误!未定义书签。 单片机控制系统原理 ...................................................................................................... 错误!未定义书签。 阵键盘识别显示系统概述 ................................................................................................ 错误!未定义书签。 键盘电路 ............................................................................................................................ 错误!未定义书签。 12864显示器 ................................................................................................................... 错误!未定义书签。 整体电路图 ........................................................................................................................ 错误!未定义书签。 仿真结果 ............................................................................................................................ 错误!未定义书签。 三、实验心得与体会 ................................................................................................................ 错误!未定义书签。 四、实验程序 ............................................................................................................................ 错误!未定义书签。参考文献 .................................................................................................................................... 错误!未定义书签。

EDA课程设计参考题目

附录I EDA课程设计参考题目 注:在以下设计中只可以用一个参考时钟 一、设计数码管显示控制器 要求: 1.能自动一次显示出数字0、1、2、3、4、5、6、7、8、9(自然数列),1、3、5、7、9(奇数列),0、2、4、6、8(偶数列),0、1、2、3、4、5、6、7、0、1(音乐符号序列);然后再从头循环; 2.打开电源自动复位,从自然数列开始显示。 二、设计乒乓球游戏机 要求: 1.用8个发光二极管表示球;用两个按钮分别表示甲乙两个球员的球拍; 2.一方发球后,球以固定速度向另一方运动(发光二极管依次点亮),当球达到最后一个发光二极管时,对方击球(按下按钮)球将向相反方向运动,在其他时候击球视为犯规,给对方加1分;都犯规,各自加1分; 3.甲、乙各有一数码管计分; 4.裁判有一个按钮,是系统初始化,每次得分后,按下一次。 三、设计智力竞赛抢答器 要求: 1.五人参赛每人一个按钮,主持人一个按钮,按下就开始; 2.每人一个发光二极管,抢中者灯亮; 3.有人抢答时,喇叭响两秒钟; 4.答题时限为10秒钟,从有人抢答开始,用数码管倒计时间,0、9、8…1、0;倒计时到0的时候,喇叭发出两秒声响。 四、设计数字钟 要求: 1.输入10HZ的时钟;(提示:对已有kHz频率时钟进行分频) 2.能显示时、分、秒,24小时制; 4.时和分有校正功能; 5.整点报时,喇叭响两秒; 6.可设定夜间某个时段不报时; 注意:硬件资源的节约,否则器件内资源会枯竭。 五、设计交通灯控制器 要求: 1.东西方向为主干道,南北方向为副干道; 2.主干道通行40秒后,若副干道无车,仍主干道通行,否则转换; 4.换向时要有4秒的黄灯期;

矩阵键盘简易计算器要点

《微处理器系统与接口技术》课程实践报告 计算器 班级: 学号: 学生姓名: 指导老师: 日期: 2014.7.5 ******电子与信息工程学院

目录 1、设计题目:计算器 (3) 2、设计目的 (3) 3、计算器总体设计框图 (3) 4、计算器详细设计过程 (4) 4.1输入模块 (4) 4.2键盘输入电路 (5) 4.3主程序模块 (6) 5、分析与调试 (6) 7、运行结果 (8) 8、结束语 (8) 8、参考文献 (8) 9、源程序附录 (9) 9.1主程序 (9) 9.2延时函数delay (12) 9.3显示函数display (12) 9.4键盘扫描函数 (14) 9.5预定义函数 (15)

1、设计题目:计算器 2、设计目的 此次课程实践题目是基于单片机简单计数器的设计,本此设计使用的是Intel公司MCS-51系列的8051AH单片机。设计的计算器可以实现2位小数的加、减、乘、除运算以及整数的乘方运算,其中用4*4矩阵键盘来输入待参与运算的数据和运算符;八位数码管动态显示输入待参与运算的数据以及运算后产生的结果,每个硬件模块的调用过程中涉及到了函数入口及出口参数说明,函数调用关系描述等。 3、计算器总体设计框图 计算器以MCS-51系列的8051AH单片机作为整个系统的控制核心,应用其强大的I/O功能和计算速度,构成整个计算器。通过矩阵键盘输入运算数据和符号,送入单片机进行数据处理。经单片机运算后控制LED数码管的输出。整体框图如图1所示: 图3 整体框图 本系统硬件主要由矩阵键盘、独立键盘I/O输入输出、数码管显示等主要部分组成。各模块的主要功能如下: (1)矩阵键盘将十六进制编码的数字送到单片机。 (2) 单片机扫描键盘信号并接收,对输入的键盘信号进行处理 (3) LED以动态扫描的方式移位显示每次输入的数据和最后的运算结果。实践设计的具体流程图如下图2所示:

EDA技术实践课程设计--24进制计数器

E D A技术实践课程设计 --24进制计数器 -CAL-FENGHAI.-(YICAI)-Company One1

东北石油大学EDA技术实践课程设计 年 7月 25日

EDA技术实践课程设计任务书 课程 EDA技术实践课程设计 题目 24进制计数器 专业电气工程及其自动化姓名学号 主要内容: 1.熟练掌握Quartus II软件的使用。 2.熟练掌握在QuartusII平台上用原理图或者VHDL语言进行电路设计的方法。 3.学会用例化语句对EDA电路设计中顶层电路进行描述。 基本要求: 1.熟悉仿真开发软件Quartus II的使用; 2.根据功能要求,用原理图或文本输入方式完成设计; 3.用Quartus II做波形仿真调试; 4.下载至EDA试验仪调试设计。 主要参考资料: [1]潘松,黄继业. 《EDA技术实用教程》[M].北京:科学出版社,2002. [2]卢杰,赖毅. 《VHDL与数字电路设计》[M].北京:科学出版社,2001. [3]张明. 《Verilog HDL实用教程》[M].成都:电子科技大学出版社,1999. [4]郑家龙,王小海,章安元.《集成电子技术基础教程》[M].北京:高等教育出版社,2002. [5]王金明,杨吉斌. 《数字系统设计与Verilog HDL》[M].北京:电子工业出版社,2002. 完成期限 指导教师 专业负责人 年 7 月18日

目录 1设计 (1) 2方案选择与电路原理图的设计 (1) 2.124进制计数器的基本原理 (1) 2.2设计流程图 (1) 2.3原理图 (1) 374LS161元件说明 (2) 3.1 简介 (2) 3.274ls161管脚图与介绍 (2) 3.374ls161功能表 (3) 3.474ls161主要特点 (3) 4设计过程 (4) 4.1新文件的建立 (4) 4.2宏功能模块的使用 (5) 4.3普通元件的添加 (8) 4.4 电路连接 (9) 5功能仿真 (9) 6出现的问题及调试方法 (11) 7总结 (11) 参考文献 (12) 附录VHDL语言编写的该程序清单 (13)

实验二 矩阵键盘实验

实验二矩阵键盘实验 一、实验目的 (1)掌握矩阵键盘行列设计方法; (2)掌握矩阵键盘识别方法; (3)掌握矩阵键盘去抖原理; (4)掌握矩阵键盘控制LED或数码管的设计方法; 二、实验原理 电路图参考实验板电路。 1、MCS51系列单片机的P0~P3口作为输入端口使用时必须先向端口写入“1”。 2、用查询方式检测按键时,要加入延时(通常采用软件延时10~20mS)以消除抖动。 3、识别键的闭合,通常采用行扫描法和行反转法。行扫描法是使键盘上某一行线为低电平,而其余行接高电平,然后读取列值,如读列值中某位为低电平,表明有键按下,否则扫描下一行,直到扫完所有行。 行反转法识别闭合键时,要将行线接一并行口,先让它工作在输出方式,将列线也接到一个并行口,先让它工作于输入方式,程序使CPU通过输出端口在各行线上全部送低电平,然后读入列线值,如此时有某键被按下,则必定会使某一列线值为0。然后,程序对两个并行端口进行方式设置,使行线工作于输入方式,列线工作于输出方式,并将刚才读得的列线值从列线所接的并行端口输出,再读取行线上输入值,那么,在闭合键所在行线上的值必定为0。这样,当一个键被接下时,必定可以读得一对唯一的行线值和列线值。 由于51单片机的并口能够动态地改变输入输出方式,因此,矩阵键盘采用行反转法识别最为简便。 行反转法识别按键的过程是:首先,将4个行线作为输出,将其全部置0,4个列线作为输入,将其全部置1,也就是向P1口写入0xF0;假如此时没有人按键,从P1口读出的值应仍为0xF0;假如此时1、4、7、0四个键中有一个键被按下,则P1.6被拉低,从P1口读出的值为0xB0;为了确定是这四个键中哪一个被按下,可将刚才从P1口读出的数的低四位置1后再写入P1口,即将0xBF写入P1口,使P1.6为低,其余均为高,若此时被按下的键是“4”,则P1.1被拉低,从P1口读出的值为0xBE;这样,当只有一个键被按下时,每一个键只有唯一的反转码,事先为12个键的反转码建一个表,通过查表就可知道是哪个键被按下了。 三、实验内容 1.编写程序,做到在键盘上每按一个数字键(0-F)用LED数码管将该代码显示出来。按其它键退出。 2.利用Proteus,设计4*4矩阵键盘硬件电路,并仿真实现。

EDA课程设计题目

计算机辅助设计参考题目 设计一数字式竞赛抢答器 1、设计一个可容纳6组(或4组)参赛的数字式抢答器,每组设一个按钮,供抢 答使用。 2、抢答器具有第一信号鉴别和锁存功能,使除第一抢答者外的按钮不起作用。 3、设置一个主持人“复位”按钮。 4、主持人复位后,开始抢答,第一信号鉴别锁存电路得到信号后,有指示灯显 示抢答组别,扬声器发出2~3秒的音响。 5、设置一个计分电路,每组开始预置100分,由主持人记分,答对一次加10 分,答错一次减10分。 教学提示: 1、此设计问题的关键是准确判断出第一抢答者并将其锁存,实现的方法可使 触发器或锁存器,在得到第一信号后将输入封锁,使其它组的抢答信号无效。 2、形成第一抢答信号后,用编码、译码及数码显示电路显示第一抢答者的组别, 用第一抢答信号推动扬声器发出音响。 3、计分电路采用十进制加/减计数器、数码管显示,由于每次都是加/减10 分,所以个位始终为零,只要十位、百位进行加/减运算即可。 设计二数字钟 1、设计一个能显示1/10秒、秒、分、时的12小时数字钟。 2、熟练掌握各种计数器的使用。 3、能用计数器构成十进制、六十进制、十二进制等所需进制的计数器。 4、能用低位的进位输出构成高位的计数脉冲。 教学提示: 1、时钟源使用频率为0.1Hz的连续脉冲。 2、设置两个按钮,一个供“开始”及“停止”用,一个供系统“复位”用。 3、时钟显示使用数码管显示。 4、“时显示”部分应注意12点后显示1点。 5、注意各部分的关系,由低位到高位逐级设计、调试。 设计三数字频率计 1、设计一个能测量方波信号的频率的频率计。 2、测量的频率范围是1Hz~9999Hz。 3、结果用十进制数显示。 教学提示: 1、脉冲信号的频率就是在单位时间内所产生的脉冲个数,其表达式为,f为被 测信号的频率,N为计数器所累计的脉冲个数,T为产生N个脉冲所需的时间。 所以,在1秒时间内计数器所记录的结果,就是被测信号的频率。 2、被测频率信号取自实验箱晶体振荡器输出信号,加到主控门的输入端。 3、再取晶体振荡器的另一标准频率信号,经分频后产生各种时基脉冲:1ms, 10ms,0.1s,1s等,时基信号的选择可以控制,即量程可以改变。 4、时基信号经控制电路产生闸门信号至主控门,只有在闸门信号采样期间内(时 基信号的一个周期),输入信号才通过主控门。 5、f=N/T,改变时基信号的周期T,即可得到不同的测频范围。

相关文档
最新文档