第十课 LCD彩条显示实验

基于fpga的lcd显示 LCD,即液晶显示器(Liquid Crystal Display),是一种广泛使用的平面显示器技术。LCD显示原理主要基于液晶材料的光学特性,通过控制液晶分子的排列来调节光线的透过率,从而实现图像的显示。以下是LCD显示原理的基本步骤:背光系统:LCD显示器的背光系统通常由LED或冷阴极荧光灯(CCFL)组成,提供均匀的光线。偏振片:背光上方和下方各有一个偏振片,它们只允许特定方向的光通过。彩色滤光片:在偏振片上方,有一层彩色滤光片,它包含红、绿、蓝三种颜色的像素点,用于生成彩色图像。 阅读详情

一. 分辨率:1080P 的意思就是一个 LCD 屏幕上的像素数量是 1920*1080 个,也就是这个屏幕一列 1080 个像素点,一共 1920 列

像素格式:一个 R、G、B 这三部分分别使 用 8bit 的数据,那么一个像素点就是 8bit*3=24bit,也就是说一个像素点 3 个字节,这种像素格式称为 RGB888。

红色对应的值就是 24’hFF0000,绿色对应的值就是 24’h00FF00,蓝色对应的 值为 24’h0000FF。通过调节 R、G、B 的比例可以产生其它的颜色,比如 24’hFFFF00 就是黄色,24’h000000就是黑色,24’hFFFFFF 就是白色。

屏幕接口:

扫描原理:

HSYNC 是水平同步信号,也叫做行同步信号,当产生此信号的话就表示开始显示新的一行了,所以此信号 都是在图 17.1.6 的最左边。VSYNC 信号是垂直同步信号,也叫做帧同步信号,当产生此信号的话就表示开 始显示新的一帧图像

屏幕时序:

HSYNC:行同步信号,当此信号有效的时候就表示开始显示新的一行数据,查阅所使用的 LCD 数据手 册可以知道此信号是低电平有效还是高电平有效,图 17.1.7 为低电平有效。 HSPW:行同步信号宽度,也就是 HSYNC 信号持续时间。HSYNC 信号不是一个脉冲,而是需要持续 一段时间才是有效的,单位为 CLK。 HBP:行显示后沿(或后肩),单位是 CLK。 HOZVAL:行有效显示区域,即显示一行数据所需的时间,假如屏幕分辨率为 1024*600,那么 HOZVAL就是 1024,单位为 CLK。 HFP:行显示前沿(或前肩),单位是 CLK。当 HSYNC 信号发出以后,需要等待 HSPW+HBP 个 CLK 时间才会接收到真正有效的像素数据。当显 示完一行数据以后需要等待 HFP 个 CLK 时间才能发出下一个 HSYNC 信号,所以显示一行所需要的时间就 是:HSPW + HBP + HOZVAL + HFP。

VSYNC:帧(场)同步信号,当此信号有效的时候就表示开始显示新的一帧数据,查阅所使用的 LCD数据手册可以知道此信号是低电平有效还是高电平有效,图 17.1.8 为低电平有效。 VSPW:帧同步信号宽度,也就是 VSYNC 信号持续时间,单位为 1 行的时间。 VBP:帧显示后沿(或后肩),单位为 1 行的时间。 LINE:帧有效显示区域,即显示一帧数据所需的时间,假如屏幕分辨率为 1024*600,那么 LINE 就是600 行的时间。 VFP:帧显示前沿(或前肩),单位为 1 行的时间。显示一帧所需要的时间就是:VSPW+VBP+LINE+VFP 个行时间,最终的计算公式: T = (VSPW+VBP+LINE+VFP) * (HSPW + HBP + HOZVAL + HFP)

像素时钟:

实验任务:本节的实验任务是使用正点原子 ZYNQ 开发板上的 RGB TFT-LCD 接口,驱动 RGB LCD 液晶屏(支 持目前推出的所有 RGB LCD 屏),并显示出彩条。

二 硬件设计

约束:set_property -dict {PACKAGE_PIN U18 IOSTANDARD LVCMOS33} [get_ports sys_clk] set_property -dict {PACKAGE_PIN N16 IOSTANDARD LVCMOS33} [get_ports sys_rst_n] set_property -dict {PACKAGE_PIN W18 IOSTANDARD LVCMOS33} [get_ports {lcd_rgb[0]}] set_property -dict {PACKAGE_PIN W19 IOSTANDARD LVCMOS33} [get_ports {lcd_rgb[1]}] set_property -dict {PACKAGE_PIN R16 IOSTANDARD LVCMOS33} [get_ports {lcd_rgb[2]}] set_property -dict {PACKAGE_PIN R17 IOSTANDARD LVCMOS33} [get_ports {lcd_rgb[3]}] set_property -dict {PACKAGE_PIN W20 IOSTANDARD LVCMOS33} [get_ports {lcd_rgb[4]}] set_property -dict {PACKAGE_PIN V20 IOSTANDARD LVCMOS33} [get_ports {lcd_rgb[5]}] set_property -dict {PACKAGE_PIN P18 IOSTANDARD LVCMOS33} [get_ports {lcd_rgb[6]}] set_property -dict {PACKAGE_PIN N17 IOSTANDARD LVCMOS33} [get_ports {lcd_rgb[7]}] set_property -dict {PACKAGE_PIN V17 IOSTANDARD LVCMOS33} [get_ports {lcd_rgb[8]}] set_property -dict {PACKAGE_PIN V18 IOSTANDARD LVCMOS33} [get_ports {lcd_rgb[9]}] set_property -dict {PACKAGE_PIN T17 IOSTANDARD LVCMOS33} [get_ports {lcd_rgb[10]}] set_property -dict {PACKAGE_PIN R18 IOSTANDARD LVCMOS33} [get_ports {lcd_rgb[11]}] set_property -dict {PACKAGE_PIN Y18 IOSTANDARD LVCMOS33} [get_ports {lcd_rgb[12]}] set_property -dict {PACKAGE_PIN Y19 IOSTANDARD LVCMOS33} [get_ports {lcd_rgb[13]}] set_property -dict {PACKAGE_PIN P15 IOSTANDARD LVCMOS33} [get_ports {lcd_rgb[14]}] set_property -dict {PACKAGE_PIN P16 IOSTANDARD LVCMOS33} [get_ports {lcd_rgb[15]}] set_property -dict {PACKAGE_PIN V16 IOSTANDARD LVCMOS33} [get_ports {lcd_rgb[16]}] set_property -dict {PACKAGE_PIN W16 IOSTANDARD LVCMOS33} [get_ports {lcd_rgb[17]}] set_property -dict {PACKAGE_PIN T14 IOSTANDARD LVCMOS33} [get_ports {lcd_rgb[18]}] set_property -dict {PACKAGE_PIN T15 IOSTANDARD LVCMOS33} [get_ports {lcd_rgb[19]}] set_property -dict {PACKAGE_PIN Y17 IOSTANDARD LVCMOS33} [get_ports {lcd_rgb[20]}] set_property -dict {PACKAGE_PIN Y16 IOSTANDARD LVCMOS33} [get_ports {lcd_rgb[21]}] set_property -dict {PACKAGE_PIN T16 IOSTANDARD LVCMOS33} [get_ports {lcd_rgb[22]}] set_property -dict {PACKAGE_PIN U17 IOSTANDARD LVCMOS33} [get_ports {lcd_rgb[23]}] set_property -dict {PACKAGE_PIN N18 IOSTANDARD LVCMOS33} [get_ports lcd_hs] set_property -dict {PACKAGE_PIN T20 IOSTANDARD LVCMOS33} [get_ports lcd_vs] set_property -dict {PACKAGE_PIN U20 IOSTANDARD LVCMOS33} [get_ports lcd_de] set_property -dict {PACKAGE_PIN M20 IOSTANDARD LVCMOS33} [get_ports lcd_bl] set_property -dict {PACKAGE_PIN P19 IOSTANDARD LVCMOS33} [get_ports lcd_clk] set_property -dict {PACKAGE_PIN L17 IOSTANDARD LVCMOS33} [get_ports lcd_rst]

