zhong_zhiqi 发表于 2023-8-18 15:42:51

记录并分享LGDP4524驱动2.0寸TFT液晶屏驱动程序

本帖最后由 zhong_zhiqi 于 2023-8-18 15:56 编辑

      TFT LCD这部分课程算是开始学习51单片机以来最挑战的一个内容,挑战在于看完课程视频后,发现官方在百度网盘上上传的这部分代码中没有我买到的TFT主控的型号,没法实验效果,联系普中的支持人员后,拿到一分主控的手册让自己学着编写驱动程序:L,下面将修改后成功的代码和体会分享给大家。

       我买到A4开发板套件中包含的TFT液晶板是“LGDP4524”主控,带2.0寸液晶屏(图1、图2),屏的具体参数未知,姑且按照常见的176x220进行实验。官方代码在23年5月29日最新上传的代码中没有包含这个型号,当中最贴近的型号是LGDP4525B。客服提供了一个LG的手册文档来学习和开发,版本是v0.2,我从网上又搜到了v0.9版本的,分享给大家这个更新版本的PDF文件。实现的代码如下:
【TFTLCD.h】添加条件编译的指示语句和液晶屏的分辨率参数
----------------------------------------
#define TFT20_LG4524

#ifdef TFT20_LG4524
      #define      WIDTH      176
      #define      HEIGHT      220
#endif

--------------------------------------------
【tftlcd.c】添加对应条件编译的指示的LGDP4524主控初始化代码:
---------------------------------------------------------------------------------------------------
#ifdef TFT20_LG4524

//*********************Initial code******************************
      LCD_WriteCmd(0x0007);LCD_WriteData(0x0000);
      LCD_WriteCmd(0x0014);LCD_WriteData(0x0030);
      delay_ms(50);

      LCD_WriteCmd(0x0012);LCD_WriteData(0x0019);
      delay_ms(50);

      LCD_WriteCmd(0x0013);LCD_WriteData(0x2C30);
      delay_ms(50);

      LCD_WriteCmd(0x0002);LCD_WriteData(0x0700);
      delay_ms(50);

      LCD_WriteCmd(0x0010);LCD_WriteData(0x3250);
      delay_ms(50);

      LCD_WriteCmd(0x0007);LCD_WriteData(0x0037);
      LCD_WriteCmd(0x0022);

#endif

------------------------------------------------------------------------
最终代码执行的结果见图3,调试期间方便起见,将屏幕输出横竖调换,修改了文字的位置和小雪人图片的位置,下面谈一谈几点收获:
* 主控技术手册中最重要的部分是62页的指令列表,当中包含了全部控制寄存器的地址和取值,再通过各个寄存器在哪一位来翻回到前面的内容去解读赋值对于主控功能上的意义;
* 技术手册中的时序图反倒是并不重要,因为官方例程中的写指令、写数据的函数已经封装好了,不必修改;
* 手册中107-109页的指令用法是最关键的,里面写明了上电、启动显示、待机显示等指令需要对哪些寄存器进行赋值和延时,初始化代码中全部是依照这部分内容编写;
* 分享的初始化代码总共是8条指令,与其他型号主控的代码比较起来会显得少了很多,具体原因如下:
- 30-3F的寄存器全部是与Gamma控制部分相关的,主要就是体现在TFT显示的颜色是否准确,因此省略掉不影响基本功能;
- 60H、61H是EEPROM相关的寄存器,省略掉不影响基本功能;
- 71H、72H是测试寄存器,省略掉不影响基本功能;
* 大家调试其他型号主控时重新下载代码后,如果执行结果没有成功,可以尝试把实验板下电并拔掉USB线,将整个实验板断电,然后再重新上电检查效果,有时可能会发现显示的内容有了变化;
* 当显示一片空白时,不妨侧过来不同的角度看看是否有很暗淡的字符或图像显示,因为有些液晶屏的可视角度是有限制的;
* 例程中的“读主控ID”的函数是可用的,可以用来验证读、写指令是否正确,使用方法就是在普中的下载代码工具中选择“串口调试助手”,波特率选为9600/8/1/No,执行前点击“打开”按钮,实验板上电后就可以在“接收区”看到主控的型号。
页: [1]
查看完整版本: 记录并分享LGDP4524驱动2.0寸TFT液晶屏驱动程序