课程设计报告矩阵键盘控制

课程设计报告矩阵键盘控制
课程设计报告矩阵键盘控制

北华航天工业学院

《EDA技术综合设计》

课程设计报告

报告题目:矩阵键盘控制接口设计作者所在系部:电子工程系

作者所在专业:电子信息工程

作者所在班级:

作者姓名:

作者学号:0

指导教师姓名:

完成时间:2009-12-18

内容摘要

本课程设计所用实验器材主要有计算机和北京精仪达盛科技有限公司的EL教学实验箱。经编译、仿真,检查无误并且符合设计要求后,正确的将脉冲源、FLEX10K \ EPF10K10LC84-3芯片、5行×6列薄膜轻触按键键盘、数码管按设计要求连接好。将程序下载到实验箱的FLEX10K \ EPF10K10LC84-3芯片中,则可观察到预期的实验效果,即当按下某一键时,在数码管上显示该键对应的键值。

本课程设计需设计键盘接口消抖动元件(底层文本)和矩阵键盘接口电路(顶层文本)。在顶层文本中包含扫描信号发生模块、按键消抖动模块、按键译码模块、寄存器-选择器模块和数码管的译码模块。

关键词:VHDL语言 EDA技术按键消抖动电路键盘扫描电路键值译码电路按键码存储电路显示键值电路

目录

一概述 (5)

二方案设计与论证 (5)

三单元电路设计 (6)

1.键盘接口消抖动元件 (6)

2.时钟产生电路 (6)

3.键盘扫描电路 (7)

4.键盘译码电路 (7)

5.寄存器_选择器模块电路 (7)

6.译码模块电路 (7)

四器件编程与下载 (8)

五性能测试与分析 (16)

六实验设备 (16)

七心得体会 (16)

八参考文献 (17)

课程设计任务书

一、概述

本课程设计的基本原理是在时钟信号的控制下,使数码管上显示所按下的键值,并

且能够保持直到下一个按键被按下。首先,构思一个8×4的矩阵键盘控制顶层电路的

模块划分图兼端口及内部信号定义图,再用VHDL语言编辑文本程序,需先录入底层文

件(键盘接口消抖动元件DEBOUNCING的描述)再录入键盘接口电路主程序,保存编译

并检查程序是否有语法错误,再仿真观察波形是否符合所预期的设计要求,当一切都满

足要求后,即可将程序下载到实验箱的FLEX10K \ EPF10K10LC84-3芯片中。正确的将

脉冲源、FLEX10K \ EPF10K10LC84-3芯片、5行×6列薄膜轻触按键键盘、数码管按设

计要求连接好。再将程序下载到实验箱的FLEX10K \ EPF10K10LC84-3芯片中,则可观

察到预期的实验效果,即当按下某一键时,在数码管上显示该键对应的键值。如:当按

下5时,数码管显示05。

二、方案设计与论证

把该矩阵键盘控制器分为两部分进行设计,先设计键盘接口消抖动电路,再设计键盘接口电路的主程序。

在主程序中包含时序产生电路、键盘扫描电路、弹跳消除电路、键盘译码电路、按键码存储电路、显示电路模块并且分别进行分析来实现所需的功能。

实验仪器中4×8矩阵键盘的电路原理图如图所示

图1. 4×8矩阵键盘的电路原理图

图2.按键位置与数码关系

三、单元电路设计

1.键盘接口消抖动元件DEBOUCING.VHD

该元件为一个通用的全功能的消抖动元件,内含有自由计数器模块、消抖动模块和微分模块。其默认符号如图1所示。各引脚说明如下:

Key为按键输入信号,高电平有效,有抖动毛刺;

clr是清零信号,低电平有效;

clk是同步时钟信号,选择20MHZ;

dly_out是消抖动输出;

diff_out是消抖动微分输出。

在顶层文本key_test.vhd的debounuing:block模块中,U1,U2,U3,U4共4处用到了元件例化语句,用来消除按键抖动。

2.时钟产生电路counter:block

本电路中利用一个自由计数器来产生多种频率的工作脉冲波形有机的构成系统工

作时序。它们分别是:系统时钟clk_4M、弹跳消除取样信号CLK、按键译码模块同步时钟CLK1、键值存储器同步时钟CLK2、键盘扫描信号SELOUT[2..0]和7段显示器扫描信号SELOUT(0)及NOTSELOUT_0。

该模块中的扫描信号就是取了计数器中的3个值,使用语句:

SELTMP<=Q(7 DOWNTO 5);

此处SELTMP要预先定义为3bit的宽度。

3.键盘扫描电路

