FPGA VHDL 驱动群创 TFT LCD AT070TN92
(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相关推荐
- S3C2440A驱动RGB接口TFT LCD的研究(转载)
S3C2440A驱动RGB接口TFT LCD的研究 时间: 2009-02-25 11:29:50 来源:嵌入式在线 作者:纪宁宁,孙灵燕 1 引言 随着科技的进步,TFT LCD作为显示器件 ...
- 当TFT LCD液晶屏出现残影时该如何解决?
TFT LCD 液晶屏 残影也叫"烧屏".在阴极射线管显示器中,这将导致磷的磨损,图案将被烧入显示器.但在液晶屏上使用时,不涉及实际加热或燃烧.如果在使用TFT LCD 液晶屏时遇 ...
- 【正点原子FPGA连载】 第二十九章TFT LCD画板实验 摘自【正点原子】DFZU2EG_4EV MPSoC之嵌入式Vitis开发指南
1)实验平台:正点原子MPSoC开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id=692450874670 3)全套实验源码+手册+视频下载地址: h ...
- ESP8266-Arduino编程实例-2.8寸TFT LCD驱动(ILI9341控制器)
2.8寸TFT LCD驱动(ILI9341控制器) 液晶显示器 (LCD) 是一种平板显示器或其他电子调制光学设备,它利用液晶与偏振器的光调制特性.液晶不直接发光,而是使用背光或反射器来产生彩色或单色 ...
- STM32 FSMC接口驱动4.3寸TFT LCD屏
STM32 FSMC接口驱动4.3寸TFT LCD屏 STM32的FSMC接口是并行总线接口,可以用于驱动存储芯片如FLASH/SRAM等,也可以用于驱动并口LCD屏. 这里以STM32F103VET ...
- STM32 驱动4.3寸TFT LCD 触摸屏
STM32 驱动4.3寸TFT LCD 触摸屏 STM32的FSMC接口是并行总线接口,可以用于驱动存储芯片如FLASH/SRAM等,也可以用于驱动并口LCD屏.触摸屏是在显示屏上覆盖一层触摸感应的外 ...
- 高云FPGA实现驱动MIPI LCD屏
高云FPGA实现驱动MIPI LCD屏 1.最高支持4lane数据. 2.自主MIPI IP core,可以支持LATTICE.XILINX.ALTERA 厂家FPGA.国内高云.安陆等厂家. 3.点 ...
- 简单明了操作——ESP8266 NodeMCU驱动TFT LCD液晶屏(制作透明小电视前奏)
简单明了操作--ESP8266 NodeMCU驱动TFT LCD液晶屏(制作透明小电视前奏) 前言 准备材料 esp8266 NodeMCU(串口WiFi模块) 1.44inch SPI Arduin ...
- AT32驱动TFT LCD显示示例
1.1 案例 TFT LCD显示 1.1.1 简介 TFT LCD液晶显示屏是薄膜晶体管型液晶显示屏,TFT液晶每个像素都可以单独控制,因而每个节点都相对独立,并可以连续控制,这不仅提高了显示的反应速 ...
- fpga驱动rgb液晶屏_以ARM+FPGA结构驱动高分辨率液晶显示设计与效果测试
摘 要: 结合ARM操作灵活和FPGA实时处理的优点,提出采用ARM+FPGA结构驱动高分辨率RGB888液晶显示屏.ARM接口丰富.操作灵活可以满足客户操作方便的需求:FPGA模块采用FPGA+DD ...
最新文章
- atitit.跨架构 bs cs解决方案. 自定义web服务器的实现方案 java .net jetty HttpListener...
- 2017年高性能计算领域的成功与失败
- DPDK — 安装部署(Ubuntu 18.04)
- 再见Navicat!这个工具才是YYDS!
- Git 提交代码 简单步骤
- 递推与储存,是动态规划的关键
- matlab怎么重新打开新的代码,方程求解程序代码求助-程序代码修改或新的代码...
- DataBinding注意事项Error parsing XML: duplicate attribute以及如何在listview中使用DataBinding...
- sqlsever无法重新启动计算机,SQLServer 2008安装提示需要重启计算机,但是重启还是不通过解决方案...
- 依赖倒置原则_设计模式原则之依赖倒置原则
- 支离破碎的 Android
- Vue+axios+Node+express实现文件上传(用户头像上传)
- fm足球经理Football Manager 2022 for mac(真实模拟游戏)中文版
- 安卓APK文件结构解析 怎样去除内置广告 及修改图标和文字
- 判断图有无环_汽车 AEB 驾驶员在环系统建立
- python爬取必应的壁纸
- Express Session的使用
- Ubuntu的root
- Smart3D空三不过的解决办法
- foobar2000 iOS使用,并连接PC的歌曲进行播放