课程名称 EDA实验 成绩评定
实验项目名称 数码管扫描显示电路 指导教师 郭江陵 实验项目编号 02 实验项目类型 验证 实验地点 B305 学院 电气信息学院 系 专业 物联网工程 组号: A6
一、实验前准备
本实验例子使用独立扩展下载板EP1K10_30_50_100QC208(芯片为EP1K100QC208)。EDAPRO/240H实验仪主板的VCCINT跳线器右跳设定为3.3V; EDAPRO/240H实验仪主板的VCCIO跳线器组中“VCCIO3.3V”应短接,其余VCCIO均断开;独立扩展下载板“EP1K10_30_50_100QC208”的VCCINT跳线器组设定为2.5V;独立扩展下载板“EP1K10_30_50_100QC208”的VCCIO跳线器组设定为3.3V。请参考前面第二章中关于“电源模块”的说明。
二、实验目的
1、了解时序电路设计。
2、制作一个数码管显示的7段译码电路,以备以后调用。
三、实验原理
在电子电路显示部分里,发光二极管(LED)、七段显示数码管、液晶显示(LCD)均是十分常见的人机接口电路。通常点亮一个LED所需的电流在5~20mA之间,电流愈大,LED的亮度也高,相对的使用寿命也愈短。若以10mA导通电流来估算一个接5V的串接电
a 阻值计算应为:
(5-1.6)/10mA≈0.34KΩ。
f b g e c p d
七段显示数码管分为共阳、共阴二种极性。它们等效成八个LED相连电路。
p g f e d c b a
共阴极七段显示器的LED位置定义和等效电路
共阴极七段显示码十六进制转换表
十六进制码 Num D8 D4 D2 D1 g 共阴极七段显示码 f e d c b a 0 1 2 3 4 5 6 7 8 9 A B C D E F
0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 0 1 1 1 1 1 0 1 1 1 1 0 1 1 1 1 0 0 0 1 1 1 0 1 1 1 1 1 0 1 1 1 0 1 0 0 0 1 0 1 0 1 1 1 1 1 1 1 0 1 1 0 1 1 0 1 1 0 1 1 1 1 0 1 1 0 1 1 1 1 1 1 1 1 1 0 1 0 0 1 1 1 1 1 0 0 1 1 1 1 0 0 1 0 0 1 0 1 1 0 1 1 1 1 1 1 0 1 0 1 1 四、实验内容
用拨码开关产生8421BCD码,CPLD器件产生译码及扫描电路,把BCD码显示在LED数码管上,通过改变扫描频率观察数码管刷新效果。
五、实验要求
学习在MAX+PLUS II中使用VHDL设计功能模块,并将所生成的功能模块转换成MAX+PLUS II原理图的符号库,以便在使用原理图时调用该库。
六、设计框图
◆ 动态共阴数码管扫描设计框图(程序为1-D)
数据输入 时钟信号 数据转换 计数器 输出 数码管动态扫描 LED显示驱动 ◆ 静态共阳数码管扫描设计框图(程序为1-S)
数据输入 数据转换
七、原理图
◆ 动态共阴数码管(程序为1-D):
xdeleddi[3..0]INPUTVCCdi[3..0]abcdefgOUTPUTaOUTPUTOUTPUTbcOUTPUTOUTPUTOUTPUTdefOUTPUTginstVCCPIN_86PIN_87PIN_88PIN_89PIN_90PIN_92PIN_9374161LDNABCDENTENPCLRN数码管扫描刷新模块 QAQBQCQDRCOOUTPUTOUTPUTSS0SS1OUTPUTSS2PIN_68PIN_69PIN_70RESETINPUTVCCINPUTVCCPIN_79CLKPIN_71CLKCOUNTERinst1数码管显示驱动模块 7404OUTPUT a静态共阳数码管: inst1deled7404PIN_25OUTPUTbsum[3..0]INPUTVCCsum[3..0]abcdefginst27404OUTPUTPIN_26cPIN_45PIN_46PIN_47PIN_53inst37404PIN_27OUTPUTdinst47404OUTPUTPIN_28einstinst57404PIN_29OUTPUTfinst67404OUTPUTPIN_30ginst7PIN_317404OUTPUThinst8VCCPIN_36GNDAND2OUTPUTIO_DS7 在原理图方式中设计了两个模块,其中一个用于BCD码译码输出,转换成数码管的段码,数据输入端口为D[3..0],输出端口A~G通过数码管驱动电路分别驱动各段来点亮动态数码管。数码管上显示的值为“8位数字开关组(A)”的“SW8~SW5”所输入的8421BCD
inst10PIN_37码值的数值。另外一个模块使用74161计数器进行数码管显示选择设定。74161的输入端有时钟信号CLK和复位信号RESET,输出为数码管段位译码的输入信号SS0、SS1、SS2。
八、实验电路连线与使用操作
◆ 动态共阴数码管实验电路连线(程序为1-D):
D0、D1、D2、D3:分别为独立扩展下载板上第53、47、46、45脚,内部已锁定,并已连接至“8位数字开关组(A)”的“SW8~SW5”,无需连线。
A:为独立扩展下载板上第86脚,应接“数码管段位引线”接线组“KPL_AH”的A B:为独立扩展下载板上第87脚,应接“数码管段位引线”接线组“KPL_AH”的B C:为独立扩展下载板上第88脚,应接“数码管段位引线”接线组“KPL_AH”的C D:为独立扩展下载板上第89脚,应接“数码管段位引线”接线组“KPL_AH”的D E:为独立扩展下载板上第90脚,应接“数码管段位引线”接线组“KPL_AH”的E F:为独立扩展下载板上第92脚,应接“数码管段位引线”接线组“KPL_AH”的F G:为独立扩展下载板上第93脚,应接“数码管段位引线”接线组“KPL_AH”的G SS0:为独立扩展下载板上第68脚,是数码管的位选扫描信号,接信号接线组“DS1-8A(T)”的引线插孔SS0。
SS1:为独立扩展下载板上第69脚,是数码管的位选扫描信号,接信号接线组“DS1-8A(T)”的引线插孔SS1。
SS2:为独立扩展下载板上第70脚,是数码管的位选扫描信号,接信号接线组“DS1-8A(T)”的引线插孔SS2。
RESET:为独立扩展下载板上第71脚,应接“多功能复用按键F1-F12”信号接线组“F1_12(T)”的 F9~F12的任意一个引线插孔
CLK:为独立扩展下载板上第79脚即 GCLK1脚,应接时钟信号接线组“CLOCK(T)”的“FRQ(11)”引线插孔。
动态共阴数码管使用操作(程序为1-D): 改变“8位数字开关组(A)”的“SW8~SW5”,共有 24=16种状态,即在共阴动态数码管上分别显示十六进制数0~F。
◆ 静态共阳数码管实验电路连线(程序为1-S):
本例数码管为共阳极性,位于EDAPRO/240H实验仪的“DS7C”。
D1、D2、D3、D4:分别为独立扩展下载板上第53、47、46、45脚,内部已锁定,并已连接至“8位数字开关组(A)”的“SW8~SW5”,无需连线。
数码管段码A、B、C、D、E、F、G分别为独立扩展下载板上第25、26、27、28、29、30、31脚,内部已锁定,无需连线。
IO_DS7:为独立扩展下载板上第37脚,内部已锁定,无需连线。 静态共阳数码管使用操作(程序为1-S): 改变“8位数字开关组(A)”的“SW8~SW5”,共有 24=16种状态,即在DS7C共阳静态数码管上显示对应的十六进制数0~F。
九、波形仿真分析
◆ 动态共阴数码管(程序为1-D):
输入信号:
Di[3..0]:状态输入端口,决定数码管的显示。 CLK:74161的时钟信号。
RESET:74161的复位输入信号。 输出信号:
A ~G:数码管7个段。
SS0~SS2:动态共阴数码管位控译码的输入信号。 波形结果分析:
如仿真波形所示,在第二个timebar处di[3..0]的输入数据为“5”,SS0~SS2在“5”数据输入期间,有0~7个状态循环往复,说明在此期间8个数码管的各位控均有有效输入信号,相应的数码管都有相同的字形码“5”输出(1101101),这与段选共阴数码管对照表的结果的结果一致,说明实验结果正确。输入其他不同的BCD码如0~F,其输出结果均与此类同。
结论:从以上分析结果可知,所设计的电路符合实验设计要求。
下载到实验箱的结果如下:
动态
静态:
十、实验总结
通过实验,让我熟悉了Quartus的硬件仿真的步骤和如何下载到实验箱上调试。加深了对静态动态数码管原理,了解到动态数码管的优缺点和如何选择动态数码管的切换频率。
实验二问题
1、动态、静态数码管优缺点(引脚数)? 动态数码管的优缺点:
优点:当显示位数较多时,采用动态显示方式比较节省I/O 口,硬件电路也较静态显示简单,也比较省电;所需引脚数只是一个静态数码管的引脚数就可以实现多个动态数码管的显示。
缺点:其稳定度不如静态显示数码管,亮度不如静态数码管,还有在显示位数较多时CPU要轮番扫描,占用CPU较多的时间。
2、8位的8段ed数码管用动态扫描和静态显示所用的管脚各是多少?
动态扫描所需引脚数:8 + 8 = 16 静态显示所需引脚数: 8*8 = 64 3、动态数码管切换速度是怎么决定的?
1. 下限:人眼视觉残影,频率不能低于24HZ。
2. 上限:所有数字电路都有延时,都有一个稳定工作的最高频率,频率过大,由于电路延时问题可能看到数码管显示很闪烁,显示很不稳,所以数码管频率不能无限大。 4、动态扫描代码解释 library IEEE;
use IEEE.std_logic_1164.all; entity xdeled is port (
di: in STD_LOGIC_VECTOR (3 downto 0); --要用数码管显示的数字
--数码管段选
a: out STD_LOGIC; b: out STD_LOGIC; c: out STD_LOGIC; d: out STD_LOGIC; e: out STD_LOGIC; f: out STD_LOGIC; g: out STD_LOGIC ); end xdeled;
architecture a of xdeled is begin process(di)
type data_out is array(0 to 6) of std_logic; --数字译码后的数码管段选 variable outp: data_out; begin
-- 根据输入的数字选择数码管段选的数值 case di is
when \"0000\" => outp := \"1111110\"; when \"0001\" => outp := \"0110000\"; when \"0010\" => outp := \"1101101\"; when \"0011\" => outp := \"1111001\"; when \"0100\" => outp := \"0110011\"; when \"0101\" => outp := \"1011011\"; when \"0110\" => outp := \"1011111\"; when \"0111\" => outp := \"1110000\"; when \"1000\" => outp := \"1111111\"; when \"1001\" => outp := \"1111011\"; when \"1010\" => outp := \"1110111\"; when \"1011\" => outp := \"0011111\"; when \"1100\" => outp := \"1001110\"; when \"1101\" => outp := \"0111101\"; when \"1110\" => outp := \"1001111\"; when \"1111\" => outp := \"1000111\"; when others => null; end case; a <= outp(0); b <= outp(1); c <= outp(2); d <= outp(3); e <= outp(4);
f <= outp(5);
g <= outp(6);
end process; end a ;
--数码管段选第1位赋给段选a --数码管段选第2位赋给段选b --数码管段选第3位赋给段选c --数码管段选第4位赋给段选d --数码管段选第5位赋给段选e --数码管段选第6位赋给段选f --数码管段选第7位赋给段选g
因篇幅问题不能全部显示,请点此查看更多更全内容