回答

收藏

ART-Pi开发板驱动 2.8寸TFT显示屏

#竞赛 #竞赛 4900 人阅读 | 0 人回复 | 2021-01-20

在大赛期间,为了实现桌面式智能家居控制系统的设计,特意购置一块2.8寸的触摸屏,但由于时间紧张当时并没有排上用场。赛事虽然过去了,闲下来还是将它的驱动问题解决了。解决的方法并没有按厂家提供的例程来解决,而是在所用的2.2寸屏的基础上,直接通过修改初始化函数来解决。
2.8寸显示屏的初始化函数为:
  1. void LCD_Init(void)
  2. {
  3. LCD_REST_Low();
  4. delay_ms(50);
  5. LCD_REST_High();
  6. delay_ms(50);
  7. LCD_WR_REG(0xCF);
  8. LCD_WR_DATA8(0x00);
  9. LCD_WR_DATA8(0xD9);
  10. LCD_WR_DATA8(0X30);
  11. LCD_WR_REG(0xED);
  12. LCD_WR_DATA8(0x64);
  13. LCD_WR_DATA8(0x03);
  14. LCD_WR_DATA8(0X12);
  15. LCD_WR_DATA8(0X81);
  16. LCD_WR_REG(0xE8);
  17. LCD_WR_DATA8(0x85);
  18. LCD_WR_DATA8(0x10);
  19. LCD_WR_DATA8(0x78);
  20. LCD_WR_REG(0xCB);
  21. LCD_WR_DATA8(0x39);
  22. LCD_WR_DATA8(0x2C);
  23. LCD_WR_DATA8(0x00);
  24. LCD_WR_DATA8(0x34);
  25. LCD_WR_DATA8(0x02);
  26. LCD_WR_REG(0xF7);
  27. LCD_WR_DATA8(0x20);
  28. LCD_WR_REG(0xEA);
  29. LCD_WR_DATA8(0x00);
  30. LCD_WR_DATA8(0x00);
  31. LCD_WR_REG(0xC0);
  32. LCD_WR_DATA8(0x21);
  33. LCD_WR_REG(0xC1);
  34. LCD_WR_DATA8(0x12);
  35. LCD_WR_REG(0xC5);
  36. LCD_WR_DATA8(0x32);
  37. LCD_WR_DATA8(0x3C);
  38. LCD_WR_REG(0xC7);
  39. LCD_WR_DATA8(0xC1);
  40. LCD_WR_REG(0x36);
  41. LCD_WR_DATA8(0x08);
  42. LCD_WR_REG(0x3A);
  43. LCD_WR_DATA8(0x55);
  44. LCD_WR_REG(0xB1);
  45. LCD_WR_DATA8(0x00);
  46. LCD_WR_DATA8(0x18);
  47. LCD_WR_REG(0xB6);
  48. LCD_WR_DATA8(0x0A);
  49. LCD_WR_DATA8(0xA2);
  50. LCD_WR_REG(0xF2);
  51. LCD_WR_DATA8(0x00);
  52. LCD_WR_REG(0x26);
  53. LCD_WR_DATA8(0x01);
  54. LCD_WR_REG(0xE0);
  55. LCD_WR_DATA8(0x0F);
  56. LCD_WR_DATA8(0x20);
  57. LCD_WR_DATA8(0x1E);
  58. LCD_WR_DATA8(0x09);
  59. LCD_WR_DATA8(0x12);
  60. LCD_WR_DATA8(0x0B);
  61. LCD_WR_DATA8(0x50);
  62. LCD_WR_DATA8(0xBA);
  63. LCD_WR_DATA8(0x44);
  64. LCD_WR_DATA8(0x09);
  65. LCD_WR_DATA8(0x14);
  66. LCD_WR_DATA8(0x05);
  67. LCD_WR_DATA8(0x23);
  68. LCD_WR_DATA8(0x21);
  69. LCD_WR_DATA8(0x00);
  70. LCD_WR_REG(0xE1);
  71. LCD_WR_DATA8(0x00);
  72. LCD_WR_DATA8(0x19);
  73. LCD_WR_DATA8(0x19);
  74. LCD_WR_DATA8(0x00);
  75. LCD_WR_DATA8(0x12);
  76. LCD_WR_DATA8(0x07);
  77. LCD_WR_DATA8(0x2D);
  78. LCD_WR_DATA8(0x28);
  79. LCD_WR_DATA8(0x3F);
  80. LCD_WR_DATA8(0x02);
  81. LCD_WR_DATA8(0x0A);
  82. LCD_WR_DATA8(0x08);
  83. LCD_WR_DATA8(0x25);
  84. LCD_WR_DATA8(0x2D);
  85. LCD_WR_DATA8(0x0F);
  86. LCD_WR_REG(0x11);
  87. delay_ms(120);
  88. LCD_WR_REG(0x29);
  89. LCD_Clear(WHITE);
  90. }
复制代码

以I/O口模拟SPI通讯的函数为:
  1. void LCD_Writ_Bus(unsigned char com)
  2. {
  3. unsigned char uci;
  4. for(uci=0;uci<8;uci++)
  5. {
  6. if(com & 0x80)
  7. {
  8. LCD_SDI_High();
  9. }
  10. else
  11. {
  12. LCD_SDI_Low();
  13. }
  14. com = com << 1;
  15. LCD_SCK_Low();
  16. LCD_SCK_High();
  17. }
  18. }
复制代码

2.8寸显示屏与STM32H750的连接关系如图1所示。
图1 显示屏的引脚连接

经程序的编译下载,其运行效果如图2所示。
图2 显示效果

由于触摸功能是原2.2寸屏所没有的,后面再争取将触摸的功能解决了,使桌面式智能家居控制系统更加易于使用。

分享到:
回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条