扫描电路的作用是用来提供键盘扫描信号,扫描信号变化的顺序依次为000-001-010-011-100-101-110-111,周而复始。用语句:

SELTMP<=Q(7 DOWNTO 5);

SELOUT<=SELTMP;

即可实现键盘扫描。

4.键盘译码电路key_decoder:block

译码电路所要做的任务有:

判别是否有键按下;

将被按下键编码成对应的ZOUT[7..0]8位二进制编码,即用十进制数来显示按键值:KEY_CODE<=ZOUT;

把KEY_CODE送到内部下一级电路,即按键码的寄存器_选择器模块。

5. 按键码的寄存器_选择器模块REG_MULTIPLEXER:block

因为每次扫描会产生新的按键数据,可能会覆盖前面的数据,所以需要一个按键存储电路,将整个键盘扫描完毕后的按键值记录下来。

6.译码模块SEVEN_SEGMENT: bloc

该模块把DB[3..0]的值译成17位的数码管所对应的0、1、2、3、4、5、6、7、8、9,使数码管正常显示按键值。

四、器件编程与下载

1.底层文本:键盘接口消抖动元件DEBOUCING.VHD

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY debouncing IS

PORT(clk,key:IN STD_LOGIC;

clr:IN STD_LOGIC;

dly_out,dif_out:OUT STD_LOGIC);

END debouncing;

ARCHITECTURE a OF debouncing IS

SIGNAL sample,dly,diff:STD_LOGIC;

BEGIN

free_counter:block

SIGNAL QQ:STD_LOGIC_VECTOR(4 DOWNTO 0);

SIGNAL d0:STD_LOGIC;

BEGIN

PROCESS(clr,clk)

BEGIN

if clr='0'then d0<='0';

QQ<=(OTHERS=>'0');

elsif clk'event and clk='1'then

d0<=QQ(4);

QQ<=QQ+1;

end if;

end process;

sample<=not(QQ(4) and (not d0));

end block free_counter;

debunce:block

signal d0,d1,s,r:std_logic;

begin

process(clk,clr)

begin

if clr='0' then

dly<='0';

elsif rising_edge(clk) then

if sample='1' then

d1<=d0;

d0<=key;

s<=d0 and d1;

r<=not d0 and not d1;

if s<='0' and r<='0' then

dly<=dly;

elsif s<='0' and r<='1' then

dly<='0';

elsif s<='1' and r<='0' then

dly<='1';

else dly<='0';

end if;

end if;

end if;

end process;

dly_out<=dly;

end block debunce;

differential:block

signal d1,d0:std_logic;

begin

process(clk,clr)

begin

if clr='0'then

d0<='0';d1<='0';

elsif rising_edge(clk)then d1<=d0;d0<=dly; end if;

diff<=d0 and not d1;

end process;

dif_out<=diff;

end block differential;

END a;

2.顶层文本:键盘接口电路主程序keys_test.vhd library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_arith.all;

use ieee.std_logic_unsigned.all;

entity keys_test is

port(clk20,clr:in std_logic;

selout:out std_logic_vector(2 downto 0);

notselout_0:out std_logic;

key:in std_logic_vector(3 downto 0);

segout:out std_logic_vector(16 downto 0)); end keys_test;

architecture a of keys_test is

component debouncing

port(key:in std_logic;

clk,clr:in std_logic;

dly_out:out std_logic);

end component;

signal clk,clk1,clk2,clk4:std_logic;

signal seltmp:std_logic_vector(2 downto 0);

signal key_code:std_logic_vector(7 downto 0); signal c:std_logic_vector(3 downto 0);

signal db,key_in:std_logic_vector(3 downto 0); signal seg:std_logic_vector(16 downto 0);

begin

segout(16 downto 0)<=seg;

selout<=seltmp;

notselout_0<=not seltmp(0);

key_in<=not key;

fenpin:block

signal m:integer range 0 to 10#5#;

begin

process(clk20)

begin

if clk20'event and clk20='1'then

if m=10#5# then m<=0;

else m<=m+1;

end if;

end if;

end process;

process(m)

begin

if m=10#5# then clk4<='1';

else clk4<='0';

end if;

end process;

end block fenpin;

counter:block

signal q:std_logic_vector(10 downto 0);

begin

process(clk4,clr)

begin

if clr='0' then q<=(others=>'0');

elsif clk4'event and clk4='1' then q<=q+1; end if;

end process;

clk<=q(0);

clk1<=q(2);

clk2<=q(4);

seltmp<=q(7 downto 5);

end block counter;

debounuing:block

begin

u1:debouncing port map(key=>key_in(0),

dly_out=>c(0),clr=>clr,clk=>clk);

