linux系统中RGBLCD的基本操作和实现方法

news2024/9/23 5:19:44

      大家好,今天主要来聊一聊,如何控制RGBLCD屏的方法。

 

目录

第一:LCD基本简介

第二:LCD屏的要点

第三:LCD屏具体配置步骤

第四:LCD屏具体的代码实现

第一:LCD基本简介

      LCD液晶屏是常用的外设,通过LCD可以查看一些绚丽的图形,界面等,提高人机交互的效率。接下来我们来学习一下,如何驱动RGB接口液晶屏的方法。

     LCD的全称是Liquid Crystal Display,也就是液晶显示器,最常用的就是显示器,电脑,各种人机交互等都用到了LCD。LCD是在两片平行的玻璃基板当中放置液晶盒,下基板玻璃上设置TFT(薄膜晶体管),上基板玻璃上设置彩色滤光片,通过TFT上的信号与电压改变原来控制液晶分子的转动方向,从而达到控制每个像素点偏振光出射与否而达到显示的目的。

第二:LCD屏的要点

       1、分辨率  

       提起LCD显示器,会经常听到720P、1080P等字样,这个就是LCD显示器分辨率。LCD显示器都是由一个一个的像素点组成,像素点类似一个,小的RGB灯,也就是由R(红色)、(G)绿色和B(蓝色)这三种颜色组成的。1080P的意思就是一个LCD屏幕上的像素数量是1902*1080个,也就是屏幕一列1080个像素点,一共1920列。

       

      2、像素格式

        一个像素点就相当于一个RGB小灯,通过控制R、G、B这三种颜色的亮度就可以显示出各种各样的色彩。一个像素点有3个字节,这种像素格式为RGB888,可以再加入8bit的Alpha(透明)通道的话一个像素点就是32bit,也就是4个字节,像素格式为ARGB8888。

         一个像素点是4个字节,其中bit31~bit24是Alpha通道,bit23~bit16是RED通道,bit15~bit8是GREEN通道,bit7~bit0是BLUE通道。

          

     3、LCD屏幕接口

          LCD屏幕有很多种接口,比如在显示器上常见的VGA、HDMI、EDP等,支持RGB接口的LCD,RGBLCD接口信号线:

        

          

          从表格中可以看出,R[7:0]、G[7:0]和B[7:0]是24根数据线,DE、VSYNC、HSYNC和PCLK这四根是控制信号线。

      4、LCD时间参数  

      HBP、HFP、VBP和VFP是导致黑边的原因,这是CRT显示器存在黑边的原因,这是CRT显示器存在黑边的原因,虽然现在是LCD显示器了,为何还会有黑边呢?这是因为RGBLCD屏幕内部有一个IC,这个IC发送一行或者接受一行数据,需要有反应时间。

 

       显示一帧所需要的时间就是:VSPW+VBP+LINE+VFP个行时间,最终的计算公式:

                T = (VSPW+VBP+LINE+VFP) * (HSPW + HBP + HOZVAL + HFP)

5、像素时钟

      像素时钟就是RGBLCD的时钟信号,显示一帧图像所需要的时钟就是:

= (VSPW+VBP+LINE+VFP) * (HSPW + HBP + HOZVAL + HFP)

= (3 + 20 + 600 + 12) * (20 + 140 + 1024 + 160)

= 635 * 1344

= 853440

       

第三:LCD屏具体配置步骤

1、初始化LCD所使用的IO。

2、设置LCD的像素时钟。

3、配置eLCDIF接口。

4、编写API函数。

第四:LCD屏具体的代码实现

#include "stdio.h"

