集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 2595|回复: 2

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

[复制链接]
laoshasha 发表于 2011-11-8 19:52:49 | 显示全部楼层 |阅读模式
控制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 | 显示全部楼层
可惜我是代做,要不就有时间帮你 了
 楼主| laoshasha 发表于 2011-12-6 15:28:55 | 显示全部楼层
回复 2# lgy198612


    还是谢谢你
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|小黑屋|手机版|Archiver|fpga论坛|fpga设计论坛 ( 京ICP备20003123号-1 )

GMT+8, 2025-6-24 19:22 , Processed in 0.094362 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表