一、常见显示器介绍

1、显示器分类

~~~~~~~       显示器属于计算机的 I/O 设备,即输入输出设备。它是一种将特定电子信息输出到屏幕上再反射到人眼的显示工具

常见显示器有三类:

  • CRT显示器
  • LCD液晶显示器
  • LED点阵显示器

1.1、CRT显示器

~~~~~~~       CRT显示器:CRT显示器是靠电子束激发屏幕内表面的荧光粉来显示图像的,由于荧光粉被点亮后很快会熄灭,所以电子枪必须循环地不断激发这些点。

1.2、LCD液晶显示器

~~~~~~~       LCD显示器:液晶显示器,简称 LCD(Liquid Crystal Display),相对于上一代 CRT显示器,LCD 显示器具有功耗低、体积小、承载的信息量大及不伤眼的优点,因而它成为了现在的主流电子显示设备,其中包括电视、电脑显示器、手机屏幕及各种嵌入式设备的显示器。

液晶显示器的显示结构:
~~~~~~~       液晶是一种介于固体和液体之间的特殊物质,它是一种有机化合物,常态下呈液态,但是它的分子排列却和固体晶体一样非常规则,因此取名液晶。如果给液晶施加电场,会改变它的分子排列,从而改变光线的传播方向,配合偏振光片,它就具有控制光线透过率的作用,再配合彩色滤光片,改变加给液晶电压大小,就能改变某一颜色透光量的多少
~~~~~~~       利用这种原理,做出可控红、绿、蓝光输出强度的显示结构,把三种显示结构组成一个显示单位,通过控制红绿蓝的强度,可以使该单位混合输出不同的色彩,这样的一个显示单位被称为像素。

注意: 液晶本身是不发光的,所以需要有一个背光灯提供光源

1.3、LED点阵显示器

~~~~~~~       LED点阵彩色显示器的单个像素点内包含红绿蓝三色LED灯,通过控制红绿蓝颜色的强度进行混色,实现全彩颜色输出,多个像素点构成一个屏幕。由于每个像素点都是LED灯自发光的,所以在户外白天也显示得非常清晰,但由于LED灯体积较大,导致屏幕的像素密度低,所以它一般只适合用于广场上的巨型显示器。相对来说,单色的LED点阵显示器应用得更广泛,如公交车上的信息展示牌、店广告牌等。

1.4、OLED显示器:

~~~~~~~       新一代的OLED显示器与LED点阵彩色显示器的原理类似,但由于它采用的像素单元是“有机发光二极管”(Organic Light Emitting Diode),所以像素密度比普通LED点阵显示器高得多
OLED显示器不需要背光源、对比度高、轻薄、视角广及响应速度快等优点。待到生产工艺更加成熟时,必将取代现在液晶显示器的地位。

2、显示器的基本参数

  • 像素
    像素是组成图像的最基本单元要素,显示器的像素指它成像最小的点,即前面讲解液晶原理中提到的一个显示单元。

  • 分辨率
    一些嵌入式设备的显示器常常以“行像素值x列像素值”表示屏幕的分辨率。如分辨率800x480表示该显示器的每一行有800个像素点,每一列有480个像素点,也可理解为有800列,480行。

  • 色彩深度
    色彩深度指显示器的每个像素点能表示多少种颜色,一般用“位”(bit)来表示。如单色屏的每个像素点能表示亮或灭两种状态(即实际上能显示2种颜色),用1个数据位就可以表示像素点的所有状态,所以它的色彩深度为1bit,其它常见的显示屏色深为16bit、24bit。

  • 显示器尺寸
    显示器的大小一般以英寸表示,如5英寸、21英寸、24英寸等,这个长度是指屏幕对角线的长度, 通过显示器的对角线长度及长宽比可确定显示器的实际长宽尺寸

  • 显存
    液晶屏中的每个像素点都是数据,在实际应用中需要把每个像素点的数据缓存起来,再传输给液晶屏,一般会使用 SRAM 或 SDRAM 性质的存储器,而这些专门用于存储显示数据的存储器,则被称为显存。显存一般至少要能存储液晶屏的一帧显示数据

    如分辨率为 800x480 的 液 晶 屏 使 用 RGB888 格 式 显 示 , 它 的 一 帧 显 示 数 据 大 小 为 :3x800x480=1152000 字 节 ;若 使 用 RGB565 格 式 显 示 , 一 帧 显 示 数 据 大 小 为 :2x800x480=768000 字节。

    一般来说,外置的液晶控制器会自带显存,而像 STM32F429等集成液晶控制器的芯片可使用内部 SRAM或外扩 SDRAM用于显存空间

