实验六 数字电压表设计 一、实验目的:结合实验五(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;