u2:debouncing port map(key=>key_in(1),

dly_out=>c(1),clr=>clr,clk=>clk);

u3:debouncing port map(key=>key_in(2),

dly_out=>c(2),clr=>clr,clk=>clk);

u4:debouncing port map(key=>key_in(3),

dly_out=>c(3),clr=>clr,clk=>clk);

end block debounuing;

key_decoder:block

signal z:std_logic_vector(6 downto 0);

signal zout:std_logic_vector(7 downto 0); begin

z<=(not c)&seltmp;

key_code<=zout;

process(clk1,clr)

begin

if clr='0' then

zout<=(others=>'0');

elsif clk1'event and clk1='1' then

case z is

WHEN"1110000"=>ZOUT<="00000000"; WHEN"1110001"=>ZOUT<="00000001"; WHEN"1110010"=>ZOUT<="00000010"; WHEN"1110011"=>ZOUT<="00000011"; WHEN"1110100"=>ZOUT<="00010000"; WHEN"1110101"=>ZOUT<="00010001"; WHEN"1110110"=>ZOUT<="00000100"; WHEN"1110111"=>ZOUT<="00000101"; WHEN"1101000"=>ZOUT<="00000110"; WHEN"1101001"=>ZOUT<="00000111";

WHEN"1101010"=>ZOUT<="00010010"; WHEN"1101011"=>ZOUT<="00010011"; WHEN"1101100"=>ZOUT<="00001000"; WHEN"1101101"=>ZOUT<="00001001"; WHEN"1101110"=>ZOUT<="00001010"; WHEN"1101111"=>ZOUT<="00001011"; WHEN"1011000"=>ZOUT<="00010100"; WHEN"1011001"=>ZOUT<="00010101"; WHEN"1011010"=>ZOUT<="00001100"; WHEN"1011011"=>ZOUT<="00001101"; WHEN"1011100"=>ZOUT<="00001110"; WHEN"1011101"=>ZOUT<="00001111"; WHEN"1011110"=>ZOUT<="00010110"; WHEN"1011111"=>ZOUT<="00010111"; WHEN"0111000"=>ZOUT<="00011000"; WHEN"0111001"=>ZOUT<="00011010"; WHEN"0111010"=>ZOUT<="00011011"; WHEN"0111011"=>ZOUT<="00011100"; WHEN"0111100"=>ZOUT<="00011101"; WHEN"0111101"=>ZOUT<="00011001"; WHEN"0111110"=>ZOUT<="00011110"; WHEN"0111111"=>ZOUT<="00011111";

WHEN OTHERS=>ZOUT<="11111111";

end case;

END IF;

END PROCESS;

END BLOCK key_decoder;

REG_MULTIPLEXER:BLOCK

SIGNAL KEY_CODE1:STD_LOGIC_VECTOR(7 DOWNTO 0); BEGIN

PROCESS(CLK2,clr)

begin

if clr='0' then

KEY_CODE1<=(others=>'0');