三 程序设计

输入时序包含三个要素:像素时钟、同步信号、以及图像数据。读取 ID 模块用于获取 LCD 屏的 ID;由于不同分辨率的屏幕需要不同的驱 动时钟,因此时钟分频模块根据 LCD ID 来输出不同频率的像素时钟;LCD 显示模块负责产生液晶屏上显 示的数据,即彩条数据;LCD 驱动模块根据 LCD 屏的 ID,输出不同参数的时序,来驱动 LCD 屏,并将输 入的彩条数据显示到 LCD 屏上。

FPGA 部分包括五个模块,顶层模块(lcd_rgb_colorbar)、读取 ID 模块(rd_id)、 时钟分频模块(clk_div)、LCD 显示模块(lcd_display)以及 LCD 驱动模块(lcd_driver)。其中在顶层模 块中完成对其余模块的例化。

读取 ID 模块(rd_id)在上电时将 RGB 双向数据总线设置为输入,来读取 LCD 屏的 ID;时钟分频模块(clk_div)根据读取的 ID 来配置 LCD 的像素时钟;LCD 驱动模块(lcd_driver)在像素时钟的驱动下输 出数据使能信号用于数据同步,同时还输出像素点的纵横坐标,供 LCD 显示模块(lcd_display)调用,以 绘制彩条图案。

rd_id.v :将flag置1后,根据rgb的第8位判断是哪一款屏幕。

clk_div.v :将50m的系统时钟2分频25m和4分频12.5m时钟。25m(取反),12_5m(cnt为1取反,0保持不变)

always @(*) begin 组合逻辑给id分配clk (不后延),时序逻辑会往后沿一个周期

问题:不理解2分频得到25m时钟的原理。

RGB TFT-LCD彩条显示实验 阅读详情

相关推荐

Arduino程序设计(八)LCD显示实验

本文主要介绍温度/温湿度传感器的LCD显示实验,分别是:1、LM35采集环境温度LCD显示;2、DS18B20采集环境温度LCD显示;3、DHT11采集环境温湿度LCD显示。(1)LM35介绍LM35特性特性说明基本功能LM35作为常用的温度传感器,可以检测周围的温度工作原理利用感温材料,通过内部电路将温度值转化为对应的电压信号工作电压4~30V,常用5V供电温度测量测量范围0~100℃ ,误差 ±0.5℃输出信号线性模拟信号输出,LM35输出电压和摄氏温度程线性关系。

Alice的博客 6712

FPGA学习--RGB-LCD屏彩条显示实验

fpga小白的学习之路

m0_51466525的博客 8136

FPGA小白养成记--RGB-LCD彩条显示实验

1.原理 本次实验的目的是在LCD上显示五条不同颜色的彩带,本次我们采用的像素格式是RGB888,一个像素点为24Bit。 接下来是关于LCD如何显示一帧图像呢?我们是采取从左往右,从上往下的方式扫描每个像素点,并表明每个像素点对应的颜色。根据行显示的时序图,我们可以看到,整个构成并不只是由HSPW构成,它还由HBP+HOZVAL+HFP构成;场信号是一样的。 还有很多细节就不赘述了。 那么我们主要要实现一个什么样的东西呢?首先,我们接上LCD屏幕的时候,要能够自动判断出LCD的型号,也就是分辨率,从而可以

m0_49256296的博客 1999

LCD彩条显示与字符图片显示

液晶是一种介于液体和固体之间的有机化合物。液晶分子在不同电场作用下能够改变其排列状态,进而影响光的透过程度。典型的LCD由两片玻璃之间夹着一层液晶材料构成。这两片玻璃上涂有透明导电层,形成了像素。每个像素由三个互补色的次像素(红、绿、蓝)组成。当电场施加在液晶上时,液晶分子重新排列,使光无法通过。这种状态称为“散射状态”或“阻挡状态”。通过在液晶屏上对每个像素的电场进行调控,可以控制像素的透明度,形成图像。Pixel,是图像的最小单位,由图像的小方格组成的,这些小方块都有一个明确的位置和被分配的色彩数值。

m0_58427556的博客 1548

verilog驱动LCD显示彩条、字符

LCD(liquid crystal display):液晶显示器TFT:薄膜晶体管LCD屏幕接口:常见的LCD屏幕接口有:RGB、MCU、LVDS、MIPI等RGB LCD接口原理图:其中MISO、MOSI是IIC接口;SCK、MISO、MOSI、CS可以组成SPI协议。

xzs520xzs的博客 2040

【FPGA】VGA接口实现LCD屏AN430彩条显示

基于FPGA的VGA接口实现LCD屏AN430彩条显示一、VGA、AN430简介1.VGA2.AN430二、代码1.param.v2.lcd_test3.lcd_driver三、结果展示验证 一、VGA、AN430简介 1.VGA VGA(Video Graphics Array) 是 IBM 在 1987 年随 PS/2 机一起推出的一种视频传输 标准,当时具有分辨率高、显示速率快、颜色丰富等优点,在彩色显示器领域得到了广泛的 应用。 VGA 接口就是显卡上输出模拟信号的接口,也叫 D-Sub 接口。VG

li_lys的博客 2852

LCD液晶显示实验

LCD液晶显示实验

qq_64531765的博客 2585

【FPGA】VGA显示文字、彩条、图片——基于DE2-115

基于DE2-115开发版,VGA用不同分辨率显示文字、彩条、图片。

YouthBlood9的博客 4900

实验(四):LCD1602显示实验

《单片机原理及应用》实验报告(四)【zzuli】

心之所向 1万+

MONAI教程<1>-安装

MONAI的安装非常简单,常用的有两种方法: 直接 pip install monai 从GitHub 上安装 monai是通常配合其他库一起使用的,比如pytorch, nibabel, skimage, pillow等等。缺什么直接pip install 就行

Tina姐的博客 1万+

SOLIDWORKS Flow Simulation 颗粒分离器仿真:从流场分析到分离效率优化

计算流体力学(CFD)是研究流体流动、传热及相关物理现象的核心工具,其基本原理是通过数值方法求解控制流体运动的纳维-斯托克斯方程。在工程实践中,CFD的价值在于能够对复杂流动进行高保真度仿真,从而在产品设计阶段预测性能、优化结构,显著降低物理样机的试制成本和周期。颗粒分离器作为环保、化工、矿业等领域的关键设备,其设计核心在于平衡分离效率与压力损失。借助SOLIDWORKS内嵌的Flow Simulation模块,工程师可以高效地执行流体仿真,特别是对涉及离散相的颗粒运动进行轨迹追踪和效率统计。该技术方案通过

weixin_28709649的博客 327

TFT LCD刷新原理及LCD时序参数总结(LCD时序,写的挺好)

LCD时序参数总结VSYNC信号产生位置HSYNC starts at the beginning of each line: HSYNC在每一个行的开始产生垂直后沿(VBPD, vertical back porch):表示在一帧图像开始时,垂直同步信号以后的无效的行数表示在一帧图像结束后,垂直同步信号曾经的无效的行数垂直同步信号脉宽(VSPW, vertical sync pulse width):表示垂直同步脉冲的宽度,用行数计算。

chungle2011的专栏 6251

蓝牙HCI Dongle实战:从芯片选型到协议栈集成的完整指南

本文详细介绍了蓝牙HCI Dongle的实战应用,从芯片选型到协议栈集成的完整指南。通过对比CSR8510、nRF52840等主流芯片的性能和价格,提供选型建议和避坑技巧。同时,深入解析Zephyr协议栈移植和常见问题排查,帮助开发者高效完成蓝牙项目开发。

weixin_30786657的博客 322

RGB LCD 彩条显示实验

TFT-LCD的全称是,即薄膜晶体管液晶显示屏。1.1分辨率以分辨率1080P举例,指的就是LCD屏幕上的像素数量是1920*1080个。

mengsheng12的博客 1554

Xilinx Vitis arm-xilinx-eabi-gcc.exe: error: *.c: Invalid argument

This problem may be a bugof version 2021.1 only. Unfortunately, I'm just currently using this version. After Build Project: Find where this Makefile is through "make: Leaving directory" information. For me, it is located atZynq_CPU_wrapper_hw_platfo...

Ayka的博客 6663

华为OD机考双机位C卷 - 补种未成活胡杨 (Java & Python& JS & C/C++ & GO )

华为OD机考双机位C卷 - 补种未成活胡杨(OD上机考试双机位C卷)。提供在线OJ刷题。Java、C++、Python、GO语言、C语言、JavaScript题解,并提供完整思路讲解。

算法大师! 2419

16 RGB-LCD 彩条显示

TFT-LCD 的全称是 Thin Film Transistor-Liquid Crystal Display,即薄膜晶体管液晶显示屏,它显示的每个像素点都是由集成在液晶后面的薄膜晶体管独立驱动,因此 TFT-LCD 具有较高的响应速度以及较好的图像质量。液晶显示器是现在最常用的显示器,如手机、电脑等各种人机交互设备基本都用到了 LCD。

lf282481431的博客 2529

Unity 面试篇|(三)设计模式篇 【全面总结 | 持续更新 | 建议收藏】

设计模式是一套被反复使用、多数人知晓、经过分类编目、代码设计经验的总结。设计模式与方法或库的使用方式不同, 你很难直接在自己的程序中套用某个设计模式。模式并不是一段特定的代码, 而是解决特定问题的一般性概念。你可以根据模式来实现符合自己程序实际所需的解决方案。常常会混淆模式和算法, 因为两者在概念上都是已知特定问题的典型解决方案。但算法总是明确定义达成特定目标所需的一系列步骤, 而模式则是对解决方案的更高层次描述。同一模式在两个不同程序中的实现代码可能会不一样。单例模式。

游戏开发小Y的博客 12万+

【【RGB LCD 彩条显示实验 ---1】】

RGB LCD 彩条显示实验 ---1

weixin_50965981的博客 997

BACnet协议栈基本对象BI、BO、AI、AO、AV以及device和File对象介绍

BACnet协议栈基本对象BI、BO、AI、AO、AV以及device和File对象介绍

shufawangzhang的博客 3988

2022中山大学计算机技术专硕考研初试、复试经验帖

个人简介 推荐几个我自己感觉对考研非常有帮助的小助手吧。可以帮助节省时间! 考研时间规划总览 初试篇 数学 英语 政治 408 复试篇 机试 笔试 面试 关于选导师 个人感言

zik的博客 1万+

RGB LCD 彩条驱动与显示时序设计

本文详细解析了RGB LCD的显示时序设计与彩条驱动实现。从像素时钟、同步信号(HSYNC/VSYNC/DE)等基础概念入手,深入讲解了行场时序参数配置,并通过FPGA实战演示了彩条显示的Verilog代码实现与调试技巧,帮助工程师快速掌握RGB LCD驱动开发。

study的专栏 789

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

FPGA LCD显示彩条实验

LCD屏幕,即液晶显示屏(Liquid Crystal Display),是一种使用液晶材料来显示图像的屏幕技术。液晶本身并不发光,因此LCD屏幕通常需要背光源来照亮液晶以显示图像。

小pp的博客 978

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

FPGA实现LCD显示屏显示彩条

基于fpga和rgb-lcd实现的彩条显示

qq_54177358的博客 3667

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

LCD彩条显示——FPGA学习笔记10

基本原理:在两块平行玻璃板中填充液晶材料,通过电场控制液晶分子旋转从而达到透光和遮光的目的。LCD屏幕重要参数:分辨率、像素格式、驱动时序。

m0_69082048的博客 1384

【【VDMA彩条显示实验之三 之 RGB LCD 彩条显示实验 】】

VDMA彩条显示实验之三 之 RGB LCD 彩条显示实验

weixin_50965981的博客 599
上一篇: 第九课 uart串口通信
下一篇: 第十一课 HDMI彩条显示实验
13.02
博客等级 码龄7年 1粉丝 12原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值