新闻  |   论坛  |   博客  |   在线研讨会
Spartan3E的LCD使用及源代码
lzwsdu | 2010-02-28 15:35:21    阅读:1633   发布文章

这个代码是我参考多人的代码,并用了很长时间才调试出来的!应经在硬件电路上实验成功! 说明:我采用的开发板是Diligent公司采用Xilinx公司的芯片生产的板卡,这里的LCD数据接口只用低四位,所以八位数据要采用两次输入来完成!! library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity LCD1602 is Port ( clk : in std_logic; reset : in std_logic; lcd_rs : out std_logic; lcd_rw : out std_logic; flash_ce:out std_logic; lcd_en : out std_logic; data : out std_logic_vector(3 downto 0)); end LCD1602; architecture Behavioral of LCD1602 is type iState is ( Write_instr, --写命令字 Write_DataUP4_1, --写LCD一线高4位 Write_DataDown4_1, --写LCD一线低4位 Set_DDRamAddUp, --设置DDRam地址高4位 Set_DDRamAddDown, --设置DDRam地址低4位 Write_DataUP4_2, --写LCD二线高4位 Write_DataDown4_2 --写LCD二线低4位 ); signal State:iState; type Ram is array(0 to 39) of std_logic_vector(7 downto 0); constant MyRamUp:Ram:=(x"57",x"65",x"6c",x"63",x"6f",x"6d",x"65",x"20",x"74",x"6f",x"20",x"53",x"44",x"55",x"20",x"20",x"20",x"20",x"20",x"20",x"20",x"20",x"20",x"20",x"20",x"20",x"20",x"20",x"20",x"20",x"20",x"20",x"20",x"20",x"20",x"20",x"20",x"20",x"20",x"20"); --Welcome to SDU constant MyRamDown:Ram:=(x"20",x"20",x"20",x"20",x"49",x"53",x"45",x"27",x"73",x"20",x"45",x"44",x"41",x"4c",x"41",x"42",x"20",x"20",x"20",x"20",x"20",x"20",x"20",x"20",x"20",x"20",x"20",x"20",x"20",x"20",x"20",x"20",x"20",x"20",x"20",x"20",x"20",x"20",x"20",x"20"); -- EDA's EDALAB --signal lcd_clk:std_logic; signal datacnt:integer range 0 to 39:=0; signal ramcnt:integer range 0 to 2:=0; signal delay_count,num_count:integer:=0; signal state_change,clk1:std_logic; begin lcd_rw if(datacnt=0) then data if(ramcnt=0) then lcd_rs if(ramcnt=0) then if datacnt=39 then data --0xc0 : 1100 0000=40H 设定第二行读写地址位 if(ramcnt=0) then lcd_rs if(ramcnt=0) then data if(ramcnt=0) then lcd_rs if(ramcnt=0) then if datacnt=39 then data state

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客