实验六 数字电压表设计
一、实验目的:结合实验五(A/D采样电路设计)的实验内容,利用A/D
转换输出的16进制结果,编写相应程序将8位16进制数转化为三组4位BCD
码,用于驱动数码管。
二、实验要求:
1、 进一步熟悉实验五的内容,了解ADC0809量化台阶的概念。
2、 编写相应的程序实现对ADC0809的控制将8位16进制数转化为三组
4位BCD码。
3、 将BCD码的输出连接到数码管,定义引脚并下载,调节电位器观察显
示与电压的对应关系。
三、实验步骤:
1、编写相应程序将8位16进制数转化为三组4位BCD码。
2、利用MAX+plusII对上述语言进行仿真测试;给出仿真波形。
3、将实验五A/D转换源程序生成的模块,与上述1生成的模块,在顶层进
行原理图连接。将BCD输出定义到数码管6、7、8。
4、实验报告:根据以上的实验要求、实验内容写出实验报告。
5、写出实验心得体会。
6、思考题:如何将显示的16进制转化为真正的电压显示。
参考程序:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY BCD IS
PORT ( DIN : IN STD_LOGIC_VECTOR(7 DOWNTO 0);
CLK : IN STD_LOGIC;
Q0,Q1,Q2:OUT STD_LOGIC_VECTOR(3 DOWNTO 0) );
END BCD;
ARCHITECTURE A OF BCD IS
SIGNAL D,D_TEMP:STD_LOGIC_VECTOR(8 DOWNTO 0);
SIGNAL A0,A1,A2:STD_LOGIC_VECTOR(3 DOWNTO 0);
SIGNAL M:INTEGER RANGE 0 TO 560;
SIGNAL T,T1:STD_LOGIC;
BEGIN
D_TEMP<=DIN & '0';
PROCESS(CLK)
BEGIN
IF CLK'EVENT AND CLK='0' THEN
IF M=560 THEN
M<=0;
ELSE M<=M+1;
END IF;
END IF;
END PROCESS;
PROCESS(CLK)
BEGIN
IF CLK'EVENT AND CLK='1' THEN
T<=T1;
END IF;
END PROCESS;
T1<='1' WHEN M=0 ELSE '0';
PROCESS(CLK,T)
BEGIN
IF T='1' THEN
D<="000000000";
A0<="0000";
A1<="0000";
A2<="0000";
ELSIF CLK'EVENT AND CLK='0' THEN
D<=D+1;
IF A0=9 THEN
A0<="0000";
IF A1=9 THEN
A1<="0000";
A2<=A2+1;
ELSE A1<=A1+1;
END IF;
ELSE A0<=A0+1;
END IF;
IF D=D_TEMP THEN
Q0<=A0;
Q1<=A1;
Q2<=A2;
ELSE NULL;
END IF;
END IF;
END PROCESS;
END A;