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

数字电路综合实验报告简易智能密码锁一、实验课题及任务要求设计并实现一个数字密码锁,密码锁有四位数字密码和一个确认开锁按键,密码输入正确,密码锁打开,密码输入错误进行警示。
基本要求:1、密码设置:通过键盘进行4 位数字密码设定输入,在数码管上显示所输入数字。
通过密码设置确定键(BTN 键)进行锁定。
2、开锁:在闭锁状态下,可以输入密码开锁,且每输入一位密码,在数码管上显示“-”,提示已输入密码的位数。
输入四位核对密码后,按“开锁”键,若密码正确则系统开锁,若密码错误系统仍然处于闭锁状态,并用蜂鸣器或led 闪烁报警。
3、在开锁状态下,可以通过密码复位键(BTN 键)来清除密码,恢复初始密码“0000”。
闭锁状态下不能清除密码。
4、用点阵显示开锁和闭锁状态。
提高要求:1、输入密码数字由右向左依次显示,即:每输入一数字显示在最右边的数码管上,同时将先前输入的所有数字向左移动一位。
2、密码锁的密码位数(4~6 位)可调。
3、自拟其它功能。
二、系统设计2.1系统总体框图2.2逻辑流程图2.3MDS图2.4分块说明程序主要分为6个模块:键盘模块,数码管模块,点阵模块,报警模块,防抖模块,控制模块。
以下进行详细介绍。
1.键盘模块本模块主要完成是4×4键盘扫描,然后获取其键值,并对其进行编码,从而进行按键的识别,并将相应的按键值进行显示。
键盘扫描的实现过程如下:对于4×4键盘,通常连接为4行、4列,因此要识别按键,只需要知道是哪一行和哪一列即可,为了完成这一识别过程,我们的思想是,首先固定输出高电平,在读入输出的行值时,通常高电平会被低电平拉低,当当前位置为高电平“1”时,没有按键按下,否则,如果读入的4行有一位为低电平,那么对应的该行肯定有一个按键按下,这样便可以获取到按键的行值。
同理,获取列值也是如此,先输出4列为高电平,然后在输出4行为低电平,再读入列值,如果其中有哪一位为低电平,那么肯定对应的那一列有按键按下。
北邮数字电路与逻辑设计实验-实验报告(上)

北京邮电大学电路实验中心<数字电路与逻辑设计实验(上)>实验报告班级: xxx学院: xxx实验室: xxx 审阅教师:姓名(班内序号): xxx)学号: 2xxx实验时间: xxxx评定成绩:目录实验1 Quartus II 原理图输入法设计与实现 (3)一、实验目的 (3)二、实验所用器材 (3)三、实验任务要求 (3)四、实验原理图 (3)五、实验仿真波形图及分析 (4)实验2 用VHDL 设计与实现组合逻辑电路 (5)一、实验目的 (5)二、实验所用器材 (5)三、实验任务要求 (5)四、VHDL代码 (5)五、实验仿真波形图及分析 (7)实验3 用VHDL 设计与实现时序逻辑电路 (8)一、实验目的 (8)二、实验所用器材 (8)三、实验任务要求 (8)四、模块端口说明及连接图 (8)五、VHDL代码 (9)六、实验仿真波形图及分析 (10)实验4 用VHDL 设计与实现数码管动态扫描控制器 (10)一、实验目的 (10)二、实验所用器材 (11)三、实验任务要求 (11)四、模块端口说明及连接图 (11)五、VHDL代码 (11)六、实验仿真波形图及分析 (15)故障及问题分析 (16)总结和结论 (17)实验1 Quartus II 原理图输入法设计与实现一、实验目的(1)熟悉用Quartus II原理图输入法进行电路设计和仿真;(2)掌握Quartus II 图形模块单元的生成与调用;(3)熟悉实验板的使用。
二、实验所用器材(1)计算机;(2)直流稳压电源;(3)数字系统与逻辑设计实验开发板。
三、实验任务要求(1)用逻辑门设计实现一个半加器,仿真验证其功能,并生成新的半加器图形模块单元。
(2)用(1)中生成的半加器模块和逻辑门设计实现一个全加器,仿真验证其功能,并下载到实验板测试,要求用拨码开关设定输入信号,发光二极管显示输出信号。
(3)用3线-8线译码器(74LS138)和逻辑门设计实现函数+CBA,仿真验证其功能,并下载到实验板测试。
北邮数字电路与逻辑设计实验-实验报告(下)

