1、0V工作温度(Ta):0+50(常温)/ -2070(宽温)三、 接口时序模块有并行和串行两种连接方法(时序如下):a) 8位并行连接时序图图3 MPU写资料到模块图4 MPU从模块读出资料a) 串行连接时序图图5 串行时序图表2 时钟周期表串行数据传送共分三个字节完成:第一字节:串口控制格式 11111ABC A为数据传送方向控制:H表示数据从LCD到MCU,L表示数据从MCU到LCD。 B为数据类型选择: H表示数据室显示数据,L表示数据室控制指令 C固定为0第二字节:(并行)8位数据的高4位格式DDDD0000第三字节:(并行)8位数据的低4位格式DDDD0000串行接口时序参数:(测试
2、条件: T=25 VDD=4.5V)四、 FPGA与LCD连接方式FPGA与LCD连接方式:(仅PK2型含此)。由实验电路结构图COM可知,默认情况下,FPGA是通过89C51单片机控制LCD液晶显示的,但若FPGA中有Nios嵌入式系统,则能使FPGA直接控制LCD显示。方法是拔去此单片机(在右下侧),用连线将座JP22/JP21(LCD显示器引脚信号)各信号分别与座JP19/JP20(FPGA引脚信号)相连接即可。图6 实验电路结构图COM五、 初始化部分的状态机设计根据字符模块初始化的流程图:图7 LCD初始化流程图六、 时钟模块的设计由于FPGA开发板上自带的晶振频率为50MHZ,而所
3、需要的时钟频率则需要小于13.9K。因此需要一个分频器对其进行分频。这里采用简单的计数器对其进行分频,通过分频器将外部输入的32 MHZ的信号分成频率为153600HZ的信号。在分频之后由于时钟信号需要同时控制LCD模块以及FPGA的模块,因此需要编写一个程序,使得两者之间同步。LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY baud IS port(clk,resetb:in std_logic; bclk:out std_
4、logic);end baud;architecture Behavioral of baud isbeginprocess(clk,resetb)variable cnt:integer;if resetb=1 thencnt:=0;bclk=208 then cnt:else cnt:=cnt+1;end if;end process;end behavioral;图8 时钟模块图9 系统的仿真图形七、 中文字符部分的数据模块中文部分由于VHDL中无法识别中文,使用时需要参照中文字符表,将需要的字符所对应的数据输入RAM,然后通过和英文模块不重复的符号来实现对其的调用。constant d
5、ata_buf : data_buffer := (xbd,xad);本程序驱动液晶显示“赣南师范学院课程设计” “班级”“姓名”“日期”Library IEEE;Use IEEE.STD_LOGIC_1164.ALL;Use IEEE.STD_LOGIC_ARITH.ALL;Use IEEE.STD_LOGIC_UNSIGNED.ALL;entity LCD isgeneric(divide_to_100k :integer:=1000);Port(clk, rst:in STD_LOGIC;Rw, rs, e, lcd_rst :out STD_LOGIC;Lcd_data:out STD
6、_LOGIC_VECTOR(7 downto 0); end LCD;architecture Behavioral of LCD issignal clk_100k:std_logic;type state is(s0,s1,s2,s3,s4);signal current_s: state ;type data_buffer is array (0 to 43) of std_logic_vector ( 7 downto 0 ) ;cef7,xc0edb9a4, b4f3d1a7d3a6c3bfc6d4bab3ccc9e8bcb0e0b6d0d5fbc8daprocess(clk)int
7、eger range 0 to divide_to_100k;if rising_edge(clk)then cnt:if cnt=divide_to_100k then cnt:if cntdivide_to_100k/2 then clk_100k= else clk_100k process(clk_100k)variable cnt1:integer range 0 to 500;variable cnt1_1:integer range 0 to 100;variable code_cnt:integer range 0 to 13;variable data_cnt:integer
8、 range 0 to 48;if rising_edge(clk_100k)thenif rst = then current_s = s0 ; cnt1 := 0 ;cnt1_1 := 0;code_cnt : data_cnt : lcd_rst rwrs e cnt1:=cnt1+1;if cnt1 250 then lcd_rst elsif cnt1 500 then lcd_rst elsif cnt1=500 then lcd_rst cnt1 :current_s cnt1_1:=cnt1_1+1;if cnt1_1 1*3 then e rw elsif cnt1_12*3
9、 then lcd_data=x0c10*3 then eelsif cnt1_1=10*3 then cnt1_1:current_sif cnt1_11*3 then ersrw=data_buf(data_cnt);elsif cnt1_1=2*3 then data_cnt:= data_cnt+1;100 then eif cnt1_1=100 then cnt1_1:if data_cnt=16 then current_s=s0;end case;end Behavioral;图10 显示文字的模块图11 系统的仿真图形八、 图形的数据模块ENTITY lcdlinehozi I
10、S PORT( CLK,key3: IN STD_LOGIC; CK0,DISP,Hsync,Vsync:OUT STD_LOGIC; rgb:OUT STD_LOGIC_VECTOR(0 TO 23) );END;ARCHITECTURE WX OF lcdlinehozi ISSIGNAL CLK_TEMP1,CLK_TEMP2,CK :STD_LOGIC ;SIGNAL CNT1,CNT2:STD_LOGIC_VECTOR(2 DOWNTO 0);signal cnt:std_logic_vector(1 downto 0);SIGNAL HS_CNT,VS_CNT:INTEGER RANGE 0 TO 525;signal rgbx,rgby: STD_LOGIC_VECTOR(0 TO 23);CONSTANT THp:INTEGER :=41;CONSTANT THb:=2;CONSTANT THf:CONSTANT TVp:=10;CONSTANT TVb:CONSTANT TVF:CONSTANT THd:=480;CONSTANT TVd:
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1