搜索
您的当前位置:首页矩阵键盘设计

矩阵键盘设计

来源:飒榕旅游知识分享网


矩 阵 键 盘 设 计(设计)

实 验 报 告 书

题 目 矩阵键盘设计

学生姓名 杨星

学 号 1210402016 系 别 物理与信息工程系

专 业 电子信息科学与技术

指导教师 肖景

一、实验原理

一组数码管动态扫描显示需要由两组信号来控制:一组是字段输出口输出的字形代码,用来控制显示的字形,称为段码;另一组是位输出口输出的控制信号,用来选择第几位数码管工作,称为位码。 由于各位数码管的段线并联,段码的输出对各位数码管来说都是相同的。因此,同一时刻如果各位数码管的位选线都处于选通状态的话,8位数码管将显

示相同的字符。若要各位数码管能够显示出与本位相应的字符,就必须采用扫描显示方式。即在某一时刻,只让某一位的位选线处于导通状态,而其它各位的位选线处于关闭状态。同时,段线上输出相应位要显示字符的字型码。这样同一时刻,只有选通的那一位显示出字符,而其它各位则是熄灭的,如此循环下去,就可以使各位数码管显示出将要显示的字符。 虽然这些字符是在不同时刻出现的,而且同一时刻,只有一位显示,其它各位熄灭,但由于数码管具有余辉特性和人眼有视觉暂留现象,只要每位数码管显示间隔足够短,给人眼的视觉印象就会是连续稳定地显示。

二、程序流程图:

开始循环扫描否检查是否有按键按下是数码管上显示按键值结束

三、程序

LIBRARY IEEE;

USE IEEE.STD_LOGIC_ARITH.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY k44 IS

PORT(CLK:IN STD_LOGIC;

A:IN STD_LOGIC_VECTOR(3 DOWNTO 0);

B,R:OUT STD_LOGIC_VECTOR(3 DOWNTO 0)

);

END;

ARCHITECTURE ONE OF k44 IS

SIGNAL C :STD_LOGIC_VECTOR(1 DOWNTO 0);

SIGNAL BA :STD_LOGIC_VECTOR(7 DOWNTO 0);

SIGNAL E :STD_LOGIC_VECTOR(3 DOWNTO 0);

SIGNAL Q :STD_LOGIC;

SIGNAL M :STD_LOGIC;

BEGIN

BA<=E&A; B<=E;

PROCESS(A) BEGIN

IF RISING_EDGE(CLK) THEN

C<=C+1;

CASE C IS

WHEN \"00\"=> E<=\"0111\";

WHEN \"01\"=> E<=\"1011\";

WHEN \"10\"=> E<=\"1101\";

WHEN \"11\"=> E<=\"1110\";

WHEN OTHERS=>NULL;

END CASE;

CASE BA IS

WHEN \"01111110\"=> R<=\"0000\";

WHEN \"01111101\"=> R<=\"0001\";

WHEN \"01111011\"=> R<=\"0010\";

WHEN \"01110111\"=> R<=\"0011\";

WHEN \"10111110\"=> R<=\"0100\";

WHEN \"10111001\"=> R<=\"0101\";

WHEN \"10111011\"=> R<=\"0110\";

WHEN \"10110111\"=> R<=\"0111\";

WHEN \"11011110\"=> R<=\"1000\";

WHEN \"11011101\"=> R<=\"1001\";

WHEN \"11011011\"=> R<=\"1010\";

WHEN \"11010111\"=> R<=\"1011\";

WHEN \"11101110\"=> R<=\"1100\";

WHEN \"11101101\"=> R<=\"1101\";

WHEN \"11101011\"=> R<=\"1110\";

WHEN \"11100111\"=> R<=\"1111\";

WHEN OTHERS=>NULL;

END CASE;

END IF;

END PROCESS;

END;

四、仿真

五、分析和总结

在这次实验前我很多时候都是在原来的编写的程序上去修改代码,虽然这样是很方便简洁,也很快速,但是时间长了后就会发现很多编写程序时该注意的细节却有些遗忘了,因此,这次实验使我意识到了,懂代码和亲手去编写代码是有很大差别的。这次实验我会多编写代码,而不是在原来的代码上去修改。

在这次实验中,出现了一些问题,也使我有了一些心得体会,当程序在出现问题时,我首先想到的就是去检查代码,却不会去想到是由于一些细节问题而导致的问题,这导致我在调试程序时花费了大量的时间。我觉得这些应该是可以避免的问题,因此,我觉得我们编程时要注重细节,要严谨。

因篇幅问题不能全部显示,请点此查看更多更全内容

热门图文

Top