找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 154|回复: 5
打印 上一主题 下一主题
收起左侧

TFT2.4寸显示屏不显示

[复制链接]
跳转到指定楼层
楼主
前几天在淘宝上购了一块TFT2.4寸显示屏回来玩玩,驱动IC是ILI9341,卖家附有例程资料,按照例程资料弄个简单的刷屏却只有背光亮,其它啥也没有,检查了好几遍没解决,把我搞矇逼了,问了卖家说出厂检查过没问题,特在这向大佬请教下:


  1. #include <AI8051U.H>
  2. #include <intrins.h>

  3. //#include "lcd.h"
  4. #define uchar unsigned char
  5. #define uint unsigned int

  6. #define RED   0XF800
  7. #define GREEN 0X07E0
  8. #define BLUE  0X001F
  9. #define WHITE 0XFFFF

  10. sbit LCD_CS = P1^2; // 片选
  11. sbit LCD_RESET = P1^6;
  12. sbit LCD_MOSI = P3^1;
  13. sbit LCD_DC =P1^3;// 数据/命令控制
  14. sbit LCD_SCK = P3^0;// SPI时钟

  15. void Delay1ms() //@12.000MHz
  16. {
  17. unsigned char i, j;

  18. i = 12;
  19. j = 169;
  20. do
  21. {
  22. while (--j);
  23. } while (--i);
  24. }

  25. void delay_ms(unsigned int ms)
  26. {
  27. while(ms--)
  28. {
  29. Delay1ms();
  30. }
  31. }
  32. // SPI延时(根据实际速度调整)
  33. void SPI_Delay()
  34.         {
  35.     _nop_(); _nop_(); _nop_();
  36.     _nop_(); _nop_(); _nop_();
  37. }
  38. void SPI_RW(unsigned char byte)
  39. {
  40.   unsigned char i;
  41.     for(i=0; i<8; i++)
  42.           {
  43.         LCD_SCK = 0;
  44.         if(byte & 0x80) LCD_MOSI = 1;
  45.         else LCD_MOSI = 0;
  46.         SPI_Delay();
  47.         LCD_SCK = 1;
  48.         byte <<= 1;
  49.                           SPI_Delay() ;
  50.    }
  51. }
  52. void LCD_WR_REG(unsigned char reg)
  53. {
  54. LCD_DC = 1; // 命令模式
  55.     LCD_CS = 0; // 使能片选
  56.     SPI_RW(reg);
  57.     LCD_CS = 1; // 禁用片选
  58. }
  59. void LCD_WR_DATA(unsigned char val)
  60. {
  61.    LCD_DC = 0; // 数据模式
  62.     LCD_CS = 0;
  63.     SPI_RW(val);
  64.     LCD_CS = 1;
  65. }



  66. void LCD_Init()
  67. {

  68. LCD_RESET=0;
  69. delay_ms(10);
  70. LCD_RESET=1;
  71. delay_ms(120);
  72. LCD_WR_REG(0xCF);
  73. LCD_WR_DATA(0x00);
  74. LCD_WR_DATA(0xC1);
  75. LCD_WR_DATA(0X30);
  76. LCD_WR_REG(0xED);
  77. LCD_WR_DATA(0x64);
  78. LCD_WR_DATA(0x03);
  79. LCD_WR_DATA(0X12);
  80. LCD_WR_DATA(0X81);
  81. LCD_WR_REG(0xE8);
  82. LCD_WR_DATA(0x85);
  83. LCD_WR_DATA(0x10);
  84. LCD_WR_DATA(0x7A);
  85. LCD_WR_REG(0xCB);
  86. LCD_WR_DATA(0x39);
  87. LCD_WR_DATA(0x2C);
  88. LCD_WR_DATA(0x00);
  89. LCD_WR_DATA(0x34);
  90. LCD_WR_DATA(0x02);
  91. LCD_WR_REG(0xF7);
  92. LCD_WR_DATA(0x20);
  93. LCD_WR_REG(0xEA);
  94. LCD_WR_DATA(0x00);
  95. LCD_WR_DATA(0x00);
  96. LCD_WR_REG(0xC0); //Power control
  97. LCD_WR_DATA(0x1B);//VRH[5:0]
  98. LCD_WR_REG(0xC1);//Pwer control
  99. LCD_WR_DATA(0x01);//SAP[2:0];BT[3:0]
  100. LCD_WR_REG(0xC5); //VCM control
  101. LCD_WR_DATA(0x30); //3F
  102. LCD_WR_DATA(0x30); //3C
  103. LCD_WR_REG(0xC7); //VCM control2
  104. LCD_WR_DATA(0XB7);
  105. LCD_WR_REG(0x36); // Memory Access Control
  106. LCD_WR_DATA(0x48);
  107. LCD_WR_REG(0x3A);
  108. LCD_WR_DATA(0x55);
  109. LCD_WR_REG(0xB1);
  110. LCD_WR_DATA(0x00);
  111. LCD_WR_DATA(0x1A);
  112. LCD_WR_REG(0xB6); // Display Function Control
  113. LCD_WR_DATA(0x0A);
  114. LCD_WR_DATA(0xA2);
  115. LCD_WR_REG(0xF2);// 3Gamma Function Disable
  116. LCD_WR_DATA(0x00);
  117. LCD_WR_REG(0x26); //Gamma curve selected
  118. LCD_WR_DATA(0x01);
  119. LCD_WR_REG(0xE0); //Set Gamma
  120. LCD_WR_DATA(0x0F);
  121. LCD_WR_DATA(0x2A);
  122. LCD_WR_DATA(0x28);
  123. LCD_WR_DATA(0x08);
  124. LCD_WR_DATA(0x0E);
  125. LCD_WR_DATA(0x08);
  126. LCD_WR_DATA(0x54);
  127. LCD_WR_DATA(0XA9);
  128. LCD_WR_DATA(0x43);
  129. LCD_WR_DATA(0x0A);
  130. LCD_WR_DATA(0x0F);
  131. LCD_WR_DATA(0x00);
  132. LCD_WR_DATA(0x00);
  133. LCD_WR_DATA(0x00);
  134. LCD_WR_DATA(0x00);
  135. LCD_WR_REG(0XE1); //Set Gamma
  136. LCD_WR_DATA(0x00);
  137. LCD_WR_DATA(0x15);
  138. LCD_WR_DATA(0x17);
  139. LCD_WR_DATA(0x07);
  140. LCD_WR_DATA(0x11);
  141. LCD_WR_DATA(0x06);
  142. LCD_WR_DATA(0x2B);
  143. LCD_WR_DATA(0x56);
  144. LCD_WR_DATA(0x3C);
  145. LCD_WR_DATA(0x05);
  146. LCD_WR_DATA(0x10);
  147. LCD_WR_DATA(0x0F);
  148. LCD_WR_DATA(0x3F);
  149. LCD_WR_DATA(0x3F);
  150. LCD_WR_DATA(0x0F);
  151. LCD_WR_REG(0x2B);
  152. LCD_WR_DATA(0x00);
  153. LCD_WR_DATA(0x00);
  154. LCD_WR_DATA(0x01);
  155. LCD_WR_DATA(0x3f);
  156. LCD_WR_REG(0x2A);
  157. LCD_WR_DATA(0x00);
  158. LCD_WR_DATA(0x00);
  159. LCD_WR_DATA(0x00);
  160. LCD_WR_DATA(0xef);
  161. LCD_WR_REG(0x11); //Exit Sleep
  162. delay_ms(120);
  163. LCD_WR_REG(0x29); //display on? ? ? ?
  164. }

  165. void LCD_SetArea(unsigned int stx,unsigned int sty,unsigned int endx,unsigned int endy)
  166. {
  167. LCD_WR_REG(0x2A);
  168. LCD_WR_DATA(stx>>8);
  169. LCD_WR_DATA(stx&0xff);
  170. LCD_WR_DATA(endx>>8);
  171. LCD_WR_DATA(endx&0xff);

  172. LCD_WR_REG(0x2B);
  173. LCD_WR_DATA(sty>>8);
  174. LCD_WR_DATA(sty&0xff);
  175. LCD_WR_DATA(endy>>8);
  176. LCD_WR_DATA(endy&0xff);
  177. }

  178. void LCD_Clear(unsigned int color)
  179. {
  180. unsigned int i,j;

  181. LCD_SetArea(0,0,239,319);
  182. LCD_WR_REG(0x2C);
  183. for(i=0;i<320;i++)
  184. {
  185. for(j=0;j<240;j++)
  186. {
  187. LCD_WR_DATA(color>>8);
  188. LCD_WR_DATA(color);
  189. }
  190. }
  191. }

  192. void main()
  193. {
  194.         P3M0=0xFF;
  195.         P3M1=0x00;
  196.         P1M0=0x00;
  197.         P1M1=0x00;
  198. delay_ms(100);
  199. LCD_Init();

  200. while(1)
  201. {
  202. LCD_Clear(RED);
  203. delay_ms(300);
  204. LCD_Clear(WHITE);
  205. delay_ms(300);
  206. LCD_Clear(BLUE);
  207. delay_ms(300);
  208. LCD_Clear(GREEN);
  209. delay_ms(300);
  210. }
  211. }
复制代码


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:322939 发表于 2025-6-24 19:32 | 只看该作者

回复

使用道具 举报

板凳
ID:322939 发表于 2025-6-25 08:43 | 只看该作者
有那位大佬看出什么问题来?
回复

使用道具 举报

地板
ID:108361 发表于 2025-6-25 10:10 | 只看该作者
1,LCD片选选中的同时,TP的片选应该要关闭
2,检查SPI通信波形,测试SPI读取ILI9341版本寄存器之类是否正确
回复

使用道具 举报

5#
ID:322939 发表于 2025-6-25 17:16 | 只看该作者
powerdruy 发表于 2025-6-25 10:10
1,LCD片选选中的同时,TP的片选应该要关闭
2,检查SPI通信波形,测试SPI读取ILI9341版本寄存器之类是否正 ...

在家里没有仪器测,真麻烦。
回复

使用道具 举报

6#
ID:517951 发表于 2025-6-27 11:59 | 只看该作者
要检查一下SPI的SCL/MOSI/RS三条信号线有没有接错. MISO不需要接线. 点屏不需要示波器, 万用表检查线路就可以了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表