数码管扫描显示控制器设计与实现——北京邮电数字电路实验报告

上传人:xins****2008 文档编号:110964897 上传时间:2019-11-01 格式:DOC 页数:21 大小:680.50KB
返回 下载 相关 举报
数码管扫描显示控制器设计与实现——北京邮电数字电路实验报告_第1页
第1页 / 共21页
数码管扫描显示控制器设计与实现——北京邮电数字电路实验报告_第2页
第2页 / 共21页
数码管扫描显示控制器设计与实现——北京邮电数字电路实验报告_第3页
第3页 / 共21页
数码管扫描显示控制器设计与实现——北京邮电数字电路实验报告_第4页
第4页 / 共21页
数码管扫描显示控制器设计与实现——北京邮电数字电路实验报告_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《数码管扫描显示控制器设计与实现——北京邮电数字电路实验报告》由会员分享,可在线阅读,更多相关《数码管扫描显示控制器设计与实现——北京邮电数字电路实验报告(21页珍藏版)》请在金锄头文库上搜索。

1、数字电路与逻辑设计实验报告北京邮电大学实 验 报 告实验名称:数码管扫描显示控制器设计与实现 学 院: 信息与通信工程学院 班 级: 姓 名: 学 号: 日 期: 2010年5月 索 引一实验目的3二实验所用仪器及元器件3三实验任务要求3四实验设计思路及过程41.实验原理42.设计思路43.VHDL代码5A.实验任务15B.实验任务2-I8C.实验任务2-II11五仿真波形及分析121.仿真波形12实验任务112实验任务2-I133.波形分析17实验任务117实验任务2-I17六故障及问题分析181.频率设置问题182.触发问题183.逻辑实现问题18七本实验总结与结论19八学期总结19九参考

2、文献19一实验目的1. 掌握VHDL语言的语法规范,掌握时序电路描述方法2. 掌握多个数码管动态扫描显示的原理及设计方法二实验所用仪器及元器件1. 计算机2. 直流稳压电源3. 数字系统与逻辑设计实验开发板三实验任务要求1. 用VHDL语言设计并实现六个数码管串行扫描电路,要求同时显示0,1,2,3,4,5这六个不同的数字图形到六个数码管上,仿真下载验证其功能。2. 用VHDL语言设计并实现六个数码管滚动显示电路。(选作)I. 循环滚动,始终点亮6个数码管,左出右进。状态为:012345123450234501345012450123501234012345II. 向左滚动,用全灭的数码管充右

3、边,直至全部变灭,然后再依次从右边一个一个地点亮。状态为:01234512345X2345XX345XXX45XXXX5XXXXXXXXXXXXXXXX0XXXX01XXX012XX0123X01234012345,其中X表示数码管不显示。四实验设计思路及过程1.实验原理为使得输入控制电路简单且易于实现,采用动态扫描的方式实现设计要求。动态扫描显示需要由两组信号来控制:一组是字段输出口输出的字形代码,用来控制显示的字形,称为段码;另一组是位输出口输出的控制信号,用来选择第几位数码管工作,称为位码。各位数码管的段线并联,段码的输出对各位数码管来说都是相同的。因此在同一时刻如果各位数码管的位选线都

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

5、起,通过选通信号分时控制各个数码管的公共端,循环一次点亮多个数码管,并利用人眼的视觉暂留现象,只要扫描的频率大于50Hz,将看不到闪烁现象。6个数码管则需要50*6=300Hz以上才能看到持续稳定点亮的现象。2.设计思路设计时序电路,输入时钟经过一个分频器,产生2kHz的扫描信号作为时钟,驱动计数器工作。选用模值为6的计数器,通过一个3线至6线译码器,产生段码,依次控制6个LED的亮灭,使得某一时刻有且仅有一个LED点亮,同时产生对应的,将点亮的LED数码管赋值显示为相应的数码予以显示。由于扫描频率较高,6位LED数码管序列将显示持续稳定的0至5的数码。3.VHDL代码A.实验任务1实现代码-

6、2kHz 分频器library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity div2k isport(clk_in : in std_logic; clk_out : out std_logic);end;architecture a of div2k issignal cnt : integer range 0 to 999;signal clk_tmp : std_logic;beginprocess(clk_in)beginif (clk_inevent and clk_in=1) the

7、nif cnt=999 thencnt=0; clk_tmp= not clk_tmp;elsecnt=cnt+1;end if;end if;end process;clk_outCLK,clk_out=clk_tmp);P1:process(CNT6) BEGIN CASE CNT6 IS -3线至6线译码器 WHEN 0 = BT = 011111 ; A BT = 101111 ; A BT = 110111 ; A BT = 111011 ; A BT = 111101 ; A BT = 111110 ; A NULL ; END CASE ; END PROCESS P1;P2:p

8、rocess(clk_tmp) BEGIN IF clk_tmpEVENT AND clk_tmp = 1 THEN -实现模6计数器CNT6 = CNT6 + 1; if CNT6 = 5 thenCNT6 SG SG SG SG SG SG NULL ; END CASE ; END PROCESS P3; END arc;代码说明通过分频器输入产生选通脉冲,控制0至5号LED数码管依次亮灭,同时使用数码显示信号使得数码管显示相应数码。实现时通过连接引入分频信号,通过数据选择器选择数码管。计数器信号触发数据选择器,赋值给位码触发数码管显示数码。最终实现动态扫描显示数字序列。B.实验任务2-

9、I实现代码LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY scan_led_2 IS PORT ( CLK : IN STD_LOGIC; SG : OUT STD_LOGIC_VECTOR(6 DOWNTO 0); BT : OUT STD_LOGIC_VECTOR(5 DOWNTO 0) ); END;ARCHITECTURE arc OF scan_led_2 IScomponent div2kport(clk_in: in std_logic; clk_out: out st

10、d_logic);end component; SIGNAL CNT6 : INTEGER RANGE 0 TO 6; SIGNAL A : INTEGER RANGE 0 TO 5;SIGNAL COUNT : INTEGER RANGE 0 TO 5001 := 0;SIGNAl FLAG : INTEGER RANGE 0 TO 7 := 0; SIGNAl FLAG_A : INTEGER RANGE 0 TO 5;SIGNAL clk_tmp : STD_LOGIC;BEGINu1:div2k port map(clk_in=CLK,clk_out=clk_tmp);P1:process(CNT6) BEGIN CASE CNT6 IS WHEN 0 = BT = 011111 ; A =

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

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

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