如何在LCD的驱动中增加一个SPI初始化代码

如何在LCD 的驱动中增加一个SPI 初始化代码,而SPI 是用GPIO 来模拟的,那在BSP 当中如何应用控制GPIO 呢!


PS:
主要目的就是在init.c 中的InitDisplay()中增加如下代码:
  #define HX_SCLK      (1 < < 3)
  #define HX_CS        (1 < < 2)
  #define HX_SDI      (1 < < 4)
  #define LCD_RESET    (1 < < 1)
  #define BL_EN        (1 < < 1)
   
  #define SET_HX_SCLK    (s2440IOP->rGPFDAT=s2440IOP->rGPFDAT|HX_SCLK )
  #define CLR_HX_SCLK    (s2440IOP->rGPFDAT=s2440IOP->rGPFDAT&(~HX_SCLK) )
  #define SET_HX_CS      (s2440IOP->rGPFDAT=s2440IOP->rGPFDAT|HX_CS )
  #define CLR_HX_CS      (s2440IOP->rGPFDAT=s2440IOP->rGPFDAT&(~HX_CS) )
  #define SET_HX_SDI      (s2440IOP->rGPFDAT=s2440IOP->rGPFDAT|HX_SDI )
  #define CLR_HX_SDI      (s2440IOP->rGPFDAT=s2440IOP->rGPFDAT&(~HX_SDI) )
  #define SET_LCD_RESET  (s2440IOP->rGPFDAT=s2440IOP->rGPFDAT|LCD_RESET )
  #define CLR_LCD_RESET  (s2440IOP->rGPFDAT=s2440IOP->rGPFDAT&(~LCD_RESET) )
  #define SET_BL_EN  (s2440IOP->rGPFDAT=s2440IOP->rGPFDAT|BL_EN )
  #define CLR_BL_EN  (s2440IOP->rGPFDAT=s2440IOP->rGPFDAT&(~BL_EN) )
//***********************************
  void HX8238intial(void);
  void Write_com(unsigned short SSD2123_index);
  void Write_register(unsigned short SSD2123_data);
  void Write_com_reg(unsigned short SSD2123_index, unsigned short SSD2123_data);
  // void Lcd_ClearScr_SPI(unsigned short DATA1);
 
//---------------------------------------------------------
  void HX8238intial(void)
  { Delay(10);
    CLR_LCD_RESET;
    Delay(10);
    SET_LCD_RESET;
        Delay(5);
    //********Enter initial LQ048Y3DH01 *******   
Write_com_reg(0x0001,0x0102);
Write_com_reg(0x0002,0x0400);
Write_com_reg(0x0003,0x28E7);//0x28E7
Write_com_reg(0x0004,0x4100);
Write_com_reg(0x000B,0x0019);
Write_com_reg(0x000C,0x700A);//0x700A
Write_com_reg(0x000D,0x0200);//0x0200
Write_com_reg(0x0011,0x1101);
Write_com_reg(0x0012,0x1020);
Write_com_reg(0x0013,0x0320);
Write_com_reg(0x0014,0x01E0);
Write_com_reg(0x0015,0x03E8);

Write_com_reg(0x0016,0x0C0A);
Write_com_reg(0x0017,0x0001);
Write_com_reg(0x0018,0x0000);
//*********gamma********************
Write_com_reg(0x0030,0x341F);
Write_com_reg(0x0031,0x0D1B);
Write_com_reg(0x0032,0x1301);
Write_com_reg(0x0033,0x6634);
Write_com_reg(0x0034,0x0034);
Write_com_reg(0x0035,0x0300);
Write_com_reg(0x0036,0x0D1B);
Write_com_reg(0x0037,0x1508);
Write_com_reg(0x0038,0x6634);
Write_com_reg(0x0039,0x8276);

Write_com_reg(0x0028,0x0006);
Write_com_reg(0x0022,0x0090);
Write_com_reg(0x003D,0x0290);
Write_com_reg(0x0021,0x0F5A);
Write_com_reg(0x003F,0x181B);
    Delay(20);
   
  }
//********************************
  void Write_com(unsigned short SSD2123_index)
  {   
 
      unsigned char HX_WR_COM=0x74;//74
      unsigned char i;
      SET_HX_CS  ;//SET_HX_CS;
      SET_HX_SDI ;//SET_HX_SDI;
      SET_HX_SCLK;//SET_HX_CLK;
      CLR_HX_CS;
     
      Delay(1);
     
      for(i=8;i>0;i--)
      {
      CLR_HX_SCLK;
    if (HX_WR_COM & 0x80)
      SET_HX_SDI;
    else
      CLR_HX_SDI;
      HX_WR_COM  < <= 1;
     
      Delay(1);
      SET_HX_SCLK;
      Delay(1);
      }
    for(i=0;i <16;i++) // 7 ~14 Data
    {
      CLR_HX_SCLK;
    if ( SSD2123_index& 0x8000)
      SET_HX_SDI;
    else
      CLR_HX_SDI;
      SSD2123_index < <= 1;
      Delay(1);
      SET_HX_SCLK;
      Delay(1);
    }
   
    SET_HX_SCLK;
    //Delay(1);
    //SET_HX_SDI ;//SET_HX_SDI;
    Delay(1);
    SET_HX_CS;     
   
  }
 
  //************************************
  void Write_register(unsigned short SSD2123_data)
  {   
        unsigned char HX_WR_COM=0x76;//76
    unsigned char i;
    SET_HX_CS  ;//SET_HX_CS;
    SET_HX_SDI ;//SET_HX_SDI;
    SET_HX_SCLK;//SET_HX_CLK;
    CLR_HX_CS;
 
  Delay(1);
    for(i=0;i <8;i++) // 2 ~6 ssd2123_reg
    {
    CLR_HX_SCLK;
    if (HX_WR_COM & 0x80)
    SET_HX_SDI;
    else
    CLR_HX_SDI;
    HX_WR_COM  < <= 1;
   
    Delay(1);
    SET_HX_SCLK;
    Delay(1);
    }
    for(i=0;i <16;i++) // 7 ~14 Data
  {
    CLR_HX_SCLK;
    if ( SSD2123_data& 0x8000)
    SET_HX_SDI;
    else
    CLR_HX_SDI;
    SSD2123_data < <= 1;
    Delay(1);
    SET_HX_SCLK;
  Delay(1);
    }
   
    SET_HX_SCLK;
  // Delay(1);
    //SET_HX_SDI ;//SET_HX_SDI;
    Delay(1);
    SET_HX_CS;
  }
  //******************************************************
  void Write_com_reg(unsigned short SSD2123_index, unsigned short SSD2123_data)
  {
  Write_com(SSD2123_index);
  Delay(5);
  Write_register( SSD2123_data);
  Delay(5);
  }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值