;
文章:行业新闻EDA文摘电源技术无线通信测量仪表嵌入式类电子技术制造技术半导体网络/协议展会实验家电维修  
  下载:EDA教程电源技术电子书籍电子元件无线通信通信网络电路图纸嵌入式类单片机传感/控制电子教材模拟数字
.... 音视频类
消费电子机械电子行业软件C/C++FPGA/ASIC规则标准家电维修DSPIC资料ARM软件电路图电子技术论坛
 
位置:电子发烧友 > 行业新闻 > 嵌入式类 > FPGA/ASIC技术 >LCD控制VHDL程序与仿真 退出登录 用户管理
栏目导航


· 单片机类 · 接口/总线/驱动
· ARM · DSP
· FPGA/ASIC技术 · 设计应用
· 嵌入式操作系统 · 电视卡
热门文章
· [组图] 电子元器件基础知识...
· [图文] USB接口定义
· [图文] 三极管开关电路图
· [组图] RS232 RS485接口原理...
· [组图] [组图]电动车充电器...
· [组图] 电子捕鱼器电路图
· [组图] 高品质音调电路的制...
· [组图] JRC4558电路
· [图文] M51134P低音炮电路图...
· [图文] TL494脉宽调制控制电...
相关文章

· [组图] S3C2410 LCD控制器的...
· LED控制VHDL程序与仿...
· [图文] 出租车计价器VHDL程...
· [组图] 出租车计价器VHDL程...
· 步进电机定位控制系...
· 多功能波形发生器VH...
· Genesis推出支持WSX...
· [组图] 使用LeonardoSpectr...

LCD控制VHDL程序与仿真
作者:本站  来源:www.elecfans.com  发布时间:2008-6-27 11:20:03 减小字体 增大字体

LCD控制VHDL程序与仿真
1. FPGA驱动LCD显示中文字符“年”程序
--文件名:lcd_driver.vhd。
--功能:FGAD驱动LCD显示中文字符“年”。
--最后修改日期:2004.3.24。
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity lcd_driver is
    Port ( clk : in std_logic; --状态机时钟信号,同时也是液晶时钟信号,其周期应该满足液晶数据的建立时间
      reset:in std_logic;
         lcdda : out std_logic;         --寄存器选择信号
         lcdrw : out std_logic;      --液晶读写信号
         lcden : out std_logic;      --液晶时钟信号
         data : out std_logic_vector(7 downto 0));  --液晶数据信号
end lcd_driver;

architecture Behavioral of lcd_driver is
type state is (set_dlnf,set_cursor,set_dcb,set _cgram,write _cgram,set_ddram,write_data);
    signal current_state:state;
    type ram2 is array(0 to 7) of std_logic_vector(7 downto 0);
constant cgram:ram2:=(("00001000"),("00001111"),("00010010"),
("00001111"),("00001010"),("00011111"),("00000010"),("00000010"));--年字符数据存储器                          
    signal clkk : std_logic;
begin

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

    control:process(clk,reset,current_state)               --液晶驱动控制器
          variable cnt1: std_logic_vector(2 downto 0);
     begin
   if reset='0'then
         current_state<=set_dlnf;
      cnt1:=(others => '1');
      lcdda<='0';
       elsif rising_edge(clk)then
      current_state <= current_state ;
      lcdda <= '0';
      case current_state is
       when set_dlnf=>              
        data<="00111100";--3cH
        current_state<=set_cursor;
               when set_cursor=>
        data<="00000110";--06H
        current_state<=set_dcb;
               when set_dcb=>
        data<="00001111";--0fH
        current_state<=set_ cgram;
      when set_ cgram=>
        data<="01000000";--40H
        current_state<=write_ cgram;
      when write_ cgram=> --向CGRAM中写入“年”
        lcdda<='1';
        cnt1:=cnt1+1;
        data<=cgram(conv_integer(cnt1));       
        if cnt1 = "111" then
       current_state<=set_ddram;        
        end if;
     when set_ddram=>     --从第一行的起始地址开始显示
        data<="10000000";--80H
        current_state<=write_data;
              when write_data=>   
        lcdda<='1';
        data<="00000000"; --写入字符“年”
     when others => null;
    end case;
    end if;
          end process;
end Behavioral;

[] [返回上一页] [打 印] [收 藏]
 

上一篇文章:ADC0809 VHDL控制程序
∷相关文章评论∷    (评论内容只代表网友观点,与本站立场无关!) [更多评论...]
 
关于本站- 意见反馈 - 网站导航 - 帮助 - 隐私政策 - 联系我们 - 使用条款 - 安全承诺 - 友情连接
站长QQ:39550527 Powered by: 飓风网络(电路图
Copyright 2006-2008 Elecfans.Com.电子发烧友: 粤ICP备07065979号All Rights Reserved