//初始化LCD基本硬件
void lcd_init(void)
{
    lcdgpio_init();       //初始化IO
    lcdclk_init(32,3,5);  //初始化LCD时钟
    
    lcd_reset(); /* 复位 LCD */
    delayms(10); /* 延时 10ms */
    lcd_noreset(); /* 结束复位 */

    /* RGB LCD 参数结构体初始化 */
    tftlcd_dev.height = 600; /* 屏幕高度 */ 
    tftlcd_dev.width = 1024; /* 屏幕宽度 */

    tftlcd_dev.pixsize = 4; /* ARGB8888 模式,每个像素 4 字节 */
    tftlcd_dev.vspw = 3; /* VSYNC 信号宽度 */
    tftlcd_dev.vbpd = 20; /* 帧同步信号后肩 */
    tftlcd_dev.vfpd = 12; /* 帧同步信号前肩 */
    tftlcd_dev.hspw = 20; /* HSYNC 信号宽度 */ 
    tftlcd_dev.hbpd = 140; /* 水平同步信号后见肩 */
    tftlcd_dev.hfpd = 160; /* 水平同步信号前肩 */
    tftlcd_dev.framebuffer = LCD_FRAMEBUF_ADDR; /* 帧缓冲地址 */
    tftlcd_dev.backcolor = LCD_WHITE; /* 背景色为白色 */
    tftlcd_dev.forecolor = LCD_BLACK; /* 前景色为黑色 */
}

 总结:还有一些API操作函数,比如画线,画圆,显示字符串函数,可以直接移植过来进行使用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/98730.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux常用命令,能解决工作中99%的Linux操作问题

目录 一、ls 二、pwd 三、cd 四、touch 五、mkdir 六、rmdir&rm 七、man 八、cp 九、mv 九、cat 十、move 十一、less 十二、head 十三、tail 十四、时间 十五、cal 十六、find 十七、grep 十八、zip/unzip 十九、tar 二十、计算器 二十一、uname 二…

SpringBoot 整合Netty自定义消息协议

本文主要介绍springboot项目,配置netty进行消息通信,自定义的netty消息协议,本文消息主要以表格中进行 消息头消息体长度加密标识(可选)加密类型(可选)消息体标识消息体校验码2字节2字节1字节&…

SAP ABAP——SAP简介(一)【SAP发展历程】

💂作者简介: THUNDER王,一名热爱财税和SAP ABAP编程以及热爱分享的博主。目前于江西师范大学会计学专业大二本科在读,同时任汉硕云(广东)科技有限公司ABAP开发顾问。在学习工作中,我通常使用偏后…

研究必备的 5 个外文文献检索网站

1. Google scholar 网址: https://scholar.google.com.hk/?hlzh-CN 如今搜索论文的首选,可以在这里查看论文统计和引用参考文献,还能通过关注作者或者论文获得新论文更新提醒,以及利用自动化推荐来提供一个基本库 2. DBLP 网址…

MSVC C++ UTF-8编程

