新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于FPGA的中文字符顯示的VHDL程序

        基于FPGA的中文字符顯示的VHDL程序

        作者: 時(shí)間:2012-05-23 來源:網(wǎng)絡(luò) 收藏

        --文件名:lcd_driver.vhd。

        本文引用地址:http://www.104case.com/article/149005.htm

          --功能:FGAD驅(qū)動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; --狀態(tài)機(jī)時(shí)鐘信號,同時(shí)也是液晶時(shí)鐘信號,其周期應(yīng)該滿足液晶數(shù)據(jù)的建立時(shí)間

          reset:in std_logic;

          lcdda : out std_logic; --寄存器選擇信號

          lcdrw : out std_logic; --液晶讀寫信號

          lcden : out std_logic; --液晶時(shí)鐘信號

          data : out std_logic_vector(7 downto 0)); --液晶數(shù)據(jù)信號

          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));--年數(shù)據(jù)存儲器

          signal clkk : std_logic;

          begin

          lcden = clk ; --液晶時(shí)鐘信號

          lcdrw = '0' ; --寫數(shù)據(jù)

          control:process(clk,reset,current_state) --液晶驅(qū)動控制器

          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;



        關(guān)鍵詞: VHDL 程序 顯示 字符 FPGA 中文 基于

        評論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 正镶白旗| 股票| 石阡县| 东海县| 康保县| 古丈县| 诏安县| 克拉玛依市| 出国| 咸丰县| 东兰县| 海盐县| 保康县| 西充县| 子洲县| 格尔木市| 德令哈市| 新竹市| 酉阳| 理塘县| 上杭县| 冀州市| 武功县| 浏阳市| 安平县| 什邡市| 绩溪县| 福泉市| 无锡市| 石屏县| 海盐县| 通江县| 新沂市| 兴安县| 曲水县| 武安市| 临泉县| 九江县| 江西省| 临颍县| 建宁县|