3、TFT-LCD控制框图

~~~~~~~       STM32F429 系列的芯片不需要额外的液晶控制器,也就是说它把专用液晶控制器的功能集成到STM32F429 芯片内部了,可以理解为电脑的 CPU集成显卡。而 STM32F407 系列的芯片由于没有集成液晶控制器到芯片内部,所以它只能驱动自带控制器的屏幕,可以理解为电脑的外置显卡。

二、TFT-LCD控制原理

1、TFT-LCD结构

完整的显示屏由液晶显示面板、电容触摸面板以及 PCB底板构成

  • 液晶显示面板
    用于显示图像,文字的彩色显示设备
  • 触摸面板
    触摸面板带有触摸控制芯片,该芯片处理触摸信号并通过引出的信号线与外部器件通讯,触摸面板中间是透明的,它贴在液晶面板上面,一起构成屏幕的主体
  • PCB底板
    PCB 底板上可能会带有“液晶控制器芯片”因为控制液晶面板需要比较多的资源,所以大部分低级微控制器都不能直接控制液晶面板,需要额外配套一个专用液晶控制器来处理显示过程,外部微控制器只要把它希望显示的数据直接交给液晶控制器即可。而不带液晶控制器的 PCB底板 ,只有小部分的电源管理电路,液晶面板的信号线与外部微控制器相连,直接控制。

2、两种常见的TFT-LCD屏

3、TFT-LCD控制框图

~~~~~~~       STM32F429 系列的芯片不需要额外的液晶控制器,也就是说它把专用液晶控制器的功能集成到 STM32F429 芯片内部了,可以理解为电脑的 CPU集成显卡。而 STM32F407 系列的芯片由于没有集成液晶控制器到芯片内部,所以它只能驱动自带控制器的屏幕,可以理解为电脑的外置显卡。

4、RGB-LCD控制原理

液晶面板的控制信号线(不带液晶控制器):

5、RGB-LCD控制原理

  • RGB信号线
    ~~~~~~~       RGB信号线各有8根,分别用于表示液晶屏一个像素点的红、绿、蓝颜色分量。使用红绿蓝颜色分量来表示颜色是一种通用的做法,打开Windows系统自带的画板调色工具,可看到颜色的红绿蓝分量值,常见的颜色表示会在“RGB”后面附带各个颜色分量值的数据位数
    ~~~~~~~       如RGB565表示红绿蓝的数据线数分别为5、6、5根,一共为16个数据位,可表示216种颜色;
    ~~~~~~~       如果液晶屏的种颜色分量的数据线有8根,那它表示RGB888格式,一共24位数据线,可表示的颜色为224种。

  • 同步时钟信号CLK
    液晶屏与外部使用同步通讯方式,以CLK信号作为同步时钟,在同步时钟的驱动下,每个时钟传输一个像素点数据。
  • 水平同步信号HSYNC
    水平同步信号HSYNC(Horizontal Sync)用于表示液晶屏一行像素数据的传输结束,每传输完成液晶屏的一行像素数据时,HSYNC会发生电平跳变,如分辨率为800x480的显示屏(800列,480行),传输一帧的图像HSYNC的电平会跳变480次。
  • 垂直同步信号VSYNC
    垂直同步信号VSYNC(Vertical Sync)用于表示液晶屏一帧像素数据的传输结束,每传输完成一帧像素数据时,VSYNC会发生电平跳变。其中“帧”是图像的单位,一幅图像称为一帧,在液晶屏中,一帧指一个完整屏液晶像素点。人们常常用“帧/秒”来表示液晶屏的刷新特性,即液晶屏每秒可以显示多少帧图像,如液晶屏以60帧/秒的速率运行时,VSYNC每秒钟电平会跳变60次。
  • 数据使能信号DE
    数据使能信号DE(Data Enable)用于表示数据的有效性,当DE信号线为高电平时,RGB信号线表示的数据有效。
  • LCD数据传输时序
  • LCD数据传输时序

    注:液晶屏显示的图像可看作一个矩形,液晶屏有一个显示指针,它指向将要显示的像素。显示指针的扫描方向方向从左到右、从上到下,一个像素点一个像素点地描绘图形。这些像素点的数据通过RGB数据线传输至液晶屏,它们在同步时钟CLK的驱动下一个一个地传输到液晶屏中,交给显示指针,传输完成一行时,水平同步信号HSYNC电平跳变一次,而传输完一帧时VSYNC电平跳变一次。
  • LCD数据传输时序参数
    液晶显示指针在行与行之间,帧与帧之间切换时需要延时,而且HSYNC及VSYNC信号本身也有宽度,这些时间参数说明见下表:

三、SSD1963液晶控制器

1、液晶控制器SSD1963

1.1、液晶控制器

~~~~~~~       液晶驱动芯片或LCD驱动器,其内部有着较大的缓存空间可以存储文字、图像等数据,并能够将这些信息送入液晶模块进行显示,由于专用的芯片,因此速度往往比较快。
~~~~~~~        LCD驱动芯片的主要功能就是对主机发送过来的数据/命令,进行变换,变成每个像素的RGB数据,使之在屏幕上显示出来。常见的液晶驱动芯片有ILI932、ILI9328、SSD1963、HX8347、ILI9341、NT5510等

1.2、SSD1963特性

内部包含1215KB frame buffer
支持分辨率为864*480的显示屏
支持像素位深为24bpp的显示模式(RGB888)

1.3、SSD1963内部框图


注:液晶屏内部包含SSD1963控制器,该控制器使用 8080 接口与单片机通讯

2、STM32与LCD的电气连接

2.1、8080时序-写数据/命令


注:STM32通过8080接口与SSD1963 芯片进行通讯,实现对液晶屏的控制。通讯的内容主要包括命令和显存数据,显存数据即各个像素点的 RGB565 内容;命令是指对 SSD1963的控制指令,MCU 可通过8080接口发送命令编码控制 SSD1963的工作方式,例如复位指令、设置光标指令、睡眠。

  • 用GPIO管脚模拟8080时序
void LCD_WR_Byte(uint8_t dat,  uint8_t cmd)
{LCD_Data_Out(dat);        //放入数据   if(cmd)         LCD_DC_Set();         //传命令     else            LCD_DC_Clr();            //传数据LCD_CS_Clr();      //拉低片选LCD_WR_Clr();           //写使能LCD_WR_Set();    //WR产生上升沿,数据锁存      LCD_CS_Set();           //取消片选  LCD_DC_Set();          //复位DC信号线
}

2.2、FMSC-模拟8080时序


Tpwcsl = ADDSET + DATAST +1 > 30 ~~~~     建议适当取大一点点
TCS = ADDSET > 2 ns ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                              ADDSET = 1
TPWLW = DATAST +1 > 12ns ~~~~~~~~~~~~~~~~~~~                    DATAST = 3

~~~~~~~       对于FSMC和8080接口,前四种信号线都是完全一样的,仅仅是FSMC的地址信号线A[25:0]与8080的数据/命令选择线D/C#有区别。
~~~~~~~       为了模拟出8080时序,我们可以把FSMC的A0地址线与SSD1963芯片8080接口的D/C#信号线连接,那么当A0为高电平时(即D/C#为高电平),数据线D[15:0]的信号会被SSD1963理解为数值,若A0为低电平时(即D/C#为低电平),传输的信号则会被理解为命令。

2.3、如何控制A0(即控制DC线)


注:LCD控制器的片选连入到FSMC的NE4管脚。所以当发出0x6C00 0000-0x6FFF FFFF之间的地址时NE4输出低电平,选中LCD控制器

2.4、如何控制A0(即控制DC线)

~~~~~~~       在实际控制时,以上地址计算方式还不完整,根据《STM32 参考手册》对 FSMC 访问NOR FLASH 的说明STM32 内部访问地址时使用的是内部 HADDR 总线, HADDR[25:0] 包含外部存储器地址。由于 HADDR 为字节地址,而存储器按字寻址,所以根据存储器数据宽度不同,实际向存储器发送的地址也将有所不同,如下表所示。

注:实际控制A0时:
把前面的地址<<1就可以了
0x6C000000 低电平表示命令
0x6C000002 高电平表示数据

四、LCD测试程序讲解

1、CubeMx配置

1.1、时钟配置


1.2、FSMC管脚配置


2、代码详解

2.1、LCD驱动文件

以地址区分数据还是指令

2.2、初始化函数


2.3、清屏函数


2.4、填充函数



其余画矩形画圆都可以查看LCD.c文件。

3、LCD显示图片和中英文字符

3.1、将图片转换成图片数据

使用软件Image2Lcd软件

点击保存生成,注意图片c文件名称,后面要用

将其放到项目文件inc

3.2、调用图片显示函数

在main函数中包含testimage.h

调用图片显示函数


下载到控制板查看效果

3.3、LCD显示中英文

~~~~~~~       与显示图片类似,我们只需要把显示字体的每个像素的颜色数据依次写入LCD的frame buffer中即可。因此我们首先可以获取字体字幕的像素数据

  • 字符编码:
    由于计算机只能识别0和1,文字也只能以0和1的形式在计算机里存储,所以我们需要对文字进行编码才能让计算机处理,编码的过程就是规定特定的01数字串来表示特定的文字,最简单的字符编码例子是ASCII码。
  • ASCII码:
    标准ASCII 码也叫基础ASCII码,使用7 位二进制数(剩下的1位二进制为0)来表示所有的大写和小写字母,数字0 到9、标点符号, 以及在美式英语中使用的特殊控制字符。

  • GB2312标准:
    我国首先定义的是GB2312标准。它把ASCII码表127号之后的扩展字符集直接取消掉,并规定小于127的编码按原来ASCII标准解释字符。当2个大于127的字符连在一起时,就表示1个汉字,第1个字节使用 (0xA1-0xFE) 编码,第2个字节使用(0xA1-0xFE)编码,这样的编码组合起来可以表示了7000多个符号,其中包含6763个汉字。

其他中文编码:

  • BIG5编码:台湾地区繁体中文标准字符集,采用双字节编码,共收录13053个中文字,1984年实施。
  • GBK编码:1995年12月发布的汉字编码国家标准,是对GB2312编码的扩充,对汉字采用双字节编码。GBK字符集共收录21003个汉字,包含国家标准GB13000-1中的全部中日韩汉字,和BIG5编码中的所有汉字。
  • GB18030编码:2000年3月17日发布的汉字编码国家标准,是对GBK编码的扩充,覆盖中文、日文、朝鲜语和中国少数民族文字,其中收录27484个汉字。GB18030字符集采用单字节、双字节和四字节三种方式对字符编码。兼容GBK和GB2312字符集。
  • Unicode编码:国际标准字符集,它将世界各种语言的每个字符定义一个唯一的编码,以满足跨语言、跨平台的文本信息转换。

3.4、字模

~~~~~~~       仅有字符编码,计算机还不知道该如何表达该字符,因为字符实际上是一个个独特的图形,计算机必须把字符编码转化成对应的字符图形人类才能正常识别,因此我们要给计算机提供字符的图形数据,这些数据就是字模。如下图所示(size = 16*16)
字模的数据表示
~~~~~~~       已知字模是图形数据,而图形在计算机中是由一个个像素点组成的,所以字模实质是一个个像素点数据。为方便处理,我们把字模定义成方块形的像素点阵,且每个像素点只有 0和 1这两种状态.。我们用1个数据位记录一个像素点的状态,把有笔迹的点以“1”表示,无笔迹像素点以“0”表示即可。这样一个汉字图形,使用 16x16/8=32 个字节来就可以记录下来。

  • 取字幕软件-PCtoLCD2002

3.5、显示字符函数




