利用按键控制点阵进行十进制数字显示

上传人:suns****4568 文档编号:91132062 上传时间:2019-06-26 格式:DOC 页数:25 大小:546KB
返回 下载 相关 举报
利用按键控制点阵进行十进制数字显示_第1页
第1页 / 共25页
利用按键控制点阵进行十进制数字显示_第2页
第2页 / 共25页
利用按键控制点阵进行十进制数字显示_第3页
第3页 / 共25页
利用按键控制点阵进行十进制数字显示_第4页
第4页 / 共25页
利用按键控制点阵进行十进制数字显示_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《利用按键控制点阵进行十进制数字显示》由会员分享,可在线阅读,更多相关《利用按键控制点阵进行十进制数字显示(25页珍藏版)》请在金锄头文库上搜索。

1、中北大学课 程 设 计 说 明 书学生姓名:郭士西学 号:0906024147学 院:电子与计算机科学技术学院专 业:微电子学题 目:利用按键控制点阵进行十进制数字显示指导教师: 崔永俊 职称: 副教授 2012 年 6 月 22 日目 录1.课程设计目的22.课程设计内容及要求2 2.1设计内容2 2.2设计要求23.设计方案及实现情况2 3.1设计思路2 3.2工作原理及框图3 3.3各模块程序代码及仿真结果4 3.4实验箱验证情况204课程设计总结245.参考文献251、课程设计目的 (1)学习操作数字电路设计实验开发系统,掌握点阵显示模块的工作原理及应用。(2)掌握组合逻辑电路、时序逻

2、辑电路的设计方法。(3)学习掌握可编程器件设计的全过程。2、课程设计内容和要求2.1、设计内容 (1)学习掌握按键开关控制模块、点阵显示模块的工作原理及应用; (2)熟练掌握VHDL编程语言,编写按键开关控制模块的控制逻辑; (3)仿真所编写的程序,模拟验证所编写的模块功能; (4)下载程序到芯片中,硬件验证所设置的功能,能够实现十进制数字的显示。 (5) 整理设计内容,编写设计说明书。2.2、设计要求 (1)本课程设计说明书; (2)VHDL源程序及内部原理图; (3)该设计可以在实验箱上正常工作并演示。 3、设计方案及实现情况3.1、设计思路 根据题目设计要求,由于整个过程的实现比较繁琐,

3、所以采用模块化设计思想会更好些,对于不同的功能用不同的程序模块实现。各个模块之间保持相对独立,最终将各个模块合在一块,这样有利于对不同的功能模块进行理解个、分析、调试、仿真。利用按键开关控制点阵进行十进制数字显示,我们可以采用单个按键计数递增的形式进行显示,也可以利用十个按键,每个对应一个十进制数字,进行随意显示。我更倾向于十个按键同时使用,这是我的初衷。 我把整个系统分成四个模块,包括分频模块、消抖模块、列控制模块和显示模块。分频模块,我通过查找资料和参考试验箱把它设为1000分频,偶数分频比较容易实现。消抖要十个键同时消抖,并且具有保持功能,所以这里需要斟酌一下,否则点阵不能一直点亮,这样

4、就省去了锁存模块,一箭双雕。列扫描模块就是利用时钟上升沿信号对点阵进行逐列循环扫描,把这个信号给sel3到sel0作为选择信号。显示模块就是通过sel端口和按键消抖后的信号进行选择,属于扫描行信号。到此就可以很好的做以下细致的工作了。3.2、工作原理及框图 (1)工作原理 1616 LED点阵由四块88 LED 点阵组成,共256个LED灯,只需要让对应的LED灯点亮,就可以汉字数字显示,如图1、2,列选择信号如表1. 图1.点阵实物图 表1. 图2.点亮示意图 SEL3SEL2SEL1SEL0点亮列号1111第1列1110第2列1101第3列1100第4列1011第5列1010第6列1001

5、第7列1000第8列0111第9列0110第10列0101第11列0100第12列0011第13列0010第14列0001第15列0000第16列 (2)系统连接图, 输入1MHz的时钟,分频为1K,消抖6ms 图3. 系统连接总图3.3、各模块的程序代码及仿真结果 (1)分频模块 由于我的是一千分频,在仿真上很难观察,所以我的仿真图是十分频的。 一千分频程序library ieee;Use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity fenpin is port(clk:in std_logic; clk_ou

6、t:out std_logic);end fenpin;architecture fenpin_1 of fenpin issignal cnt:integer range 0 to 999:=0;begin process(clk) begin if clkevent and clk=1 then -上升沿有效 if cnt=999 then -从0到999为一千 cnt = 0; else cnt = cnt+1; end if; end if; end process;process(cnt)beginif cnt500 then clk_out=0;-0到499为低电平else clk

7、_out=1;end if;end process;end fenpin_1;图4. 十分频仿真波形仿真图 (2)消抖模块 程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity xiaodou isport(clk,rst:in std_logic; key_in:in std_logic_vector(0 to 9); -按键输入 key_out:out std_logic_vector(0 to 9);-经消抖按键输出end xiaodou;architecture rt1 of

8、xiaodou issignal num:integer range 0 to 5; -计6次消抖,为6msbeginprocess(clk)beginif(rst=0) thenif(clkevent and clk=1) then if(key_in/=1111111111)then -说明有键按下if (num=5)then num=0;key_out=key_in; -计满6次说明有效else num=num+1;end if;elsenum=0;-无键按下保持上次的值,计数清0end if;end if;elsenum=0;key_out=1111111111;end if;end

9、process;end rt1; 从图5我们看到只要有键按下,那么就一直有一个输出低电平信号,这说明点阵可以保持点亮状态。并且key_in1持续六个周期,产生了低电平,而key_in2持续了5个周期,没产生低电平说明消抖确实是六次即6ms,成功实现消抖。图5.按键消抖仿真图形 (3)列扫描模块 程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity lie isport(clk:in std_logic; sel:out std_logic_vector(3 downto 0);end lie; architecture control_1 of lie isbeginprocess(clk) variable tmp:std_logic_vector(3 downto 0);beginif clkevent and clk=1 then if tmp=1111 then-循环16进制计数 tmp:=0000; else tmp:=tmp+1; end if;end if;sel case sel is when 0000=doutdoutdoutdoutdout=00011111111110

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号