2×16 character based LCD Interface

Call for Price

2×16 character based LCD Interface

SKU: 2x16 character based LCD Interface Category:

Description

2×16 Character LCD Interface Card

 

Experiments Coverd

 

  • Display Message “PANTECH SOLUTIONS” – 1st Line
  • Display Message ” PANTECH SOLUTIONS ” – 2nd Line
 
Hardware Description

 

The 2×16 character LCD interface card with supports both modes 4-bit and 8-bit interface, and also facility to adjust contrast through trim pot. In 8-bit interface 11 lines needed to create 8-bit interface; 8 data bits (D0 – D7), three control lines, address bit (RS), read/write bit (R/W) and control signal (E). The LCD controller is a standard KS0070B or equivalent, which is a very well-known interface for smaller character based LCDs.

  • LCD’s Control Lines and Data lines are terminated with 20pin box connector.

 

 

 

 

20PIN CONNECTOR

LCD MODULES

LED & Switch Card Pin Details

CONTROL LINES

1

RS

led--switch-card-pin-details-tyro      

2

RW

3

E

4-8

NC

LCD – DATA LINES

9

D0

10

D1

11

D2

12

D3

13

D4

14

D5

15

D6

16

D7

PWR

17,19

Vcc

Supply form FPGASP3 Kit

18,20

Gnd

 

 
2 X 16 LCD interface (program to display message “PANTECH SOLUTIONS “ in 2 x 16 LCD)

 

Description

 

In this example to display message “PANTECH SOLUTIONS” in 2 X 16 LCD first line. In Spartan3 FPGA lines (P60, P63 and P68) are configured for LCD control lines like (RS, RW & E). Pins (P77 to P80 and P82 to P85) are configured for LCD data lines. User could verify the result by “2 X 16 LCD Interface Card” connected to the FPGASP3 KIT at connector J6. User can modify the LCD display message by changing the data in VHDL code.

 

Flow Chart

 

2-x-16-lcd-interface-flow-chart-of-tyro

 

 

 

 


            library IEEE;  

            use IEEE.STD_LOGIC_1164.ALL;        
            use IEEE.STD_LOGIC_ARITH.ALL;        
            use IEEE.STD_LOGIC_UNSIGNED.ALL;        
           entity lcd is
            port ( clk : in std_logic;    —-clock i/p

                            lcd_rw : out std_logic;   —read&write control

       
                           lcd_e  : out std_logic;   —-enable control
       
                           lcd_rs : out std_logic;   —-data or command control
       
                           data   : out std_logic_vector(7 downto 0));   —data line
       
            end lcd;
       
            architecture Behavioral of lcd is
        

 

           constant N: integer :=22;
       
            type arr is array (1 to N) of std_logic_vector(7 downto 0);
       
            constant datas : arr :=    (X”38″,X”0c”,X”06″,X”01″,X”C0″,X”50″,x”41″,x”4e”,x”54″,x”45″,x”43″,x”48″,x”20″,x”53″,x”4f”,x”4c”,x”55″,
       
                                                x”54″,x”49″,x”4f”,x”4e”,X”53″); –command and data to display                                             
       
            begin
       
            lcd_rw <= '0';  ----lcd write
                    process(clk)
                    variable i : integer := 0;
       
            variable j : integer := 1;
                    begin
                    if clk’event and clk = ‘1’ then
       
            if i <= 1000000 then
                    i := i + 1;
       
            lcd_e <= '1';
        

             data <= datas(j)(7 downto 0);

       
            elsif i > 1000000 and i < 2000000 then
       
            i := i + 1;
       
            lcd_e <= '0';
        

 

            elsif i = 2000000 then
       
            j := j + 1;
       
            i := 0;
       
            end if;
       
            if j <= 5  then
       
            lcd_rs <= '0';    ---command signal
       
            elsif j > 5   then
       
            lcd_rs <= '1';   ----data signal
                    end if;
       
            if j = 22 then  —repeated display of data
       
            j := 5;
                    end if;
                    end if;
       
            end process;
       
            end Behavioral;

 

 

 

2 X 16 LCD interface (program to display message “SPARTAN 3 EVK “ in second line of 2 x 16 LCD)

 

Description

 

In this example to display message “PANTECH SOLUTIONS” in 2 X 16 LCD second line. In Spartan3 FPGA lines (P60, P63 and P68) are configured for LCD control lines like (RS, RW & E). Pins (P77 to P80 and P82 to P85) are configured for LCD data lines. User could verify the result by “2 X 16 LCD Interface Card” connected to the FPGASP3 KIT at connector J6. User can modify the LCD display message by changing the data in VHDL code.

Flow Chart

2-x-16-lcd-interface-flow-chart-tyro

 

 

 

 


            library ieee;
                    use ieee.std_logic_1164.all;
                    use ieee.std_logic_arith.all;
                    se ieee.std_logic_unsigned.all;
                    entity lcd is
                    port(clock:in std_logic;
       
               led:out std_logic;
                    rw: out std_logic;
       
            rs:out std_logic;
       
            en:out std_logic;
                    data:out std_logic_vector(7 downto 0));
       
            end lcd;
                    architecture arch of lcd is
                    signal clkout:std_logic:=’0′;
                    type state is( state1,state2,state3,state4,state5,state6,state7,state8, state9, state10,state111,state22,state23,state24,state25,state26,state27,state28,state29,state30,state31,state32,state11,state12,state13,state14,state15,state16,state17, state18,state19,state110,state121,state212,state213,state214,state215,state216,
                    state217,state218,state219,state300,state310,state320);
                      signal current_state,next_state:state;
                      signal count:integer:=0;
                   begin
                    process(clock)
                    begin
       
            if clock’event and clock=’1′ then
                    count<=count + 1;          --  count for delay
                   if count =500000 then
                    clkout<= not clkout;
                    count<=0;
                       end if;
       
            end if;
                   end process;
       
            led<=clkout;
                    process(clkout)
                    begin
       
            if clkout’event and clkout=’1′ then
                         current_state<=next_state;
                   end if;
                   end process;
                    process(current_state,next_state)
                        en<='1';
                   rw<='0';             case current_state is               
            when state1=>
                    data<="00111000";
                    en<='1';
                   rs<='0';
                    rw<='0';
                    next_state<=state11;
                    when state11=>
                   data<="00111000";             rs<='0';               
            rw<='0';       
            en<='0';
                    next_state<=state2;
       
            when state2=>
       
            data<="00001110";
       

            en<='1';
       
            rs<='0';
       
            rw<='0';
       
            next_state<=state12;
        

             when state12=>

        
            data<="00001110";
       

            rs<='0';
       
            rw<='0';
                    en<='0';
       

            next_state<=state3;
       

            when state3=>
       

            data<="00000001";
                    en<='1';
       

            rs<='0';
       

            rw<='0';
       
            next_state<=state13;
       

            when state13=>
       
            data<="00000001";
       
            rs<='0';
       

            rw<='0';
       

            en<='0';
       
            next_state<=state4;
       

            when state4=>
                    data<="00000110";
       

            en<='1';
       

            rs<='0';
       

            rw<='0';
       
            next_state<=state14;
       
            when state14=>
       
            data<="00000110";
       
            rs<='0';
       

            rw<='0';
       
            en<='0';
       
            next_state<=state5;
       
           when state5=>
       
           data<="10000000";
       
            en<='1';
       
            rs<='0';
       
            rw<='0';
       

            next_state<=state15;
       

            when state15=>
       
            data<="10000000";
       
            rs<='0';
       
            rw<='0';
      
            en<='0';
       
            next_state<=state6;
       
            when state6=>
       
            data<="01010000";    --  ascii code for "P"
       
            en<='1';
       
            rs<='1';
       
            rw<='0';
       
            next_state<=state16;
       
            when state16=>
       
            data<="01010000";    --  ascii code for "P"
       
            rs<='1';
       
            rw<='0';
       
            en<='0';
       
            next_state<=state7;
       
            when state7=>
       
            data<="01000001";    --  ascii code for "A"
       

            en<='1';
       
            rs<='1';
       
            rw<='0';
       
            next_state<=state17;
       
           when state17=>
     
           data<="01000001";   --   --  ascii code for "A"
       
            rs<='1';
       
            rw<='0';
       
            en<='0';
       
            next_state<=state9;
       
            when state9=>
       
            data<="01001110";         --  ascii code for "N"
       
            en<='1';
       
            rs<='1';
       
            rw<='0';
       
            next_state<=state19;
       
            when state19=>
       
            data<="01001110";          --  ascii code for "N"
       
            rs<='1';
       
            rw<='0';
       
            en<='0';
       
            next_state<=state10;
       
         when state10=>
       
            data<="01010100";         --  ascii code for "T"
       
            en<='1';
       
            rs<='1';
       
            rw<='0';
       
            next_state<=state110;
       
            when state110=>
       
            data<="01010100";          --  ascii code for "T"
       
            rs<='1';
       
            rw<='0';
       
            en<='0';
       
            next_state<=state111;
       
            when state111=>
       
            data<="01000101";         --  ascii code for "E"
       
            en<='1';
       
            rs<='1';
       
           rw<='0';
       
            next_state<=state121;
       
            when state121=>
       
            data<="01000101";          --  ascii code for "E"
       
            rs<='1';
       
            rw<='0';
       
            en<='0';
       
            next_state<=state22;
       
            when state22=>
       
            data<="01000011";         --  ascii code for "C"
       
            en<='1';
       
            rs<='1';
       
            rw<='0';
       
            next_state<=state212;
       
            when state212=>
       
            data<="01000011";          --  ascii code for "C"
       
            rs<='1';
       
            rw<='0';
       
            en<='0';
       
            next_state<=state23;
       
            when state23=>
       
            data<="01001000";         --  ascii code for "H"
       
            en<='1';
       
            rs<='1';
       
            rw<='0';
       
            next_state<=state213;
       
            when state213=>
       
            data<="01001000";          --  ascii code for "H"
       
            rs<='1';
       
            rw<='0';
       
            en<='0';
       
            next_state<=state32;
       
            when state32=>
       
            data<="00100000";         --  ascii code for "  "
       
            en<='1';
       
            rs<='1';
       
            rw<='0';
       
            next_state<=state320;
       
            when state320=>
       
            data<="00100000";          --  ascii code for "  "
       
            rs<='1';
       
            rw<='0';
       
            en<='0';
       
            next_state<=state24;
       
            when state24=>
       
            data<="01010011";         --  ascii code for "S"
       
            en<='1';
       
            rs<='1';
       
            rw<='0';
       
            next_state<=state214;
       
            when state214=>
       
            data<="01010011";          --  ascii code for "S"
       

            rs<='1';
       
            rw<='0';       

             en<='0';

       
            next_state<=state25;
       
            when state25=>
       
            data<="01001111";         --  ascii code for "O"
       
            en<='1';
       
            rs<='1';
       
            rw<='0';
       
            next_state<=state215;
       
            when state215=>
       
            data<="01001111";          --  ascii code for "O"
       
            rs<='1';
       
            rw<='0';
       
            en<='0';
       
            next_state<=state26;
       
            when state26=>
       
            data<="01001100";         --  ascii code for "L"
       
            en<='1';
       

            rs<='1';
       
            rw<='0';
       
            next_state<=state216;
       
            when state216=>
       
            data<="01001100";          --  ascii code for "L"
       
            rs<='1';
       
            rw<='0';
       
            en<='0';
       
            next_state<=state27;
        

             when state27=>

       
            data<="01010101";         --  ascii code for "U"
       
            en<='1';
       
            rs<='1';
       
            rw<='0';
       
            next_state<=state217;
       
            when state217=>
       
            data<="01010101";          --  ascii code for "U"
       
            rs<='1';
                    rw<='0';
       
            en<='0';
       
            next_state<=state28;
                    when state28=>
                    data<="01010100";         --  ascii code for "T"
       

            en<='1';
       

            rs<='1';
       

            rw<='0';
       
           next_state<=state218;
       
            when state218=>
       
            data<="01010100";          --  ascii code for "T"
       
            rs<='1';
       
            rw<='0';
       
            en<='0';
       
            next_state<=state29;
       
            when state29=>
       
            data<="01001001";         --  ascii code for "I"
       
            en<='1';
       
            rs<='1';
       
            rw<='0';
       
            next_state<=state219;
       
            when state219=>
       
            data<="01001001";          --  ascii code for "I"
        

             rs<='1';

       
            rw<='0';
       
            en<='0';
       
            next_state<=state30;
       
            when state30=>
       
            data<="01001111";         --  ascii code for "O"
       
            en<='1';
       
            rs<='1';
       
            rw<='0';
                   next_state<=state300;
                   when state300=>
                    data<="01001111";          --  ascii code for "O"
                    rs<='1';
                    rw<='0';
                    en<='0';
                    next_state<=state31;
                    when state31=>
                    data<="01001110";         --  ascii code for "n"
                    en<='1';
                    rs<='1';
                    rw<='0';
                    next_state<=state310;
                    when state310=>
                    data<="01001110";          --  ascii code for "N"        
            rs<='1';       
            rw<='0';        
            en<='0';        
            next_state<=state8;        
                                   
            when state8=>        
                  next_state<=state8;
                    when others=>        
                   next_state<=state8;        
            end case;        
            end process;        
            end arch;        
             
                    when state212=>
        

           data<="01000011";          --  ascii code for "C"

                     rs<='1';        
            rw<='0';        
            en<='0';        
            next_state<=state23;        
            when state23=>        
            data<="01001000";         --  ascii code for "H"        
            en<='1';        
            rs<='1';
                    rw<='0';        
            next_state<=state213;        
            when state213=>        
            data<="01001000";          --  ascii code for "H"        
            rs<='1';        
            rw<='0';
                    en<='0';        
            next_state<=state32;        
            when state32=>        
            data<="00100000";         --  ascii code for "  "        
            en<='1';        
            rs<='1';        
            rw<='0';        
            next_state<=state320;        
            when state320=>        
            data<="00100000";          --  ascii code for "  "        
            rs<='1';        
            rw<='0';        
            en<='0';        
            next_state<=state24;
                    when state24=>        
            data<="01010011";         --  ascii code for "S"        
            en<='1';        
            rs<='1';        
            rw<='0';        
            next_state<=state214;        
            when state214=>        
            data<="01010011";          --  ascii code for "S"        
            rs<='1';        
            rw<='0';        
            en<='0';       
            next_state<=state25;        
            when state25=>        
            data<="01001111";         --  ascii code for "O"        
            en<='1';        
            rs<='1';        
            rw<='0';        
            next_state<=state215;
                    when state215=>        
            data<="01001111";          --  ascii code for "O"        
            rs<='1';        
            rw<='0';        
            en<='0';        
            next_state<=state26;        
            when state26=>        
            data<="01001100";         --  ascii code for "L"        
            en<='1';        
            rs<='1';
             rw<='0';        
            next_state<=state216;        
            when state216=>        
            data<="01001100";          --  ascii code for "L"        
            rs<='1';        
            rw<='0';        
            en<='0';
                    next_state<=state27;        
            when state27=>        
            data<="01010101";         --  ascii code for "U"        
            en<='1';
            rs<='1';        
            rw<='0';        
            next_state<=state217;        
            when state217=>        
            data<="01010101";          --  ascii code for "U"        
            rs<='1';
            rw<='0';        
            en<='0';        
            next_state<=state28;        
            when state28=>        
            data<="01010100";         --  ascii code for "T"        
            en<='1';        
            rs<='1';        
            rw<='0';        
            next_state<=state218;        
            when state218=>        
            data<="01010100";          --  ascii code for "T"        
            rs<='1';        
            rw<='0';        
            en<='0';        
            next_state<=state29;        
            when state29=>        
            data<="01001001";         --  ascii code for "I"        
            en<='1';
            rs<='1';        
            rw<='0';       
            next_state<=state219;        
            when state219=>        
            data<="01001001";          --  ascii code for "I"        
            rs<='1';        
            rw<='0';        
            en<='0';        
            next_state<=state30;        
            when state30=>        
            data<="01001111";         --  ascii code for "O"        
            en<='1';        
            rs<='1';       
            rw<='0';        
            next_state<=state300;        
            when state300=>        
            data<="01001111";          --  ascii code for "O"        
            rs<='1';        
            rw<='0';        
            en<='0';        
            next_state<=state31;        
            when state31=>        
            data<="01001110";         --  ascii code for "n"        
            en<='1';        
            rs<='1';        
            rw<='0';        
            next_state<=state310;        
            when state310=>        
            data<="01001110";          --  ascii code for "N"        
            rs<='1';        
            rw<='0';        
            en=’0′;        
            next_state<=state8;        
                              
                    when state8=>
                          next_state<=state8;        
            when others=>        
                   next_state<=state8;        
            end case;        
            end process;        
            end arch;        
             data<="01001100";          --  ascii code for "L"        
            rs<='1';             rw<='0';                
            en<='0';        
            next_state<=state27;        
            when state27=>
                    data<="01010101";         --  ascii code for "U"        
            en<='1';
                    rs<='1';        
            rw<='0';        
            next_state<=state217;        
            when state217=>        
            data<="01010101";          --  ascii code for "U"        
            rs<='1';        
            rw<='0';       

   en<='0';

                     next_state<=state28;        
            when state28=>        
            data<="01010100";         --  ascii code for "T"        
            en<='1';        
            rs<='1';        
            rw<='0';        
            next_state<=state218;        
            when state218=>        
            data<="01010100";          --  ascii code for "T"        
            rs<='1';
                    rw<='0';        
            en<='0';        
            next_state<=state29;        
            when state29=>        
            data<="01001001";         --  ascii code for "I"        
            en<='1';        
            rs<='1';        
            rw<='0';        
            next_state<=state219;
                    when state219=>       

             data<="01001001";          --  ascii code for "I"

                     rs<='1';        
            rw<='0';        
            en<='0';        
            next_state<=state30;        
            when state30=>
                    data<="01001111";         --  ascii code for "O"        
            en<='1';        
            rs<='1';        
            rw<='0';        
            next_state<=state300;        
            when state300=>        
            data<="01001111";          --  ascii code for "O"        
            rs<='1';        
            rw<='0';      
            en<='0';        
            next_state<=state31;        
            when state31=>        
            data<="01001110";         --  ascii code for "n"        
            en<='1';        
            rs<='1';        
            rw<='0';        
            next_state<=state310;        
            when state310=>        
            data<="01001110";          --  ascii code for "N"        
            rs<='1';
                    rw<='0';       
            en<='0';        
            next_state<=state8;        
            
                  
            when state8=>        
                  next_state<=state8;        
            when others=>        
                   next_state<=state8;
                    end case;        
            end process;        
            end arch;        
                    
            rs<='1';        
            rw<='0';        
            en<='0';        
            next_state<=state8;       
               
                   
            when state8=>        
                  next_state<=state8;        
            when others=>        
                   next_state<=state8;        
            end case;        
            end process;        
            end arch;

 

Additional information

Weight 1.000000 kg

Reviews

There are no reviews yet.

Be the first to review “2×16 character based LCD Interface”

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.