STM32学习笔记---TFT-LCD相关推荐

  1. stm32学习笔记----双串口同时打开时的printf()问题

    stm32学习笔记----双串口同时打开时的printf()问题 最近因为要使用串口2外接PN532芯片实现通信,另一方面,要使用串口1来将一些提示信息输出到上位机,于是重定义了printf(),使其 ...

  2. STM32学习笔记 | 引起电源和系统异常复位的原因

    关注+星标公众号,不错过精彩内容 每一块处理器都有复位的功能,不同处理器复位的类型可能有差异,引起复位的原因也可能有多种. STM32的复位功能非常强大,可通过软件.硬件和一些事件触发系统复位,而且通 ...

  3. 《STM32学习笔记》4——核心功能电路与编程(下)

    接上文,文中的图片,大多数来自视频的截图(来自洋桃电子). 欢迎大家批评指正! STM32学习笔记-专栏 文章目录 一.蜂鸣器驱动 1.蜂鸣器介绍 2.蜂鸣器电路 3.蜂鸣器程序 二. MIDI 音乐 ...

  4. 【STM32学习笔记-点亮LED灯】

    STM32学习笔记-点亮LED灯 文章目录 STM32学习笔记-点亮LED灯 一.原理图分析 二.代码分析 1.mian函数 2.led.c函数 3.led.h函数 4.函数文件整理 5.LED_In ...

  5. STM32学习笔记(四)丨TIM定时器及其应用(定时中断、内外时钟源选择)

    本篇文章包含的内容 一.TIM 定时器 1.1 TIM 定时器简介 1.2 TIM 定时器类型及其工作原理简介 1.2.1 基本定时器工作原理及其结构 1.2.2 通用定时器工作原理及其结构 1.2. ...

  6. STM32学习笔记(六)丨TIM定时器及其应用(输入捕获丨测量PWM波形的频率和占空比)

    本篇文章包含的内容 一.输入捕获 1.1 输入捕获简介 1.2 输入捕获通道的工作原理 1.3 输入捕获的主从触发模式 1.4 输入捕获和PWMI结构 二.频率的测量方法 2.1 测频法 2.2 测周 ...

  7. STM32学习笔记(15)——SPI协议

    STM32学习笔记(15)--SPI协议 一.SPI协议简介 1. 物理层 2. 协议层 (1) 通讯的开始与停止 (2)时钟极性CPOL.时钟相位CPHA 二.STM32的SPI外设 1. 通讯引脚 ...

  8. crh寄存器_牛人的STM32学习笔记(寄存器版本).doc

    牛人的STM32学习笔记(寄存器版本) 一.GPIO口的配置 STM32的DGPIO口最多可以有7组(GPIOa~GPIOg),而每一组GPIO口均有16个双向IO组成.并且没个IO口均可配置成8种模 ...

  9. STM32学习笔记(13)——模数转换ADC

    这个月一直忙于准备考试,已经考完一半科目了,偷闲写了这篇文章.因为还没考完试,估计还得咕一段时间了. STM32学习笔记(13)--模数转换ADC 第一部分:ADC功能框图 一.输入电压 二.输入通道 ...

  10. STM32学习笔记(八)丨ADC模数转换器(ADC单、双通道转换)

    本篇文章包含的内容 一.ADC 模数转换器 1.1 ADC简介 1.2 逐次逼近型ADC工作原理 1.3 STM32中的ADC基本结构 1.4 STM32中ADC的输入通道 1.5 STM32中的AD ...

最新文章

  1. Unity3D 材料
  2. 【转】IE劫持原理 BHO
  3. 世界是一台超级计算机,这个世界其实是一个超级计算机
  4. react 倒计时 countDown
  5. php怎么删除表数据,php怎样删除数据表中的数据_后端开发
  6. P2742 [USACO5.1]圈奶牛Fencing the Cows /【模板】二维凸包
  7. 无需重新部署Eclipse和Tomcat即可进行更改
  8. C语言课后习题(3)
  9. python css_Python-CSS整理
  10. AcWing 1801. 蹄子剪刀布(思维+暴力)
  11. 如何在linux下运行php脚本,如何通过Linux命令行使用和运行PHP脚本
  12. 解决mysql中文乱码问题。
  13. 物联网设备接入流程与平台架构
  14. mac地址被路由器拉黑_我买了一个新路由器,告诉我我被黑了
  15. [转载]JSP利用组件实现文件上传的全攻略
  16. 大数据与个人隐私的平衡:懂你,但不认识你
  17. 服务器上设置密码策略不能修改,Window Server 2008 R2 在Active Directory域中不能更改服务器密码策略...
  18. 测试/开发程序员喜欢跳槽?跳了就能涨工资吗?
  19. ZCMU 1919: kirito's 星爆气流斩【01背包的二进制优化】
  20. cerebro 通过https访问ES docker集群

热门文章

  1. 中关村电子商户纷纷搬走或转型 为哪般
  2. 【一周头条盘点】中国软件网(2018.5.7~2018.5.11)
  3. tkinter窗口美化功能介绍 第一章 内部美化功能
  4. 部署IIS网站HTTPS访问
  5. php study 6 string
  6. SpringMVC中的文件上传与下载,json转换,及三大框架的整合
  7. etsy开店流程遇到的问题整理
  8. linux----------2--3----(无名)管道通信原理及管道编程实战
  9. 云原生会统领SaaS服务的原因
  10. 2022 高教社杯全国大学生数学建模竞赛获奖名单(初稿)