ELSIF(CLK2'EVENT AND CLK2='1')THEN

if(key_code="11111111") then

KEY_CODE1<=KEY_CODE1;

ELSE KEY_CODE1<=KEY_CODE;

end if;

END if;

END PROCESS;

DB<=KEY_CODE1(3 DOWNTO 0)WHEN(SELTMP(0)='0')ELSE KEY_CODE1(7 DOWNTO 4)WHEN(SELTMP(0)='1')ELSE

"0000";

End Block REG_MULTIPLEXER;

seven_segment:block

begin

seg<="11111111000000000" when db="0000" else

"00110000000000000" when db="0001" else

"11101110100010000" when db="0010" else

"11111100100010000" when db="0011" else

"00110001100010000" when db="0100" else

"11011101100010000" when db="0101" else

"11011111100010000" when db="0110" else

"11110000000000000" when db="0111" else

"11111111100010000" when db="1000" else

"11111101100010000" when db="1001" else

"00110000000110100" when db="1010" else

"11001111100101000" when db="1011" else

"11001111000000000" when db="1100" else

"11111100001000010" when db="1101" else

"11001111100010000" when db="1110" else

"11000011100010000" when db="1111" else

"00000000000000000";

end block seven_segment;

end a;

3.编译

在软件平台的录入设计中,应当先录入底层DEBOUNCING.VHD设计文本,并把它设为当前的工程项目,经编译、仿真,通过后,退出DEBOUNCING.VHD文本;再录入顶层文本key_test.vhd,并把它设为当前的工程项目,经编译、仿真,通过后就可下载key_test.vhd设计文本到器件中。

底层文件DEBOUNCING.VHD的编译结果

图3.编译结果顶层文件key_test.vhd的编译结果

图4.编译结果

4.默认符号

(1)底层文件的默认符号

图5. 底层文件的默认符号

(2)顶层文件的默认符号

图6.顶层文件的默认符号5.仿真波形图

(1)底层文本的仿真波形图

图7.底层文本的仿真波形图(2)顶层文本的仿真波形图

图8.顶层文本的仿真波形图

将实验箱与微机和电源分别连接好。首先检测试验箱是否可以使用,经检测无误后,开通电源,可将设计好的程序下载到实验箱的FLEX10K \ EPF10K10LC84-3芯片中。关闭电源,在MAX+plusⅡ软件中对程序进行编译,根据引脚的锁定情况,将CLK时钟接20MHZ时钟输入,KIN[3..0]分别接实验仪器的键盘输出KIN[3..0],SEL[2..0]分别接实验仪器的扫描输入SEL[2..0],SEGOUT[7..0]分别接7段显示器输入DP~A。即把芯片与5行×6列薄膜轻触按键键盘、数码管及脉冲源正确连接起来。再次下载程序到芯片中,接通电源即可测试功能。

五、性能测试与分析

当Key[3..0]=1101,SELOUT[2..0]=110,查表可知是数字键8,经过一段延时时间,BCD_CODE变为00001000。SELOUT(0)=0,则显示BCD_CODE的低四位0011的7段码值79H,可见仿真出的功能正确;其他处的波形应当注意仿真时存在的延时时间的影响。

对应“数字8”按键的按下,在试验仪的两只7段数码管上,会依次显示两位数(08),适当选取SELOUT[2..0]的扫描速度,就可以根据人的视觉暂留现象,看到连续的两位数字:(08)。

六、实验设备

计算机、EDA试验箱、示波器、导线若干

七、心得体会

在学习了EDA课程之后的第十六周,在胡辉老师的带领下进行了该课程的课程设计。由于之前已经在机房进行了两天的编程设计,我已经将所需要软件,即要下载到实验箱的程序编制完成了,所以已到达实验室我熟悉了实验箱之后便开始了程序的下载与实验箱的连线,在老师的指导下,我的课程设计进行的还算比较顺利。

通过这次课程设计,我不仅加深了对EDA课程的理解,从开始的知识听说该课程的懵懂,到课程设计完成之后真正明白了该课程的实践与应用的联系,这些实验箱的强大之处,更加加深了我对该课程的兴趣。

在课程设计过程中,从底层文件debouncing(消除抖动)到顶层文件key—test 的编译,我遇到了很多问题,有时候程序运行不出来很着急,但是在老师的耐心指导和同学们的帮助之下我克服了一个又一个得困难,逐渐把程序编译完成了。但是到了实验室之后才发现实验箱上没有所需要的4MHz的CLK信号,但是通过查阅资料,

我自己添加了一个分频模块,通过该模块从实验箱的20MHz的CLK信号中分频出所需要的4MHz的信号。

由于实验箱上的器件与书本上给的不是很一样,而事前我也不知道,所以只能去改进自己的程序,将程序中原来接LED灯的部分去掉,减少了连线时的很多麻烦之处。由于实验箱上使用的是16段的数码管显示键盘上的数字,所以我把之前的7段数码管显示部分改进为16段的,而且将显示十进制的数字改成了显示十六进制的,在程序的编写过程中我发现有很多位是不起作用的,我直接把它们去掉了,程序简短了很多。通过一系列的改进,我的程序最后终于在实验箱上成功的实现了课程设计的要求,那一刻我真的体会到了付出就会有收获这句话的内涵。

总之,通过了这次课程设计,不仅加深了我对EDA课程的了解与应用,而且让我掌握了VHDL语言的使用,更重要的是使我对该课程产生了更加浓厚的兴趣,这是一次让我收获颇丰的课程设计。

八、参考文献

[1] 李国洪,胡辉《可编程器件与EDA技术与实践》机械工业出版社

[2] 徐惠民,安德宁《数字逻辑设计与VHDL描述》机械工业出版社

[3] 蒋璇,藏春华《数字系统设计与PLD应用技术》电子工业出版社

[4] 陈赜,朱如琪《在系统可编程技术实践教程》科学出版社

[5] 徐坚,黄正槿《CPLD系统设计技术入门与应用》电子工业出版社

[6] 卢毅,赖杰《VHDL与数字电路设计》科学出版社

[7] 潘松,黄继业《数字逻辑设计与VHDL描述》科学出版社

[8] 赵曙光,郭万有《可编程逻辑器件原理、开发与应用》西安电子科技大

学出版社

矩阵键盘设计实验报告

南京林业大学 实验报告 基于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、检查验证结果。 六、实验具体内容 使用单片机的P1口与矩阵式键盘连接时,可以将P1口低4位的4条端口线定义为行线,P1口高4位的4条端口线定义为列线,形成4*4键盘,可以配置16个按键,将单片机P2口与七段数码管连接,当按下矩阵键盘任意键时,数码管显示该键所在的键号。 1、电路图

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 三根输入列线中有无低电平出现。只要有低电平出现,则说明有键按下(实际编程时,还要考虑按键的消抖)。如读到的都是高电平,则表示无键按下。 √在确认有键按下后,需要进入确定具体哪一个键闭合的过程。其思路是:依

扫描式矩阵键盘课程设计

扫描式矩阵键盘课程设 计 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 原理图绘制---------------------------------------------------------------

单片机矩阵键盘设计方案

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 ;;;;;;;;;;初始化程序;;;;;;;;;;

单片机实验报告——矩阵键盘数码管显示

单片机实验报告 信息处理实验 实验二矩阵键盘 专业:电气工程及其自动化 指导老师:高哲 组员:明洪开张鸿伟张谦赵智奇 学号:152703117 \152703115\152703118\152703114室温:18 ℃日期:2017 年10 月25日

矩阵键盘 一、实验内容 1、编写程序,做到在键盘上每按一个键(0-F)用数码管将该建对应的名字显示出来。按其它键没有结果。 二、实验目的 1、学习独立式按键的查询识别方法。 2、非编码矩阵键盘的行反转法识别方法。 3、掌握键盘接口的基本特点,了解独立键盘和矩阵键盘的应用方法。 4、掌握键盘接口的硬件设计方法,软件程序设计和贴士排错能力。 5、掌握利用Keil51软件对程序进行编译。 6、会根据实际功能,正确选择单片机功能接线,编制正确程序。对实验结果 能做出分析和解释,能写出符合规格的实验报告。 三、实验原理 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个键的反转码建一个表,通过查表就可知道是哪个键被按下了。

课程设计-制作单片机的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口作为低八位地址接收。

实验四 键盘扫描及显示设计实验报告

实验四键盘扫描及显示设计实验报告 一、实验要求 1. 复习行列矩阵式键盘的工作原理及编程方法。 2. 复习七段数码管的显示原理。 3. 复习单片机控制数码管显示的方法。 二、实验设备 1.PC 机一台 2.TD-NMC+教学实验系统 三、实验目的 1. 进一步熟悉单片机仿真实验软件 Keil C51 调试硬件的方法。 2. 了解行列矩阵式键盘扫描与数码管显示的基本原理。 3. 熟悉获取行列矩阵式键盘按键值的算法。 4. 掌握数码管显示的编码方法。 5. 掌握数码管动态显示的编程方法。 四、实验内容 根据TD-NMC+实验平台的单元电路,构建一个硬件系统,并编写实验程序实现如下功能: 1.扫描键盘输入,并将扫描结果送数码管显示。 2.键盘采用 4×4 键盘,每个数码管显示值可为 0~F 共 16 个数。 实验具体内容如下: 将键盘进行编号,记作 0~F,当按下其中一个按键时,将该按键对应的编号在一个数码 管上显示出来,当再按下一个按键时,便将这个按键的编号在下一个数码管上显示出来,数 码管上可以显示最近 4 次按下的按键编号。 五、实验单元电路及连线 矩阵键盘及数码管显示单元

图1 键盘及数码管单元电路 实验连线 图2实验连线图 六、实验说明 1. 由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开。因而在闭合及断开的瞬间均伴随有一连串的抖动。抖动时间的长短由按键的机械特性决定,一般为 5~10ms。这是一个很重要的时间参数,在很多场合都要用到。 键抖动会引起一次按键被误读多次。为了确保 CPU 对键的一次闭合仅做一次处理,必须去除键抖动。在键闭合稳定时,读取键的状态,并且必须判别;在键释放稳定后,再作处理。按

微机原理课题设计实验报告材料之矩阵式键盘数字密码锁

微机系统与应用课程设计报告 班级: 学号: 姓名: 实验地点:E楼Ⅱ区311 实验时间:2013.3.4-3.9

矩阵式键盘数字密码锁设计 一 . 实验目的 1.掌握微机系统总线与各芯片管脚连接方法,提高接口扩展硬件电路的连 接能力。 2.初步掌握键盘扫描,密码修改和计时报警程序的编写方法。 3.掌握通过矩阵式键盘扫描实现密码锁功能的设计思路和实现方法。二.实验内容 矩阵式键盘数字密码锁设计,根据设定好的密码,采用4x4矩阵键盘实现密码的输入功能。当密码输入正确之后,锁就打开(绿灯亮),10秒之后,锁自动关闭(红灯亮);如果连续输入三次密码不正确,就锁定按键5秒钟,同时发出报警(黄灯闪),5秒后,解除按键锁定,恢复密码输入。 数字密码锁操作键盘参考上面设定,也可以自行设计键盘。用户初始密码为“123456”,系统加电运行后,密码锁初始状态为常闭(红灯亮),用户可以选择开锁或修改密码: 如果选择开锁就按“Open”键,系统提示输入密码,输入用户密码+“#”键后,如果密码正确,就打开锁(绿灯亮),系统等待10秒,然后重新关闭密码锁,若密码错,提示重新输入,连续三次错误,提示警告词同时报警(黄灯闪),锁定键盘5秒,然后重新进入初始状态; 如果选择修改密码就按”Modify Secret”键,系统提示输入旧密码,输入旧密码+“#”键后,如果正确,系统提示输入新密码,输入新密码+“#”后,新密码起效,重新进入初始状态;如果旧密码错,不能修改密码,密码锁直接进入初始状态。 三.实验基本任务 1)具有开锁、修改用户密码等基本的密码锁功能。 2)对于超过3次密码密码错误,锁定键盘5秒,系统报警。5秒后解除锁定。 4)通过LCD字符液晶和LED指示灯(红,绿,黄)实时显示相关信息。 5)用户密码为6位数字,显示采用“*”号表示。 6)码锁键盘设计合理,功能完善,方便用户使用。 本次实验还做了附加的任务

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

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

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

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

矩阵键盘简易计算器要点

《微处理器系统与接口技术》课程实践报告 计算器 班级: 学号: 学生姓名: 指导老师: 日期: 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所示:

实验二 矩阵键盘实验

实验二矩阵键盘实验 一、实验目的 (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矩阵键盘硬件电路,并仿真实现。

verilog hdl 矩阵键盘实验报告要点

EDA实验报告 学院:物信学院 专业:电信一班 小组成员:杨义,王祺,陈鹏,秦成晖

指导老师:漆为民 目录 实验题目 (3) 实验目的 (3) 实验原理 (3) 实验内容 (5) 实验程序 (5) 实验步骤 (10) 实验结果 (10) 实验体会 (10)

附录 (11) 一.实验题目: 矩阵键盘显示电路设计 二.实验目的: 1.了解普通4×4键盘扫描的原理。 2.进一步加深七段码管显示过程的理解。 3.了解对输入/输出端口的定义方法。 三.实验原理: 软键盘的工作方式: 通常在一个键盘中使用了一个瞬时接触开关,并且用如图所示的简单电路,微处理器可以容易地检测到闭合。当开关打开时,通过处理器的I/O 口的一个上拉电阻提供逻辑1;当开关闭合时,处理器的/IO 口的输入将被拉低得到逻辑0。可遗憾的是,开关并不完善,因为当它们被按下或者被释放时,并不能够产生一个明确的1 或者0。尽管触点可能看起

来稳定而且很快地闭合,但与微处理器快速的运行速度相比,这种动作是比较慢的。当触点闭合时,其弹起就像一个球。弹起效果将产生如图10-2 所示的好几个脉冲。弹起的持续 时间通常将维持在5ms~30ms 之间。如果需要多个键,则可以将每个开关连接到微处理器上它自己的输入端口。然而,当开关的数目增加时,这种方法将很快使用完所有的输入端口。 键盘上阵列这些开关最有效的方法(当需要5 个以上的键时)就形成了一个如图10-3 所示的二维矩阵。当行和列的数目 一样多时,也就是方型的矩阵,将产生一个最优化的布列方式(I/O 端被连接的时候)。一个瞬时接触开关(按钮)放 置在每一行与线一列的交叉点。矩阵所需的键的数目显然根据应用程序而不同。每一行由一个输出端口的一位驱动,而每一列由一个电阻器上拉且供给输入端口一位。

单片机 矩阵键盘实验 实验报告

实验五矩阵键盘实验 一、实验内容 1、编写程序,做到在键盘上每按一个数字键(0-F)用发光二极管将该代码显示出来。按其它键退出。 2、加法设计计算器,实验板上有12个按键,编写程序,实现一位整数加法运算功能。可定义“A”键为“+”键,“B”键为“=”键。 二、实验目的 1、学习独立式按键的查询识别方法。 2、非编码矩阵键盘的行反转法识别方法。 三、实验说明 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个键的反转码建一个表,通过查表就可知道是哪个键被按下了。 四、接线方法 键盘连接成4×4的矩阵形式,占用单片机P1口的8根线,行信号是P1.0-1.3,列信号是P1.4-1.7。

FPGA矩阵键盘课程设计

FPGA课程设计报告 项目名称基于FPGA的4*4矩阵键盘的设计 专业班级通信1 学生姓名张 指导教师 2016年7 月10 日

摘要 本课程设计提出了基于FPGA的4*4矩阵键盘的设计,主要是在软件Quartus II 9.0这个环境中,以硬件描述语言Verilog进行编写程序,从而完成矩阵键盘的相关设计。主要由矩阵式键盘电路、显示电路等组成,实现过程是通过行扫描输入随机信号,列扫描判断哪一个键被按下,并最后由数码管显示该按键。此次课程设计完成了4*4矩阵键盘控制LED数码管显示系统的设计,该设计具有灵活性强,易于操作,可靠性高,广泛应用于各种场合的特点,是进行按键操作管理的有效方法,它可以提高系统准确性,有利于资源的节约,降低对操作者本身的要求,并能正确、实时、高效地显示按键信息,以提高工作效率和资源换利用率的意义。 关键词:数码管;矩阵键盘;按键;显示电路

Abstract This course is designed based on FPGA is proposed 4 * 4 matrix keyboard design, mainly in the Quartus II software 9.0 this environment, with the Verilog hardware description language program, so as to complete the related design of matrix keyboard. Main matrix keyboard circuit, display circuit and so on, complete the 4 * 4 matrix keyboard control LED digital tube display system design, the design has strong flexibility, easy operation, high reliability, widely used in various occasions. Into 4 * 4 matrix keyboard control LED digital tube display system design, design flexibility is strong, easy to operate, high reliability, widely used in various occasions. Matrix keyboard control system, can improve efficiency, and is an effective method to manage the keystrokes, it can improve the system accuracy, and is conducive to resource saving and reduce the requirement of the operator itself, and correctly, real-time and efficient to show the key information, in order to improve the work efficiency and the utilization ratio of resources in meaning. Keywords: Digital tube; Matrix keyboard; The key; Disply circuit

矩阵键盘键信号检测电路设计-EDA课程设计说明书

课程设计说明书 题目EDA技术与应用系(部) 专业(班级) 姓名 学号 指导教师 起止日期

EDA技术课程设计任务书系(部):专业:指导教师:

目录 引言 (5) 一、绪论 (5) 1.1 FPGA概况 (5) 1.2 此课题的研究意义 (6) 二、矩阵键盘接口电路的原理与总体设计 (6) 2.1 矩阵键盘接口电路的原理 (6) 2.2 总体设计 (8) 三、各模块的设计及仿真 (8) 3.1 键盘扫描电路 (8) 3.2 键盘译码电路和按键标志位产生电路 (11) 3.3 时钟产生模块 (16) 3.4 键盘接口电路顶层电路实现 (18) 四、硬件测试 (19) 五、实验设备 (19) 六、总结 (20) 参考文献 (20)

矩阵键盘键信号检测电路设计 引言 人类文明已进入到高度发达的信息化社会。信息化社会的发展离不开电子信息产品开发技术、产品品质的提高和进步。电子信息产品随着科学技术的进步,其电子器件和设计方法更新换代的速度日新月异。实现这种进步的主要原因就是电子设计技术和电子制造技术的发展,其核心就是电子设计自动化(EDA,Electronic Design Automation)技术,EDA技术的发展和推广应用又极大地推动了电子信息产业的发展。为保证电子系统设计的速度和质量,适应“第一时间推出产品”的设计要求,EDA技术正逐渐成为不可缺少的一项先进技术和重要工具。目前,在国内电子技术教学和产业界的技术推广中已形成“EDA热”,完全可以说,掌握EDA技术是电子信息类专业学生、工程技术人员所必备的基本能力和技能。 此设计主要利用VHDL硬件描述语言在EDA平台Quartus II上设计一个4×4阵列键盘扫描电路,将行扫描信号输入阵列键盘,读取列信号的值,输出按键编码,从而判断出按键按下的位置。并且进行模拟仿真,下载到EDA实验箱进行硬件验证。 一、绪论 1.1 FPGA概况 早期的可编程逻辑器件只有可编程只读存储器(PROM)、紫外线可擦除只读存储器(EPROM)和电可擦除只读存储器(E2PROM)三种。由于结构的限制,它们只能完成简单的数字逻辑功能。 其后出现了一类结构上稍复杂的可编程芯片,即可编程逻辑器件(PLD),它能够完成各种数字逻辑功能。典型的PLD由一个“与”门和一个“或”门阵列组成,而任意一个组合逻辑都可以用“与—或”表达式来描述,所以PLD能以乘积和的形式完成大量的组合逻辑功能。 这一阶段的产品主要有PAL(可编程阵列逻辑)和GAL(通用阵列逻辑)。 PAL由一个可编程的“与”平面和一个固定的“或”平面构成,或门的输出可以通过触发器有选择地被置为寄存状态。PAL器件是现场可编程的,它的实现工艺有反熔丝技术、EPROM技术和E2PROM技术。还有一类结构更为灵活的逻辑器件是可编程逻辑阵列(PLA),它也由一个“与”平面和一个“或”平面构成,但是这两个平面的连接关系是可编程的。PLA器件既有现场可编程的,也有掩膜可编程的。在PAL的基础上又发展了一种通用阵列逻辑(GAL、Generic ArrayLogic),如GAL16V8、GAL22V10等。它采用了EPROM工艺,实现了电可擦除、电可改写,其输出结构是可编程的逻辑宏单元,因而它的设计具有很强的灵活性,至今仍有许多人使用。这些早期的PLD器件的一个共同特点是可以实现速度特性较好的逻辑功能,但其过于简单的结构也使它们只能实现规模较小的电路。 为了弥补这一缺陷,20世纪80年代中期,Altera和Xilinx分别推出了类似于PAL结构的扩展型

课程设计报告矩阵键盘控制

北华航天工业学院 《EDA技术综合设计》 课程设计报告 报告题目:矩阵键盘控制接口设计作者所在系部:电子工程系 作者所在专业:电子信息工程 作者所在班级: 作者姓名: 作者学号:0 指导教师姓名: 完成时间:2009-12-18

内容摘要 本课程设计所用实验器材主要有计算机和北京精仪达盛科技有限公司的EL教学实验箱。经编译、仿真,检查无误并且符合设计要求后,正确的将脉冲源、FLEX10K \ EPF10K10LC84-3芯片、5行×6列薄膜轻触按键键盘、数码管按设计要求连接好。将程序下载到实验箱的FLEX10K \ EPF10K10LC84-3芯片中,则可观察到预期的实验效果,即当按下某一键时,在数码管上显示该键对应的键值。 本课程设计需设计键盘接口消抖动元件(底层文本)和矩阵键盘接口电路(顶层文本)。在顶层文本中包含扫描信号发生模块、按键消抖动模块、按键译码模块、寄存器-选择器模块和数码管的译码模块。 关键词:VHDL语言 EDA技术按键消抖动电路键盘扫描电路键值译码电路按键码存储电路显示键值电路

目录 一概述 (5) 二方案设计与论证 (5) 三单元电路设计 (6) 1.键盘接口消抖动元件 (6) 2.时钟产生电路 (6) 3.键盘扫描电路 (7) 4.键盘译码电路 (7) 5.寄存器_选择器模块电路 (7) 6.译码模块电路 (7) 四器件编程与下载 (8) 五性能测试与分析 (16) 六实验设备 (16) 七心得体会 (16) 八参考文献 (17)

课程设计任务书

一、概述 本课程设计的基本原理是在时钟信号的控制下,使数码管上显示所按下的键值,并 且能够保持直到下一个按键被按下。首先,构思一个8×4的矩阵键盘控制顶层电路的 模块划分图兼端口及内部信号定义图,再用VHDL语言编辑文本程序,需先录入底层文 件(键盘接口消抖动元件DEBOUNCING的描述)再录入键盘接口电路主程序,保存编译 并检查程序是否有语法错误,再仿真观察波形是否符合所预期的设计要求,当一切都满 足要求后,即可将程序下载到实验箱的FLEX10K \ EPF10K10LC84-3芯片中。正确的将 脉冲源、FLEX10K \ EPF10K10LC84-3芯片、5行×6列薄膜轻触按键键盘、数码管按设 计要求连接好。再将程序下载到实验箱的FLEX10K \ EPF10K10LC84-3芯片中,则可观 察到预期的实验效果,即当按下某一键时,在数码管上显示该键对应的键值。如:当按 下5时,数码管显示05。 二、方案设计与论证 把该矩阵键盘控制器分为两部分进行设计,先设计键盘接口消抖动电路,再设计键盘接口电路的主程序。 在主程序中包含时序产生电路、键盘扫描电路、弹跳消除电路、键盘译码电路、按键码存储电路、显示电路模块并且分别进行分析来实现所需的功能。 实验仪器中4×8矩阵键盘的电路原理图如图所示 图1. 4×8矩阵键盘的电路原理图

相关文档
最新文档