标题: SC95F8616核心板驱动TFT2.4寸彩屏 [打印本页]

作者: jinglixixi    时间: 2020-7-2 10:03
标题: SC95F8616核心板驱动TFT2.4寸彩屏
TFT2.4寸彩屏是一款可以显示字符、图形及图片的显示屏,它与外部通讯是提供SPI接口。
SC95F8616核心板可以通过GPIO口来模拟SPI接口来驱动TFT彩屏,为此所定义相关引脚输出高低电平的语句如下:
#define LCD_LED_High()         GPIO_WriteHigh(GPIO2,GPIO_PIN_7);    // P27

#define LCD_SCK_High()         GPIO_WriteHigh(GPIO2,GPIO_PIN_4);     // P24
#define LCD_SCK_Low()          GPIO_WriteLow(GPIO2,GPIO_PIN_4);         
#define LCD_SDI_High()          GPIO_WriteHigh(GPIO2,GPIO_PIN_5);     // P25
#define LCD_SDI_Low()          GPIO_WriteLow(GPIO2,GPIO_PIN_5);         
#define LCD_DC_High()          GPIO_WriteHigh(GPIO2,GPIO_PIN_2);     //P22
#define LCD_DC_Low()           GPIO_WriteLow(GPIO2,GPIO_PIN_2);         
#define LCD_REST_High()       GPIO_WriteHigh(GPIO2,GPIO_PIN_6);    //P26
#define LCD_REST_Low()       GPIO_WriteLow(GPIO2,GPIO_PIN_6);
#define LCD_CS_High()           GPIO_WriteHigh(GPIO2,GPIO_PIN_3);    //P23
#define LCD_CS_Low()            GPIO_WriteLow(GPIO2,GPIO_PIN_3);

配置相关引脚为输出功能的函数为:
  1. void GPIO_Configuration(void)
  2. {
  3.          GPIO_Init(GPIO2,GPIO_PIN_7,GPIO_MODE_OUT_PP);
  4.          GPIO_Init(GPIO2,GPIO_PIN_6,GPIO_MODE_OUT_PP);
  5.          GPIO_Init(GPIO2,GPIO_PIN_5,GPIO_MODE_OUT_PP);
  6.          GPIO_Init(GPIO2,GPIO_PIN_4,GPIO_MODE_OUT_PP);
  7.          GPIO_Init(GPIO2,GPIO_PIN_3,GPIO_MODE_OUT_PP);
  8.          GPIO_Init(GPIO2,GPIO_PIN_2,GPIO_MODE_OUT_PP);
  9.          LCD_LED_High();
  10. }
复制代码

TFT彩屏的初始化函数为:
  1. void Lcd_Init(void)
  2. {
  3.     LCD_REST_Low();
  4.     mdelay(20);
  5.     LCD_REST_High();
  6.     mdelay(20);
  7.     LCD_CS_Low();
  8.     LCD_WR_REG(0xCB);
  9.     LCD_WR_DATA8(0x39);
  10.     LCD_WR_DATA8(0x2C);
  11.     LCD_WR_DATA8(0x00);
  12.     LCD_WR_DATA8(0x34);
  13.     LCD_WR_DATA8(0x02);
  14.     LCD_WR_REG(0xCF);
  15.     LCD_WR_DATA8(0x00);
  16.     LCD_WR_DATA8(0XC1);
  17.     LCD_WR_DATA8(0X30);
  18.     LCD_WR_REG(0xE8);  
  19.     LCD_WR_DATA8(0x85);
  20.     LCD_WR_DATA8(0x00);
  21.     LCD_WR_DATA8(0x78);
  22.     LCD_WR_REG(0xEA);
  23.     LCD_WR_DATA8(0x00);
  24.     LCD_WR_DATA8(0x00);
  25.     LCD_WR_REG(0xED);
  26.     LCD_WR_DATA8(0x64);
  27.     LCD_WR_DATA8(0x03);
  28.     LCD_WR_DATA8(0X12);
  29.     LCD_WR_DATA8(0X81);
  30.     LCD_WR_REG(0xF7);
  31.     LCD_WR_DATA8(0x20);
  32.     LCD_WR_REG(0xC0);     //Power control
  33.     LCD_WR_DATA8(0x23);   //VRH[5:0]
  34.     LCD_WR_REG(0xC1);     //Power control
  35.     LCD_WR_DATA8(0x10);   //SAP[2:0];BT[3:0]
  36.     LCD_WR_REG(0xC5);     //VCM control
  37.     LCD_WR_DATA8(0x3e);  
  38.     LCD_WR_DATA8(0x28);
  39.     LCD_WR_REG(0xC7);     // VCM control2
  40.     LCD_WR_DATA8(0x86);   // --
  41.     LCD_WR_REG(0x36);     // Memory Access Control
  42.     LCD_WR_DATA8(0x48);   // C8
  43.     LCD_WR_REG(0x3A);   
  44.     LCD_WR_DATA8(0x55);
  45.     LCD_WR_REG(0xB1);   
  46.     LCD_WR_DATA8(0x00);
  47.     LCD_WR_DATA8(0x18);
  48.     LCD_WR_REG(0xB6);    // Display Function Control
  49.     LCD_WR_DATA8(0x08);
  50.     LCD_WR_DATA8(0x82);
  51.     LCD_WR_DATA8(0x27);
  52.     LCD_WR_REG(0xF2);    // 3Gamma Function Disable
  53.     LCD_WR_DATA8(0x00);
  54.     LCD_WR_REG(0x26);    // Gamma curve selected
  55.     LCD_WR_DATA8(0x01);
  56.     LCD_WR_REG(0xE0);    // Set Gamma
  57.     LCD_WR_DATA8(0x0F);
  58.     LCD_WR_DATA8(0x31);
  59.     LCD_WR_DATA8(0x2B);
  60.     LCD_WR_DATA8(0x0C);
  61.     LCD_WR_DATA8(0x0E);
  62.     LCD_WR_DATA8(0x08);
  63.     LCD_WR_DATA8(0x4E);
  64.     LCD_WR_DATA8(0xF1);
  65.     LCD_WR_DATA8(0x37);
  66.     LCD_WR_DATA8(0x07);
  67.     LCD_WR_DATA8(0x10);
  68.     LCD_WR_DATA8(0x03);
  69.     LCD_WR_DATA8(0x0E);
  70.     LCD_WR_DATA8(0x09);
  71.     LCD_WR_DATA8(0x00);
  72.     LCD_WR_REG(0XE1);    //Set Gamma
  73.     LCD_WR_DATA8(0x00);
  74.     LCD_WR_DATA8(0x0E);
  75.     LCD_WR_DATA8(0x14);
  76.     LCD_WR_DATA8(0x03);
  77.     LCD_WR_DATA8(0x11);
  78.     LCD_WR_DATA8(0x07);
  79.     LCD_WR_DATA8(0x31);
  80.     LCD_WR_DATA8(0xC1);
  81.     LCD_WR_DATA8(0x48);
  82.     LCD_WR_DATA8(0x08);
  83.     LCD_WR_DATA8(0x0F);
  84.     LCD_WR_DATA8(0x0C);
  85.     LCD_WR_DATA8(0x31);
  86.     LCD_WR_DATA8(0x36);
  87.     LCD_WR_DATA8(0x0F);
  88.     LCD_WR_REG(0x11);    //Exit Sleep
  89.     mdelay(120);
  90.     LCD_WR_REG(0x29);    //Display on
  91.     LCD_WR_REG(0x2c);
  92. }
复制代码

实现色彩擦除屏幕的函数为:
  1. void LCD_Clear(uint16_t Color)
  2. {
  3.          char VH,VL;
  4.          uint16_t i,j;
  5.          VH=Color>>8;
  6.          VL=Color;         
  7.          Address_set(0,0,LCD_W-1,LCD_H-1);
  8.          for(i=0;i<LCD_W;i++)
  9.          {
  10.              for (j=0;j<LCD_H;j++)
  11.              {
  12.                        LCD_WR_DATA8(VH);
  13.                        LCD_WR_DATA8(VL);      
  14.              }
  15.          }
  16. }
复制代码

实现显示效果的函数为:
  1. void xianshi()
  2. {
  3.          LCD_Clear(RED);
  4.          BACK_COLOR=RED;
  5.          POINT_COLOR=WHITE;
  6.          LCD_ShowString(20,80,160,16,16,"SC95F8616 TEST");
  7.          LCD_ShowString(20,120,200,16,16,"2.4 SPI_TFT  240*320");
  8.          LCD_ShowString(20,240,160,16,16,"jinglxixi ");
  9.          LCD_ShowString(20,280,200,16,16,"2020.6.22 ");
  10. }
复制代码

运行的主程序为:
  1. void main(void)
  2. {
  3.          mdelay(200);
  4.          GPIO_Configuration();
  5.          Lcd_Init();
  6.          LCD_Clear(RED);
  7.          xianshi();
  8.          while(1);
  9. }
复制代码


TFT2.4彩屏显示效果

作者: 51hei团团    时间: 2020-7-2 12:50
好东东 楼主能分享一下源码工程包吗?




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1