分享
8.3 LCD控制VHDL程序与仿真 2004.8修改.doc
下载文档

ID:3084849

大小:32KB

页数:2页

格式:DOC

时间:2024-01-19

收藏 分享赚钱
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,汇文网负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
网站客服:3074922707
8.3 LCD控制VHDL程序与仿真 2004.8修改 LCD 控制 VHDL 程序 仿真 2004.8 修改
8.3.3 程序设计与仿真 利用FPGA驱动LCD显示中文字符“年”的VHDL程序。 --文件名: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;

此文档下载收益归作者所有

下载文档
你可能关注的文档
收起
展开