基于FPGA的中文字符显示的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;
VHDL 程序 显示 字符 FPGA 中文 基于 相关文章:
- DSP HPI口与PC104总线接口的FPGA设计(04-14)
- 基于FPGA的AD7862接口电路设计(01-01)
- 基于VHDL的感应加热电源数字移相触发器设计方案(03-20)
- 单板嵌入式硬件平台SingleBoard RIO(03-19)
- 设计嵌入式系统时选用NI LabVIEW的10大理由(03-19)
- 功能原型设计系列:为什么要进行快速原型(03-22)