📄 lcd_vhdl2.vhdl
字号:
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;
rs: out std_logic;
rw: out std_logic;
en: out std_logic;
data: out std_logic_vector(7 downto 0));
end LCD;
architecture Behavioral of LCD is
type datatype is array (0 to 15) of std_logic_vector(7 downto 0);
CONSTANT WELLCOME : datatype :=("01010100","01111000","01111001","00100000",
"00100000","00100000","00100000","00100000",
"00100000","00100000","00100000","00100000",
"01000011","01010000","01001100","01000100" );
type statetype is(s1,s2,s3,s4);
signal state :statetype;
signal datacnt :integer range 0 to 15;
signal b :integer range 0 to 12499;
signal bc :std_logic;
signal ck :std_logic;
begin
process(clk)
begin
if rising_edge(clk) then
if b=12499 then
b<=0;
else
b<=b+1;
end if;
end if;
if b<6249 then
bc<='1';
else
bc<='0';
end if;
end process;
process(bc)
variable s:integer range 0 to 7;
begin
if rising_edge(bc) then
if s=7 then
s:=0;
else
s:=s+1;
end if;
end if;
if s<4 then
ck<='0';
else
ck<='1';
end if;
end process;
process(ck,state)
begin
if rising_edge(ck) then
case state is
when s1=>
rs<='0';
if(datacnt=0)then
data<="00000110"; ///////传送的是命令0x06
datacnt<=datacnt+1;
elsif(datacnt=1)then
data<="00001100"; ///////传送的是命令0X0C
datacnt<=datacnt+1;
elsif(datacnt=2)then
data<="00111000"; /////// 传送的是吗命令0X38
datacnt<=datacnt+1;
else
data<="10000000"; //////// 传送 的是0X80;
datacnt<=0;
state<=s2;
end if;
when s2=>
rs<='1';
if datacnt=15 then
state <= s3;
data <= WELLCOME(datacnt);
datacnt<=0;
else
state <= s2;
data <= WELLCOME(datacnt); /////// 把数组中的数据送入液晶控制模块进行显示
datacnt<=datacnt+1;
end if;
when s3=>
rs<='0';
data<="11000000"; /////// 传递的是命令0XC0;
state<=s4;
when s4=>
rs<='1';
if datacnt=15 then //////// 回到出示状态进行显示
state <= s1;
data <= WELLCOME(datacnt);
datacnt<=0;
else
state <= s4;
data <= WELLCOME(datacnt); //////// 于第二行中显示数据
datacnt<=datacnt+1;
end if;
when others=>state<=s1;
end case;
end if;
end process;
rw<='0';
en<=ck;
-- ckout<=ck;
end Behavioral;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -