1、实验六 液晶显示驱动电路的设计与实现(4 课时)实验目的1.熟练掌握设计电路下载到芯片的关键设置与基本步骤和利用实验箱上的输入信号和输出显示器件在线测试设计电路的方法。2.熟悉液晶显示的原理,了解液晶显示器件的性能特点、分类参数。掌握液晶显示器件的接口时序与通讯格式。3.掌握利用 VHDL 语言设计液晶显示器件驱动电路的方法。实验原理1.中文液晶显示模块(OCMJ128X32)的引脚说明引脚 名称方向 说明 其它1 VLED+ I 背光电源正极(LED+5v)2 VLED- I 背光电源负极(LED-5v)3 VSS I 地4 VDD I (+5v)5 REQ I 请求信号,高电平有效。6 B
2、USY O应答信号=1:已经收到数据并正在处理中=0:模块空闲,可以接受数据7-14DB0DB7 I 数据 0数据 72.接口时序说明编号 名称单位最小值最大值说明1 Tr uS 0.4 - 数据线上数据稳定 时间2 Tb uS 2 20 最大模块响应时间3 Trt uS 11 - 最小 REQ 保持时间4 Ts1 uS 20 45 最大数据接收时间5 Ts2 uS - 0.1-30 最大命令指令处理 时间3.用户命令格式(1)实验用液晶显示器模块(OCMJ)命令帧分为操作码及操作数两部分。(2)字符命令:1、显示国标汉字,2、显示 8X8ASCII 字符,3、显示 8X16ASCII 字符图
3、形显示命令:4、显示位点阵,5、显示字节点阵屏幕控制命令:6、清屏,7、上移,8、下移、9、左移、10、右移(3)命令帧显示国标汉字命令格式:F0 XX YY QQ WWXX:为以汉字为单位的屏幕行坐标值,取值范围 00 到 07。YY:为以汉字为单位的屏幕列坐标值,取值范围 00 到 01。QQ WW:坐标位置上要显示的 GB2310汉字区位码。4其它未尽内容请参见实验指导书(P188-P200)实验内容与要求1.设计一个液晶显示驱动电路,要求能够显示两行不少于 14 个字的汉字字符,且具有清屏、左移、上移功能。显示内容自定。 (6 分)2.设计一个液晶显示驱动电路,要求能够显示至少两个周期
4、的三角波形,并显示“T=30mS”的字样。 (4 分)3.在上述 2 的基础上增加显示方波的功能,且可通过按键实现三角波和方波的切换显示(3) 。1.library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; use ieee.std_logic_arith.all; entity zjf1 is port(clk: in std_logic; clear: in std_logic; -清零命令 left: in std_logic; -左移命令 right: in std_logic; -右移命令
5、busy: in std_logic; -忙信号标志 data : out std_logic_vector(7 downto 0); -8 位数据输出 req : out std_logic); -请求信号 end entity zjf1; architecture art of zjf1 is signal s:std_logic_vector(31 downto 0); -汉字高位和低位的区位码 signal n:std_logic_vector(3 downto 0); -显示十六个汉字的选择信号 signal count:std_logic_vector(2 downto 0); -
6、五个字节命令的计数器 signal sel:std_logic; -显示十六个汉字的进位时钟信号 signal gateclock:std_logic; -5 个字节命令的计数器时钟信号 signal scanclk:std_logic; -分频时钟信号 begin process(clk,scanclk) variable scan: std_logic_vector(20 downto 0); -分频进程 begin if clkevent and clk=1 then if scan=“111111111111111111111“ then scan:=“0000000000000000
7、00000“; else scan:=scan+1; end if; end if; scanclkdatadatadatadatadatanull; end case; end if; gateclock s s s s s s s s s s s s s s s snull; end case; end if; end process; end architecture; 2.library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity zjf2 isport(clock,busy:in std_logic;req:out std_logic;