(1)AT070TN92 LCD的驱动时序,见手册。以下为VHDL源码。

--***********************************************************
--
-- TFT LOGIC
--
-- Author:HanBiao
-- Date:2011-11-26
--Version:V000B000D000
--
--***********************************************************

library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
use ieee.std_logic_arith.all;
use ieee.numeric_std.all;

entity AT070TN92_DRV is

port
 (
  --***************************************************
  --
  -- TFT LCD INTERFACE
  --
  --***************************************************
  R  : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
  G  : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
  B  : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
  DE  : OUT STD_LOGIC;
  HS  : OUT STD_LOGIC;
  VS  : OUT STD_LOGIC;
  DCLK : OUT STD_LOGIC;
  MODE : OUT STD_LOGIC;
  LR  : OUT STD_LOGIC;
  UD  : OUT STD_LOGIC;
  DITHB : OUT STD_LOGIC;
  --***************************************************
  --
  -- TFT LCD INTERFACE
  --
  --***************************************************
  BEEN : OUT STD_LOGIC;
  TEST : OUT STD_LOGIC;
  PWM_LCD : OUT STD_LOGIC;
  K2  : IN STD_LOGIC;
  K3  : IN STD_LOGIC;
  K4  : IN STD_LOGIC;
  CLK  : IN STD_LOGIC;
  RESET : IN STD_LOGIC 
 );

end entity;

architecture rtl of AT070TN92_DRV is

signal   clk_div_5mhz : std_logic;
 signal   clk_div_10mhz : std_logic;
 signal   pol_temp  : std_logic;
 signal   vsp_temp  : std_logic;
 signal   vck_temp  : std_logic;
 
 signal  HS_temp   : std_logic;
 signal  VS_temp   : std_logic;
 signal  DE_H   : std_logic;
 signal  DE_V   : std_logic;
 
 signal  h_data   : std_logic_vector(23 downto 0);
 signal  v_data   : std_logic_vector(23 downto 0);
 signal  lcd_data  : std_logic_vector(23 downto 0);
 
 signal  SW_data   : integer range 0 to 8;
 signal  pwm    : std_logic;
 
 constant thpw   : integer := 22; 
 constant thb    : integer := 22; 
 constant thd    : integer := 800; 
 constant thfp   : integer := 22; 
 constant th    : integer := thpw + thb + thd + thfp; --1064
 
 constant tvpw   : integer := 11; 
 constant tvb    : integer := 11; 
 constant tvd    : integer := 480; 
 constant tvfp   : integer := 11; 
 constant tv    : integer := tvpw + tvb + tvd + tvfp; --528
 
 signal x_cnt  : integer range 0 to th + 100;
 signal y_cnt  : integer range 0 to tv + 100;
 
begin
 
 DCLK <= CLK;
 BEEN <= '1';
 TEST <= clk_div_10mhz;
 HS <= HS_temp;
 VS <= VS_temp;
 MODE <= '0';
 LR <= '0';
 UD <= '1';
 DITHB <= '0';
 DE <= DE_H and DE_V;
 R <= h_data(23 downto 16);
 G <= h_data(15 downto 8);
 B <= h_data(7 downto 0);
 PWM_LCD <= pwm;

