--------------------------------------------------------------------------------
-- Company:
-- Engineer:
--
-- Create Date: 14:17:17 02/06/09
-- Design Name:
-- Module Name: lcd_controller - Behavioral
-- Project Name:
-- Target Device:
-- Tool versions:
-- Description:
--
-- Dependencies:
--
-- Revision:
-- Revision 0.01 - File Created
-- Additional Comments:
--
--------------------------------------------------------------------------------
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
---- Uncomment the following library declaration if instantiating
---- any Xilinx primitives in this code.
--library UNISIM;
--use UNISIM.VComponents.all;
entity lcd_controller is
port(
clk : in std_logic;
busy : in std_logic;
clr : in std_logic;
--din : in std_logic_vector(7 downto 0);
req : out std_logic;
cout : out std_logic;
dou : out std_logic_vector(7 downto 0));
--add : out std_logic_vector(7 downto 0));
end lcd_controller;
architecture Behavioral of lcd_controller is
SIGNAL DOUT,Q1 : STD_LOGIC_VECTOR(7 DOWNTO 0);
SIGNAL C1,C2,OE : STD_LOGIC;
SIGNAL COU : INTEGER RANGE 0 TO 93;
SIGNAL COUNT : INTEGER RANGE 0 TO 16;
BEGIN
PROCESS(CLK)
BEGIN
IF (CLK ' EVENT AND CLK = '1') THEN
Q1 <= Q1 + 1;
END IF;
END PROCESS;
C1 <= Q1(3);
PROCESS(BUSY,C1,CLK)
BEGIN
IF (C1 ' EVENT AND C1 = '1') THEN
COUT <= BUSY;
IF BUSY = '0' THEN
REQ <= '1';
ELSE
REQ <= '0';
END IF;
END IF;
IF (CLK ' EVENT AND CLK = '1') THEN
IF BUSY = '0' THEN
OE <= '1';
ELSE
OE <= '0';
END IF;
END IF;
END PROCESS;
PROCESS(CLK)
BEGIN
IF (CLK ' EVENT AND CLK = '0') THEN
IF OE = '1' THEN
DOU <= DOUT;
END IF;
END IF;
END PROCESS;
PROCESS(BUSY)
BEGIN
IF (BUSY ' EVENT AND BUSY = '0') THEN
COU <= COU + 1;
END IF;
CASE COU IS
WHEN 00 => DOUT <= "11111001"; WHEN 01 => DOUT <= "00000001"; WHEN 02 => DOUT <= "00001111"; WHEN 03 => DOUT <= "01001000";
WHEN 04 => DOUT <= "11111001"; WHEN 05 => DOUT <= "00000010"; WHEN 06 => DOUT <= "00001111"; WHEN 07 => DOUT <= "01000101";
WHEN 08 => DOUT <= "11111001"; WHEN 09 => DOUT <= "00000011"; WHEN 10 => DOUT <= "00001111"; WHEN 11 => DOUT <= "01001100";
WHEN 12 => DOUT <= "11111001"; WHEN 13 => DOUT <= "00000100"; WHEN 14 => DOUT <= "00001111"; WHEN 15 => DOUT <= "01001100";
WHEN 16 => DOUT <= "11111001"; WHEN 17 => DOUT <= "00000101"; WHEN 18 => DOUT <= "00001111"; WHEN 19 => DOUT <= "01001111";
WHEN 20 => DOUT <= "11111001"; WHEN 21 => DOUT <= "00000110"; WHEN 22 => DOUT <= "00001111"; WHEN 23 => DOUT <= "00101100";
WHEN 24 => DOUT <= "11111001"; WHEN 25 => DOUT <= "00000111"; WHEN 26 => DOUT <= "00001111"; WHEN 27 => DOUT <= "01010111";
WHEN 28 => DOUT <= "11111001"; WHEN 29 => DOUT <= "00001000"; WHEN 30 => DOUT <= "00001111"; WHEN 31 => DOUT <= "01001111";
WHEN 32 => DOUT <= "11111001"; WHEN 33 => DOUT <= "00001001"; WHEN 34 => DOUT <= "00001111"; WHEN 35 => DOUT <= "01010010";
WHEN 36 => DOUT <= "11111001"; WHEN 37 => DOUT <= "00001010"; WHEN 38 => DOUT <= "00001111"; WHEN 39 => DOUT <= "01001100";
WHEN 40 => DOUT <= "11111001"; WHEN 41 => DOUT <= "00001011"; WHEN 42 => DOUT <= "00001111"; WHEN 43 => DOUT <= "01000100";
-- WHEN 44 => DOUT <= "11111001"; WHEN 45 => DOUT <= "00000001"; WHEN 46 => DOUT <= "00001111"; WHEN 47 => DOUT <= "01001000";
-- WHEN 48 => DOUT <= "11111001"; WHEN 49 => DOUT <= "00000010"; WHEN 50 => DOUT <= "00001111"; WHEN 51 => DOUT <= "01000101";
-- WHEN 52 => DOUT <= "11111001"; WHEN 53 => DOUT <= "00000011"; WHEN 54 => DOUT <= "00001111"; WHEN 55 => DOUT <= "01001100";
-- WHEN 56 => DOUT <= "11111001"; WHEN 57 => DOUT <= "00000100"; WHEN 58 => DOUT <= "00001111"; WHEN 59 => DOUT <= "01001100";
-- WHEN 60 => DOUT <= "11111001"; WHEN 61 => DOUT <= "00000101"; WHEN 62 => DOUT <= "00001111"; WHEN 63 => DOUT <= "01001111";
-- WHEN 64 => DOUT <= "11111001"; WHEN 65 => DOUT <= "00000110"; WHEN 66 => DOUT <= "00001111"; WHEN 67 => DOUT <= "00101100";
-- WHEN 68 => DOUT <= "11111001"; WHEN 69 => DOUT <= "00000111"; WHEN 70 => DOUT <= "00001111"; WHEN 71 => DOUT <= "01010111";
-- WHEN 72 => DOUT <= "11111001"; WHEN 73 => DOUT <= "00001000"; WHEN 74 => DOUT <= "00001111"; WHEN 75 => DOUT <= "01001111";
-- WHEN 76 => DOUT <= "11111001"; WHEN 77 => DOUT <= "00001001"; WHEN 78 => DOUT <= "00001111"; WHEN 79 => DOUT <= "01010010";
-- WHEN 80 => DOUT <= "11111001"; WHEN 81 => DOUT <= "00001010"; WHEN 82 => DOUT <= "00001111"; WHEN 83 => DOUT <= "01001100";
-- WHEN 84 => DOUT <= "11111001"; WHEN 85 => DOUT <= "00001011"; WHEN 86 => DOUT <= "00001111"; WHEN 87 => DOUT <= "01000100";
WHEN OTHERS => NULL;
END CASE; END PROCESS;
END;
评论0