德飞莱的TFT3.5寸彩屏从51程序移植到Arduino,不能正常显示-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 644|回复: 1

[未解决] 德飞莱的TFT3.5寸彩屏从51程序移植到Arduino,不能正常显示

[复制链接]
发表于 2022-2-25 17:27 | 显示全部楼层 |阅读模式
本帖最后由 ych0969 于 2022-2-25 17:43 编辑

2.jpg
3.jpg
这是我根据原代码整合测试的代码,删除了不需要部分


  1. int X_MAX = 240;
  2. int Y_MAX = 400;

  3. int CS = 2;
  4. int RES = 3;
  5. int RS = 4;
  6. int RW = 5;
  7. int DATA[8] = {6, 7, 8, 9, 10, 11, 12, 13};


  8. /*------------------------------------------------
  9.                 清屏函数
  10.   ------------------------------------------------*/
  11. void ClearScreen(unsigned int bColor)
  12. {
  13.   unsigned int i, j;
  14.   LCD_SetPos(0, X_MAX - 1, 0, Y_MAX - 1); //
  15.   for (i = 0; i < Y_MAX; i++)
  16.   {

  17.     for (j = 0; j < X_MAX; j++)
  18.       Write_Data_U16(bColor);

  19.   }
  20. }

  21. /*------------------------------------------------
  22.               指定区域显示指定RGB颜色
  23.   ------------------------------------------------*/
  24. void Show_RGB (unsigned int x0, unsigned int x1, unsigned int y0, unsigned int y1, unsigned int Color)
  25. {
  26.   unsigned int i, j;
  27.   LCD_SetPos(x0, x1, y0, y1);
  28.   for (i = y0; i <= y1; i++)
  29.   {
  30.     for (j = x0; j <= x1; j++)
  31.       Write_Data_U16(Color);
  32.   }
  33. }

  34. /*------------------------------------------------
  35.                 显示彩条
  36.   ------------------------------------------------*/
  37. void show_colour_bar (void)//8条色彩

  38. { unsigned char GAP = 50;
  39.   int V, H;
  40.   LCD_SetPos(0, X_MAX - 1, 0, Y_MAX - 1);

  41.   for (H = 0; H < X_MAX; H++)
  42.   {
  43.     for (V = 0; V < GAP * 1; V++)
  44.       Write_Data_U16(0xf800);
  45.   }

  46.   for (H = 0; H < X_MAX; H++)
  47.   {
  48.     for (V = GAP * 1; V < GAP * 2; V++)
  49.       Write_Data_U16(0x07e0);
  50.   }

  51.   for (H = 0; H < X_MAX; H++)
  52.   {
  53.     for (V = GAP * 2; V < GAP * 3; V++)
  54.       Write_Data_U16(0x001f);
  55.   }

  56.   for (H = 0; H < X_MAX; H++)
  57.   {
  58.     for (V = GAP * 3; V < GAP * 4; V++)
  59.       Write_Data_U16(0xffe0);
  60.   }

  61.   for (H = 0; H < X_MAX; H++)
  62.   {
  63.     for (V = GAP * 4; V < GAP * 5; V++)
  64.       Write_Data_U16(0xf81f);
  65.   }

  66.   for (H = 0; H < X_MAX; H++)
  67.   {
  68.     for (V = GAP * 5; V < GAP * 6; V++)
  69.       Write_Data_U16(0x07ff);
  70.   }

  71.   for (H = 0; H < X_MAX; H++)
  72.   {
  73.     for (V = GAP * 6; V < GAP * 7; V++)
  74.       Write_Data_U16(0xffff);
  75.   }

  76.   for (H = 0; H < X_MAX; H++)
  77.   {
  78.     for (V = GAP * 7; V < GAP * 8; V++)
  79.       Write_Data_U16(0x0000);
  80.   }

  81. }

  82. /*------------------------------------------------
  83.               写16位数据函数
  84.   ------------------------------------------------*/
  85. void Write_Data_U16(unsigned int y)
  86. {
  87.   unsigned char m, n;
  88.   m = y >> 8;
  89.   n = y;
  90.   LCD_Write_Data(m);
  91.   LCD_Write_Data(n);

  92. }
  93. /*------------------------------------------------
  94.                 写指令函数
  95.   ------------------------------------------------*/
  96. void LCD_Write_Command(unsigned char u)
  97. {

  98.   // CS=0;
  99.   // RS=0;
  100.   // DataPort=u;
  101.   // RW=0;
  102.   // RW=1;
  103.   // CS=1;
  104.   digitalWrite(CS, LOW);
  105.   digitalWrite(RS, LOW);
  106.   for (int i = 0; i < 8; i++) {
  107.     digitalWrite(DATA[i], (u >> i) & 0x01);
  108.   }
  109.   digitalWrite(RW, LOW);
  110.   digitalWrite(RW, HIGH);
  111.   digitalWrite(CS, HIGH);
  112. }

  113. /*------------------------------------------------
  114.                  写数据函数
  115.   ------------------------------------------------*/
  116. void LCD_Write_Data(unsigned char u)
  117. {
  118.   // CS=0;
  119.   // RS=1;
  120.   // DataPort=u;
  121.   // RW=0;
  122.   // RW=1;
  123.   // CS=1;
  124.   digitalWrite(CS, LOW);
  125.   digitalWrite(RS, HIGH);
  126.   for (int i = 0; i < 8; i++) {
  127.     digitalWrite(DATA[i], (u >> i) & 0x01);
  128.   }
  129.   digitalWrite(RW, LOW);
  130.   digitalWrite(RW, HIGH);
  131.   digitalWrite(CS, HIGH);
  132. }
  133. void WriteCom(unsigned int a, unsigned int b)
  134. {
  135.   LCD_Write_Command(a);
  136.   LCD_Write_Command(b);
  137. }

  138. void WriteData(unsigned int a, unsigned int b)
  139. {
  140.   LCD_Write_Data(a);
  141.   LCD_Write_Data(b);
  142. }
  143. /*------------------------------------------------
  144.                 延时函数
  145.   ------------------------------------------------*/
  146. //void delayms(unsigned int count)
  147. //{
  148. //  int i, j;
  149. //  for (i = 0; i < count; i++)
  150. //  {
  151. //    for (j = 0; j < 260; j++);
  152. //  }
  153. //}



  154. /*------------------------------------------------
  155.               液晶初始化代码
  156.   ------------------------------------------------*/

  157. void TFT_Initial(void)
  158. {
  159.   // VCI=2.80V
  160.   //************* Reset LCD Driver ****************//
  161.   //RES = 1;
  162.   digitalWrite(RES, HIGH);
  163.   delay(1);
  164.   //delayms(1); // delaymsms 1ms
  165.   //RES = 0;
  166.   digitalWrite(RES, LOW);
  167.   delay(10);
  168.   //delayms(10); // delaymsms 10ms // This delaymsms time is necessary
  169.   //RES = 1;
  170.   digitalWrite(RES, HIGH);
  171.   delay(50);
  172.   //delayms(50); // delaymsms 50 ms
  173.   // Synchronization after reset//////////
  174.   ////////////////////////////////////////////
  175.   LCD_Write_Command(0x11); //Exit Sleep
  176.   delay(100);
  177.   //delayms(100);
  178.   LCD_Write_Command(0xD1);
  179.   LCD_Write_Data (0x00);
  180.   LCD_Write_Data (0x71);
  181.   LCD_Write_Data (0x19);
  182.   LCD_Write_Command(0xD0);
  183.   LCD_Write_Data (0x07);
  184.   LCD_Write_Data (0x01);
  185.   LCD_Write_Data (0x08);
  186.   LCD_Write_Command(0x36);
  187.   LCD_Write_Data (0x48);
  188.   LCD_Write_Command(0x3A);
  189.   LCD_Write_Data (0x05);
  190.   LCD_Write_Command(0xC1);
  191.   LCD_Write_Data (0x10);
  192.   LCD_Write_Data (0x10);
  193.   LCD_Write_Data (0x02);
  194.   LCD_Write_Data (0x02);
  195.   LCD_Write_Command(0xC0); //Set Default Gamma
  196.   LCD_Write_Data (0x00);
  197.   LCD_Write_Data (0x35);
  198.   LCD_Write_Data (0x00);
  199.   LCD_Write_Data (0x00);
  200.   LCD_Write_Data (0x01);
  201.   LCD_Write_Data (0x02);
  202.   LCD_Write_Command(0xC5); //Set frame rate
  203.   LCD_Write_Data (0x04);
  204.   LCD_Write_Command(0xD2); //power setting
  205.   LCD_Write_Data (0x01);
  206.   LCD_Write_Data (0x44);
  207.   LCD_Write_Command(0xC8); //Set Gamma
  208.   LCD_Write_Data (0x04);
  209.   LCD_Write_Data (0x67);
  210.   LCD_Write_Data (0x35);
  211.   LCD_Write_Data (0x04);
  212.   LCD_Write_Data (0x08);
  213.   LCD_Write_Data (0x06);
  214.   LCD_Write_Data (0x24);
  215.   LCD_Write_Data (0x01);
  216.   LCD_Write_Data (0x37);
  217.   LCD_Write_Data (0x40);
  218.   LCD_Write_Data (0x03);
  219.   LCD_Write_Data (0x10);
  220.   LCD_Write_Data (0x08);
  221.   LCD_Write_Data (0x80);
  222.   LCD_Write_Data (0x00);
  223.   LCD_Write_Command(0x2A);
  224.   LCD_Write_Data (0x00);
  225.   LCD_Write_Data (0x00);
  226.   LCD_Write_Data (X_MAX >> 8);
  227.   LCD_Write_Data (X_MAX);
  228.   LCD_Write_Command(0x2B);
  229.   LCD_Write_Data (0x00);
  230.   LCD_Write_Data (0x00);
  231.   LCD_Write_Data (Y_MAX >> 8);
  232.   LCD_Write_Data (Y_MAX);
  233.   LCD_Write_Command(0x29); //display on
  234.   LCD_Write_Command(0x2C); //display on
  235.   delay(100);
  236.   //delayms(100);

  237. }

  238. /*------------------------------------------------
  239.   函数名称:LCD_DefineDispWindow
  240.   功    能:定义显示窗体
  241.   参    数:x0:  窗体中X坐标中较小者
  242.    x1:  窗体中X坐标中较大者
  243.    y0:  窗体中Y坐标中较小者
  244.    y1:  窗体中Y坐标中较大者
  245.   返 回 值:无
  246.   ------------------------------------------------*/
  247. void LCD_SetPos(unsigned int x0, unsigned int x1, unsigned int y0, unsigned int y1)
  248. {

  249.   WriteCom(0x00, 0x2A);
  250.   WriteData(x0 >> 8, x0);
  251.   WriteData(x1 >> 8, x1);
  252.   WriteCom(0x00, 0x2B);
  253.   WriteData(y0 >> 8, y0);
  254.   WriteData(y1 >> 8, y1);
  255.   WriteCom(0x00, 0x2C);


  256. }




  257. void setup() {
  258.   pinMode(CS, OUTPUT);
  259.   pinMode(RES, OUTPUT);
  260.   pinMode(RS, OUTPUT);
  261.   pinMode(RW, OUTPUT);
  262.   for (int i = 0; i < 8; i++)
  263.   {
  264.     pinMode(DATA[i], OUTPUT);
  265.   }
  266.   TFT_Initial();//初始化
  267. }

  268. void loop() {
  269.   show_colour_bar();  //显示彩条
  270.     ClearScreen(0xff00);
  271.     Show_RGB(0, 240, 0, 320, 0xf800); //刷出320x240的小区域
  272.     ClearScreen(0xff00);
  273. }
复制代码



这是原代码  main.c

  1. /*------------------------------------------------
  2.                 包含头文件
  3. ------------------------------------------------*/
  4. #include"reg52.h"
  5. #include"tft.h"
  6. /*------------------------------------------------
  7.                              主函数
  8. ------------------------------------------------*/
  9. void  main(void)
  10. {   

  11. TFT_Initial();//初始化
  12. while(1)
  13. {

  14. show_colour_bar();        //显示彩条
  15. ClearScreen(0xff00);
  16. Show_RGB (0,240,0,320,0xf800);//刷出320x240的小区域
  17. ClearScreen(0xff00);
  18. LCD_PutString(0,0,"朗译电子科技",0x0000,0x00f8);
  19. LCD_PutString(0,32,"朗译电子科技",0xffff,0xf800);
  20. LCD_PutString(0,64,"朗译电子科技",0x2334,0x0045);
  21. LCD_PutString(0,96,"朗译电子科技",0x0560,0x0a80);
  22. LCD_PutString(0,128,"朗译电子科技",0x0000,0x0f80);
  23. LCD_PutString(0,160,"朗译电子科技",0x0000,0x0f80);
  24. LCD_PutString(0,192,"朗译电子科技",0x0000,0x0f80);
  25. LCD_PutString(0,224,"朗译电子科技",0x0000,0x0f80);
  26. LCD_PutString(0,256,"朗译电子科技",0x0000,0x0f80);
  27. LCD_PutString(0,288,"朗译电子科技",0x0000,0x0f80);
  28. LCD_PutString(0,320,"朗译电子科技",0x0000,0x0f80);
  29. LCD_PutString(0,352,"朗译电子科技",0x0000,0x0f80);

  30.         
  31. while(1);               //刷完停止
  32.         }
  33. }
