Y
yousuf14
Guest
le code est inférieur à la programmation de l'écran ACL pour afficher l'aide du Spartan 3E au lieu de l'incendie pico:Code:
Bibliothèque IEEE;
utilisation ieee.std_logic_1164.all;
utilisation IEEE.STD_LOGIC_ARITH.ALL;
utilisation IEEE.STD_LOGIC_UNSIGNED.ALL;entité LCD estport (
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
);fin LCD;Behavioral architecture du LCD estsubstate signal, l'état, l'horloge, CLK1: integer: = 0;commencerprocess (clk)
commencer
CLK1 <= CLK1 1;
if (CLK1 = 0) alors
clock <= clock 1;- NOTER FUCNTION commande SET SF_D <= 0x28
if (state = 0) alors
if (substate = 0 et clock = 0) alors
LCD_RS <= '0 ';
LCD_RW <= '0 ';
SF_D <= "0010";
Horloge <= 0;
substate <= 1;
elsif (substate = 1 et clock = 2) puis
LCD_E <= '1 ';
Horloge <= 0;
substate <= 2;
elsif (substate = 2 et clock = 12) puis
LCD_E <= '0 ';
substate <= 3;
Horloge <= 0;
elsif (substate = 3 et l'horloge = 498), alors
SF_D <= "1000";
Horloge <= 0;
substate <= 4;
elsif (substate = 4 et clock = 2) puis
LCD_E <= '1 ';
Horloge <= 0;
substate <= 5;
elsif (substate = 5 et clock = 12) puis
LCD_E <= '0 ';
substate <= 0;
State <= 1;
Horloge <= 0;
End If;
- WAIT 2000 Horloge
elsif (state = 1 et l'horloge = 2000) puis
State <= 2;
clock <= 0;
- NOTER entrée Mode commande SET SF_D <= 0x06
elsif (état = 2) puis
if (substate = 0 et clock = 0) alors
LCD_RS <= '0 ';
LCD_RW <= '0 ';
SF_D <= "0000";
Horloge <= 0;
substate <= 1;
elsif (substate = 1 et clock = 2) puis
LCD_E <= '1 ';
Horloge <= 0;
substate <= 2;
elsif (substate = 2 et clock = 12) puis
LCD_E <= '0 ';
substate <= 3;
Horloge <= 0;
elsif (substate = 3 et l'horloge = 498), alors
SF_D <= "0110";
Horloge <= 0;
substate <= 4;
elsif (substate = 4 et clock = 2) puis
LCD_E <= '1 ';
Horloge <= 0;
substate <= 5;
elsif (substate = 5 et clock = 12) puis
LCD_E <= '0 ';
substate <= 0;
State <= 3;
Horloge <= 0;
End If;
- WAIT 2000 Horloge
elsif (state = 3 et l'horloge = 2000) puis
State <= 4;
clock <= 0;
- NOTER DISPLAY ON / OFF COMMANDEMENT SF_D <= 0x0C
elsif (state = 4) puis
if (substate = 0 et clock = 0) alors
LCD_RS <= '0 ';
LCD_RW <= '0 ';
SF_D <= "0000";
Horloge <= 0;
substate <= 1;
elsif (substate = 1 et clock = 2) puis
LCD_E <= '1 ';
Horloge <= 0;
substate <= 2;
elsif (substate = 2 et clock = 12) puis
LCD_E <= '0 ';
substate <= 3;
Horloge <= 0;
elsif (substate = 3 et l'horloge = 498), alors
SF_D <= "1100";
Horloge <= 0;
substate <= 4;
elsif (substate = 4 et clock = 2) puis
LCD_E <= '1 ';
Horloge <= 0;
substate <= 5;
elsif (substate = 5 et clock = 12) puis
LCD_E <= '0 ';
substate <= 0;
State <= 5;
Horloge <= 0;
End If;
- ATTENDRE POUR 2000 HORLOGE
elsif (state = 5 et clock = 2000) puis
State <= 6;
clock <= 0;
- NOTER CLEAR commande display SF_D <= 0x ONT afin de résoudre ce
elsif (state = 6), puis
if (substate = 0 et clock = 0) alors
LCD_RS <= '0 ';
LCD_RW <= '0 ';
SF_D <= "0000", - je l'ai FIXE
Horloge <= 0;
substate <= 1;
elsif (substate = 1 et clock = 2) puis
LCD_E <= '1 ';
Horloge <= 0;
substate <= 2;
elsif (substate = 2 et clock = 12) puis
LCD_E <= '0 ';
substate <= 3;
Horloge <= 0;
elsif (substate = 3 et l'horloge = 498), alors
SF_D <= "0001", - je l'ai FIXE
Horloge <= 0;
substate <= 4;
elsif (substate = 4 et clock = 2) puis
LCD_E <= '1 ';
Horloge <= 0;
substate <= 5;
elsif (substate = 5 et clock = 12) puis
LCD_E <= '0 ';
substate <= 0;
State <= 7;
Horloge <= 0;
End If;
- ATTENDRE POUR HORLOGE 82000
elsif (state = 7 et clock = 82000), puis
State <= 8;
clock <= 0;
- SET ECRITURE DD RAM ADD SF_D <= 0x ONT afin de résoudre ce
elsif (état = 8) puis
if (substate = 0 et clock = 0) alors
LCD_RS <= '0 ';
LCD_RW <= '0 ';
SF_D <= "1000", - qu'il a été fixé
Horloge <= 0;
substate <= 1;
elsif (substate = 1 et clock = 2) puis
LCD_E <= '1 ';
Horloge <= 0;
substate <= 2;
elsif (substate = 2 et clock = 12) puis
LCD_E <= '0 ';
substate <= 3;
Horloge <= 0;
elsif (substate = 3 et l'horloge = 498), alors
SF_D <= "0000", - qu'il a été fixé
Horloge <= 0;
substate <= 4;
elsif (substate = 4 et clock = 2) puis
LCD_E <= '1 ';
Horloge <= 0;
substate <= 5;
elsif (substate = 5 et clock = 12) puis
LCD_E <= '0 ';
substate <= 0;
State <= 9;
Horloge <= 0;
End If;
- ATTENDRE 2000 POUR HORLOGE
elsif (state = 9 et clock = 2000) puis
State <= 10;
clock <= 0;
- NOTER DD RAM ADD SF_D <= 0x ONT afin de résoudre ce
elsif (état = 10) puis
if (substate = 0 et clock = 0) alors
LCD_RS <= '1 ';
LCD_RW <= '0 ';
SF_D <= "1000", - qu'il a été fixé
Horloge <= 0;
substate <= 1;
elsif (substate = 1 et clock = 2) puis
LCD_E <= '1 ';
Horloge <= 0;
substate <= 2;
elsif (substate = 2 et clock = 12) puis
LCD_E <= '0 ';
substate <= 3;
Horloge <= 0;
elsif (substate = 3 et l'horloge = 498), alors
SF_D <= "0000", - qu'il a été fixé
Horloge <= 0;
substate <= 4;
elsif (substate = 4 et clock = 2) puis
LCD_E <= '1 ';
Horloge <= 0;
substate <= 5;
elsif (substate = 5 et clock = 12) puis
LCD_E <= '0 ';
substate <= 0;
State <= 11;
Horloge <= 0;
End If;
elsif (état = 11) puis
State <= 11;
clock <= 0;
End If;elsif (CLK1 = 1) then
CLK1 <= 0;
End If;
Terminer le processus;
fin de comportement;
Bibliothèque IEEE;
utilisation ieee.std_logic_1164.all;
utilisation IEEE.STD_LOGIC_ARITH.ALL;
utilisation IEEE.STD_LOGIC_UNSIGNED.ALL;entité LCD estport (
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
);fin LCD;Behavioral architecture du LCD estsubstate signal, l'état, l'horloge, CLK1: integer: = 0;commencerprocess (clk)
commencer
CLK1 <= CLK1 1;
if (CLK1 = 0) alors
clock <= clock 1;- NOTER FUCNTION commande SET SF_D <= 0x28
if (state = 0) alors
if (substate = 0 et clock = 0) alors
LCD_RS <= '0 ';
LCD_RW <= '0 ';
SF_D <= "0010";
Horloge <= 0;
substate <= 1;
elsif (substate = 1 et clock = 2) puis
LCD_E <= '1 ';
Horloge <= 0;
substate <= 2;
elsif (substate = 2 et clock = 12) puis
LCD_E <= '0 ';
substate <= 3;
Horloge <= 0;
elsif (substate = 3 et l'horloge = 498), alors
SF_D <= "1000";
Horloge <= 0;
substate <= 4;
elsif (substate = 4 et clock = 2) puis
LCD_E <= '1 ';
Horloge <= 0;
substate <= 5;
elsif (substate = 5 et clock = 12) puis
LCD_E <= '0 ';
substate <= 0;
State <= 1;
Horloge <= 0;
End If;
- WAIT 2000 Horloge
elsif (state = 1 et l'horloge = 2000) puis
State <= 2;
clock <= 0;
- NOTER entrée Mode commande SET SF_D <= 0x06
elsif (état = 2) puis
if (substate = 0 et clock = 0) alors
LCD_RS <= '0 ';
LCD_RW <= '0 ';
SF_D <= "0000";
Horloge <= 0;
substate <= 1;
elsif (substate = 1 et clock = 2) puis
LCD_E <= '1 ';
Horloge <= 0;
substate <= 2;
elsif (substate = 2 et clock = 12) puis
LCD_E <= '0 ';
substate <= 3;
Horloge <= 0;
elsif (substate = 3 et l'horloge = 498), alors
SF_D <= "0110";
Horloge <= 0;
substate <= 4;
elsif (substate = 4 et clock = 2) puis
LCD_E <= '1 ';
Horloge <= 0;
substate <= 5;
elsif (substate = 5 et clock = 12) puis
LCD_E <= '0 ';
substate <= 0;
State <= 3;
Horloge <= 0;
End If;
- WAIT 2000 Horloge
elsif (state = 3 et l'horloge = 2000) puis
State <= 4;
clock <= 0;
- NOTER DISPLAY ON / OFF COMMANDEMENT SF_D <= 0x0C
elsif (state = 4) puis
if (substate = 0 et clock = 0) alors
LCD_RS <= '0 ';
LCD_RW <= '0 ';
SF_D <= "0000";
Horloge <= 0;
substate <= 1;
elsif (substate = 1 et clock = 2) puis
LCD_E <= '1 ';
Horloge <= 0;
substate <= 2;
elsif (substate = 2 et clock = 12) puis
LCD_E <= '0 ';
substate <= 3;
Horloge <= 0;
elsif (substate = 3 et l'horloge = 498), alors
SF_D <= "1100";
Horloge <= 0;
substate <= 4;
elsif (substate = 4 et clock = 2) puis
LCD_E <= '1 ';
Horloge <= 0;
substate <= 5;
elsif (substate = 5 et clock = 12) puis
LCD_E <= '0 ';
substate <= 0;
State <= 5;
Horloge <= 0;
End If;
- ATTENDRE POUR 2000 HORLOGE
elsif (state = 5 et clock = 2000) puis
State <= 6;
clock <= 0;
- NOTER CLEAR commande display SF_D <= 0x ONT afin de résoudre ce
elsif (state = 6), puis
if (substate = 0 et clock = 0) alors
LCD_RS <= '0 ';
LCD_RW <= '0 ';
SF_D <= "0000", - je l'ai FIXE
Horloge <= 0;
substate <= 1;
elsif (substate = 1 et clock = 2) puis
LCD_E <= '1 ';
Horloge <= 0;
substate <= 2;
elsif (substate = 2 et clock = 12) puis
LCD_E <= '0 ';
substate <= 3;
Horloge <= 0;
elsif (substate = 3 et l'horloge = 498), alors
SF_D <= "0001", - je l'ai FIXE
Horloge <= 0;
substate <= 4;
elsif (substate = 4 et clock = 2) puis
LCD_E <= '1 ';
Horloge <= 0;
substate <= 5;
elsif (substate = 5 et clock = 12) puis
LCD_E <= '0 ';
substate <= 0;
State <= 7;
Horloge <= 0;
End If;
- ATTENDRE POUR HORLOGE 82000
elsif (state = 7 et clock = 82000), puis
State <= 8;
clock <= 0;
- SET ECRITURE DD RAM ADD SF_D <= 0x ONT afin de résoudre ce
elsif (état = 8) puis
if (substate = 0 et clock = 0) alors
LCD_RS <= '0 ';
LCD_RW <= '0 ';
SF_D <= "1000", - qu'il a été fixé
Horloge <= 0;
substate <= 1;
elsif (substate = 1 et clock = 2) puis
LCD_E <= '1 ';
Horloge <= 0;
substate <= 2;
elsif (substate = 2 et clock = 12) puis
LCD_E <= '0 ';
substate <= 3;
Horloge <= 0;
elsif (substate = 3 et l'horloge = 498), alors
SF_D <= "0000", - qu'il a été fixé
Horloge <= 0;
substate <= 4;
elsif (substate = 4 et clock = 2) puis
LCD_E <= '1 ';
Horloge <= 0;
substate <= 5;
elsif (substate = 5 et clock = 12) puis
LCD_E <= '0 ';
substate <= 0;
State <= 9;
Horloge <= 0;
End If;
- ATTENDRE 2000 POUR HORLOGE
elsif (state = 9 et clock = 2000) puis
State <= 10;
clock <= 0;
- NOTER DD RAM ADD SF_D <= 0x ONT afin de résoudre ce
elsif (état = 10) puis
if (substate = 0 et clock = 0) alors
LCD_RS <= '1 ';
LCD_RW <= '0 ';
SF_D <= "1000", - qu'il a été fixé
Horloge <= 0;
substate <= 1;
elsif (substate = 1 et clock = 2) puis
LCD_E <= '1 ';
Horloge <= 0;
substate <= 2;
elsif (substate = 2 et clock = 12) puis
LCD_E <= '0 ';
substate <= 3;
Horloge <= 0;
elsif (substate = 3 et l'horloge = 498), alors
SF_D <= "0000", - qu'il a été fixé
Horloge <= 0;
substate <= 4;
elsif (substate = 4 et clock = 2) puis
LCD_E <= '1 ';
Horloge <= 0;
substate <= 5;
elsif (substate = 5 et clock = 12) puis
LCD_E <= '0 ';
substate <= 0;
State <= 11;
Horloge <= 0;
End If;
elsif (état = 11) puis
State <= 11;
clock <= 0;
End If;elsif (CLK1 = 1) then
CLK1 <= 0;
End If;
Terminer le processus;
fin de comportement;