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