除windows平台外大部分其他平台,编译器默认使用的编码都是UTF-8编码,最新版本的Clang编译器只支持UTF-8编码。如果程序需要在多个平台编译运行,则代码必须使用UTF-8。使用UTF-8可以更容易的在多字节字符串(char, std::string)和宽字符(wchar_…

Java+SSM汽车租赁系统汽车出租(含源码+论文+答辩PPT等)

项目功能简介: 该项目采用的技术实现如下 后台框架:Spring、SpringMVC、MyBatis UI界面:jQuery 、JSP 数据库:MySQL 系统功能 系统分为前台用户租车和后台系统管理: 1.前台用户租车 用户注册、用户登录、用户中心、浏览车辆、车辆…

Java项目:SSM在线二手图书交易商城网站平台

作者主页:源码空间站2022 简介:Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 项目介绍 用户角色包含以下功能: 用户登录,查看商品详情,按分类查看,查看我的书架,上传二手书等功能。 由于本程序规模不大,可供课…

三、CAM可解释性分析——可解释性机器学习(DataWhale组队学习)

文章目录前言CAM算法的精妙之处相关工作CAM算法其它相关问题为什么不用池化操作?CAM的优点CAM算法的缺点扩展阅读和思考题前言 CAM算法奠定了可解释分析的基石 CAM算法的精妙之处 对深度学习实现可解释性分析、显著性分析可扩展性强,后续衍生出各种…

域名备案怎么查?怎么批量查询域名备案

ICP备案,是为了防止在网上从事非法的网站经营活动,打击不良互联网信息的传播,国家对互联网信息服务实行的备案制度。 备案的目的就是为了防止在网上从事非法的网站经营活动,打击不良互联网信息的传播,如果网站不备…

Android TP驱动模型框架分析

本文主要是对TP驱动框架的学习。 一、概述 1、触摸IC的工作原理 tp与主控间的通信接口一般是i2c,即scl、sda、gnd、vcc。在正常工作时需要加上rst、int脚。 整个过程是:通过点击屏幕,tp ic端会将int 脚电平拉低,等待主控的读取。…

【技术分享】Anaconda下载、安装、pip切换镜像源、conda切换镜像、conda创建指定Python版本虚拟环境教程

文章目录1.下载Anaconda1.1.下载最新版本Anaconda1.2.下载历史版本的Anaconda2.安装Anaconda3.conda切换镜像源4.pip切换镜像源5.conda创建指定版本Python环境1.下载Anaconda 1.1.下载最新版本Anaconda 步骤: 进入Anaconda官网,点击Download按钮下载最…

海量数据小内存!如何找到高频数

文章目录题目解答总结题目 如何在 20 亿个无符号整数中找到出现次数最多的那个数,在只提供 1 G 内存的条件下 解答 找到出现次数最多的数,通常的思维就是使用 HashMap 来统计这 20 亿个无符号整数中每个数出现的次数 已知只有 20 亿个数,…

b站黑马的Vue快速入门案例代码——【axios+Vue2】悦听player(音乐播放器)

目录 本文中修改的原代码中的BUG: 修改方法: 本文案例代码仍有的BUG:(欢迎大家献计献策) 目标效果: 悦音player案例——效果展示视频: 更换的新接口/参数: 1.歌曲搜索接口&…

实战讲解及分析Spring新建Bean的几种方式以及创建过程(图+文+源码)

1 缘起 作为一个应用开发人员而言,会使用某一个工具分为两个层次(个人观点): 第一个层次,知道工具,会使用这个工具解决问题; 第二个层次,理解工具的实现原理。 关于Spring的学习&am…

Linux Centos7 磁盘的分区、挂载

1、前言 注:看不懂的同学可以直接跟着后面的步骤操作 一块新的磁盘放到电脑上,要经过分区-->给分区设置文件系统--->挂载才能用。 也就是说要想将磁盘挂载,必须完成给磁盘分区和给分区设置文件系统这两步。 分区的时候先分成主分区和扩…

【DBN分类】基于matlab深度置信网络DBN变压器故障诊断【含Matlab源码 2284期】

一、深度置信网络DBN变压器故障诊断简介 1 DBN模型 DBN是深度学习中最关键的一个多层网络架构,如图2所示,由多层RBM堆叠而成,前一层RBM的输出为后一层RBM的输入,最顶层采用Softmax分类器作为标签层,输出分类识别的结果…

AD-DA转换(PCF8591)

AD转换目录一、AD转换(PCF8591)①初始化函数②读取ADC值的函数二、DA转换(PCF8591)三、STC15系列单片机用户手册.pdf—第10章一、AD转换(PCF8591) 思路:(66,两个地址0x90…

RNA-seq——上游分析练习2(数据下载+trim-galore+hisat2+samtools+featureCounts)

目录软件安装新建文件夹一、下载数据二、质控过滤1.数据质量检测2.数据质量控制3.对处理后的数据再次QC三、序列比对1.hisat2比对2.flagstat检查一下结果四、featureCounts定量写在前面——本文是转录组上游分析的实战练习。主要包含四个步骤: 数据下载&#xff08…

DockerCompose编排Redis6.2.6以及遇到的那些坑

场景 Docker中使用Dockerfile的方式部署SpringBootVue前后端分离的项目(若依前后端分离框架为例): Docker中使用Dockerfile的方式部署SpringBootVue前后端分离的项目(若依前后端分离框架为例)_霸道流氓气质的博客-CSDN博客_若依 dockerfile 在上面使用Dockerfile分别构建每个…

Heron‘s formula

In geometry, Heron’s formula (or Hero’s formula) gives the area A of a triangle in terms of the three side lengths a, b, c. If {\textstyle s{\tfrac {1}{2}}(abc)}{\textstyle s{\tfrac {1}{2}}(abc)} is the semiperimeter of the triangle, the area is,[1] {\d…