LED显示程序设计实验

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验二LED数码管驱动显示程序实验
一、实验目的
1、初步学习和了解VHDL语言编程方式
2、学习和掌握七段数码显示译码器的设计方法
3、学习和掌握VHDL的多层设计方法
二、实验要求
1、根据硬件设计的思维方式,编制LED七段码的显示程序
2、要求是一位LED以定位方式显示
3、完成LED七段码波形分析的显示功能
4、在EDA实验箱上按要求显示
三、实验设备
1、计算机一台
2、EDA——Ⅳ实验箱一台
四、实验原理
1、七段码是用一种纯组合的逻辑电路,通常是用小型专用的IC门电路组成,数字输入与输
出表达均未16进制,处理一般较复杂,而用FPGA/CPLD来实现较为简单。

2、七段码输入与输出的原理与真值表关系。

(a)输入:七段码输入为四个输入信号,用来表示为“0000”到“1111”,即表示为十六进制的“0”到“F”。

(b)输出:七段码输出为七个输出信号,分别用“A、B、C、D、E、F、G”七个符号来表示。

一般规定,输出信号为“1”时,它所控制的发光二极管为点亮状态,
输出信号为“0”时,它所控制的发光二极管为熄灭状。

本实验使用的七段数码
管为共阴极组,其电路如图2.1所示。

图2.1 共阴极数码管及其电路
(c)输入与输关系为四位二进制代码组成十六进制代码,将其代码显示,其对应关系如表2.1所示。

(d)显示方式是通过选位的方式进行,是将FPGA/CPLD的三位二进制的信号输出,通过外部三——八译码器硬件电路,选中一路LED信号为输出,故选择一位LED
数码管显示,本实验是采取选相应的一个指定位置进行LED显示。

3、输入是通过外部的四个按键操作而组成一位十六进制。

其连接到FPGA/CPLD的对应的引
脚上,需进行引脚分配。

4、编写译码程序,生成底层组件,组合成底层文件。

表2-1 七段字符显示真值表
五、实验步骤
1、 在D 盘建立自己的文件目录,D: \ EX \ Z04** \ you*\ex*;
2、 在Max+Pluse Ⅱ的界面下,自己的文件目录下,建立项目文件 File \ Project \ 文件名A ;
3、 在自己的文件目录下,建立文本文件 File \ New \ 文件名B.vhd ;
4、 保存此文件并划归到项目文件内, File \ Project \ Set Project current File ,其中文本文件名
B 必须和实体名一致;
5、 输入程序,保存文件“文件名B.vhd ”,File \ Save As “文件名B.vhd ”(注意后缀,如保存
默认文件名时,其后缀通常为“*.tdf ”文件,必须删除后缀为“*.tdf ”文件名;
6、 单击编译器快捷方式按钮
,对文本文件进行编译,观察是否有原则错误;
7、 如有修改则修改程序中错误,若无错误则可做以下工作; 8、 建立底层器件的封装,File \ Create Default Symbol ;
9、 建立图形文件,File \ New \ 文件名C.gdf 并化归到项目内。

(图形文件名严禁与文本文
件名相同,否则编译时有错。

必须删除图形文件名的文件。

) 10、输入图形文件如图2.2
11、 对原理图进行第一次编译;
12、 配置器件 Assign \ Device ,选择10K10 \ EPF10K10LC84-3 。

13、对原理图进行第二次编译; 14、分配引脚:
图2.2 LED 显示电路的顶层文件原理图
(a). 选中输入引脚,击右键选Assign \ pin / Location / Chip…
(b). 点击Add ,选中d0再点击Pin,输入28并在Pin type内选择Input,后Add。

(c). 同样输入27、25、24引脚信息。

(d). 删除不必要的引脚信息。

(e). 按上述方法设置S[2..0]和L[6..0]的输出信号。

(f). 引脚分配参考附录三
15、对原理图进行第三次次编译;
16、点击查看器件型号和引脚分配情况。

17、点击对文件进行下载处理。

18、双击Multi-Device JTAG China。

进行器件和下载文件及文件目录的确认。

19、点击Program,下载并传送文件。

20、在实验箱上按动按键进行验证。

六、实验程序
-- **********************
-- 7 display
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity led7s is
port(din: in std_logic_vector(3 downto 0);
sn: out std_logic_vector(2 downto 0);
LED7: out std_logic_vector(6 downto 0));
end led7s;
-- ********************
-- a
-- ---
-- f| |b
-- ---g
-- e| |c
-- ---
-- d
-- ********************
architecture behv of led7s is
begin
process(din)
begin
case din is
when "0000" => LED7 <="0111111"; --"0" / 39h
when "0001" => LED7 <="0000110"; --"1" / 06h
when "0010" => LED7 <="1011011"; --"2" / 5Bh
when "0011" => LED7 <="1001111"; --"3" / 4Fh
when "0100" => LED7 <="1100110"; --"4" / 66h
when "0101" => LED7 <="1101101"; --"5" / 6Dh
when "0110" => LED7 <="1111101"; --"6" / 7Dh
when "0111" => LED7 <="0000111"; --"7" / 07h
when "1000" => LED7 <="1111111"; --"8" / 7Fh
when "1001" => LED7 <="1101111"; --"9" / 6Fh
when "1010" => LED7 <="1110111"; --"A" / 77h
when "1011" => LED7 <="1111100"; --"b" / 7Ch
when "1100" => LED7 <="0111001"; --"C" / 39h
when "1101" => LED7 <="1011110"; --"d" / 5Eh
when "1110" => LED7 <="1111001"; --"E" / 79h
when "1111" => LED7 <="1110001"; --"F" / 71h
when others => LED7 <="0000000"; --"不显示示"
end case;
sn <= "010"; -- " 位选信号"
end process;
end behv;
引脚分配
EPF10K10LC84-3
引脚设备装置器件原理图端口
@36 An1 Cin
@35 An2 Bin
@30 An3 Ain
@17 D101 Cout
@16 D102 Sout
输入
引脚号设备名称原理图端口号
@30 An1 d0
@35 An2 d1
@36 An3 d2
@37 An4 d3 位选
@78 S1 S0
@79 S2 S1
@80 S3 S2 段码
@5 a L0
@6 b L1
@7 c L2
@8 d L3
@9 e L4
@10 f L5
@11 g L6
七、思考题
1、如果是八位十六进制输入,两位LED显示的动态方式,其程序应该如编写?还应该加入
什么样的输入条件?请试编两位LED显示的程序。

2、上述实验在经过多次的编译后,共生成几个可以下载文件(*.Pof)?我们选择哪一个文件下
载?为什么?
注1:文件名B.vhd 必须和实体名一致
注2:文件下载时,必须是选择选择“文件名C.gdf”产生的“文件名C.sof”。

相关文档
最新文档