⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ili932x.c

📁 STM32 单片机例程
💻 C
📖 第 1 页 / 共 2 页
字号:

      LCD_WR_CmdPar(0x04, 0x0000);  //Scalling Contral.
      LCD_WR_CmdPar(0x08, 0x0202);  //Display Contral 2.(0x0207)
      LCD_WR_CmdPar(0x09, 0x0000);  //Display Contral 3.(0x0000)
      LCD_WR_CmdPar(0x0a, 0x0000);  //Frame Cycle Contal.(0x0000)
      LCD_WR_CmdPar(0x0c, (1 << 0));   //Extern Display Interface Contral 1.(0x0000)
      LCD_WR_CmdPar(0x0d, 0x0000);  //Frame Maker Position.
      LCD_WR_CmdPar(0x0f, 0x0000);  //Extern Display Interface Contral 2.

      for (i = 50000; i > 0; i--);
      LCD_WR_CmdPar(0x07, 0x0101);  //Display Contral.
      for (i = 50000; i > 0; i--);

      LCD_WR_CmdPar(0x10, (1 << 12) | (0 << 8) | (1 << 7) | (1 << 6) | (0 << 4));   //Power Control 1.(0x16b0)
      LCD_WR_CmdPar(0x11, 0x0007);                       //Power Control 2.(0x0001)
      LCD_WR_CmdPar(0x12, (1 << 8) | (1 << 4) | (0 << 0));              //Power Control 3.(0x0138)
      LCD_WR_CmdPar(0x13, 0x0b00);                       //Power Control 4.
      LCD_WR_CmdPar(0x29, 0x0000);                       //Power Control 7.

      LCD_WR_CmdPar(0x2b, (1 << 14) | (1 << 4));

      LCD_WR_CmdPar(0x50, 0);    //Set X Start.
      LCD_WR_CmdPar(0x51, 239);  //Set X End.
      LCD_WR_CmdPar(0x52, 0);    //Set Y Start.
      LCD_WR_CmdPar(0x53, 319);  //Set Y End.

      LCD_WR_CmdPar(0x60, 0x2700);  //Driver Output Control.
      LCD_WR_CmdPar(0x61, 0x0001);  //Driver Output Control.
      LCD_WR_CmdPar(0x6a, 0x0000);  //Vertical Srcoll Control.

      LCD_WR_CmdPar(0x80, 0x0000);  //Display Position? Partial Display 1.
      LCD_WR_CmdPar(0x81, 0x0000);  //RAM Address Start? Partial Display 1.
      LCD_WR_CmdPar(0x82, 0x0000);  //RAM Address End-Partial Display 1.
      LCD_WR_CmdPar(0x83, 0x0000);  //Displsy Position? Partial Display 2.
      LCD_WR_CmdPar(0x84, 0x0000);  //RAM Address Start? Partial Display 2.
      LCD_WR_CmdPar(0x85, 0x0000);  //RAM Address End? Partial Display 2.

      LCD_WR_CmdPar(0x90, (0 << 7) | (16 << 0));   //Frame Cycle Contral.(0x0013)
      LCD_WR_CmdPar(0x92, 0x0000);  //Panel Interface Contral 2.(0x0000)
      LCD_WR_CmdPar(0x93, 0x0001);  //Panel Interface Contral 3.
      LCD_WR_CmdPar(0x95, 0x0110);  //Frame Cycle Contral.(0x0110)
      LCD_WR_CmdPar(0x97, (0 << 8));   //
      LCD_WR_CmdPar(0x98, 0x0000);  //Frame Cycle Contral.


      LCD_WR_CmdPar(0x07, 0x0173);  //(0x0173)
   }
   else	if(i==0x7781)
   {
   	  //--------------------------------ST7781 Internal Register Initial---------------------------------------//
	    LCD_WR_CmdPar(0x00ff, 0x0001); //wr_cmd(0x00ff);wr_data(0x0001);
	    LCD_WR_CmdPar(0x00f3, 0x0008); //wr_cmd(0x00f3);wr_data(0x0008);
	    //LCD_CtrlRead_ST7781 (0x00f3); //Read Parameter
	    //---------------------------End ST7781 Internal Register Initial--------------------------------------//
	    //------------------------------------Display Control Setting----------------------------------------------//
	    LCD_WR_CmdPar(0x0001, 0x0100); //wr_cmd(0x0001);wr_data(0x0100); //Output Direct
	    LCD_WR_CmdPar(0x0002, 0x0700); //wr_cmd(0x0002);wr_data(0x0700); //Line Inversion
	    LCD_WR_CmdPar(0x0003, 0x1030); //wr_cmd(0x0003);wr_data(0x1030); //Entry Mode (65K, BGR)
	    LCD_WR_CmdPar(0x0008, 0x0807); //wr_cmd(0x0008);wr_data(0x0807); // Porch Setting
	    LCD_WR_CmdPar(0x000a, 0x0000); //wr_cmd(0x000A);wr_data(0x0000); //FMARK off
	    //-----------------------------------End Display Control setting-----------------------------------------//
	    //-------------------------------- Power Control Registers Initial --------------------------------------//
	    LCD_WR_CmdPar(0x0010, 0x0790); //wr_cmd(0x0010);wr_data(0x0790); //Power Control1
	    LCD_WR_CmdPar(0x0011, 0x0005); //wr_cmd(0x0011);wr_data(0x0005); //Power Control2
	    LCD_WR_CmdPar(0x0012, 0x0000); //wr_cmd(0x0012);wr_data(0x0000); //Power Control3
	    LCD_WR_CmdPar(0x0013, 0x0000); //wr_cmd(0x0013);wr_data(0x0000); //Power Control4
	    //---------------------------------End Power Control Registers Initial -------------------------------//
	    Delay_nms(1); //Delayms(1); //for (i = 50000; i > 0; i--); //SysTickDelay(100); //Delay 100ms
	    //--------------------------------- Power Supply Startup 1 Setting------------------------------------//
	    LCD_WR_CmdPar(0x0010, 0x1490); //wr_cmd(0x0010);wr_data(0x1490); //Power Control1
	    Delay_nms(1); //Delayms(1); //for (i = 50000; i > 0; i--); //SysTickDelay(50); //Delay 50ms
	    LCD_WR_CmdPar(0x0011, 0x0227); //wr_cmd(0x0011);wr_data(0x0227); //Power Control2
	    //--------------------------------- End Power Supply Startup 1 Setting------------------------------//
	    Delay_nms(1); //Delayms(1); //for (i = 50000; i > 0; i--); //SysTickDelay(50); //Delay 50ms
	    //--------------------------------- Power Supply Startup 2 Setting------------------------------------//
	    LCD_WR_CmdPar(0x0012, 0x0089); //wr_cmd(0x0012);wr_data(0x0089); //Power Control3
	    LCD_WR_CmdPar(0x0013, 0x1900); //wr_cmd(0x0013);wr_data(0x1900); //Power Control4
	    LCD_WR_CmdPar(0x0029, 0x0021); //wr_cmd(0x0029);wr_data(0x0021); //VCOMH setting
	    //--------------------------------- End Power Supply Startup 2 Setting------------------------------//
	    Delay_nms(1); //Delayms(1); //for (i = 50000; i > 0; i--); //SysTickDelay(50); //Delay 50ms
	    //-------------------------------------Gamma Cluster Setting-------------------------------------------//
	    LCD_WR_CmdPar(0x0030, 0x0000); //wr_cmd(0x0030);wr_data(0x0000);
	    LCD_WR_CmdPar(0x0031, 0x0006); //wr_cmd(0x0031);wr_data(0x0006);
	    LCD_WR_CmdPar(0x0032, 0x0100); //wr_cmd(0x0032);wr_data(0x0100);
	    LCD_WR_CmdPar(0x0035, 0x0001); //wr_cmd(0x0035);wr_data(0x0001);
	    LCD_WR_CmdPar(0x0036, 0x0000); //wr_cmd(0x0036);wr_data(0x0000);
	    LCD_WR_CmdPar(0x0037, 0x0000); //wr_cmd(0x0037);wr_data(0x0000);
	    LCD_WR_CmdPar(0x0038, 0x0406); //wr_cmd(0x0038);wr_data(0x0406);
	    LCD_WR_CmdPar(0x0039, 0x0202); //wr_cmd(0x0039);wr_data(0x0202);
	    LCD_WR_CmdPar(0x003c, 0x0001); //wr_cmd(0x003c);wr_data(0x0001);
	    LCD_WR_CmdPar(0x003d, 0x0000); //wr_cmd(0x003d);wr_data(0x0000);
	    //---------------------------------------End Gamma Setting---------------------------------------------//
	    //----------------------------------Display Windows 240 X 320----------------------------------------//
	    LCD_WR_CmdPar(0x0050, 0x0000); //wr_cmd(0x0050);wr_data(0x0000); // Horizontal Address Start Position
	    LCD_WR_CmdPar(0x0051, 0x00ef); //wr_cmd(0x0051);wr_data(0x00ef); // Horizontal Address End Position
	    LCD_WR_CmdPar(0x0052, 0x0000); //wr_cmd(0x0052);wr_data(0x0000); // Vertical Address Start Position
	    LCD_WR_CmdPar(0x0053, 0x013f); //wr_cmd(0x0053);wr_data(0x013f); // Vertical Address End Position
	    //----------------------------------End Display Windows 240 X 320----------------------------------//
	    //-------------------------------------------Frame Rate Setting-------------------------------------------//
	    LCD_WR_CmdPar(0x0060, 0xa700); //wr_cmd(0x0060);wr_data(0xa700); //Gate scan control
	    LCD_WR_CmdPar(0x0061, 0x0001); //wr_cmd(0x0061);wr_data(0x0001); //Non-display Area setting
	    LCD_WR_CmdPar(0x0090, 0x0033); //wr_cmd(0x0090);wr_data(0x0033); //RTNI setting
	    //-------------------------------------------END Frame Rate setting------------------------------------//
	    LCD_WR_CmdPar(0x0007, 0x0133); //wr_cmd(0x0007);wr_data(0x0133); //Display Control1
	    Delay_nms(1); //Delayms(1); //for (i = 50000; i > 0; i--); //SysTickDelay(50); //Delay 50ms
	    
	    LCD_WR_Cmd(0x0022); //wr_cmd(0x0022);	
   }

}




