液晶显示驱动电路的设计与实现(4课时)_第1页
液晶显示驱动电路的设计与实现(4课时)_第2页
液晶显示驱动电路的设计与实现(4课时)_第3页
液晶显示驱动电路的设计与实现(4课时)_第4页
液晶显示驱动电路的设计与实现(4课时)_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验六 液晶显示驱动电路的设计与实现(4课时)实验目的1.熟练掌握设计电路下载到芯片的关键设置与基本步骤和利用实验箱上的输入信号和输出显示器件在线测试设计电路的方法。2.熟悉液晶显示的原理,了解液晶显示器件的性能特点、分类参数。掌握液晶显示器件的接口时序与通讯格式。3.掌握利用VHDL语言设计液晶显示器件驱动电路的方法。实验原理1.中文液晶显示模块(OCMJ128X32)的引脚说明引脚名称方向说明其它1VLED+I背光电源正极(LED+5v)2VLED-I背光电源负极(LED-5v)3VSSI地4VDDI(+5v)5REQI请求信号,高电平有效。6BUSYO应答信号=1:已经收到数据并正在处理

2、中 =0:模块空闲,可以接受数据7-14DB0DB7I数据0数据72.接口时序说明编号名称单位最小值最大值说明1TruS0.4-数据线上数据稳定时间2TbuS220最大模块响应时间3TrtuS11-最小REQ保持时间4Ts1uS2045最大数据接收时间5Ts2uS-0.1-30最大命令指令处理时间3.用户命令格式(1)实验用液晶显示器模块(OCMJ)命令帧分为操作码及操作数两部分。(2)字符命令:1、显示国标汉字,2、显示8X8ASCII字符,3、显示8X16ASCII字符 图形显示命令:4、显示位点阵,5、显示字节点阵 屏幕控制命令:6、清屏,7、上移,8、下移、9、左移、10、右移(3)命

3、令帧 显示国标汉字 命令格式:F0 XX YY QQ WW XX:为以汉字为单位的屏幕行坐标值,取值范围00到07。 YY:为以汉字为单位的屏幕列坐标值,取值范围00到01。 QQ WW:坐标位置上要显示的GB2310汉字区位码。4其它未尽内容请参见实验指导书(P188-P200)实验内容与要求1.设计一个液晶显示驱动电路,要求能够显示两行不少于14个字的汉字字符,且具有清屏、左移、上移功能。显示内容自定。(6分)2.设计一个液晶显示驱动电路,要求能够显示至少两个周期的三角波形,并显示“T=30mS”的字样。(4分)3.在上述2的基础上增加显示方波的功能,且可通过按键实现三角波和方波的切换显示

4、(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; -右移命令 busy: in std_logic; -忙信号标志 data : out std_logic_vector(7 downto 0); -

5、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); -五个字节命令的计数器 signal sel:std_logic; -显示十六个汉字的进位时钟信号 signal gateclock:std_

6、logic; -5个字节命令的计数器时钟信号 signal scanclk:std_logic; -分频时钟信号 begin process(clk,scanclk) variable scan: std_logic_vector(20 downto 0); -分频进程 begin if clk'event and clk='1' then if scan="111111111111111111111" then scan:="000000000000000000000" else scan:=scan+1; end if; en

7、d if; scanclk<=scan(3); end process; process(gateclock) -5个字节计数器的进程 begin if gateclock'event and gateclock='1' then if count="100" then count<="000" else count<=count+1; end if; end if; end process; process (scanclk) is begin if rising_edge(scanclk) then if b

8、usy = '0' then if clear = '1' then data<=x"f4" elsif right='1' then data<=x"f5" elsif left='1' then data<=x"f7" else case count is when "000"=>data<=x"f0" sel<='0' when "001"=>dat

9、a<=s(31 downto 24); when "010"=>data<=s(23 downto 16);sel<='1' when "011"=>data<=s(15 downto 8); when "100"=>data<=s(7 downto 0); when others=>null; end case; end if; gateclock<='1' ELSE gateclock<='0' end if; end

10、 if; end process; req<='1' when gateclock='1' else '0' process(sel) begin if sel'event and sel='0' then n<=n+1; case n is when "0000"=> s<=x"00003416" -分别是"xx,yy,qq,ww" when "0001"=> s<=x"0100292F"

11、; when "0010"=> s<=x"02001A0E" when "0011"=> s<=x"0300291D" when "0100"=> s<=x"04002A0F" when "0101"=> s<=x"05001E16" when "0110"=> s<=x"06003011" when "0111"=&

12、gt; s<=x"07001625" when "1000"=> s<=x"00011037" when "1001"=> s<=x"01013426" when "1010"=> s<=x"0201294E" when "1011"=> s<=x"03011406" when "1100"=> s<=x"04013330

13、" when "1101"=> s<=x"0501282B" when "1110"=> s<=x"06011C32" when "1111"=> s<=x"07012421" when others=>null; end case; end if; end process; end architecture; 2.library ieee;use ieee.std_logic_1164.all;use ieee.std_l

14、ogic_unsigned.all;entity zjf2 is port(clock,busy:in std_logic; req:out std_logic; DATE:out std_logic_vector(7 to 0);end entity zjf2 ;architecture art of zjf2 issignal r: std_logic;signal db,db3,db4: std_logic_vector(7 to 0);signal js:std_logic_vector(3 downto 0);signal n: std_logic_vector(10 to 0);s

15、ignal b,clk1,clk2:std_logic;signal XX,YY:std_logic_vector(7 downto 0);signal sl:std_logic_vector(2 downto 0); begin req<=r; DATE<=db; process(clock) is begin if clock'event and clock='1' then if busy='0' then r<='1' else r<='0' case sl is when "00

16、0"=> db<=X"F2" clk1<='1' when "001"=> db<=XX; clk1<='0' when "010"=> db<=YY; when "011"=> db<=X"F1" clk2<='1' when "100"=> db<=db3; clk2<='0' when "101"

17、;=> db<=X"17"-列 when "110"=> db<=db4; when others =>null; end case; if sl="110" then sl<="000" else sl<=sl+1; end if; end if; end if; end process;process(clk1)-三角波 begin if clk1'event and clk1='1' then -127进制 if XX=X"7F&qu

18、ot; then-7f XX<=X"00" else XX<=XX+1; end if; if b='0' then -79进制 if YY=X"1F" then-1f b<='1' else YY<=YY+1; end if; elsif b='1' then if YY=X"00" then b<='0' else YY<=YY-1; end if; end if; end if; end process;process(clk2)-字符显示 begin if clk2'event and clk2='1' then if js="1011" then js<="0000" else js<=js+1; end if; case js is when "0000"=> db3<=X"05" when "0001"

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论