CONTACT | TEL : 02-728-3440, EMAIL : SALES@ASTRONLOGIC.COM
การออกแบบวงจรแปลงรหัส BCD เป็น 7-Segment

» การออกแบบวงจรแปลงรหัส BCD เป็น 7-Segment

การออกแบบวงจรแปลงรหัส BCD เป็น 7-Segment สำหรับ 7-Segment แบบ Common Anode และ Common Cathode

ปัจจุบันการแสดงผลในรูปแบบตัวเลขนิยมใช้ LED 7 เซ็กเมนท์ (7-Segment) ซึ่งมีโครงสร้างที่ประกอบด้วย LED 7 ดวงนั่นคือ a ถึง g ดังรูปที่ 1


รูปที่ 1 การแสดงผลของ 7- Segment


(a) แบบ Common Cathode


(b) แบบ Common Anode
รูปที่ 2 การต่อวงจรภายในของ 7- Segment (a) แบบ Common Cathode (b) แบบ Common Anode

การออกแบบวงจรเปลี่ยนรหัสจาก BCD ให้เป็นตัวเลข 7 เซ็กเมนท์นั้นผู้ออกแบบต้องทราบถึงการเข้ารหัสของ BCD และ 7 เซ็กเมนท์แต่ละแบบ ซึ่งแสดงดังตารางความจริงต่อไปนี้
ตารางที่ 1 ตารางความจริงของรหัส BCD และ 7 Segment แบบ Common Cathode
ตัวเลข
Input

Output

EN
D
C B A g f e d c b a
x 0 x x x x Qo Qo Qo Qo Qo Qo Qo
0 1 0 0 0 0 0 1 1 1 1 1 1
1 1 0 0 0 1 0 0 0 0 1 1 0
2 1 0 0 1 0 1 0 1 1 0 1 1
3 1 0 0 1 1 1 0 0 1 1 1 1
4 1 0 1 0 0 1 1 0 0 1 1 0
5 1 0 1 0 1 1 1 0 1 1 0 1
6 1 0 1 1 0 1 1 1 1 1 0 1
7 1 0 1 1 1 0 0 0 0 1 1 1
8 1 1 0 0 0 1 1 1 1 1 1 1
9 1 1 0 0 1 1 1 0 1 1 1 1

 

ตารางที่ 2 ตารางความจริงของรหัส BCD และ 7 Segment แบบ Common Anode

ตัวเลข Input

Output

EN D C B A g f e d c b a
x 0 x x x x Qo Qo Qo Qo Qo Qo Qo
0 1 0 0 0 0 1 0 0 0 0 0 0
1 1 0 0 0 1 1 1 1 1 0 0 1
2 1 0 0 1 0 0 1 0 0 1 0 0
3 1 0 0 1 1 0 1 1 0 0 0 0
4 1 0 1 0 0 0 0 1 1 0 0 1
5 1 0 1 0 1 0 0 1 0 0 1 0
6 1 0 1 1 0 0 0 0 0 0 1 0
7 1 0 1 1 1 1 1 1 1 0 0 0
8 1 1 0 0 0 0 0 0 0 0 0 0
9 1 1 0 0 1 0 0 1 0 0 0 0

 

จากตารางความเป็นจริงที่ 1 และ 2 สามารถนำมาเขียนเป็นภาษา VHDL เพื่ออธิบายถึงลักษณะพฤติกรรมของวงจรแปลงรหัส BCD เป็นรหัสของ 7-Segment แบบ Common Cathode และแบบ Common Anode ได้ดังโปรแกรมที่ 1 และ โปรแกรมที่ 2 ตามลำดับ

โปรแกรมที่ 1 อธิบายลักษณะพฤติกรรมของวงจรแปลงรหัส BCD เป็น 7-Segment แบบ Common Cathode

library ieee;
use ieee.std_logic_1164.all;
entity BCD2_7CK is
port(
    en : in std_logic;
    i : in integer range 0 to 9;
    o : out std_logic_vector(6 downto 0)
);
end BCD2_7CK;
architecture RTL of BCD2_7CK is
begin
process(i,en)
begin
    if en = '1' then
    case i is
      when 0 => o <= "0111111";
      when 1 => o <= "0000110";
      when 2 => o <= "1011011";
      when 3 => o <= "1001111";
      when 4 => o <= "1100110";
      when 5 => o <= "1101101";
      when 6 => o <= "1111100";
      when 7 => o <= "0000111";
      when 8 => o <= "1111111";
      when 9 => o <= "1100111";
      when others => o <= "1100111";
    end case;
    end if;
end process;
end RTL;


โปรแกรมที่ 2 อธิบายลักษณะพฤติกรรมของวงจรแปลงรหัส BCD เป็น 7-Segment แบบ Common Anode

library ieee;
use ieee.std_logic_1164.all;
entity BCD2_7CA is
port(

    en : in std_logic;
    i : in integer range 0 to 9;
    o : out std_logic_vector(6 downto 0)
);
end BCD2_7CA;
architecture RTL of BCD2_7CA is
begin
process(i,en)
begin
    if en = '1' then
    case i is
      when 0 => o <= "1000000";
      when 1 => o <= "1111001";
      when 2 => o <= "0100100";
      when 3 => o <= "0110000";
      when 4 => o <= "0011001";
      when 5 =>o <= "0010010";
      when 6 =>o <= "0000011";
      when 7 =>o <= "1111000";
      when 8 =>o <= "0000000";
      when 9 =>o <= "0011000";
      when others => o <= "0011000";
    end case;
    end if;
end process;
end RTL;