/*
点显示,近似圆点
8*8点阵
  ..
 ....
 ....
  ..
*/
//uint8 TableTouchDot[8]={0x00,0x00,0x18,0x3C,0x3C,0x18,0x00,0x00};
//十字光标
//8*8点阵
//    ..
//    ..
//   ....
// ........
// ........
//   ....
//    ..
//    ..
//*/
uint8 TableCursorCross[8]={0x18,0x18,0x3C,0xFF,0xFF,0x3C,0x18,0x18};

uint8 TableCursorArrow[8]={0x00,0x7C,0x70,0x78,0x5C,0x4E,0x06,0x00};

Cursor gCursor;

void InitCursor(u16 type, u16 Color, u16 BackColor)
{
   gCursor.type=type;
   gCursor.Color=Color;
   gCursor.BackColor=BackColor;
   gCursor.on_off=0;
}

void SetCursor(u16 x, u16 y, uint8 flag)
{
   
   if(flag==0)//关闭光标
   {
      if(gCursor.on_off==1)//原来开启,必须先关闭
      {
         DrawIcon(gCursor.X, gCursor.Y, gCursor.BackColor, gCursor.type);
         //FillSolidRect(gCursor.X, gCursor.Y, 8, 8, gCursor.BackColor);
      }
      gCursor.on_off=0;
   }
   else//开启光标
   {
      if(gCursor.on_off==1)//原来开启,必须先关闭原来的光标
      {
         DrawIcon(gCursor.X, gCursor.Y, gCursor.BackColor, gCursor.type);
         //FillSolidRect(gCursor.X, gCursor.Y, 8, 8, gCursor.BackColor);
      }
      gCursor.on_off=1;
      gCursor.X=x; gCursor.Y=y;
      DrawIcon(x, y, gCursor.Color, gCursor.type);
   }
}

void DrawIcon(u16 x, u16 y, u16 Color, u8 type)
{
 u8* pbuf;
 //u8 buf[16];
 
 u16 ix, iy;
   
   if(type==CURSOR_CROSS)//十字光标
   {
      pbuf = TableCursorCross;
      x-=4; y-=4;//偏移4才是中心
   }
   else//if(type==CURSOR_ARROW)//箭头光标
   {
      pbuf = TableCursorArrow;
   }
   
   for(iy=0; iy<8; iy++)//写8行
   {
      for(ix=0; ix<8; ix++)//写1行中的8列
      {
         if( isBit8(*pbuf, 7-ix)==0 )
         {
            ;
         }
         else
         {
            DrawPixel(x+ix, y, Color);
         }
      }
      pbuf++;
      y++;
   }
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -