搜索
bottom↓
回复: 0

液晶显示问题!急!!!!!!!!!!大家帮忙看看啊!不胜感谢!

[复制链接]

出0入0汤圆

发表于 2010-5-18 13:37:29 | 显示全部楼层 |阅读模式
大家有用过HS162-4液晶的吗?我写了个驱动控制程序,但是始终显示有问题。本来想显示“FEIYONG:”但是最终显示的是“:F E I Y O N G "中间空格的地方会出现一个认不到的图案,大家帮忙找找原因啊!谢谢了!原程序如下:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity lcd1 is
  Port (sysclk:in std_logic;-----20兆赫兹晶振
        reset:in std_logic;
        lcdda : out std_logic;--寄存器选择信号
        lcdrw : out std_logic;--液晶读写信号
        lcden : out std_logic;--液晶时钟信号
        date : out std_logic_vector(7 downto 0));--液晶数据信号
end lcd1;

architecture Behavioral of lcd1 is
type state is (set_qp,set_gn,set_xskg,set_xsaddr,set_cgram,write_date,ting);--7种状态分别为清屏,功能设置,显示开关,设置CGRAM,独处数据,
                                                                               停止。
  signal current_state:state;
  type ram2 is array(0 to 7) of std_logic_vector(7 downto 0);
  constant cgram:ram2:=(("01000110"),("01000101"),("01001001"),("01011001"),
  ("01001111"),("01001110"),("01000111"),("00111010"));--字符数据存储器分别存储了“FEIYONG:”                           
  signal cnt:std_logic_vector(24 downto 0);
  signal clk1:std_logic;--状态机时钟信号,同时也是液晶时钟信号,其周期应该满足液晶数据的建立时间

begin
process(sysclk)-----2/3赫兹分频
begin
if sysclk'event and sysclk='1' then
   if cnt=14999999 then clk1<=not clk1;cnt<=(others=>'0');
   else cnt<=cnt+1;
   end if;
end if;
end process;

  lcden <=  clk1 ; --液晶时钟信号
  lcdrw <= '0' ;  --写数据

control:process(clk1,reset,current_state)--液晶驱动控制器
  variable cnt1: std_logic_vector(2 downto 0);
begin
if reset='0'then
    current_state<=set_qp;
    cnt1:="111";
    lcdda<='0';
elsif rising_edge(clk1)then
      if cnt1="111" then
      date<="00001111";--0fH
      current_state <=ting;
      lcdda <= '0';
      else current_state <=set_cgram;
      end if;
        case current_state is
          when set_qp=>                                           
                 date<="00000001";--01H
                 current_state<=set_gn;
             when set_gn=>
                 date<="00111000";--38H
                 current_state<=set_xskg;
             when set_xskg=>
                 date<="00001111";--0fH
                 current_state<=set_xsaddr;
          when set_xsaddr=>                   --从第一行的起始地址开始显示
                 date<="10000000";--80H
                 current_state<=set_cgram;          
          when set_cgram=>                      --向CGRAM中写入
                 lcdda<='1';
                 date<=cgram(conv_integer(cnt1));
                 cnt1:=cnt1+1;
                 current_state<=write_date;                                                           
     when write_date=>                       
                 lcdda<='1';
                 date<="00000000"; --写入字符
          when others => null;
end case;
end if;
end process;
end Behavioral;

HS162-4液晶显示使用说明ourdev_555015.doc(文件大小:159K) (原文件名:HS162-4液晶显示使用说明.doc)

我最终想实现液晶能有2部分显示,第一行显示“FEIYONG:变化的数据”;第二行显示数字时钟;(“FEIYONG:”这段字符是静态显示的,其他的都是动态变化的)。大家能帮下忙实现下嘛?帮忙改改代码!或者帮忙写段代码(本人初学,请稍加注释)!加我QQ:403246557.或发到我的QQ邮箱里都行。不胜感谢!

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-24 17:25

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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