北京邮电大学电路实验中心<数字电路与逻辑设计实验(下)>实验报告班级: xxx 学院: xxx实验室: xxx 审阅教师:姓名(班内序号): xxx 学号: xxx实验时间: xxx评定成绩:目录一、任务要求 (2)1.基本要求 (2)2.提高要求 (2)二、系统设计 (2)1.设计思路 (2)2.总体框图 (4)3.分块设计 (5)(1)分频器模块 (5)(2)4×4键盘输入模块 (5)(3)数码管显示模块 (6)(4)8×8 LED点阵显示模块 (6)(5)LCD液晶屏显示模块 (6)(6)中心模块 (6)三、仿真波形及波形分析 (6)1.分频器模块 (6)2.4×4键盘输入模块 (7)3.数码管显示模块 (7)4.8×8 LED点阵显示模块 (8)5.LCD液晶屏显示模块 (8)6.中心模块 (8)四、源程序 (9)1.分频器模块 (9)2.4×4键盘输入模块 (9)3.数码管显示模块 (11)4.8×8 LED点阵显示模块 (12)5.LCD液晶屏显示模块 (19)6.中心模块 (23)五、功能说明及资源利用情况 (26)六、故障及问题分析 (27)七、总结和结论 (27)一、任务要求本电路可供甲乙二人进行猜拳游戏。
通过不同的按键控制,选择多种出拳方式,显示猜拳的结果,实现猜拳游戏,防止了作弊的可能。
1.基本要求1、甲乙双方各用4×4 键盘中的三个按键模拟“石头”、“剪刀”、“布”,一个按键为“确认”。
4×4 键盘第一行为甲,第二行为乙;2、裁判用4×4 键盘第三行的一个按键模拟“开”,一个按键为“准备”,一个按键为“复位”;3、裁判宣布“准备”后,甲乙双方分别选择出拳方式并确认;4、裁判“开”以后,用点阵的左右三列同时显示甲乙双方的猜拳选择(如下图所示),并用两个数码管显示甲乙的猜拳比分;图1甲“布”,乙“剪刀”;甲“剪刀”,乙“石头”5、猜拳游戏为五局三胜制。
北邮数字电路与逻辑设计实验报告

北京邮电大学数字电路与逻辑设计实验报告学院:班级:姓名:学号:实验一 Quartus II原理图输入法设计与实现一、实验目的:(1)熟悉Quartus II原理图输入法进行电路设计和仿真;(2)掌握Quartus II 图形模块单元的生成与调用;(3)熟悉实验板的使用;二、实验所用器材:(1)计算机;(2)直流稳压电源;(3)数字系统与逻辑设计实验开发板。
三、实验任务要求(1)用逻辑门设计实现一个半加器,仿真验证其功能,并生成新的半加器图形模块单元。
(2)用(1)中生成的半加器模块和逻辑门设计实现一个全加器,仿真验证其功能,并下载到实验板测试,要求用拨码开关设定输入信号,发光二极管显示输出信号。
(3)用3线-8线译码器(74LS138)和逻辑门设计实现函数 ,仿真验证其功能,并下载到实验板测试。
要求用拨码开关设定输入信号,发光二极管显示输出信号。
四、实验原理图及仿真波形图(1)半加器半加器原理图仿真波形仿真波形图分析:根据仿真波形对比半加器真值表,可以确定电路实现了半加器的功能。
但我们也可以发现输出SO出现了静态功能冒险,要消除该冒险可以加入相应的选通脉冲。
(2)全加器全加器原理图仿真波形仿真波形图分析:根据仿真波形对比半加器真值表,可以确定电路实现了全加器的功能(2) 74138 3线-8线译码器原理图仿真波形图仿真波形图分析 ;当且仅当ABC输入为000、010、100、111时,F=1,可知电路实现了函数。
实验二用VHDL设计与实现组合逻辑电路一、实验目的:(1)熟悉用VHDL语言设计时序逻辑电路的方法;(2)熟悉用Quartus II文本输入法进行电路设计;(3)熟悉不同的编码及其之间的转换。
二、实验所用器材:(1)计算机;(2)直流稳压电源;(3)数字系统与逻辑设计实验开发板。
三、实验任务要求(1)用 VHDL语言设计实现一个共阴极7段数码管译码器;(2)用VHDL语言设计一个8421码转余三码的代码转换器;(3)用VHDL语言设计设计一个四位2进制奇校验器。
北邮大二下数电实验报告

