久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標(biāo)題: TFT2.4寸顯示屏不顯示 [打印本頁]

作者: LAW1100    時間: 2025-6-24 19:31
標(biāo)題: TFT2.4寸顯示屏不顯示
前幾天在淘寶上購了一塊TFT2.4寸顯示屏回來玩玩,驅(qū)動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;// 數(shù)據(jù)/命令控制
  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延時(根據(jù)實際速度調(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ù)制代碼



作者: LAW1100    時間: 2025-6-24 19:32


作者: LAW1100    時間: 2025-6-25 08:43
有那位大佬看出什么問題來?
作者: powerdruy    時間: 2025-6-25 10:10
1,LCD片選選中的同時,TP的片選應(yīng)該要關(guān)閉
2,檢查SPI通信波形,測試SPI讀取ILI9341版本寄存器之類是否正確
作者: LAW1100    時間: 2025-6-25 17:16
發(fā)表于 2025-6-25 10:10
1,LCD片選選中的同時,TP的片選應(yīng)該要關(guān)閉
2,檢查SPI通信波形,測試SPI讀取ILI9341版本寄存器之類是否正 ...

在家里沒有儀器測,真麻煩。
作者: rayin    時間: 2025-6-27 11:59
要檢查一下SPI的SCL/MOSI/RS三條信號線有沒有接錯. MISO不需要接線. 點屏不需要示波器, 萬用表檢查線路就可以了
作者: weisc6955    時間: 2025-7-4 20:31
先看看片子的GPIO輸出設(shè)定,控制端口需要設(shè)定為推挽輸出方式。第13,14行改一下看看情況。如果是IIC接口需要設(shè)置上拉電阻。試試再說。
作者: LAW1100    時間: 2025-7-4 20:42


作者: LAW1100    時間: 2025-7-4 20:50
買了邏輯分析儀回來測試,9341資料里只有并口時序圖,但SPI的時序圖是不是和并口一樣?不清楚
作者: LAW1100    時間: 2025-7-4 20:52

這是并口時序圖

圖片1.png (223.06 KB, 下載次數(shù): 0)

圖片1.png

作者: LAW1100    時間: 2025-7-6 10:07
這是規(guī)格書SPI4線的時序圖,CS時間要求40ns
作者: LAW1100    時間: 2025-7-6 10:10
這是實測的時序圖,CS時間為80us,和資料對比時間相差很大,真不知是咋做的?

時序圖.jpg (633.64 KB, 下載次數(shù): 0)

時序圖.jpg

作者: LAW1100    時間: 2025-7-6 16:23
這是9341的時序圖

9341.JPG (101.3 KB, 下載次數(shù): 0)

9341.JPG

作者: rundstedt    時間: 2025-7-8 10:25
CS為1表示無效,但你還有CLK等波形這是很明顯的錯誤。




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 欧美aⅴ在线观看 | 亚洲国产一区视频 | 性做久久久久久免费观看欧美 | 日本粉嫩一区二区三区视频 | 中文字幕在线观看www | 范冰冰一级做a爰片久久毛片 | 亚洲毛片在线观看 | 三级av在线 | 午夜精品一区 | 精品中文字幕一区二区三区 | 日韩视频中文字幕 | 精品欧美一区二区三区久久久 | 国产ts人妖系列高潮 | 国产精品99久久久久久人 | 九九在线 | 夜夜爽99久久国产综合精品女不卡 | 亚洲3级 | 欧美日韩精品一区二区三区视频 | 国产精品久久久亚洲 | 亚洲精品福利在线 | 亚洲精选久久 | 亚洲免费在线播放 | 国产中的精品av涩差av | 国产99视频精品免费播放照片 | 伊人二区 | 国产不卡在线观看 | 成人在线亚洲 | 国产精品高潮呻吟久久 | 大香网伊人 | 天天舔天天| 国产精品国产三级国产aⅴ无密码 | 奇米视频777 | 欧美激情a∨在线视频播放 成人免费共享视频 | 欧美国产精品一区二区 | 成年人在线观看 | 中文字幕成人 | 国产精品色av | 日韩美女在线看免费观看 | 日韩精品成人 | 国产精品久久久久久久免费大片 | 欧美a在线 |