1. LCD显示屏
1.1 LCD简介
1.1.1 LCD是什么??
LCD就是液晶显示器,其实本质就是灯,无数的灯组成的,每个灯如果只有两种颜色就是黑白,如果颜色较多就是彩屏。
1.1.2 LCD有什么用?
显示图形图像。
1.1.3 LCD如何使用?
点亮指定位置的灯组合成图形图像。
怎么点亮?0x2C之后写入RGB颜色
怎么指定位置?0x2A+0x2B
显示器肯定与主控连接,主控发送数据给它。
1.2 LCD资料
1.2.1 LCD原理图
从上面可以看到只有五条线有用,其中有一条是复位,我们需要了解其它四条是什么。
- LCD屏幕的尺寸:1.3英寸。
- LCD屏幕分辨率:240*240。
- LCD屏幕颜色位深:16BPP(颜色RGB比例:5:6:5)。
- LCD驱动接口:4线SPI。
- 硬件接口
- LCD_CS:片选PB4。
- D/C:命令/数据PD2。
- SCLK:同步时钟线。
- RST:TFTLCD硬复位。
- SDI:数据线,写入数据。
- LEDK:LCD液晶屏背光灯PA15。
又是SPI,哈哈哈o(* ̄▽ ̄*)ブ。
1.3 LCD操作流程
- LCD初始化:引脚初始化、SPI初始化、屏幕参数配置(直接找产商)
- SPI收发数据
- LCD显示数据和指令发送:0x2A、0x2B、0x2C
1.3.1 引脚初始化
PA15(背光,高电平有效)和PB4(片选,我们这里使用一直拉低)、以及PD2(数据命令端,0是命令、1是数据)
1.3.2 SPI初始化
1.3.3 SPI收发数据
1.3.4 LCD发送数据
1.3.5 屏幕参数配置
LCD_BLK = 1; //打开背光
delay_ms(100);
//************* Start Initial Sequence **********//
LCD_WR_DATA(0x11,LCD_CMD,8); //Sleep out
delay_ms(120); //Delay 120ms
//************* Start Initial Sequence **********//
LCD_WR_DATA(0x36,LCD_CMD,8);
LCD_WR_DATA(0x00,LCD_DATA,8);
LCD_WR_DATA(0x3A,LCD_CMD,8);
LCD_WR_DATA(0x05,LCD_DATA,8);
LCD_WR_DATA(0xB2,LCD_CMD,8);
LCD_WR_DATA(0x0C,LCD_DATA,8);
LCD_WR_DATA(0x0C,LCD_DATA,8);
LCD_WR_DATA(0x00,LCD_DATA,8);
LCD_WR_DATA(0x33,LCD_DATA,8);
LCD_WR_DATA(0x33,LCD_DATA,8);
LCD_WR_DATA(0xB7,LCD_CMD,8);
LCD_WR_DATA(0x35,LCD_DATA,8);
LCD_WR_DATA(0xBB,LCD_CMD,8);
LCD_WR_DATA(0x19,LCD_DATA,8);
LCD_WR_DATA(0xC0,LCD_CMD,8);
LCD_WR_DATA(0x2C,LCD_DATA,8);
LCD_WR_DATA(0xC2,LCD_CMD,8);
LCD_WR_DATA(0x01,LCD_DATA,8);
LCD_WR_DATA(0xC3,LCD_CMD,8);
LCD_WR_DATA(0x12,LCD_DATA,8);
LCD_WR_DATA(0xC4,LCD_CMD,8);
LCD_WR_DATA(0x20,LCD_DATA,8);
LCD_WR_DATA(0xC6,LCD_CMD,8);
LCD_WR_DATA(0x0F,LCD_DATA,8);
LCD_WR_DATA(0xD0,LCD_CMD,8);
LCD_WR_DATA(0xA4,LCD_DATA,8);
LCD_WR_DATA(0xA1,LCD_DATA,8);
LCD_WR_DATA(0xE0,LCD_CMD,8);
LCD_WR_DATA(0xD0,LCD_DATA,8);
LCD_WR_DATA(0x04,LCD_DATA,8);
LCD_WR_DATA(0x0D,LCD_DATA,8);
LCD_WR_DATA(0x11,LCD_DATA,8);
LCD_WR_DATA(0x13,LCD_DATA,8);
LCD_WR_DATA(0x2B,LCD_DATA,8);
LCD_WR_DATA(0x3F,LCD_DATA,8);
LCD_WR_DATA(0x54,LCD_DATA,8);
LCD_WR_DATA(0x4C,LCD_DATA,8);
LCD_WR_DATA(0x18,LCD_DATA,8);
LCD_WR_DATA(0x0D,LCD_DATA,8);
LCD_WR_DATA(0x0B,LCD_DATA,8);
LCD_WR_DATA(0x1F,LCD_DATA,8);
LCD_WR_DATA(0x23,LCD_DATA,8);
LCD_WR_DATA(0xE1,LCD_CMD,8);
LCD_WR_DATA(0xD0,LCD_DATA,8);
LCD_WR_DATA(0x04,LCD_DATA,8);
LCD_WR_DATA(0x0C,LCD_DATA,8);
LCD_WR_DATA(0x11,LCD_DATA,8);
LCD_WR_DATA(0x13,LCD_DATA,8);
LCD_WR_DATA(0x2C,LCD_DATA,8);
LCD_WR_DATA(0x3F,LCD_DATA,8);
LCD_WR_DATA(0x44,LCD_DATA,8);
LCD_WR_DATA(0x51,LCD_DATA,8);
LCD_WR_DATA(0x2F,LCD_DATA,8);
LCD_WR_DATA(0x1F,LCD_DATA,8);
LCD_WR_DATA(0x1F,LCD_DATA,8);
LCD_WR_DATA(0x20,LCD_DATA,8);
LCD_WR_DATA(0x23,LCD_DATA,8);
LCD_WR_DATA(0x21,LCD_CMD,8);
LCD_WR_DATA(0x29,LCD_CMD,8);
1.3.6 屏幕显示
显示位置设置:0x2A和0x2B
颜色的组成是RGB,屏幕是16位真彩,所以选择的比例是5:6:5。
什么意思呢,比如说你随机取色RGB为255:120:64,5: 6:5就是分别取这三个数的高五位、高6位、高五位,然后拼成16位酱紫......