lcd屏调试记录

news2024/11/18 1:36:39

一,lcd屏介绍

LCD液晶屏的接口类型非常丰富,最常用的接口主要有RGB、MCU、LVDS、MIPI接口。

1、RGB接口

        LCD液晶屏的RGB接口通过对红(R)、绿(G)、蓝(B)三个颜色通道的变化以及三者组合来得到丰富多彩的颜色,RGB分别代表红、绿、蓝三个通道的颜色,它们三者之间的组合几乎包括了人类视觉感知的所有颜色,是最常用的颜色体系之一。所以LCD液晶屏的RGB接口就是分三原色输入的视频接口 。通常一个颜色通道由8bit表示, 即每个颜色通道值的范围是0~255, 通常称RGB888/RGB24。三个颜色通道总共能组合出约。在实际的使用中, 除了RGB888/RGB24, 还有RGB555,、RGB565、RGB32、RGB666等等。

2、MCU接口

        LCD液晶屏的MCU接口主要针对单片机的领域。在尺寸较小的手机上大量使用,主要优势是价格便宜。MCU接口的标准是因特尔提出的8080总线标准,因此在很多文档中用I80 来指MCU接口屏。MCU接口模式分为8080模式和6800模式,主要是时序的区别。数据位传输有8位,16位,18位,24位。连线分为:CS/RS/RD/WR/。优点是控制简单方便,无需时钟和同步信号。缺点是要耗费GRAM,所以难以做到大屏,一般都用在4寸以下。对于MCU接口的LCM,其内部的芯片就叫LCD驱动器。主要功能是对主机发过的数据/命令,进行变换,变成每个像素的RGB数据,使之在屏上显示出来。这个过程不需要点、行、帧时钟。

3、LVDS接口

        LCD液晶屏的LVDS接口即Low Voltage Differential Signaling,是一种低压差分信号技术接口。克服以TTL电平方式传输宽带高码率数据时功耗大、EMI电磁干扰大等缺点而研制的一种数字视频信号传输方式。LVDS输出接口利用非常低的电压摆幅(约350mV)在两条PCB走线或一对平衡电缆上通过差分进行数据的传输,即低压差分信号传输。采用LVDS输出接口,可以使得信号在差分PCB线或平衡电缆上以几百Mbit/s的速率传输,由于采用低压和低电流驱动方式,因此,实现了低噪声和低功耗。

4、MIPI接口

        LCD液晶屏的MIPI接口是Mobile Industry Processor Interface的缩写。MIPI(移动行业处理器接口)是MIPI联盟发起的为移动应用处理器制定的开放标准。MIPI是一个比较新的标准,其规范也在不断修改和改进,目前比较成熟的接口应用有DSI(显示接口)和CSI(摄像头接口)。CSI/DSI分别是指其承载的是针对Camera或Display应用,都有复杂的协议结构。

        在LCD液晶屏选择与定制的过程中,使用何种LCD接口类型,主要是根据主板的接口而定,通过软件驱动的匹配,来点亮屏幕,从而实现产品的显示方案。

来源:LCD液晶屏的接口类型有哪些? (baidu.com)

二,调试记录,MCU8080接口。

1,硬件:主控芯片stm32f767,LCD是MCU 8080接口16位数据口,分辨率320*240。

   这种LCD,内部有 GRAM ,MCU操作IO口,就是向GRAM写入数据,GRAM对应屏幕上的像素点。刷新整个屏幕的话,就需要写入320*240个数据,数据量还是非常大的。

2,控制引脚和时序。

 

CS,片选。

WR,写操作。由0到1,上升沿,写入数据。

RS,命令/数据标志。0,读写命令;1,读写数据。

RST,可以硬件复位,软件复位两种。

RD,如果不读,尽量直接初始化,置高。

3,驱动程序例程很多,最关键的就是读写指令数据的时序。


void LCD_WR_REG(u16 data)
{
	LCD_CS_CLR;
	LCD_RD_SET;
	LCD_RS_CLR;      //写地址
	DATAOUT(data);	
	LCD_WR_CLR;	
	LCD_WR_SET;
 	LCD_CS_SET;
 	//LCD_RS_SET;
}


//写数据函数
//可以替代LCD_WR_DATAX宏,拿时间换空间.
//data:寄存器值
void LCD_WR_DATA(u16 data)
{
	LCD_CS_CLR;
	LCD_RD_SET;
	LCD_RS_SET;
	DATAOUT(data);
	LCD_WR_CLR;
	LCD_WR_SET;
	LCD_CS_SET;
	//LCD_RS_CLR;
}

4,刷新速度测试。

主频96Mhz,使用IO口模拟时序,每个IO单独控制,测试清屏一个周期时间。

a,完全使用库函数,清屏周期:529ms。

b,D0-D15使用寄存器操作,清屏周期:150ms。

c,全部IO口使用寄存器操作,清屏周期:107ms。

可以发现,完全使用库函数操作,很耗时。

