laoshasha 发表于 2011-11-8 19:52:49

控制LCD1602显示的VHDL程序,下到板子里调不出来,求高人帮看一下

控制LCD1602显示的程序,要实现在液晶屏第一行第一列显示一个字符‘A’,下到板子里调试不出来,纠结了一周了,不知道问题在哪,求高人帮看一下,不胜感激~~~~,下面是程序。

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity LCD1602 is
Port
(
Clk : in std_logic;    --50M Hz
Reset:in std_logic;    --复位
Lcd_rs : out std_logic;--命令或数据选择控制
Lcd_rw : out std_logic;--读写控制信号
Lcd_en : out std_logic;--液晶时钟信号
Lcd_data : out std_logic_vector(7 downto 0)--数据信号
);
end LCD1602;

architecture BHV of LCD1602 is

constant dataA:std_logic_vector:="01000001"; --显示的数据为A
signal Clk1:std_logic:='1';
type state is (szl1,szl3,szl4,szl6,saddr,sdata,sw);
signal Cstate:state;
--signal Nstate:state;

begin
Lcd_en<=Clk1;

div_80us:process(Clk)      
variable cnt1:integer range 0 to 99999;--200000分频,分频后时钟Clk1周期为4ms
begin                                    
if Clk'event and Clk='1' then
   if cnt1<99999 then cnt1:=cnt1+1;
   else
    cnt1:=0;
    Clk1<= not Clk1;
   end if;
end if;
end process;


com:process(Clk1,Reset)
begin
if Reset='0' then Cstate<=szl1;Lcd_rs<='0';
elsif Clk1'event and Clk1='1' then
    Lcd_rs<='0';
case Cstate is
   when szl1=>
    Lcd_rw<='0';
    Lcd_data<="00000001";--清屏
    Cstate<=szl3;
   when szl3=>
    --Lcd_rs<='0';
    Lcd_rw<='0';
    Lcd_data<="00000110";--光标右移,显示屏不移动
    Cstate<=szl4;
   when szl4=>
    --Lcd_rs<='0';
    Lcd_rw<='0';
    Lcd_data<="00001111";--显示功能开,有光标,光标闪烁
    Cstate<=szl6;
   when szl6=>
    --Lcd_rs<='0';
    Lcd_rw<='0';
    Lcd_data<="00111000";--8位数据,显示两行,5*7
    Cstate<=saddr;
    when saddr=>
   --Lcd_rs<='1';
   Lcd_rw<='0';
   Lcd_data<="10000000";--设置DDRAM地址,即在液晶屏第一行第一列显示
   Cstate<=sdata;
    when sdata=>
   Lcd_rw<='0';
   Lcd_rs<='1';
   Lcd_data<=dataA; --显示的数据为A
   Cstate<=sw;
    when sw=>      --不明白这个状态是什么意思,参考别人的写的
   --Lcd_rs<='1';
   Lcd_rw<='1';
   Lcd_data<="00000000";
   Cstate<=szl3;
   when others=>null;
end case;
end if;
end process;
end BHV;

lgy198612 发表于 2011-11-8 20:58:12

:loveliness: 可惜我是代做,要不就有时间帮你 了

laoshasha 发表于 2011-12-6 15:28:55

回复 2# lgy198612


    还是谢谢你
页: [1]
查看完整版本: 控制LCD1602显示的VHDL程序,下到板子里调不出来,求高人帮看一下