【TFT-LCD学习记录1】 R61509V3 彩屏显示原理

news/2024/11/28 23:37:39/

目录

  • 1 学习背景
  • 2 模块介绍
    • 2.1 外观
    • 2.2 原理图
  • 3 模块控制
    • 3.1 80并口时序
    • 3.2 指令/数据 读写方式
    • 3.2 上电/控制顺序
    • 3.3 主要指令
  • 4 相关资料

1 学习背景

以前学习 STM32 时普中科技的开发板有一块遗留的 LCD 屏幕:R61509V3。现在想用 FPGA 实现屏幕的驱动,需要系统的学习屏幕控制的原理。

2 模块介绍

2.1 外观

模块图

2.2 原理图

原理图
驱动IC:R61509V
电阻触摸屏控制器:XPT2046
液晶面板:TFT1P5361或IPS1P7167(不确定)
R61509采用80系统16位总线接口(80-System 16-bit Bus Interface)

3 模块控制

根据R61509的芯片数据手册《R61509V 260k-color, 240RGB x 432-dot graphics liquid crystal controller driver for Amorphous-Silicon TFT Panel》介绍,控制这块驱动需要注意以下几个方面。

3.1 80并口时序

结合“Electrical Characteristics”章-“AC Characteristics”节-“80-system 18-/16-/9-/8-bit Bus interface Timing Characteristics”条 与 “Timing Characteristics”章-“80-system Bus Interface”节可得时序与要求如下:
在这里插入图片描述
在这里插入图片描述
根据“Pin Function”章可知,对于16位80并口,主要的控制信号如下:

信号含义
RS选择寄存器,0:Index register 1:Control register
CSX片选信号
WRX/RDX写使能或者读使能,0有效
DB[15:0]数据总线

简单说明,片选信号没有时序要求,使用器件的时候拉低就行。RS、DB[15:0] 可以理解为在WRX/RDX上升沿采样,根据指标要求,数据读写的速率主要取决于WRX/RDX的周期,WRX/RDX满足时序要求时,其他的基本上也满足,注意到t_CYCW最小值对应的频率约为13.33MHz。

3.2 指令/数据 读写方式

R61509V采用18位总线结构,以实现与高性能微机的高速接口。在本实例中,FPGA发送16位控制信息存储到指令寄存器(IR)和数据寄存器(DR),R61509V根据寄存器的值进行相关处理。R61509V的内部操作是由FPGA发送的信号控制的,控制器通过控制 寄存器选择信号(RS)、读写信号(R/W)和内部16位数据总线信号(IB15 ~ IB0) 以 80总线协议 更新指令寄存器(IR)和数据寄存器(DR) 来实现相关的指令。

寄存器选择信号(RS)为低电平:选择指令寄存器(IR)
寄存器选择信号(RS)为高电平:选择数据寄存器(DR)

在这里插入图片描述

以指令Display Control 1 (R007h)为例:
在这里插入图片描述
为了将控制字BASEE置为1,首先需要将 16‘h0007 写入指令寄存器(IR)
然后将数据 16’h0100 写入数据寄存器(DR),完成指令Display Control 1 的设置。

3.2 上电/控制顺序

在数据手册“Power Supply Setting Sequence”章中,有上电顺序图如下:
在这里插入图片描述
在“Instruction Setting Sequence and Refresh Sequence”章“Display ON/OFF Sequences and Refresh Sequence”节中有开启显示的顺序图如下:
在这里插入图片描述
根据上电/控制顺序图,就可以控制这块屏幕。

3.3 主要指令

如果要用户去调教好彩屏并设置相关指令是比较繁琐的,所以初始化控制的参数指令一般是厂家提供的,根据普中科技开发板给出的 R61509V3 控制例程,初始化相关的指令为:

序号指令寄存器(IR)数据寄存器(DR)备注
1LCD_WriteCmd(0x0000);Device code read
2LCD_WriteCmd(0x0000);Device code read
3LCD_WriteCmd(0x0000);Device code read
4LCD_WriteCmd(0x0000);Device code read
5LCD_WriteCmd(0x0000);Device code read
6LCD_WriteCmd(0x0000);Device code read
7LCD_WriteCmd(0x0000);Device code read
8LCD_WriteCmd(0x0000);Device code read
9LCD_WriteCmd(0x0000);Device code read
10LCD_WriteCmd(0x0000);Device code read
11LCD_WriteCmd(0x0400);LCD_WriteData(0x6200);Base Image Number of Line
12LCD_WriteCmd(0x0008);LCD_WriteData(0x0808);Display Control 2
13LCD_WriteCmd(0x0300);LCD_WriteData(0x0005);gamma Control
14LCD_WriteCmd(0x0301);LCD_WriteData(0x4C06);gamma Control
15LCD_WriteCmd(0x0302);LCD_WriteData(0x0602);gamma Control
16LCD_WriteCmd(0x0303);LCD_WriteData(0x050C);gamma Control
17LCD_WriteCmd(0x0304);LCD_WriteData(0x3300);gamma Control
18LCD_WriteCmd(0x0305);LCD_WriteData(0x0C05);gamma Control
19LCD_WriteCmd(0x0306);LCD_WriteData(0x4206);gamma Control
20LCD_WriteCmd(0x0307);LCD_WriteData(0x060C);gamma Control
21LCD_WriteCmd(0x0308);LCD_WriteData(0x0500);gamma Control
22LCD_WriteCmd(0x0309);LCD_WriteData(0x0033);gamma Control
23LCD_WriteCmd(0x0010);LCD_WriteData(0x0014);Panel Interface Control 1
24LCD_WriteCmd(0x0011);LCD_WriteData(0x0101);Panel Interface Control 2
25LCD_WriteCmd(0x0012);LCD_WriteData(0x0000);Panel Interface Control 3
26LCD_WriteCmd(0x0013);LCD_WriteData(0x0001);Panel Interface Control 4
27LCD_WriteCmd(0x0100);LCD_WriteData(0x0330);Power Control 1
28LCD_WriteCmd(0x0101);LCD_WriteData(0x0247);Power Control 2
29LCD_WriteCmd(0x0103);LCD_WriteData(0x1000);Power Control 4
30LCD_WriteCmd(0x0280);LCD_WriteData(0xDE00);NVM Data Read / NVM Data Write
31LCD_WriteCmd(0x0102);LCD_WriteData(0xD1B0);Power Control 3
32LCD_WriteCmd(0x0001);LCD_WriteData(0x0100);Driver Output Control
33LCD_WriteCmd(0x0002);LCD_WriteData(0x0100);LCD Drive Wave Control
34LCD_WriteCmd(0x0003);LCD_WriteData(0x1030);Entry Mode
35LCD_WriteCmd(0x0009);LCD_WriteData(0x0001);Display Control 3
36LCD_WriteCmd(0x000C);LCD_WriteData(0x0000);External Display Interface Control 1
37LCD_WriteCmd(0x0090);LCD_WriteData(0x8000);Frame Marker Control
38LCD_WriteCmd(0x000F);LCD_WriteData(0x0000);External Display Interface Control 2
39LCD_WriteCmd(0x0210);LCD_WriteData(0x0000);Window Horizontal RAM Address Start
40LCD_WriteCmd(0x0211);LCD_WriteData(0x00EF);Window Horizontal RAM Address End
41LCD_WriteCmd(0x0212);LCD_WriteData(0x0000);Window Vertical RAM Address Start
42LCD_WriteCmd(0x0213);LCD_WriteData(0x018F);Window Vertical RAM Address End
43LCD_WriteCmd(0x0500);LCD_WriteData(0x0000);Partial Image 1: Display Position
44LCD_WriteCmd(0x0501);LCD_WriteData(0x0000);RAM Address 1 (Start Line Address)
45LCD_WriteCmd(0x0502);LCD_WriteData(0x005F);RAM Address 2 (End Line Address)
46LCD_WriteCmd(0x0401);LCD_WriteData(0x0001);Base Image Display Control
47LCD_WriteCmd(0x0404);LCD_WriteData(0x0000);Base Image Vertical Scroll Control
48LCD_WriteCmd(0x0007);LCD_WriteData(0x0100);Display Control 1
49LCD_WriteCmd(0x0200);LCD_WriteData(0x0000);RAM Address Set(Horizontal Address)
50LCD_WriteCmd(0x0201);LCD_WriteData(0x0000);RAM Address Set(Vertical Address)
51LCD_WriteCmd(0x0202);GRAM Data Write/GRAM Data Read

具体含义可以参考数据手册
其中比较重要的几个:

Window Horizontal RAM Address Start (R210h)设置RAM水平起始地址根据这4个指令设置屏幕像素点尺寸,这里设置为240*400
Window Horizontal RAM Address End(R211h)设置RAM水平终止地址
Window Vertical RAM Address Start (R212h)设置RAM垂直起始地址
Window Vertical RAM Address End (R213h)设置RAM垂直终止地址
Entry Mode (R003h)设置扫描方式根据控制字ORG , AM, ID设置扫描方式,见下图
RAM Address Set (Horizontal Address) (R200h)设置地址计数器水平地址根据这两个指令设置地址计数器的值,写入像素点RGB数据后,地址计数器会按照设置好的扫描方式自加,在刷新屏幕的时候,将这两个计数器指令后,连续写入总像素点个数的RGB数据即可完成GRAM刷新。
RAM Address Set (Vertical Address) (R201h)设置地址计数器垂直地址
Power Control3 (R102h)电源控制根据上电顺序,在完成用户设置之后设置控制字PSON=1, PON=1以打开电源
Display Control 1 (R007h)控制显示开启或者关闭设置控制字BASEE=1以打开显示

根据需要的扫描方式设置Entry Mode (R003h):ORG , AM, ID
在这里插入图片描述

4 相关资料

在这里插入图片描述
链接:https://pan.baidu.com/s/1Zbdfrg1iYNJjqs24b2hwwA
提取码:1234


http://www.ppmy.cn/news/194798.html

相关文章

sha-1算法c语言,我利用C语言实现SHA-256算法,需要从一个txt文件中读出数据并把...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 并把得到的密文写入另一个txt文件张该怎么改代码啊? #include #include extern char* StrSHA256(const char* str, long long length, char* sha256); int main(void){ char text[] "123"; char sha256[6…

[SUCTF 2019]Pythonginx 1

[SUCTF 2019]Pythonginx 1 打开环境,我们获得一串源码 app.route(/getUrl, methods[GET, POST]) def getUrl(): url request.args.get("url") host parse.urlparse(url).hostname #解析主机名if host suctf.cc: return "我扌 your problem? …

汇编语言06C0H,请问下面这段汇编语言是什么意思?

请问下面这段汇编语言是什么意思? Listing: 00401000: 6801604100 push 00416001h 00401005: E801000000 call 0040100Bh 0040100A: C3 ret 0040100B: C3 ret 0040100C: 772B jnbe 401039h 0040100E: 02D5 add dl, ch 00401010: 3AFE cmp bh, dh 00401012: D416 aam…

研究1

1 20万、50万、100万的算法工程师,到底有什么区别? https://mp.weixin.qq.com/s?__bizMzI0ODcxODk5OA&mid2247489042&idx3&sne1ba4d46032c5003ca3bbafb6ef17fc2&chksme99d25ebdeeaacfddf3ae714d013d2fd02385c515699eb97923b18f13ca7ff…

华三交换机配置access命令_h3c交换机配置命令

1.修改名称 sysname 名称 2.进入aaa模式 [5F/L01]aaa # aaa authentication-scheme default authorization-scheme default accounting-scheme default domain default domain default_admin local-user admin password simple admin local-user admin service-type http local…

密码学--SHA-1算法(C++实现+详细注释+测试)

源码&#xff1a; #include<bits/stdc.h> #define H_NUM 8 //一个字32bite也就是8个十六进制数(4bite) #define BINARY 16 //16进制 #define GROUP_BIT 512 //消息认证码一组512bite using namespace std; //文件中的数据 string s; //5个寄存器的初始值 string A0 …

802.11h halow(Short Beacon, s1g beacon)

序言 前一节我们讨论的802.11ah中的MAC头部压缩&#xff0c;本节我们讨论802.11ah中的Short Beacon。其实这几个设计都是围绕着压缩帧大小这个话题展开的&#xff0c;目的明确。理解这几个设计可以加深对于802.11相关字段的理解。 Short Beacon的意义 为什么要特意压缩Beaco…

CL1初识C语言

提示&#xff1a;该账号是本人的学习记录&#xff0c;希望同大家一起学习&#xff0c;如有错误希望广大网友帮助我加以改正&#xff01;如果太久没更新&#xff0c;快找人骂我回来&#xff01;&#xff01;哈哈哈&#xff01;&#xff01; 文章目录 前言一、什么是C语言?1、C语…