--***************************************************
 --
 -- TFT LCD LOGIC
 --
 --***************************************************
 process(CLK,RESET)is
  variable pwm_cnt : integer range 0 to 90000;
 begin
  if(RESET = '0') then 
   x_cnt <= 0;
   y_cnt <= 0;
   pwm_cnt := 0;
  elsif(CLK'event and CLK = '0') then
   x_cnt <= x_cnt + 1;
   if(x_cnt = th) then
    x_cnt <= 0;
    y_cnt <= y_cnt + 1;
    if(y_cnt = tv) then
     y_cnt <= 0;
    end if;
   end if;
   pwm_cnt := pwm_cnt + 1;
   if (pwm_cnt = 90000) then
    pwm <= not pwm;
    pwm_cnt := 0;
   end if;
  end if;
 end process;
 
 --***************************************************
 --
 -- TFT LCD  LOGIC
 --
 --***************************************************
 process(CLK,RESET)is
  begin
   if(RESET = '0') then
    DE_H <= '0';
    DE_V <= '0';
   else
    if(x_cnt >= thb + thpw) and (x_cnt <= thb + thpw + thd)then
     DE_H <= '1';
    else
     DE_H <= '0';
    end if;
    if(y_cnt >=  tvb + tvpw) and (y_cnt <=  tvb + tvpw + tvd)then
     DE_V <= '1';
    else
     DE_V <= '0';
    end if;
   end if;
 end process;
 
 
 --***************************************************
 --
 -- TFT LCD  LOGIC
 --
 --***************************************************
 process(CLK,RESET)is
  begin
--   if(CLK'event and CLK = '1') then
   if(RESET = '0') then
    HS_temp <= '1';
    VS_temp <= '0';
   else
    if(x_cnt >= thpw) then
     HS_temp <= '1';
    else
     HS_temp <= '0';
    end if;
    if(y_cnt >= tvpw) then
     VS_temp <= '1';
    else
     VS_temp <= '0';
    end if;
   end if;
--   end if;
 end process;
 
 
 --***************************************************
 --
 -- TFT LCD  H Data LOGIC
 --
 --***************************************************
 process(CLK,RESET)is
  begin
   if((x_cnt > thb + thpw) and (x_cnt <= thb + thpw + 100)
    and (y_cnt >= tvb + tvpw) and (y_cnt <= tvb + tvpw + tvd))then
    h_data <= "000000001111111111111111";
   elsif((x_cnt > thb + thpw + 100) and (x_cnt <= thb + thpw + 200)
    and (y_cnt >= tvb + tvpw) and (y_cnt <= tvb + tvpw + tvd))then
    h_data <= "111111110000000011111111";
   elsif((x_cnt > thb + thpw + 200) and (x_cnt <= thb + thpw + 300)
    and (y_cnt >= tvb + tvpw) and (y_cnt <= tvb + tvpw + tvd))then
    h_data <= "111111111111111100000000";
   elsif((x_cnt > thb + thpw + 300) and (x_cnt <= thb + thpw + 400)
    and (y_cnt >= tvb + tvpw) and (y_cnt <= tvb + tvpw + tvd))then
    h_data <= "000000000000000011111111";
   elsif((x_cnt > thb + thpw + 400) and (x_cnt <= thb + thpw + 500)
    and (y_cnt >= tvb + tvpw) and (y_cnt <= tvb + tvpw + tvd))then
    h_data <= "000000001111111111111111";
   elsif((x_cnt > thb + thpw + 500) and (x_cnt <= thb + thpw + 600)
    and (y_cnt >= tvb + tvpw) and (y_cnt <= tvb + tvpw + tvd))then
    h_data <= "000000001111111100000000";
   elsif((x_cnt > thb + thpw + 600) and (x_cnt <= thb + thpw + 700)
    and (y_cnt >= tvb + tvpw) and (y_cnt <= tvb + tvpw + tvd))then
    h_data <= "111111110000000011111111";
   elsif((x_cnt > thb + thpw + 700) and (x_cnt <= thb + thpw + thd)
    and (y_cnt >= tvb + tvpw) and (y_cnt <= tvb + tvpw + tvd))then
    h_data <= "111111110000000000000000";
   end if; 
 
--   if((x_cnt >= thb + thpw) and (x_cnt <= thb + thpw + thd)
--    and (y_cnt > tvb + tvpw) and (y_cnt <= tvb + tvpw + 100))then
--    h_data <= "000000001111111111111111";
--   elsif((x_cnt >= thb + thpw) and (x_cnt <= thb + thpw + thd)
--    and (y_cnt > tvb + tvpw + 100) and (y_cnt <= tvb + tvpw + 200))then
--    h_data <= "111111100000000111111111";
--   elsif((x_cnt >= thb + thpw) and (x_cnt <= thb + thpw + thd)
--    and (y_cnt > tvb + tvpw + 100) and (y_cnt <= tvb + tvpw + 300))then
--    h_data <= "111111111111111100000000";
--   elsif((x_cnt >= thb + thpw) and (x_cnt <= thb + thpw + thd)
--    and (y_cnt > tvb + tvpw + 100) and (y_cnt <= tvb + tvpw + 400))then
--    h_data <= "000000001111111111111111";
--   elsif((x_cnt >= thb + thpw) and (x_cnt <= thb + thpw + thd)
--    and (y_cnt > tvb + tvpw + 100) and (y_cnt <= tvb + tvpw + tvd))then
--    h_data <= "111111100000000111111111";
--   end if;    
  
 end process;
 
end rtl;
(2)驱动实物见图片!

FPGA VHDL 驱动群创 TFT LCD AT070TN92相关推荐

  1. S3C2440A驱动RGB接口TFT LCD的研究(转载)

    S3C2440A驱动RGB接口TFT LCD的研究 时间: 2009-02-25 11:29:50 来源:嵌入式在线 作者:纪宁宁,孙灵燕 1 引言     随着科技的进步,TFT LCD作为显示器件 ...

  2. 当TFT LCD液晶屏出现残影时该如何解决?

    TFT LCD 液晶屏 残影也叫"烧屏".在阴极射线管显示器中,这将导致磷的磨损,图案将被烧入显示器.但在液晶屏上使用时,不涉及实际加热或燃烧.如果在使用TFT LCD 液晶屏时遇 ...

  3. 【正点原子FPGA连载】 第二十九章TFT LCD画板实验 摘自【正点原子】DFZU2EG_4EV MPSoC之嵌入式Vitis开发指南

    1)实验平台:正点原子MPSoC开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id=692450874670 3)全套实验源码+手册+视频下载地址: h ...

  4. ESP8266-Arduino编程实例-2.8寸TFT LCD驱动(ILI9341控制器)

    2.8寸TFT LCD驱动(ILI9341控制器) 液晶显示器 (LCD) 是一种平板显示器或其他电子调制光学设备,它利用液晶与偏振器的光调制特性.液晶不直接发光,而是使用背光或反射器来产生彩色或单色 ...

  5. STM32 FSMC接口驱动4.3寸TFT LCD屏

    STM32 FSMC接口驱动4.3寸TFT LCD屏 STM32的FSMC接口是并行总线接口,可以用于驱动存储芯片如FLASH/SRAM等,也可以用于驱动并口LCD屏. 这里以STM32F103VET ...

  6. STM32 驱动4.3寸TFT LCD 触摸屏

    STM32 驱动4.3寸TFT LCD 触摸屏 STM32的FSMC接口是并行总线接口,可以用于驱动存储芯片如FLASH/SRAM等,也可以用于驱动并口LCD屏.触摸屏是在显示屏上覆盖一层触摸感应的外 ...

  7. 高云FPGA实现驱动MIPI LCD屏

    高云FPGA实现驱动MIPI LCD屏 1.最高支持4lane数据. 2.自主MIPI IP core,可以支持LATTICE.XILINX.ALTERA 厂家FPGA.国内高云.安陆等厂家. 3.点 ...

  8. 简单明了操作——ESP8266 NodeMCU驱动TFT LCD液晶屏(制作透明小电视前奏)

    简单明了操作--ESP8266 NodeMCU驱动TFT LCD液晶屏(制作透明小电视前奏) 前言 准备材料 esp8266 NodeMCU(串口WiFi模块) 1.44inch SPI Arduin ...

  9. AT32驱动TFT LCD显示示例

    1.1 案例 TFT LCD显示 1.1.1 简介 TFT LCD液晶显示屏是薄膜晶体管型液晶显示屏,TFT液晶每个像素都可以单独控制,因而每个节点都相对独立,并可以连续控制,这不仅提高了显示的反应速 ...

  10. fpga驱动rgb液晶屏_以ARM+FPGA结构驱动高分辨率液晶显示设计与效果测试

    摘 要: 结合ARM操作灵活和FPGA实时处理的优点,提出采用ARM+FPGA结构驱动高分辨率RGB888液晶显示屏.ARM接口丰富.操作灵活可以满足客户操作方便的需求:FPGA模块采用FPGA+DD ...

