Y
yousuf14
Guest
koden i er under for programmering LCD å vise ved hjelp av den spartanske 3E stedet for pico flammene:Code:
library IEEE;
bruk IEEE.STD_LOGIC_1164.ALL;
bruk IEEE.STD_LOGIC_ARITH.ALL;
bruk IEEE.STD_LOGIC_UNSIGNED.ALL;enhet LCD erport (
LCD_RS: out std_logic;
LCD_RW: out std_logic;
LCD_E: out std_logic;
CLK: in std_logic;
SF_D: out std_logic_vector (3 downto 0);
S: in std_logic
);end LCD;architecture Behavioral of LCD ersignal substate, stat, klokke, clk1: integer: = 0;begynneprocess (clk)
begynne
clk1 <= clk1 1;
hvis clk1 (= 0) then
Klokken <= klokke 1;- SKRIV FUCNTION SET-kommandoen SF_D <= 0x28
if (state = 0) then
if (substate = 0 og klokke = 0) then
LCD_RS <= '0 ';
LCD_RW <= '0 ';
SF_D <= "0010";
Klokke <= 0;
substate <= 1;
elsif (substate = 1 og klokke = 2) then
LCD_E <= '1 ';
Klokke <= 0;
substate <= 2;
elsif (substate = 2 og klokke = 12) så
LCD_E <= '0 ';
substate <= 3;
Klokke <= 0;
elsif (substate = 3 og klokke = 498) og
SF_D <= "1000";
Klokke <= 0;
substate <= 4;
elsif (substate = 4 og klokke = 2) then
LCD_E <= '1 ';
Klokke <= 0;
substate <= 5;
elsif (substate = 5 og klokke = 12) så
LCD_E <= '0 ';
substate <= 0;
state <= 1;
Klokke <= 0;
end if;
- Vent 2000 CLOCK
elsif (state = 1 og klokke = 2000) så
state <= 2;
Klokken <= 0;
- SKRIV ENTRY MODE SET-kommandoen SF_D <= 0x06
elsif (state = 2) then
if (substate = 0 og klokke = 0) then
LCD_RS <= '0 ';
LCD_RW <= '0 ';
SF_D <= "0000";
Klokke <= 0;
substate <= 1;
elsif (substate = 1 og klokke = 2) then
LCD_E <= '1 ';
Klokke <= 0;
substate <= 2;
elsif (substate = 2 og klokke = 12) så
LCD_E <= '0 ';
substate <= 3;
Klokke <= 0;
elsif (substate = 3 og klokke = 498) og
SF_D <= "0110";
Klokke <= 0;
substate <= 4;
elsif (substate = 4 og klokke = 2) then
LCD_E <= '1 ';
Klokke <= 0;
substate <= 5;
elsif (substate = 5 og klokke = 12) så
LCD_E <= '0 ';
substate <= 0;
state <= 3;
Klokke <= 0;
end if;
- Vent 2000 CLOCK
elsif (stat = 3 og klokke = 2000) så
state <= 4;
Klokken <= 0;
- SKRIV DISPLAY AV / PÅ KOMMANDO SF_D <= 0x0C
elsif (state = 4) og deretter
if (substate = 0 og klokke = 0) then
LCD_RS <= '0 ';
LCD_RW <= '0 ';
SF_D <= "0000";
Klokke <= 0;
substate <= 1;
elsif (substate = 1 og klokke = 2) then
LCD_E <= '1 ';
Klokke <= 0;
substate <= 2;
elsif (substate = 2 og klokke = 12) så
LCD_E <= '0 ';
substate <= 3;
Klokke <= 0;
elsif (substate = 3 og klokke = 498) og
SF_D <= "1100";
Klokke <= 0;
substate <= 4;
elsif (substate = 4 og klokke = 2) then
LCD_E <= '1 ';
Klokke <= 0;
substate <= 5;
elsif (substate = 5 og klokke = 12) så
LCD_E <= '0 ';
substate <= 0;
state <= 5;
Klokke <= 0;
end if;
- Vent til 2000 KLOKKE
elsif (stat = 5 og klokke = 2000) så
state <= 6;
Klokken <= 0;
- Skrive klare DISPLAY KOMMANDO SF_D <= 0x HA for å løse dette
elsif (state = 6) så
if (substate = 0 og klokke = 0) then
LCD_RS <= '0 ';
LCD_RW <= '0 ';
SF_D <= "0000"; - Jeg har faste IT
Klokke <= 0;
substate <= 1;
elsif (substate = 1 og klokke = 2) then
LCD_E <= '1 ';
Klokke <= 0;
substate <= 2;
elsif (substate = 2 og klokke = 12) så
LCD_E <= '0 ';
substate <= 3;
Klokke <= 0;
elsif (substate = 3 og klokke = 498) og
SF_D <= "0001"; - Jeg har faste IT
Klokke <= 0;
substate <= 4;
elsif (substate = 4 og klokke = 2) then
LCD_E <= '1 ';
Klokke <= 0;
substate <= 5;
elsif (substate = 5 og klokke = 12) så
LCD_E <= '0 ';
substate <= 0;
state <= 7;
Klokke <= 0;
end if;
- Vent til 82000 KLOKKE
elsif (stat = 7 og klokke = 82000) så
state <= 8;
Klokken <= 0;
- SKRIV SET DD RAM ADD SF_D <= 0x HA for å løse dette
elsif (state = 8) og
if (substate = 0 og klokke = 0) then
LCD_RS <= '0 ';
LCD_RW <= '0 ';
SF_D <= "1000"; - It has been fixed
Klokke <= 0;
substate <= 1;
elsif (substate = 1 og klokke = 2) then
LCD_E <= '1 ';
Klokke <= 0;
substate <= 2;
elsif (substate = 2 og klokke = 12) så
LCD_E <= '0 ';
substate <= 3;
Klokke <= 0;
elsif (substate = 3 og klokke = 498) og
SF_D <= "0000"; - It has been fixed
Klokke <= 0;
substate <= 4;
elsif (substate = 4 og klokke = 2) then
LCD_E <= '1 ';
Klokke <= 0;
substate <= 5;
elsif (substate = 5 og klokke = 12) så
LCD_E <= '0 ';
substate <= 0;
state <= 9;
Klokke <= 0;
end if;
- Vent til 2000 KLOKKE
elsif (stat = 9 og klokke = 2000) så
state <= 10;
Klokken <= 0;
- SKRIV DD RAM ADD SF_D <= 0x HA for å løse dette
elsif (delstat = 10) så
if (substate = 0 og klokke = 0) then
LCD_RS <= '1 ';
LCD_RW <= '0 ';
SF_D <= "1000"; - It has been fixed
Klokke <= 0;
substate <= 1;
elsif (substate = 1 og klokke = 2) then
LCD_E <= '1 ';
Klokke <= 0;
substate <= 2;
elsif (substate = 2 og klokke = 12) så
LCD_E <= '0 ';
substate <= 3;
Klokke <= 0;
elsif (substate = 3 og klokke = 498) og
SF_D <= "0000"; - It has been fixed
Klokke <= 0;
substate <= 4;
elsif (substate = 4 og klokke = 2) then
LCD_E <= '1 ';
Klokke <= 0;
substate <= 5;
elsif (substate = 5 og klokke = 12) så
LCD_E <= '0 ';
substate <= 0;
state <= 11;
Klokke <= 0;
end if;
elsif (delstat = 11) så
state <= 11;
Klokken <= 0;
end if;elsif (clk1 = 1) then
clk1 <= 0;
end if;
end process;
end Behavioral;
library IEEE;
bruk IEEE.STD_LOGIC_1164.ALL;
bruk IEEE.STD_LOGIC_ARITH.ALL;
bruk IEEE.STD_LOGIC_UNSIGNED.ALL;enhet LCD erport (
LCD_RS: out std_logic;
LCD_RW: out std_logic;
LCD_E: out std_logic;
CLK: in std_logic;
SF_D: out std_logic_vector (3 downto 0);
S: in std_logic
);end LCD;architecture Behavioral of LCD ersignal substate, stat, klokke, clk1: integer: = 0;begynneprocess (clk)
begynne
clk1 <= clk1 1;
hvis clk1 (= 0) then
Klokken <= klokke 1;- SKRIV FUCNTION SET-kommandoen SF_D <= 0x28
if (state = 0) then
if (substate = 0 og klokke = 0) then
LCD_RS <= '0 ';
LCD_RW <= '0 ';
SF_D <= "0010";
Klokke <= 0;
substate <= 1;
elsif (substate = 1 og klokke = 2) then
LCD_E <= '1 ';
Klokke <= 0;
substate <= 2;
elsif (substate = 2 og klokke = 12) så
LCD_E <= '0 ';
substate <= 3;
Klokke <= 0;
elsif (substate = 3 og klokke = 498) og
SF_D <= "1000";
Klokke <= 0;
substate <= 4;
elsif (substate = 4 og klokke = 2) then
LCD_E <= '1 ';
Klokke <= 0;
substate <= 5;
elsif (substate = 5 og klokke = 12) så
LCD_E <= '0 ';
substate <= 0;
state <= 1;
Klokke <= 0;
end if;
- Vent 2000 CLOCK
elsif (state = 1 og klokke = 2000) så
state <= 2;
Klokken <= 0;
- SKRIV ENTRY MODE SET-kommandoen SF_D <= 0x06
elsif (state = 2) then
if (substate = 0 og klokke = 0) then
LCD_RS <= '0 ';
LCD_RW <= '0 ';
SF_D <= "0000";
Klokke <= 0;
substate <= 1;
elsif (substate = 1 og klokke = 2) then
LCD_E <= '1 ';
Klokke <= 0;
substate <= 2;
elsif (substate = 2 og klokke = 12) så
LCD_E <= '0 ';
substate <= 3;
Klokke <= 0;
elsif (substate = 3 og klokke = 498) og
SF_D <= "0110";
Klokke <= 0;
substate <= 4;
elsif (substate = 4 og klokke = 2) then
LCD_E <= '1 ';
Klokke <= 0;
substate <= 5;
elsif (substate = 5 og klokke = 12) så
LCD_E <= '0 ';
substate <= 0;
state <= 3;
Klokke <= 0;
end if;
- Vent 2000 CLOCK
elsif (stat = 3 og klokke = 2000) så
state <= 4;
Klokken <= 0;
- SKRIV DISPLAY AV / PÅ KOMMANDO SF_D <= 0x0C
elsif (state = 4) og deretter
if (substate = 0 og klokke = 0) then
LCD_RS <= '0 ';
LCD_RW <= '0 ';
SF_D <= "0000";
Klokke <= 0;
substate <= 1;
elsif (substate = 1 og klokke = 2) then
LCD_E <= '1 ';
Klokke <= 0;
substate <= 2;
elsif (substate = 2 og klokke = 12) så
LCD_E <= '0 ';
substate <= 3;
Klokke <= 0;
elsif (substate = 3 og klokke = 498) og
SF_D <= "1100";
Klokke <= 0;
substate <= 4;
elsif (substate = 4 og klokke = 2) then
LCD_E <= '1 ';
Klokke <= 0;
substate <= 5;
elsif (substate = 5 og klokke = 12) så
LCD_E <= '0 ';
substate <= 0;
state <= 5;
Klokke <= 0;
end if;
- Vent til 2000 KLOKKE
elsif (stat = 5 og klokke = 2000) så
state <= 6;
Klokken <= 0;
- Skrive klare DISPLAY KOMMANDO SF_D <= 0x HA for å løse dette
elsif (state = 6) så
if (substate = 0 og klokke = 0) then
LCD_RS <= '0 ';
LCD_RW <= '0 ';
SF_D <= "0000"; - Jeg har faste IT
Klokke <= 0;
substate <= 1;
elsif (substate = 1 og klokke = 2) then
LCD_E <= '1 ';
Klokke <= 0;
substate <= 2;
elsif (substate = 2 og klokke = 12) så
LCD_E <= '0 ';
substate <= 3;
Klokke <= 0;
elsif (substate = 3 og klokke = 498) og
SF_D <= "0001"; - Jeg har faste IT
Klokke <= 0;
substate <= 4;
elsif (substate = 4 og klokke = 2) then
LCD_E <= '1 ';
Klokke <= 0;
substate <= 5;
elsif (substate = 5 og klokke = 12) så
LCD_E <= '0 ';
substate <= 0;
state <= 7;
Klokke <= 0;
end if;
- Vent til 82000 KLOKKE
elsif (stat = 7 og klokke = 82000) så
state <= 8;
Klokken <= 0;
- SKRIV SET DD RAM ADD SF_D <= 0x HA for å løse dette
elsif (state = 8) og
if (substate = 0 og klokke = 0) then
LCD_RS <= '0 ';
LCD_RW <= '0 ';
SF_D <= "1000"; - It has been fixed
Klokke <= 0;
substate <= 1;
elsif (substate = 1 og klokke = 2) then
LCD_E <= '1 ';
Klokke <= 0;
substate <= 2;
elsif (substate = 2 og klokke = 12) så
LCD_E <= '0 ';
substate <= 3;
Klokke <= 0;
elsif (substate = 3 og klokke = 498) og
SF_D <= "0000"; - It has been fixed
Klokke <= 0;
substate <= 4;
elsif (substate = 4 og klokke = 2) then
LCD_E <= '1 ';
Klokke <= 0;
substate <= 5;
elsif (substate = 5 og klokke = 12) så
LCD_E <= '0 ';
substate <= 0;
state <= 9;
Klokke <= 0;
end if;
- Vent til 2000 KLOKKE
elsif (stat = 9 og klokke = 2000) så
state <= 10;
Klokken <= 0;
- SKRIV DD RAM ADD SF_D <= 0x HA for å løse dette
elsif (delstat = 10) så
if (substate = 0 og klokke = 0) then
LCD_RS <= '1 ';
LCD_RW <= '0 ';
SF_D <= "1000"; - It has been fixed
Klokke <= 0;
substate <= 1;
elsif (substate = 1 og klokke = 2) then
LCD_E <= '1 ';
Klokke <= 0;
substate <= 2;
elsif (substate = 2 og klokke = 12) så
LCD_E <= '0 ';
substate <= 3;
Klokke <= 0;
elsif (substate = 3 og klokke = 498) og
SF_D <= "0000"; - It has been fixed
Klokke <= 0;
substate <= 4;
elsif (substate = 4 og klokke = 2) then
LCD_E <= '1 ';
Klokke <= 0;
substate <= 5;
elsif (substate = 5 og klokke = 12) så
LCD_E <= '0 ';
substate <= 0;
state <= 11;
Klokke <= 0;
end if;
elsif (delstat = 11) så
state <= 11;
Klokken <= 0;
end if;elsif (clk1 = 1) then
clk1 <= 0;
end if;
end process;
end Behavioral;