CPLD设计的数码管驱动显示电路
EL81
library ieee;
use ieee.std_logic_1164.all;
entity sel81 is
port(sel:in std_logic_vector(2 downto 0);
a,b,c,d,e,f,g,h:in std_logic_vector(3 downto 0);
q:out std_logic_vector(3 downto 0));
end sel81;
architecture rtl of sel81 is
begin
process(a,b,c,d,e,f,g,h,sel)
variable cout: std_logic_vector(3 downto 0);
begin
case (sel) is
when "000"=>cout:=a;
when "001"=>cout:=b;
when "010"=>cout:=c;
when "011"=>cout:=d;
when "100"=>cout:=e;
when "101"=>cout:=f;
when "110"=>cout:=g;
when thers=>cout:=h;
end case;
q=cout;
end process;
end rtl;
1.3.4 七段译码器模块
七段译码器模块 DISP 如图1.8 所示。DISP 模块是七段译码器,将输入的4 位二进制数转换为数码显示管所对应的数字。例如输入为4 位二进制数0000 的时候,使数码显示管显示0,则要七段译码器输出为0111111,即g 段为0,g 段发光二极管不亮,其他发光二极管被点亮,显示效果为0。DISP 模块输入信号D[3..0]接到八选一数据选择模块的输出信号Q[3..0];七段译码器输出信号Q[6..0]接数码管的a~g 管脚。
图 1.8 七段译码器模块DISP
library ieee;
use ieee.std_logic_1164.all;
entity disp is
port(d:in std_logic_vector(3 downto 0);
q:out std_logic_vector(6 downto 0));
end disp;
architecture rtl of disp is
begin
process(d)
begin
case d is
when"0000"=>q="0111111";
when"0001"=>q="0000110";
when"0010"=>q="1011011";
when"0011"=>q="1001111";
when"0100"=>q="1100110";
when"0101"=>q="1101101";
when"0110"=>q="1111101";
when"0111"=>q="0100111";
when"1000"=>q="1111111";
when thers=>q="1101111";
end case;
end process;
end rtl;
1.3.5 驱动八位数码管显示的整体电路
将各个模块连接起来构成整体电路图如图 1.9 所示,可以实现用CPLD 设计一个驱动八位数码管显示电路的功能。clk 是时钟脉冲输入信号,经过时钟脉冲计数器CN8 模块,将信号以3 位2 进制数的形式输出,输出信号是COUT[2..0]。时钟脉冲计数器CN8 的输出同时作为3 线—8 线译码器DECODER3_8 和八选一数据选择器SEL81 地址码SEL[2..0]的输入。时钟脉冲计数器CN8 的输出经过3 线—8 线译码器DECODER3_8 译码其输出信号Vss[7..0]接到八位数码管的阴极Vss7、Vss6、Vss5、Vss4、Vss3、Vss2、Vss1、Vss0 端,决定点亮哪位数码管。同时时钟脉冲计数器CN8 模块输出的信号也进入数据选择器SEL81 地址码SEL[2..0]的输入,进行输出数据的选择,其输出是Q[3..0]。八选一数据选择器SEL81 模块的输出是Q[3..0]再经过七段译码器DISP 模块,将其翻译成可以用数码显示管的数据。七段译码器DISP 模块的输出Q[6..0]分别经300 欧电阻接数码显示管的a~g 管脚。八选一数据选择器模块的输入端,可根据具体需要进行设计。
模拟电路 模拟芯片 德州仪器 放大器 ADI 模拟电子 相关文章:
- 12位串行A/D转换器MAX187的应用(10-06)
- AGC中频放大器设计(下)(10-07)
- 低功耗、3V工作电压、精度0.05% 的A/D变换器(10-09)
- PIC16C5X单片机睡眠状态的键唤醒方法(11-16)
- 用简化方法对高可用性系统中的电源进行数字化管理(10-02)
- 利用GM6801实现智能快速充电器设计(11-20)