⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lcd.vhd

📁 exemple vhdl couter to lcd
💻 VHD
字号:
library IEEE; 
use IEEE.STD_LOGIC_1164.ALL; 
use IEEE.STD_LOGIC_ARITH.ALL; 
use IEEE.STD_LOGIC_UNSIGNED.ALL; 

entity lcd_6 is 
   Port ( clk,rst,ce : in  STD_LOGIC; 
          sf_ce0 : out STD_LOGIC; 
          
          rs : out  STD_LOGIC; 
          rw : out  STD_LOGIC; 
          en : out  STD_LOGIC; 
          out0,out1,out2,out3 : out  STD_LOGIC); 
end lcd_6; 

architecture Behavioral of lcd_6 is 

signal ossz : STD_LOGIC_VECTOR (5 downto 0); 

signal ora : STD_LOGIC := '0'; 
signal lcd_stb : STD_LOGIC := '0'; 

signal lcd_stuff : STD_LOGIC_VECTOR (6 downto 0) := "0000000"; 
signal count : STD_LOGIC_VECTOR(26 downto 0) := "000000000000000000000000000"; 
signal  b: STD_LOGIC := '1'; 

signal Q1,Q2,Q3:STD_LOGIC_VECTOR(3 downto 0):="0000"; 

begin   


  
   Q:COMPONENT BCD_3 PORT MAP(CLK,CE,RST,Q1,Q2,Q3);   
   process (clk) begin 
   if clk'event and clk='1' then 
           count <= count + 1; 
       sf_ce0 <= '1'; 
-------------------LCD initialization process -------------------------------             
       case (count(25 downto 20)) is 
           when "000000" => ossz <= "000011";             --X"03" 
           when "000001" => ossz <= "000011";             --X"03" 
           when "000010" => ossz <= "000000";             --X"03" 
           when "000011" => ossz <= "000010";             --X"02" 
           when "000100" => ossz <= "000010"; --X"02" function set 
           when "000101" => ossz <= "001000";            --X"08" 
           when "000110" => ossz <= "000000";-- X"00" entry mode 
           when "000111" => ossz <= "000110";            --X"06" 
           when "001000" => ossz <= "000000"; -- display on/off 
           when "001001" => ossz <= "001100"; 
           when "001010" => ossz <= "000000"; -- display clear 
           when "001011" => ossz <= "000001"; 
           when "001100" => ossz <= "000000"; -- Take cursor home 
           when "001101" => ossz <= "001111"; 
------------- Data operation for LCD     ----------------------------------             
           when "001110" => ossz <= "100011"; -- Drive with the counter o/p 
           when "001111" =>  ossz(5 downto 4) <= "10"; 
           ossz(3 downto 0) <= Q3; 

           when "010000" =>  ossz <= "100011";   
   when "010001" =>  ossz(5 downto 4) <= "10"; 
   ossz(3 downto 0) <= Q2; 
           when "010010" => ossz <= "100011"; 
   when "010011" =>  ossz(5 downto 4) <= "10";     
     ossz(3 downto 0) <= Q1; 
   when "010100" => ossz <= "101011"; 
   when "010101" => ossz <= "100000";     
--      ossz(3 downto 0) <= Q1; 
           when "010110" => ossz <= "100100"; 
   when "010111" => ossz <= "101000";-- H 
   when "011000" => ossz <= "100100"; 
   when "011001" => ossz <= "100101";-- E 
   when "011010" => ossz <= "100100"; 
   when "011011" => ossz <= "101100";-- L 
   when "011100" => ossz <= "100100"; 
   when "011101" => ossz <= "101100";-- L 
   when "011110" => ossz <= "100100"; 
   when "011111" => ossz <= "101111";-- O 
   when "100000" => ossz <= "101010"; 
   when "100001" => ossz <= "100000";-- 
   when "100010" => ossz <= "100101"; 
   when "100011" => ossz <= "100111";-- W 
   when "100100" => ossz <= "100100"; 
   when "100101" => ossz <= "101111";-- O 
   when "100110" => ossz <= "100101"; 
   when "100111" => ossz <= "100010";-- R 
   when "101000" => ossz <= "100100"; 
   when "101001" => ossz <= "101100";-- L 
   when "101010" => ossz <= "100100"; 
   when "101011" => ossz <= "100100";-- D 
   when "101100" => ossz <= "100100"; 
   when "101101" => ossz <= "100100";-- D 
           when others => ossz   <= "010000"; 
       end case; 
    
   if ora='1' then 
       ora <= '0'; 
        
   else 
       ora <= '1'; 
      
   end if; 
    
   b <= count(19) or count(18); 
   lcd_stb <= b and NOT ossz(4);   
   lcd_stuff(6) <= lcd_stb; 
    lcd_stuff(5 downto 0) <= ossz; 
    
   (en, rs, rw,out3,out2,out1,out0 ) <= lcd_stuff; 
    
    
   end if; 
   end process;     
end Behavioral; 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -