完整word版EDA实验报告实验2数码管扫描显示电路.docx
《完整word版EDA实验报告实验2数码管扫描显示电路.docx》由会员分享,可在线阅读,更多相关《完整word版EDA实验报告实验2数码管扫描显示电路.docx(11页珍藏版)》请在冰豆网上搜索。
完整word版EDA实验报告实验2数码管扫描显示电路
暨南大学本科实验报告专用纸
课程名称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段译码电路,以备以后调用.
三、实验原理
a
g
d
b
c
e
f
p
在电子电路显示部分里,发光二极管(LED)、七段显示数码管、液晶显示(LCD)均是十分常见的人机接口电路.通常点亮一个LED所需的电流在5~20mA之间,电流愈大,LED的亮度也高,相对的使用寿命也愈短。
若以10mA导通电流来估算一个接5V的串接电阻值计算应为:
(5-1.6)/10mA≈0.34KΩ。
p
g
f
e
d
c
b
a
七段显示数码管分为共阳、共阴二种极性。
它们等效成八个LED相连电路。
共阴极七段显示器的LED位置定义和等效电路
共阴极七段显示码十六进制转换表
十六进制码
共阴极七段显示码
Num
D8
D4
D2
D1
g
f
e
d
c
b
a
0
0
0
0
0
0
1
1
1
1
1
1
1
0
0
0
1
0
0
0
0
1
1
0
2
0
0
1
0
1
0
1
1
0
1
1
3
0
0
1
1
1
0
0
1
1
1
1
4
0
1
0
0
1
1
0
0
1
1
0
5
0
1
0
1
1
1
0
1
1
0
1
6
0
1
1
0
1
1
1
1
1
0
1
7
0
1
1
1
0
0
0
0
1
1
1
8
1
0
0
0
1
1
1
1
1
1
1
9
1
0
0
1
1
1
0
1
1
1
1
A
1
0
1
0
1
1
1
0
1
1
1
B
1
0
1
1
1
1
1
1
1
0
0
C
1
1
0
0
0
1
1
1
0
0
1
D
1
1
0
1
1
0
1
1
1
1
0
E
1
1
1
0
1
1
1
1
0
0
1
F
1
1
1
1
1
1
1
0
0
0
1
四、实验内容
用拨码开关产生8421BCD码,CPLD器件产生译码及扫描电路,把BCD码显示在LED数码管上,通过改变扫描频率观察数码管刷新效果。
五、实验要求
学习在MAX+PLUSII中使用VHDL设计功能模块,并将所生成的功能模块转换成MAX+PLUSII原理图的符号库,以便在使用原理图时调用该库。
六、设计框图
◆动态共阴数码管扫描设计框图(程序为1-D)
数据输入
数据转换
输出
LED显示驱动
时钟信号
计数器
数码管动态扫描
◆静态共阳数码管扫描设计框图(程序为1—S)
数据输入
数据转换
输出
LED显示驱动
七、原理图
◆动态共阴数码管(程序为1—D):
数码管显示驱动模块
数码管扫描刷新模块
静态共阳数码管:
在原理图方式中设计了两个模块,其中一个用于BCD码译码输出,转换成数码管的段码,数据输入端口为D[3。
。
0],输出端口A~G通过数码管驱动电路分别驱动各段来点亮动态数码管。
数码管上显示的值为“8位数字开关组(A)”的“SW8~SW5”所输入的8421BCD码值的数值。
另外一个模块使用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、动态扫描代码解释
libraryIEEE;
useIEEE。
std_logic_1164.all;
entityxdeledis
port(
di:
inSTD_LOGIC_VECTOR(3downto0);--要用数码管显示的数字
--数码管段选
a:
outSTD_LOGIC;
b:
outSTD_LOGIC;
c:
outSTD_LOGIC;
d:
outSTD_LOGIC;
e:
outSTD_LOGIC;
f:
outSTD_LOGIC;
g:
outSTD_LOGIC
);
endxdeled;
architectureaofxdeledis
begin
process(di)
typedata_outisarray(0to6)ofstd_logic;--数字译码后的数码管段选
variableoutp:
data_out;
begin
-—根据输入的数字选择数码管段选的数值
casediis
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”;
whenothers=〉null;
endcase;
a〈=outp(0);——数码管段选第1位赋给段选a
b<=outp
(1);--数码管段选第2位赋给段选b
c<=outp
(2);—-数码管段选第3位赋给段选c
d<=outp(3);——数码管段选第4位赋给段选d
e〈=outp(4);-—数码管段选第5位赋给段选e
f<=outp(5);—-数码管段选第6位赋给段选f
g〈=outp(6);—-数码管段选第7位赋给段选g
endprocess;
enda;