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

📄 glcd_spi_stm32.c

📁 ARM_CORTEX-M3应用实例开发详解光盘
💻 C
📖 第 1 页 / 共 2 页
字号:
  wr_reg(0x51, (HEIGHT-1));             /* 水平结束坐标*/
  wr_reg(0x52, 0x0000);                 /* 垂直开始坐标*/
  wr_reg(0x53, (WIDTH-1));              /* 垂直结束 */
  wr_reg(0x60, 0xA700);                 /* 扫描行                     */
  if (driverCode == 0x5408)             /* LCD&触摸屏设备号*/
    wr_reg(0x60, 0xA700);               /* 扫描行*/
  if (driverCode == 0xC990)             /* LCD&触摸屏设备号*/
    wr_reg(0x60, 0x2700);               /* 扫描行*/
  wr_reg(0x61, 0x0001);                 /* NDL,VLE, REV*/
  wr_reg(0x6A, 0x0000);                 /* 设置滚动一行*/

  /* 显示控制部分 -------------------------------------------------*/
  wr_reg(0x80, 0x0000);
  wr_reg(0x81, 0x0000);
  wr_reg(0x82, 0x0000);
  wr_reg(0x83, 0x0000);
  wr_reg(0x84, 0x0000);
  wr_reg(0x85, 0x0000);

  /* 面板控制 -----------------------------------------------------------*/
  wr_reg(0x90, 0x0010);
  wr_reg(0x92, 0x0000);
  wr_reg(0x93, 0x0003);
  wr_reg(0x95, 0x0110);
  wr_reg(0x97, 0x0000);
  wr_reg(0x98, 0x0000);

  /* Set GRAM write direction
     I/D=10 (Horizontal : increment, Vertical : increment)
     AM=1   (address is updated in vertical writing direction)                */
  wr_reg(0x03, 0x1038);

  wr_reg(0x07, 0x0137);                 /* 262K彩色显示*/
  GPIOB->ODR= 0x0	 ;
  delay(5); 
  GPIOB->ODR= 0x1	 ;
  delay(5); 
  GPIOB->ODR= 0x0	 ;
  delay(5); 
  GPIOB->ODR= 0x1	 ;
}


/*******************************************************************************
*函数名:GLCD_WindowMax() 
功能描述:将整屏区域设置绘制窗口
*******************************************************************************/

void GLCD_WindowMax (void) {

  wr_reg(0x50, 0);                      /* 水平开始坐标*/
  wr_reg(0x51, HEIGHT-1);               /* 水平结束坐标(-1)*/
  wr_reg(0x52, 0);                      /* 垂直开始坐标*/
  wr_reg(0x53, WIDTH-1);                /* 垂直结束坐标(-1) */
}


/*******************************************************************************
*函数名:GLCD_PutPixel() 
*功能描述:绘制一个像素
*输入:  水平坐标, 垂直坐标
*返回:  无                                                                   *
*******************************************************************************/

void GLCD_PutPixel (unsigned int x, unsigned int y) {

  wr_reg(0x20, y);
  wr_reg(0x21, WIDTH-1-x);
  wr_cmd(0x22);
  wr_dat(TextColor);
}


/*******************************************************************************
*函数名:GLCD_SetTextColor()
*功能描述:设置字体色
*******************************************************************************/

void GLCD_SetTextColor (unsigned short color) {

  TextColor = color;
}


/*******************************************************************************
* 函数名:GLCD_SetBackColor()
*功能描述:设置背景色                                                       
*******************************************************************************/

void GLCD_SetBackColor (unsigned short color) {

  BackColor = color;
}


/*******************************************************************************
*函数名:GLCD_Clear() 
*功能描述:清屏 
*******************************************************************************/

void GLCD_Clear (unsigned short color) {
  unsigned int   i;

  GLCD_WindowMax();

  wr_reg(0x20, 0);
  wr_reg(0x21, 0);
  wr_cmd(0x22);
  wr_dat_start();
  for(i = 0; i < (WIDTH*HEIGHT); i++)
    wr_dat_only(color);
  wr_dat_stop();
}


/*******************************************************************************
*函数名:GLCD_DrawChar() 
功能描述:在给定的区域绘制字符                           
*输入:水平坐标,垂直坐标,字符位图指针
*******************************************************************************/

void GLCD_DrawChar (unsigned int x, unsigned int y, unsigned short *c) {
  int idx = 0, i, j;

  x = WIDTH-x-CHAR_W;
  wr_reg(0x50, y);                      /* 水平开始坐标*/
  wr_reg(0x51, y+CHAR_H-1);             /* 水平结束坐标(-1) */
  wr_reg(0x52, x);                      /* 垂直开始坐标*/
  wr_reg(0x53, x+CHAR_W-1);             /* 垂直结束坐标(-1) */

  wr_reg(0x20, y);
  wr_reg(0x21, x);
  wr_cmd(0x22);
  wr_dat_start();
  for (j = 0; j < CHAR_H; j++) {
    for (i = CHAR_W-1; i >= 0; i--) {
      if((c[idx] & (1 << i)) == 0x00) {
        wr_dat_only(BackColor);
      } else {
        wr_dat_only(TextColor);
      }
    }
    c++;
  }
  wr_dat_stop();
}


/*******************************************************************************
* 函数名:GLCD_DisplayChar()
* 功能描述:在给定的行显示字符                                              
* 输入: 行号,列号,ASCII码字符  
*******************************************************************************/

void GLCD_DisplayChar (unsigned int ln, unsigned int col, unsigned char c) {

  c -= 32;
  GLCD_DrawChar(col * CHAR_W, ln * CHAR_H, &Font_24x16[c * CHAR_H]);
}


/*******************************************************************************
*函数名:GLCD_DisplayString()
*功能描述:在给定的区域显示字串                                   
*输入:行号,列号,字串指针                                                
*******************************************************************************/

void GLCD_DisplayString (unsigned int ln, unsigned int col, unsigned char *s) {

  GLCD_WindowMax();
  while (*s) {
    GLCD_DisplayChar(ln, col++, *s++);
  }
}


/*******************************************************************************
*函数名:GLCD_ClearLn()
*功能描述:清指定的行                                                        
*输入:行号 
*******************************************************************************/

void GLCD_ClearLn (unsigned int ln) {

  GLCD_WindowMax();
  GLCD_DisplayString(ln, 0, "                    ");
}

/*******************************************************************************
* 函数名:GLCD_Bargraph()
* 功能描述:绘制柱形图                                                               
* 输入:水平坐标,垂直坐标,柱形图宽度, 有效值
*******************************************************************************/

void GLCD_Bargraph (unsigned int x, unsigned int y, unsigned int w, unsigned int h, unsigned int val) {
  int i,j;

  x = WIDTH-x-w;
  wr_reg(0x50, y);                      /* 水平开始坐标*/
  wr_reg(0x51, y+CHAR_H-1);             /* 水平结束坐标(-1) */
  wr_reg(0x52, x);                      /* 垂直开始坐标*/
  wr_reg(0x53, x+w-1);                  /* 垂直结束坐标(-1) */

  val = (val * w) >> 10;                /* 扫描24X12字符值 */
  wr_reg(0x20, y);
  wr_reg(0x21, x);
  wr_cmd(0x22);
  wr_dat_start();
  for (i = 0; i < h; i++) {
    for (j = w-1; j >= 0; j--) {
      if(j >= val) {
        wr_dat_only(BackColor);
      } else {
        wr_dat_only(TextColor);
      }
    }
  }
  wr_dat_stop();
}


/*******************************************************************************
* 在垂直和水平位置显示位图 
*   输入:      x:        水平位置   *
*              y:        垂直位置   *
*              w:        位图宽度   *
*              h:        位图高度   *
*              bitmap:   位图数据地址 *
*   返回:    无                                                                   *
*******************************************************************************/

void GLCD_Bitmap (unsigned int x, unsigned int y, unsigned int w, unsigned int h, unsigned char *bitmap) {
  unsigned int    i, j;
  unsigned short *bitmap_ptr = (unsigned short *)bitmap;

  x = WIDTH-x-w;
  wr_reg(0x50, y);                      /* 设置水平显示开始坐标 */
  wr_reg(0x51, y+h-1);                  /* 设置水平显示结束坐标 */
  wr_reg(0x52, x);                      /* 设置垂直显示开始坐标 */
  wr_reg(0x53, x+w-1);                  /* 设置垂直显示结束坐标 */

  wr_reg(0x20, y);
  wr_reg(0x21, x);
  wr_cmd(0x22);
  wr_dat_start();
  for (j = 0; j < h; j++) {
    bitmap_ptr += w-1;
    for (i = 0; i < w; i++) {
      wr_dat_only(*bitmap_ptr--);
    }
    bitmap_ptr += w+1;
  }
  wr_dat_stop();
}


/*******************************************************************************
* 在水平和垂直位置显示图片文件									  
* 输入:         x:        水平坐标                             
*                  y:        垂直坐标                              
*                  w:        宽度                                 
*                  h:        高度                                  
*                  bmp:      地址*
* 返回:                                                             
*******************************************************************************/

void GLCD_Bmp (unsigned int x, unsigned int y, unsigned int w, unsigned int h, unsigned char *bmp) {
  unsigned int    i, j;
  unsigned short *bitmap_ptr = (unsigned short *)bmp;

  x = WIDTH-x-w;
  wr_reg(0x50, y);                      /* 设置水平显示开始坐标 */
  wr_reg(0x51, y+h-1);                  /* 设置水平显示结束坐标 */
  wr_reg(0x52, x);                      /* 设置垂直显示开始坐标 */
  wr_reg(0x53, x+w-1);                  /* 设置垂直显示结束坐标 */

  wr_reg(0x20, y);
  wr_reg(0x21, x);
  wr_cmd(0x22);
  wr_dat_start();
  bitmap_ptr += (h*w)-1;
  for (j = 0; j < h; j++) {
    for (i = 0; i < w; i++) {
      wr_dat_only(*bitmap_ptr--);
    }
  }
  wr_dat_stop();
}

/******************************************************************************/

⌨️ 快捷键说明

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