复制代码

两个库文件   tft.c
  1. /*------------------------------------------------
  2.                 包含头文件
  3. ------------------------------------------------*/
  4. #include"reg52.h"
  5. #include"tft.h"
  6. /*------------------------------------------------
  7.                      定义单片机引脚
  8. ------------------------------------------------*/
  9. sbit CS=P2^2;                //片选
  10. sbit RES=P2^1;                //复位
  11. sbit RS=P2^4;                //数据/命令选择
  12. sbit RW=P2^5;
  13. #define DataPort P0                   //数据口使用DataPort
  14. //unsigned char code pic[];
  15. #define X_MAX 240
  16. #define Y_MAX 400
  17. /*------------------------------------------------
  18.                              清屏函数
  19. ------------------------------------------------*/
  20. void ClearScreen(unsigned int bColor)
  21. {
  22. unsigned int i,j;
  23. LCD_SetPos(0,X_MAX-1,0,Y_MAX-1);//
  24. for (i=0;i<Y_MAX;i++)
  25.         {
  26.         
  27.            for (j=0;j<X_MAX;j++)
  28.                Write_Data_U16(bColor);

  29.         }
  30. }

  31. /*------------------------------------------------
  32.              写8x16字符函数
  33. ------------------------------------------------*/
  34. #include "8X16.h"
  35. void LCD_PutChar8x16(unsigned short x, unsigned short y, char c, unsigned int fColor, unsigned int bColor)
  36. {
  37. unsigned int i,j;
  38. LCD_SetPos(x,x+8-1,y,y+16-1);
  39. for(i=0; i<16;i++) {
  40.                 unsigned char m=Font8x16[c*16+i];
  41.                 for(j=0;j<8;j++) {
  42.                         if((m&0x80)==0x80) {
  43.                                 Write_Data_U16(fColor);
  44.                                 }
  45.                         else {
  46.                                 Write_Data_U16(bColor);
  47.                                 }
  48.                         m<<=1;
  49.                         }
  50.                 }
  51. }

  52. /*------------------------------------------------
  53.               写字符串函数
  54. ------------------------------------------------*/
  55. void LCD_PutChar(unsigned short x, unsigned short y, char c, unsigned int fColor, unsigned int bColor) {

  56.                 LCD_PutChar8x16( x, y, c, fColor, bColor );
  57.         }

  58. /*------------------------------------------------
  59.              写32x31汉字函数
  60. ------------------------------------------------*/
  61. #include "GB3231.h"        //

  62. void PutGB1616(unsigned short x, unsigned short  y, unsigned char c[2], unsigned int fColor,unsigned int bColor){
  63.         unsigned int i,j,k;

  64.         LCD_SetPos(x,  x+32-1,y, y+31-1);

  65.         for (k=0;k<64;k++) { //64标示自建汉字库中的个数,循环查询内码
  66.           if ((codeGB_16[k].Index[0]==c[0])&&(codeGB_16[k].Index[1]==c[1])){
  67.             for(i=0;i<124;i++) {
  68.                   unsigned short m=codeGB_16[k].Msk[i];
  69.                   for(j=0;j<8;j++) {
  70.                         if((m&0x80)==0x80) {
  71.                                 Write_Data_U16(fColor);
  72.                                 }
  73.                         else {
  74.                                 Write_Data_U16(bColor);
  75.                                 }
  76.                         m<<=1;
  77.                         }
  78.                   }
  79.                 }  
  80.           }        
  81.         }
  82. /*------------------------------------------------
  83.                 写字符串函数
  84. ------------------------------------------------*/
  85. void LCD_PutString(unsigned short x, unsigned short y, unsigned char *s, unsigned int fColor, unsigned int bColor) {
  86.          unsigned char l=0;
  87.         while(*s) {
  88.                 if( *s < 0x80)
  89.                     {
  90.                         LCD_PutChar(x+l*8,y,*s,fColor,bColor);
  91.                         s++;l++;
  92.                         }
  93.                 else
  94.                     {
  95.                         PutGB1616(x+l*8,y,(unsigned char*)s,fColor,bColor);
  96.                         s+=2;l+=4;
  97.                         }
  98.                 }
  99.         }
  100. /*------------------------------------------------
  101.               指定区域显示指定RGB颜色
  102. ------------------------------------------------*/
  103. void Show_RGB (unsigned int x0,unsigned int x1,unsigned int y0,unsigned int y1,unsigned int Color)
  104. {
  105.         unsigned int i,j;
  106.         LCD_SetPos(x0,x1,y0,y1);
  107.         for (i=y0;i<=y1;i++)
  108.         {
  109.            for (j=x0;j<=x1;j++)
  110.                Write_Data_U16(Color);
  111.         }
  112. }

  113. /*------------------------------------------------
  114.                 显示彩条
  115. ------------------------------------------------*/
  116. void show_colour_bar (void)

  117. {
  118.         unsigned char GAP=50;
  119.         int V,H;
  120.         LCD_SetPos(0,X_MAX-1,0,Y_MAX-1);

  121.         for(H=0;H<X_MAX;H++)
  122.         {
  123.                 for(V=0;V<GAP*1;V++)
  124.                 Write_Data_U16(0xf800);
  125.         }

  126.         for(H=0;H<X_MAX;H++)
  127.         {
  128.                 for(V=GAP*1;V<GAP*2;V++)
  129.                 Write_Data_U16(0x07e0);
  130.         }

  131.         for(H=0;H<X_MAX;H++)
  132.         {
  133.                 for(V=GAP*2;V<GAP*3;V++)
  134.                 Write_Data_U16(0x001f);
  135.         }

  136.         for(H=0;H<X_MAX;H++)
  137.         {
  138.                 for(V=GAP*3;V<GAP*4;V++)
  139.                 Write_Data_U16(0xffe0);
  140.         }

  141.         for(H=0;H<X_MAX;H++)
  142.         {
  143.                 for(V=GAP*4;V<GAP*5;V++)
  144.                 Write_Data_U16(0xf81f);
  145.         }

  146.         for(H=0;H<X_MAX;H++)
  147.         {
  148.                 for(V=GAP*5;V<GAP*6;V++)
  149.                 Write_Data_U16(0x07ff);
  150.         }

  151.         for(H=0;H<X_MAX;H++)
  152.         {
  153.                 for(V=GAP*6;V<GAP*7;V++)
  154.                 Write_Data_U16(0xffff);
  155.         }

  156.         for(H=0;H<X_MAX;H++)
  157.         {
  158.                 for(V=GAP*7;V<GAP*8;V++)
  159.                 Write_Data_U16(0x0000);
  160.         }
  161. }
  162. /*------------------------------------------------
  163.              显示图片函数
  164. ------------------------------------------------*/
  165. /*void show_photo(void)
  166. {
  167.         unsigned char j;
  168.         unsigned int i;
  169.         unsigned long s=0;

  170.         LCD_SetPos(0,240,0,320);//320x240

  171.         for (i=0;i<75;i++)
  172.         {
  173.         for (j=0;j<240;j++)
  174.         Write_Data_U16(0xffff);
  175.                
  176.         }

  177.         for (i=0;i<170;i++)
  178.         {
  179.         for (j=0;j<55;j++)
  180.                 Write_Data_U16(0xffff);

  181.                 for (j=0;j<130;j++)
  182.                 Write_Data_U16(pic[s++],pic[s++]);
  183.                
  184.                 for (j=0;j<55;j++)
  185.                 Write_Data_U16(0xffff);
  186.         }

  187.     for (i=0;i<75;i++)
  188.         {
  189.         for (j=0;j<240;j++)
  190.         Write_Data_U16(0xffff);
  191.                
  192.         }
  193. }
  194. */
  195. /*------------------------------------------------
  196.               写16位数据函数
  197. ------------------------------------------------*/
  198. void  Write_Data_U16(unsigned int y)
  199. {
  200.         unsigned char m,n;
  201.         m=y>>8;
  202.         n=y;
  203.         LCD_Write_Data(m);
  204.     LCD_Write_Data(n);

  205. }
  206. /*------------------------------------------------
  207.                 写指令函数
  208. ------------------------------------------------*/
  209. void LCD_Write_Command(unsigned char u)
  210. {
  211.          
  212.         CS=0;
  213.         RS=0;
  214.         DataPort=u;        
  215.         RW=0;
  216.         RW=1;
  217.         CS=1;
  218. }

  219. /*------------------------------------------------
  220.                  写数据函数
  221. ------------------------------------------------*/
  222. void LCD_Write_Data(unsigned char u)
  223. {        
  224.         CS=0;
  225.         RS=1;
  226.         DataPort=u;        
  227.         RW=0;
  228.         RW=1;
  229.         CS=1;
  230. }

  231. WriteCom(a,b)
  232. {
  233. LCD_Write_Command(a);
  234. LCD_Write_Command(b);
  235. }

  236. WriteData(a,b)
  237. {
  238. LCD_Write_Data(a);
  239. LCD_Write_Data(b);
  240. }
  241. /*------------------------------------------------
  242.                 延时函数
  243. ------------------------------------------------*/
  244. void delayms(unsigned int count)
  245. {
  246.     int i,j;                                                                                
  247.     for(i=0;i<count;i++)                                                                    
  248.        {
  249.              for(j=0;j<260;j++);
  250.        }                                                                                    
  251. }



  252. /*------------------------------------------------
  253.                      液晶初始化代码
  254. ------------------------------------------------*/

  255. void TFT_Initial(void)
  256. {
  257. // VCI=2.80V
  258. //************* Reset LCD Driver ****************//
  259. RES = 1;
  260. delayms(1); // delaymsms 1ms
  261. RES = 0;
  262. delayms(10); // delaymsms 10ms // This delaymsms time is necessary
  263. RES = 1;
  264. delayms(50); // delaymsms 50 ms
  265. // Synchronization after reset//////////
  266. ////////////////////////////////////////////
  267. LCD_Write_Command(0x11); //Exit Sleep
  268. delayms(100);
  269. LCD_Write_Command(0xD1);
  270. LCD_Write_Data (0x00);
  271. LCD_Write_Data (0x71);
  272. LCD_Write_Data (0x19);
  273. LCD_Write_Command(0xD0);
  274. LCD_Write_Data (0x07);
  275. LCD_Write_Data (0x01);
  276. LCD_Write_Data (0x08);
  277. LCD_Write_Command(0x36);
  278. LCD_Write_Data (0x48);
  279. LCD_Write_Command(0x3A);
  280. LCD_Write_Data (0x05);
  281. LCD_Write_Command(0xC1);
  282. LCD_Write_Data (0x10);
  283. LCD_Write_Data (0x10);
  284. LCD_Write_Data (0x02);
  285. LCD_Write_Data (0x02);
  286. LCD_Write_Command(0xC0); //Set Default Gamma
  287. LCD_Write_Data (0x00);
  288. LCD_Write_Data (0x35);
  289. LCD_Write_Data (0x00);
  290. LCD_Write_Data (0x00);
  291. LCD_Write_Data (0x01);
  292. LCD_Write_Data (0x02);
  293. LCD_Write_Command(0xC5); //Set frame rate
  294. LCD_Write_Data (0x04);
  295. LCD_Write_Command(0xD2); //power setting
  296. LCD_Write_Data (0x01);
  297. LCD_Write_Data (0x44);
  298. LCD_Write_Command(0xC8); //Set Gamma
  299. LCD_Write_Data (0x04);
  300. LCD_Write_Data (0x67);
  301. LCD_Write_Data (0x35);
  302. LCD_Write_Data (0x04);
  303. LCD_Write_Data (0x08);
  304. LCD_Write_Data (0x06);
  305. LCD_Write_Data (0x24);
  306. LCD_Write_Data (0x01);
  307. LCD_Write_Data (0x37);
  308. LCD_Write_Data (0x40);
  309. LCD_Write_Data (0x03);
  310. LCD_Write_Data (0x10);
  311. LCD_Write_Data (0x08);
  312. LCD_Write_Data (0x80);
  313. LCD_Write_Data (0x00);
  314. LCD_Write_Command(0x2A);
  315. LCD_Write_Data (0x00);
  316. LCD_Write_Data (0x00);
  317. LCD_Write_Data (X_MAX>>8);
  318. LCD_Write_Data (X_MAX);
  319. LCD_Write_Command(0x2B);
  320. LCD_Write_Data (0x00);
  321. LCD_Write_Data (0x00);
  322. LCD_Write_Data (Y_MAX>>8);
  323. LCD_Write_Data (Y_MAX);
  324. LCD_Write_Command(0x29); //display on      
  325. LCD_Write_Command(0x2C); //display on
  326. delayms(100);

  327. }

  328. /*------------------------------------------------
  329. 函数名称:LCD_DefineDispWindow
  330. 功    能:定义显示窗体
  331. 参    数:x0:  窗体中X坐标中较小者
  332.          x1:  窗体中X坐标中较大者
  333.          y0:  窗体中Y坐标中较小者
  334.          y1:  窗体中Y坐标中较大者
  335. 返 回 值:无
  336. ------------------------------------------------*/
  337. static void LCD_SetPos(unsigned int x0,unsigned int x1,unsigned int y0,unsigned int y1)
  338. {

  339. WriteCom(0x00,0x2A);
  340. WriteData(x0>>8,x0);
  341. WriteData(x1>>8,x1);
  342. WriteCom(0x00,0x2B);
  343. WriteData(y0>>8,y0);
  344. WriteData(y1>>8,y1);
  345. WriteCom(0x00,0x2C);


  346. }
复制代码


tft.h


  1. #ifndef __TFT_H__
  2. #define __TFT_H__
  3. void TFT_Initial(void);
  4. void show_colour_bar (void);
  5. void Write_Cmd_Data(unsigned char x, unsigned int y);
  6. void Write_Cmd(unsigned char DH,unsigned char DL);
  7. void Write_Data(unsigned char DH,unsigned char DL);
  8. void delayms(unsigned int tt);
  9. void show_photo(void);
  10. void Show_RGB (unsigned int x0,unsigned int x1,unsigned int y0,unsigned int y1,unsigned int Color);
  11. void  Write_Data_U16(unsigned int y);
  12. void LCD_SetPos(unsigned int x0,unsigned int x1,unsigned int y0,unsigned int y1);
  13. void ClearScreen(unsigned int bColor);
  14. void LCD_PutChar8x16(unsigned short x, unsigned short y, char c, unsigned int fColor, unsigned int bColor);
  15. void LCD_PutChar(unsigned short x, unsigned short y, char c, unsigned int fColor, unsigned int bColor);
  16. void LCD_PutString(unsigned short x, unsigned short y, char *s, unsigned int fColor, unsigned int bColor);
  17. void LCD_PutChar8x8(unsigned short x, unsigned short y, char c, unsigned int fColor, unsigned int bColor);
  18. void PutGB1616(unsigned short x, unsigned short  y, unsigned char c[2], unsigned int fColor,unsigned int bColor);void LCD_Write_Command(unsigned char u);
  19. void LCD_Write_Data(unsigned char u);

  20. #endif
复制代码



还有3个字符编码 就不粘贴了

51所有文件

51所有文件


请帮看看问题在哪?谢谢

发表于 2022-2-25 19:50 | 显示全部楼层
这样移植之后出现不显示问题最可能的是屏幕初始化部分

你仔细研究一下 51 那部分的代码,所有的初始化指令和参数都要发送过去才行
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 13:47 , Processed in 0.105531 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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