北京邮电大学数字电路与逻辑设计实验学院:班级:姓名:学号:班内序号:实验一一、实验名称Quartus II 原理图输出法设计(一)半加器二、实验任务要求用逻辑门设计实现一个半加器,仿真验证其功能,并生成新的半加器图形模块单元。
三、设计思路和过程◎设计思路半加器电路是指对两个输入数据位进行加法,输出一个结果位和进位,不产生进位输入的加法器电路,是实现两个一位二进制数的加法运算电路。
数据输入:被加数AI、加数BI数据输出:半加和SO、进位CO◎设计过程,输出有一个是和SO,另一个是进位CO。
(2)根据真值表写出输出逻辑表达式该电路有两个输出端,属于多输出组合数字电路,电路的逻辑表达式如下:AICO⋅=。
所以,可以用一个两输入异或门和一个两输入与门SO⊕=,BIBIAI实现。
◎实验原理图四、仿真波形图及分析根据仿真波形对比半加器真值表,可以确定电路实现了半加器的功能。
但我们也可以发现输出SO出现了静态功能冒险,要消除该冒险可以加入相应的选通脉冲。
(二)全加器二、实验任务要求用实验内容1中生成的半加器模块和逻辑门设计实现一个全加器,仿真验证其功能,并下载到实验板测试,要求用拨码开关设定输入信号,发光二极管显示输出信号。
三、设计思路和过程 ◎设计思路全加器与半加器的区别在于全加器有一个低进位CI ,从外部特性来看,它是一个三输入两输出的器件。
◎设计过程SO ,向相邻高位进位数为CO 。
(2)根据真值表写出逻辑表达式:CI BI AI SO ⊕⊕=,BI AI CI BI AI CO ⋅+⋅⊕=)(根据逻辑表达式,可以知道只要在半加器的基础上再加入一个异或门、一个两输入与门和两输入或门即可实现全加器。
◎实验原理图四、仿真波形图及分析根据仿真波形对比全加器真值表,可以确定电路实现了全加器的功能。
(三)3线—8线译码器二、实验任务要求用3线—8线译码器(74LS138)和逻辑门设计实现函数CBF+A++=,仿真验证其功能,并下载到实验板测试。
数码管扫描显示控制器设计与实现——北京邮电大学数字电路实验报告

北京邮电大学实验报告实验名称:数码管扫描显示控制器设计与实现学院: 信息与通信工程学院班ﻩ级: 2010211123姓名: XXX学ﻩ号:XXXXXXXX日期: 2012年4月20日目录一.实验目的 .................................................................................. 错误!未定义书签。
二.实验所用仪器及元器件ﻩ错误!未定义书签。
三.实验任务要求........................................................................... 错误!未定义书签。
四.实验设计思路及过程ﻩ31.实验原理 (3)2.设计思路ﻩ错误!未定义书签。
3.VHDL代码ﻩ4五.仿真波形及分析ﻩ81.仿真波形 (8)2.波形分析ﻩ9六.故障及问题分析 (9)1.频率设置问题ﻩ92.触发问题 ............................................................................................ 错误!未定义书签。
七.本实验总结与结论ﻩ错误!未定义书签。
八.学期总结ﻩ错误!未定义书签。
一.实验目的1.掌握VHDL语言的语法规范,掌握时序电路描述方法2.掌握多个数码管动态扫描显示的原理及设计方法二.实验所用仪器及元器件1.计算机2.直流稳压电源3.数字系统与逻辑设计实验开发板三.实验任务要求用VHDL语言设计并实现六个数码管串行扫描电路,要求同时显示0,1,2,3,4,5这六个不同的数字图形到六个数码管上,仿真下载验证其功能。
四.实验设计思路及过程1.实验原理为使得输入控制电路简单且易于实现,采用动态扫描的方式实现设计要求。
动态扫描显示需要由两组信号来控制:一组是字段输出口输出的字形代码,用来控制显示的字形,称为段码;另一组是位输出口输出的控制信号,用来选择第几位数码管工作,称为位码.各位数码管的段线并联,段码的输出对各位数码管来说都是相同的。
北邮·数电综合实验·双色点阵显示控制器的设计与实现

数字电路与逻辑设计实验报告题目:双色点阵显示控制器的设计与实现班级:学号:姓名:1 实验要求1.1基本要求:1)固定红色显示一个汉字或图形,显示亮度4级可调,用一个btn按钮实现亮度调节,亮度变化视觉效果要尽量明显。
2) 用从红到绿8级渐变色显示一个固定汉字或图形。
3) 分别用单字循环显示、左右滚动显示、上下滚动显示三种显示方式单色显示四个汉字或图形,显示过程中,显示方式用一个btn 按键进行切换。
4) 显示的图形或汉字要尽量饱满美观。
1.2提高要求:1) 滚动显示过程中实现四种显示颜色的自动变换,颜色变化视觉效果要尽量明显。
2) 自拟其它功能。
2系统设计2.1设计思路本实验采用自顶向下设计法:从整个系统功能出发,按一定原则将系统划分为若干子系统,再将每个子系统分为若干功能模块,然后实现所要求的的功能。
总体是通过分频、按键控制、扫描控制等模块实现上述功能,通过占空比来改变色彩,实现八级渐变色,通过扫描频率的改变和信号的占空比实现亮度的调节,通过行扫描和列扫描的不同实现左右滚动显示和上下滚动显示。
由于按键动作的时刻和按下的时间长短是随机的,并且存在由开关簧片反弹导致的电平抖动,所以还要为每个按键开关设置一个消抖和同步电路,这样才能保证按键的准确性。
2.2总体设计框图1)总体结构框图2)ASM 图选择汉字或图形 选择显示模式 选择亮度显示不同的文字或者图案no yes yes no yes no yesno如图所示:开始由按键选择模式,是单个渐变色显示,还是循环显示,还是可改变亮度显示,在执行的同时检查是否按下reset 键,如果reset 键被按下,那么将对系统进行复位。
选择图形或文字选择显示方式 case1?case2?csae3 左右滚动显示上下滚动显示四种颜色自动变换 循环显示点阵屏显示循环显示? 调亮显示?固定红色 调节亮度 从红到绿八级变色 开始2.3模块划分逻辑划分框图CP如图所示:系统主要分成3个模块:分频模块针对不同的模式进行分频,扫描控制模块通过行扫描或者列扫描来控制循环显示的方式,点阵显示模块主要是响应不同模式下的点阵显示方式及图形。
2016年北邮数电实验报告 (1)

