键盘扫描及计算器仿真.pdf

电子设计自动化 EDA 简易计算器设计 简易计算器设计 ——EDA 实验报告 一、 实验内容 实验要求: 完成个位数的加减乘运算,输入用矩阵键盘,输出用数码管显示, 每输入一次数据要显示在数码管上。 矩阵键盘共 16 个按键, 用其中 10 个做个位数的输 入,用 3 个分别做加减乘运算,用其中 1 个做等于操作,各位数的运算结果最多两位, 用动态扫描数码管显示运算结果。 二、 小组成员 三、 实现方法 系统组成及连接原理如图所示,主要由由七个功能模块组成:分频模块(为键盘扫 描模块和防抖模块提供时钟) 、键盘扫描驱动模块(依次置零) 、键盘按键值编码模 块、键盘编码值防抖模块、运算模块,数码管显示驱动模块、动态扫描驱动模块。 键 行 时 分 值 驱 键盘矩阵 防抖 钟 频 编 动 码 数码 管显 运算 数码管 动态 显示 1.分频模块 由于 FPGA实验板的原始时钟频率高达 33.8688MHz ,所以不能直接接入设计模块中使 用,就需要用到分频模块。将 33.8688MHz 分频到 4KHz 和 10Hz 来使用,一个用于行驱动扫 描时钟,一个用于防抖模块。所以,采用写一个可变分频元件来调用。元件视图: 电子设计自动化 EDA 简易计算器设计 主要代码如下(完整代码见附录,下同) : architecture RTL of freq_division is component fredivn is generic(n:positive); Port ( clkin:in STD_LOGIC; clkout:out STD_LOGIC); end component; begin U1:fredivn generic map(n=3) port map(clkin=clk,clkout=clkout_kb); end RTL; 仿真结果如下图:达到预期的目的 2.行驱动模块(依次对行置零) : 键盘扫描的原理就是检测行列信号然后判断出具体是按下了哪一个按键。 所以, 对行依 次置零,当置零频率较快时,按下某一个按键后, 一定能得到某一列的信号输出为零, 如下 图: 电子设计

文档评论(0)

1亿VIP精品文档

相关文档