最新文章

  1. atitit.跨架构 bs cs解决方案. 自定义web服务器的实现方案 java .net jetty  HttpListener...
  2. 2017年高性能计算领域的成功与失败
  3. DPDK — 安装部署(Ubuntu 18.04)
  4. 再见Navicat!这个工具才是YYDS!
  5. Git 提交代码 简单步骤
  6. 递推与储存,是动态规划的关键
  7. matlab怎么重新打开新的代码,方程求解程序代码求助-程序代码修改或新的代码...
  8. DataBinding注意事项Error parsing XML: duplicate attribute以及如何在listview中使用DataBinding...
  9. sqlsever无法重新启动计算机,SQLServer 2008安装提示需要重启计算机,但是重启还是不通过解决方案...
  10. 依赖倒置原则_设计模式原则之依赖倒置原则
  11. 支离破碎的 Android
  12. Vue+axios+Node+express实现文件上传(用户头像上传)
  13. fm足球经理Football Manager 2022 for mac(真实模拟游戏)中文版
  14. 安卓APK文件结构解析 怎样去除内置广告 及修改图标和文字
  15. 判断图有无环_汽车 AEB 驾驶员在环系统建立
  16. python爬取必应的壁纸
  17. Express Session的使用
  18. Ubuntu的root
  19. Smart3D空三不过的解决办法
  20. foobar2000 iOS使用,并连接PC的歌曲进行播放

热门文章

  1. java中POJO、PO、BO、VO、DTO和DAO的概念
  2. python实现DES加密解密
  3. 学会如何带领一个团队
  4. 2022-2027年(新版)中国石油化工行业发展建议及投资前景展望报告
  5. 【Oracle】交差并补
  6. 游戏公司可能碰到哪些知识产权问题?
  7. 未备案域名可以用吗?域名备案有什么好处?
  8. Box2DSharp使用手册#1
  9. steam桌面图标空白问题解决
  10. python3实现扫码获取微信openid功能