打印
[其他ST产品]

STM32学习笔记---TFT-LCD

[复制链接]
楼主: hehhehee
手机看帖
扫描二维码
随时随地手机跟帖
41
hehhehee|  楼主 | 2022-8-24 22:42 | 只看该作者 |只看大图 回帖奖励 |倒序浏览
注:液晶屏内部包含SSD1963控制器,该控制器使用 8080 接口与单片机通讯

使用特权

评论回复
42
hehhehee|  楼主 | 2022-8-24 22:43 | 只看该作者
2、STM32与LCD的电气连接

使用特权

评论回复
43
hehhehee|  楼主 | 2022-8-24 22:44 | 只看该作者
2.1、8080时序-写数据/命令

使用特权

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

使用特权

评论回复
45
hehhehee|  楼主 | 2022-8-24 22:46 | 只看该作者
用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信号线   
}

使用特权

评论回复
46
hehhehee|  楼主 | 2022-8-24 22:47 | 只看该作者
2.2、FMSC-模拟8080时序


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

使用特权

评论回复
47
hehhehee|  楼主 | 2022-8-24 22:48 | 只看该作者
Tpwcsl = ADDSET + DATAST +1 > 30      ~~~~      建议适当取大一点点
TCS = ADDSET > 2 ns                               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                               ADDSET = 1
TPWLW = DATAST +1 > 12ns                     ~~~~~~~~~~~~~~~~~~~                     DATAST = 3

使用特权

评论回复
48
hehhehee|  楼主 | 2022-8-24 22:48 | 只看该作者
对于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#为低电平),传输的信号则会被理解为命令。

使用特权

评论回复
49
hehhehee|  楼主 | 2022-8-24 22:50 | 只看该作者
2.3、如何控制A0(即控制DC线)


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

使用特权

评论回复
50
hehhehee|  楼主 | 2022-8-24 22:51 | 只看该作者
2.4、如何控制A0(即控制DC线)

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

使用特权

评论回复
51
hehhehee|  楼主 | 2022-8-24 22:51 | 只看该作者

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

使用特权

评论回复
52
hehhehee|  楼主 | 2022-8-24 22:52 | 只看该作者
四、LCD测试程序讲解
1、CubeMx配置
1.1、时钟配置




使用特权

评论回复
53
hehhehee|  楼主 | 2022-8-24 22:55 | 只看该作者
1.2、FSMC管脚配置

使用特权

评论回复
54
hehhehee|  楼主 | 2022-8-24 22:58 | 只看该作者

使用特权

评论回复
55
hehhehee|  楼主 | 2022-8-24 23:00 | 只看该作者
2、代码详解
2.1、LCD驱动文件

以地址区分数据还是指令

使用特权

评论回复
56
hehhehee|  楼主 | 2022-8-24 23:01 | 只看该作者
2.2、初始化函数

使用特权

评论回复
57
hehhehee|  楼主 | 2022-8-24 23:02 | 只看该作者
2.3、清屏函数


使用特权

评论回复
58
hehhehee|  楼主 | 2022-8-24 23:05 | 只看该作者
2.4、填充函数

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

使用特权

评论回复
59
hehhehee|  楼主 | 2022-8-24 23:05 | 只看该作者
3、LCD显示图片和中英文字符
3.1、将图片转换成图片数据

使用软件Image2Lcd软件

使用特权

评论回复
60
hehhehee|  楼主 | 2022-8-24 23:07 | 只看该作者

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则