| 
 | 
 
控制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; |   
 
 
 
 |