找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 105|回復(fù): 4
打印 上一主題 下一主題
收起左側(cè)

TFT2.4寸顯示屏不顯示

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
前幾天在淘寶上購了一塊TFT2.4寸顯示屏回來玩玩,驅(qū)動(dòng)IC是ILI9341,賣家附有例程資料,按照例程資料弄個(gè)簡(jiǎn)單的刷屏卻只有背光亮,其它啥也沒有,檢查了好幾遍沒解決,把我搞矇逼了,問了賣家說出廠檢查過沒問題,特在這向大佬請(qǐng)教下:


  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;// 數(shù)據(jù)/命令控制
  14. sbit LCD_SCK = P3^0;// SPI時(shí)鐘

  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延時(shí)(根據(jù)實(shí)際速度調(diào)整)
  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; // 數(shù)據(jù)模式
  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. }
復(fù)制代碼


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:322939 發(fā)表于 2025-6-24 19:32 | 只看該作者

回復(fù)

使用道具 舉報(bào)

板凳
ID:322939 發(fā)表于 2025-6-25 08:43 | 只看該作者
有那位大佬看出什么問題來?
回復(fù)

使用道具 舉報(bào)

地板
ID:108361 發(fā)表于 2025-6-25 10:10 | 只看該作者
1,LCD片選選中的同時(shí),TP的片選應(yīng)該要關(guān)閉
2,檢查SPI通信波形,測(cè)試SPI讀取ILI9341版本寄存器之類是否正確
回復(fù)

使用道具 舉報(bào)

5#
ID:322939 發(fā)表于 2025-6-25 17:16 | 只看該作者
powerdruy 發(fā)表于 2025-6-25 10:10
1,LCD片選選中的同時(shí),TP的片選應(yīng)該要關(guān)閉
2,檢查SPI通信波形,測(cè)試SPI讀取ILI9341版本寄存器之類是否正 ...

在家里沒有儀器測(cè),真麻煩。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表