数字电路与逻辑设计实验报告学院:电子工程学院班级:姓名:学号:班内序号:目录(一)实验名称及实验任务要求 (1)(二)模块端口说明及连接图 (2)1.1实验三(3)模块端口说明 (2)1.2实验三(3)连接图 (2)2.1实验四模块端口说明 (2)2.2实验四连接图 (2)(三)原理图或VHDL代码 (3)1.实验一(2)原理图 (3)2.实验三(3)VHDL代码 (4)3.实验四VHDL代码 (7)(四)仿真波形 (10)1.实验一(2)仿真波形 (10)2.实验三(3)仿真波形 (11)3.实验四仿真波形 (11)(五)仿真波形分析 (11)1.实验一(2)仿真波形分析 (11)2.实验三(3)仿真波形分析 (11)3.实验四仿真波形分析 (11)(六)故障及问题分析 (12)(七)总结和结论 (13)(一)实验名称及实验任务要求实验一名称:QuartusII原理图输入法设计与实现实验任务要求:EDA基础实验1(1)、(2)、(3)必做,选做VHDL 实现加法器。
实验二名称:用VHDL设计与实现组合逻辑电路实验任务要求:四人表决器、8421码转格雷码、数码管译码器(下载测试)。
实验三名称:用VHDL设计与实现时序逻辑电路实验任务要求:分频器、8421十进制计数器、将分频器/8421十进制计数器/数码管译码器3个电路进行连接并下载。
实验四名称:用VHDL设计与实现相关电路实验任务要求:数码管动态扫描控制器、点阵扫描控制器。
(二)模块端口说明及连接图1.1实验三(3)模块端口说明cp:时钟信号输入;rst:8421十进制计数器异步置位;c[6...0]:七段二极管数码管显示;cat[7...0]:数码管显示。
1.2实验三(3)连接图2.1实验四模块端口说明cp:时钟信号输入;rst:8421计数器异步复位;lgt[6...0]:七段二极管数码管显示;cat[7...0]:数码管显示。
2.2实验四连接图(三)原理图或VHDL代码1.实验一(2)原理图半加器:全加器:2.实验三(3)VHDL代码//分频器部分library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity div_12 isport(cp: in std_logic;clk1: out std_logic);end div_12;architecture a of div_12 issignal tmp: integer range 0 to 11;beginprocess (cp)beginif (cp'event and cp='1') thenif tmp=11 then tmp<=0;else tmp<=tmp+1;end if;if tmp<=5 then clk1<='0';else clk1<='1';end if;end if;end process;end a;//8421十进制加法器部分library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity jisuqi8421 isport(clk2,rst: in std_logic;q : out std_logic_vector(3 downto 0));end jisuqi8421;architecture a of jisuqi8421 issignal q_temp:std_logic_vector (3 downto 0); beginprocess(clk2,rst)beginif (rst='1') thenq_temp<="0000";elsif (clk2'event and clk2='1') thenif q_temp>="1001" then q_temp<="0000";elseq_temp<=q_temp+1;end if;end if;end process;q<=q_temp;end a;//译码管部分LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY yimaguan ISPORT(a: IN STD_LOGIC_VECTOR (3 downto 0);b: OUT STD_LOGIC_VECTOR (6 downto 0);cat: out std_logic_vector(7 downto 0));end yimaguan;ARCHITECTURE seg7_1_arch OF yimaguan ISBEGINPROCESS(a)BEGINCASE a ISWHEN"0000" => b <="1111110"; --0WHEN"0001" => b <="0110000"; --1WHEN"0010" => b <="1101101"; --2WHEN"0011" => b <="1111001"; --3WHEN"0100" => b <="0110011"; --4WHEN"0101" => b <="1011011"; --5WHEN"0110" => b <="1011111"; --6WHEN"0111" => b <="1110000"; --7WHEN"1000" => b <="1111111"; --8WHEN"1001" => b <="1111011"; --9WHEN OTHERS => b <="0000000";END CASE;END PROCESS;cat<="11101111";END;//整体显示library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity display isport(cp,rst: in std_logic;c:out std_logic_vector(6 downto 0);cat: out std_logic_vector(7 downto 0));end display;architecture r of display iscomponent div_12port(cp:in std_logic;clk1:out std_logic);end component;component jisuqi8421port(clk2,rst:in std_logic;q:out std_logic_vector(3 downto 0));end component;component yimaguanport(a:in std_logic_vector(3 downto 0);b:out std_logic_vector(6 downto 0);cat: out std_logic_vector(7 downto 0));end component;signal x:std_logic;signal y:std_logic_vector(3 downto 0);beginu1:div_12 port map(cp=>cp,clk1=>x);u2:jisuqi8421 port map(clk2=>x,rst=>rst,q=>y); u3:yimaguan port map(a=>y,b=>c,cat=>cat);end r;3.实验四VHDL代码//分频器分频部分library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity div isport(cp: in std_logic;clk1: out std_logic);end div;architecture a of div issignal tmp: integer range 0 to 49; beginprocess (cp)beginif (cp'event and cp='1') thenif tmp=49 then tmp<=0;else tmp<=tmp+1;end if;if tmp<=25 then clk1<='0';else clk1<='1';end if;end if;end process;end a;//计数器计数部分library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity count isport(clk,rst: in std_logic;q : out std_logic_vector(3 downto 0));end count;architecture a of count issignal temp:std_logic_vector (3 downto 0); beginprocess(clk,rst)beginif (rst='1') thentemp<="0000";elsif (clk'event and clk='1') thenif temp>="0101" then temp<="0000";elsetemp<=temp+1;end if;end if;end process;q<=temp;end a;//译码管显示部分library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity yimaqi isport(a:in std_logic_vector(3 downto 0);led:out std_logic_vector(6 downto 0);cat:out std_logic_vector(7 downto 0));end entity;architecture rtl of yimaqi isbeginprocess(a)begincase a iswhen "0000"=>led<="1111110"; cat<="11111110"; --0when "0001"=>led<="0110000"; cat<="11111101"; --1when "0010"=>led<="1101101"; cat<="11111011"; --2when "0011"=>led<="1111001"; cat<="11110111"; --3when "0100"=>led<="0110011"; cat<="11101111"; --4when "0101"=>led<="1011011"; cat<="11011111"; --5when others=>led<="0000000"; cat<="11111111";end case;end process;end;//合成数码管显示library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity show isport(cp:in std_logic;rst:in std_logic;lgt:out std_logic_vector(6 downto 0);cat:out std_logic_vector(7 downto 0));end entity;architecture rtl of show iscomponent divport(cp : in std_logic;clk1: out std_logic);end component;signal x:std_logic;component countport(clk,rst: in std_logic;q : out std_logic_vector(3 downto 0));end component;signal y:std_logic_vector(3 downto 0);component yimaqiport(a :in std_logic_vector(3 downto 0);led:out std_logic_vector(6 downto 0);cat:out std_logic_vector(7 downto 0));end component;beginu0:div port map (cp=>cp,clk1=>x);u1:count port map(clk=>x,rst=>rst,q=>y);u2:yimaqi port map(a=>y,cat=>cat,led=>lgt); end rtl;(四)仿真波形1.实验一(2)仿真波形2.实验三(3)仿真波形3.实验四仿真波形(五)仿真波形分析1.实验一(2)仿真波形分析a,b,ci均为输入信号,s,co为输出信号其逻辑功能为:s=a xor b xor cico=( ( a xor b ) and ci ) or (a and b ) 2.实验三(3)仿真波形分析rst,cp均为输入信号,c,cat为输出信号。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
北京邮电大学实验报告实验名称:数码管扫描显示控制器设计与实现学院:信息与通信工程学院班级:2011XXXXXX姓名:XXX学号:日期:2013年5月一.实验目的1.掌握VHDL语言的语法规范,掌握时序电路描述方法2.掌握多个数码管动态扫描显示的原理及设计方法二.实验所用仪器及元器件1.计算机2.直流稳压电源3.数字系统与逻辑设计实验开发板三.实验任务要求1.用VHDL语言设计并实现六个数码管串行扫描电路,要求同时显示0,1,2,3,4,5这六个不同的数字图形到六个数码管上,仿真下载验证其功能。
2.用VHDL语言设计并实现六个数码管滚动显示电路。
(选作)I.循环滚动,始终点亮6个数码管,左出右进。
状态为:012345-123450-234501-345012-450123-501234-012345II.向左滚动,用全灭的数码管充右边,直至全部变灭,然后再依次从右边一个一个地点亮。
状态为:012345-12345X-2345XX-345XXX-45XXXX-5XXXXX-XXXXXX-XXXXX0-XXXX01-XXX012-XX0123-X01234-012345,其中’X’表示数码管不显示。
四.实验设计思路及过程1.实验原理为使得输入控制电路简单且易于实现,采用动态扫描的方式实现设计要求。
动态扫描显示需要由两组信号来控制:一组是字段输出口输出的字形代码,用来控制显示的字形,称为段码;另一组是位输出口输出的控制信号,用来选择第几位数码管工作,称为位码。
各位数码管的段线并联,段码的输出对各位数码管来说都是相同的。
因此在同一时刻如果各位数码管的位选线都处于选通状态的话,6位数码管将显示相同的字符。
若要各位数码管能够显示出与本位相应的字符,就必须采用扫描显示方式,即在某一时刻,只让某一位的位选线处于导通状态,而其它各位的位选线处于关闭状态。
同时,段线上输出相应位要显示字符的字型码。
这样在同一时刻,只有选通的那一位显示出字符,而其它各位则是熄灭的,如此循环下去,就可以使各位数码管显示出将要显示的字符。
虽然这些字符是在不同时刻出现的,而且同一时刻,只有一位显示,其它各位熄灭,但由于数码管具有余辉特性和人眼有视觉暂留现象,只要每位数码管显示间隔足够短,给人眼的视觉印象就会是连续稳定地显示。
总之,多个数码管动态扫描显示,是将所有数码管的相同段并联在一起,通过选通信号分时控制各个数码管的公共端,循环一次点亮多个数码管,并利用人眼的视觉暂留现象,只要扫描的频率大于50Hz,将看不到闪烁现象。
6个数码管则需要50*6=300Hz以上才能看到持续稳定点亮的现象。
2.设计思路设计时序电路,选用模值为6的计数器,通过一个3线至6线译码器,产生段码,依次控制6个LED的亮灭,使得某一时刻有且仅有一个LED点亮,同时产生对应的,将点亮的LED数码管赋值显示为相应的数码予以显示。
由于扫描频率较高,6位LED数码管序列将显示持续稳定的0至5的数码。
3.VHDL代码A.实验任务1①实现代码LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY GKY07P14ISPORT(clk,clear:IN STD_LOGIC;q:OUT STD_LOGIC_VECTOR(6DOWNTO0);countout:OUT STD_LOGIC_VECTOR(5DOWNTO0)); END GKY07P14;ARCHITECTURE behave OF GKY07P14ISSIGNAL q_temp:STD_LOGIC_VECTOR(6DOWNTO0); SIGNAL count:STD_LOGIC_VECTOR(5DOWNTO0); SIGNAL cnt:INTEGER RANGE0TO5;BEGINp1:PROCESS(clk)BEGINIF(clk'EVENT AND clk='1')THENIF(cnt=5)THEN cnt<=0;ELSEcnt<=cnt+1;END IF;END IF;END PROCESS;p2:PROCESS(cnt)BEGINIF(clear='0')THEN count<="111111";ELSECASE cnt ISWHEN1=>count<="101111";q_temp<="0110000";WHEN2=>count<="110111";q_temp<="1101101";WHEN3=>count<="111011";q_temp<="1111001";WHEN4=>count<="111101";q_temp<="0110011";WHEN5=>count<="111110";q_temp<="1011011";WHEN0=>count<="011111";q_temp<="1111110";END CASE;END IF;END PROCESS;countout<=count;q<=q_temp;END behave;②代码说明通过分频器输入产生选通脉冲,控制0至5号LED数码管依次亮灭,同时使用数码显示信号使得数码管显示相应数码。
实现时通过连接引入分频信号,通过数据选择器选择数码管。
计数器信号触发数据选择器,赋值给位码触发数码管显示数码。
最终实现动态扫描显示数字序列。
B.实验任务2-I①实现代码LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY GKY07P14ISPORT(clk,clear:IN STD_LOGIC;q:OUT STD_LOGIC_VECTOR(6DOWNTO0);countout:OUT STD_LOGIC_VECTOR(5DOWNTO0));END GKY07P14;ARCHITECTURE behave OF GKY07P14ISSIGNAL q_temp:STD_LOGIC_VECTOR(6DOWNTO0);SIGNAL count:STD_LOGIC_VECTOR(5DOWNTO0);SIGNAL cnt,cnt1:INTEGER RANGE0TO5;SIGNAL tmp:INTEGER RANGE0TO15999;signal clk1:STD_LOGIC;BEGINp0:PROCESS(clk,clear)BEGINIF clear='0'THEN tmp<=0;ELSIF clk'EVENT AND clk='1'THENIF tmp=15999THENtmp<=0;ELSEtmp<=tmp+1;END IF;END IF;END PROCESS p0;p1:PROCESS(tmp)BEGINIF clk'EVENT AND clk='1'THENIF tmp<1000THENclk1<='0';ELSEclk1<='1';END IF;END IF;END PROCESS p1;p2:PROCESS(clk)BEGINIF(clk'EVENT AND clk='1')THENIF(cnt=5)THEN cnt<=0;ELSEcnt<=cnt+1;END IF;END IF;END PROCESS p2;p3:PROCESS(clk1)BEGINIF(clk1'EVENT AND clk1='1')THENIF(cnt1=5)THEN cnt1<=0;ELSEcnt1<=cnt1+1;END IF;END IF;END PROCESS p3;p4:PROCESS(cnt,cnt1)BEGINIF(clear='0')THEN q_temp<="0000000"; ELSECASE cnt+cnt1ISWHEN0=>q_temp<="1111110";WHEN1=>q_temp<="0110000";WHEN2=>q_temp<="1101101";WHEN3=>q_temp<="1111001";WHEN4=>q_temp<="0110011";WHEN5=>q_temp<="1011011";WHEN6=>q_temp<="1111110";WHEN7=>q_temp<="0110000";WHEN8=>q_temp<="1101101";WHEN9=>q_temp<="1111001";WHEN10=>q_temp<="0110011";WHEN11=>q_temp<="1011011";WHEN OTHERS=>q_temp<="0000000";END CASE;END IF;END PROCESS p4;q<=q_temp;p5:PROCESS(cnt)BEGINIF(clear='0')THEN count<="111111";ELSECASE cnt ISWHEN0=>count<="011111";WHEN1=>count<="101111";WHEN2=>count<="110111";WHEN3=>count<="111011";WHEN4=>count<="111101";WHEN5=>count<="111110";WHEN OTHERS=>count<="111111";END CASE;END IF;END PROCESS p5;countout<=count;END behave;②代码说明代码主体和实验任务1中一致,基本思想也一致。