以下是清屏函数:

void LCD_Clear(unsigned int color)
{
	u32 i;
	LCD_SetWindows(0,0,239,319);

	//LCD_WR_REG(0x2C);

	LCD_RS_SET; // data mode
	LCD_CS_CLR;

	for(i=0;i<240*320;i++)
	{
		DATAOUT(color);
		LCD_WR_CLR;
		LCD_WR_SET;
	}
	LCD_CS_SET;
}

三,总结

      头两天移植程序,查看手册,熟悉LCD,但是就是没点亮,查看时序也没发现问题,加延时,改时序,都没有作用。第三天,因为改了RD引脚,导致电流猛增,以为板子坏了,又换了一块新焊接的板子,还是一样的现象,看来是程序控制的原因,恢复到昨天的程序,意外出现了,点亮了。好的有点莫名奇妙,估计可能与焊接还是又关系。

   电流猛增,这里应该是与RD引脚有关系,我的MCU的IO设置推挽输出,如果RD置低的话,LCD变成读模式,这样可能灌电流,导致电流增加。注意如果不使用RD引脚,将该引脚置高,禁止读操作。

总的来说,时序并不复杂,根据参考程序,一般没有大的问题,如果新板子调试的话,先检查每个IO口配置,是否都正常驱动。我使用stm32CubeIDE单步调试,用示波器查看每一步的状态,体验还真不错。其次,就是注意焊接,新板子,焊接出问题的概率很大。

 如何提高刷新频率?网友回答,

FSMC的速度相比于串行口的屏要快。

程序上使用DMA,进行数据移动刷屏。

关键代码使用寄存器的方式进行操作,而不是使用库函数。

下版准备改成FSMC驱动,使用DMA试试。

参考文章:

(5条消息) 一文搞懂单片机驱动8080LCD_NULL_1969的博客-CSDN博客_st7796

(5条消息) STM32之LCD液晶屏(ILI9341)模拟8080时序_Swiler的博客-CSDN博客_lcd_cs

如何提高单片机在显示屏上刷新速度?-电子芯吧客(www.icxbk.com)

F411使用模拟8080时序刷屏测速 - STM32/STM8单片机论坛 - ST MCU意法半导体官方技术支持论坛 - 21ic电子技术开发论坛

LCD液晶屏的接口类型有哪些? (baidu.com)

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

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

相关文章

QT:多进程

标题1.多进程2.多线程3.常用方法1.多进程 (1)创建进程对象 QProcess::QProcess(QObject *parent nullptr)(2)启动进程去执行另外一个程序 void QProcess::start(const QString &command) //类似于system()/exec函数族 参数&#xff1a;command --》你要执行的另外一个程序…

36氪2022年Q3总收入同比增长两位数超预期,连续第四个季度盈利,广告收入同比增长20%

12月7日&#xff0c;36氪&#xff08;证券代码&#xff1a;KRKR&#xff09;披露2022年第三季度业绩。该季度36氪总收入同比增长11.5%至9461万元&#xff0c;净利润249万元&#xff0c;连续第四个季度实现盈利。 本季度&#xff0c;36氪广告业务持续表现优异&#xff0c;实现了…

windows电脑关机开机后没声音,重启就有声音故障处理方法

今天遇到一件非常奇葩的windows电脑, 从关机状态下进入系统没有声音,且从以下几点判断声卡硬件及驱动不存在故障,详见如下: 1、开机后任务栏右下角声音图标正常 2、声音设置——扬声器/麦克风(Realtek(R) Audio)正常; 3、windows+x键,选择“设备管理器”,找到“音频…

Primavera Unifier 常用标准数据要素

目录 一&#xff1a;什么是数据要素 二&#xff1a; 常用数据要素字段 一&#xff1a;什么是数据要素 数据元素是Oracle Primavera Unifier维护业务单据/表达的最小单元&#xff0c;也就是我们常说的字段&#xff0c;她将数据定义与字段标签相结合&#xff0c;成为用户在 Pr…

用70行Python编写一个概率编程语言

1、简介 在这篇文章中&#xff0c;我将介绍概率编程语言&#xff08;Probabilistic Programming Languages&#xff0c;简称PPL&#xff09;的工作原理&#xff0c;并逐步演示如何用Python构建一个简单的概率编程语言。 本文主要面向的读者是统计学家、AI研究员和好奇的程序员…

Python+Appium自动化测试(14)-yaml配置Desired capabilities

目录&#xff1a;导读 一&#xff0c;前言 二&#xff0c;使用yaml文件配置Capabilities示例 三&#xff0c;更新yaml文件的内容 四&#xff0c;结语 一&#xff0c;前言 在之前的appium自动化测试示例中&#xff0c;我们都是把构造driver实例对象的数据&#xff08;即Des…

对于单例,多进程的误解

单例 单例在多线程下&#xff0c;可以保证全局唯一&#xff0c;但在多进程下呢&#xff1f;子进程不共享父进程的变量 所以&#xff0c;每个进程都维护着一个自己的单例。 验证 创建appserver 以flask为例&#xff0c;以包的形式创建一个单例 # view.py-----------------…

四十、Java 多线程编程

Java 多线程编程 Java 给多线程编程提供了内置的支持。 一条线程指的是进程中一个单一顺序的控制流&#xff0c;一个进程中可以并发多个线程&#xff0c;每条线程并行执行不同的任务。 多线程是多任务的一种特别的形式&#xff0c;但多线程使用了更小的资源开销。 这里定义和…

移动WEB开发之rem布局--苏宁首页案例制作(flexible.js)

简洁高效的rem适配方案flexible.js 手机淘宝团队出的简洁高效 移动端适配库 我们再也不需要在写不同屏幕的媒体查询&#xff0c;因为里面js做了处理 它的原理是把当前设备划分为10等份&#xff0c;但是不同设备下&#xff0c;比例还是一致的。 我们要做的&#xff0c;就是确…

[附源码]Python计算机毕业设计Django学生疫情防控信息填报系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

【Java面试】说说你对ThreadLocal内存泄漏问题的理解

文章目录前置知识为什么会产生内存泄漏问题&#xff1f;如何解决内存泄露问题&#xff1f;为什么要使用弱引用&#xff1f;前置知识 讲解ThreadLocal的内存泄漏问题之前&#xff0c;首先得先知道什么是内存泄漏。 Memory overflow&#xff1a;内存溢出&#xff0c;没有足够的内…

第02章_MySQL环境搭建

目录第02章_MySQL环境搭建服务启动与停止登录MySQL查看版本退出MySQL1. MySQL操作1.1 MySQL的使用演示数据库查看所有的数据库创建数据库使用数据库查看数据库的创建信息删除数据库表格查看数据库的所有表格创建新的表格查看一个表的数据添加一条记录查看表的创建信息删除表格1…

FineReport地图数据图表-按钮控件

1. 概述 1.1 版本 报表服务器版本 功能变更 11.0 -- 1.2 应用场景 「按钮控件」可应用于填报、参数等场景中&#xff0c;添加按钮后&#xff0c;点击按钮可触发某些报表操作。如下图所示&#xff1a; 1.3 如何添加 1.3.1 填报控件 选中单元格后&#xff0c;点击右侧属性…

Python中的__init__.py的高级用法

刚开始学习编程&#xff0c;我们很少会关注这个文件&#xff0c;只知道一个目录中存在该文件&#xff0c;该目录就是一个package&#xff0c;不存在就是普通的目录&#xff0c;普通的目录在导入包时&#xff0c;pycharm并不会智能提示。 Python中每新建一个package都会默认生成…

使用VMware 16 安装中标麒麟 7

目录 1、下载中标麒麟7 2、虚拟机配置 3、NeoKylin7安装 1、下载中标麒麟7 百度网盘&#xff1a;百度网盘 请输入提取码百度网盘为您提供文件的网络备份、同步和分享服务。空间大、速度快、安全稳固&#xff0c;支持教育网加速&#xff0c;支持手机端。注册使用百度网盘即可…

全网最牛最全面的全栈Jmeter性能测试之生成测试报告

结构 ps【文章末尾给大家留下了大量的福利】 测试计划 测试计划是顶级的层级⽬录的结构&#xff0c; 那么在这样的⽬录结构中&#xff0c;⾥⾯可以包含很多线程组 线程组 线程组我们可以简单的理解为postman测试⼯具⾥⾯的collection&#xff0c;那么在整体线程组⾥⾯&…

本地虚拟机linux中nginx搭建

nginx&#xff1a;主要管理服务器中的tomcat,将服务端接受的请求交给nginx来处理&#xff0c;分配给不同的tomcat处理&#xff0c;同时nginx根据每个服务器的性能来配置不同的权重,权重越大访问到的概率就越大&#xff0c;权重越小访问到的概率越低 安装nginx 1,在usr目录下创建…

个人网页设计成品DW静态网页 HTML网页设计结课作业 web课程设计网页规划与设计 Web大学生个人网页成品 web网页设计期末课程大作业

&#x1f389;精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业…

QGIS获取行政区geojson数据以及数据乱码修复

安装QGIS 1.下载 访问下面的地址&#xff0c;直接下载安装 https://qgis.org/zh-Hans/site/ 2.设置QGIS语言 点击Settings->Options 点击General&#xff0c;然后按图示选择对应选项。 点击确定&#xff0c;然后等待一会儿&#xff0c;关闭软件重新打开就好了。 安装Qu…

Matplotlib入门[07]——修改默认设置

Matplotlib入门[07]——修改默认设置 参考&#xff1a; https://ailearning.apachecn.org/Matplotlib官网 使用Jupyter进行练习 import numpy as np import matplotlib.pyplot as plt生成三角函数&#xff1a; x np.linspace(-np.pi, np.pi) c, s np.cos(x), np.sin(x)默认绘…