jinglixixi 发表于 2022-12-3 23:29

【EV Board (MM32L0136C7P)测评】+彩色LCD屏驱动及图片显示

本帖最后由 jinglixixi 于 2022-12-3 23:30 编辑

EVB-L0130开发板所使用的MM32L0136C7P有 多达 64KB 的 Flash 存储器和8KB的 SRAM,这使其足以支持相应的图片存储及显示。为此,为它配置了一个彩色的LCD屏来显示字符信息和图片的显示。该LCD屏为0.96寸屏,其分辨率为160*80像素点,它以SPI方式工作,其与开发板的连接关系如下:CLK---PB9DIN---PB10RES--- PB11DC --- PB5CS --- PB2BLK--- VDDLCD屏的引脚配置初始化函数为:void APP_Init(void)
{
    gpio_init.Pins= GPIO_PIN_9;
    gpio_init.PinMode= GPIO_PinMode_Out_PushPull;
    gpio_init.Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOB, &gpio_init);
    GPIO_PinAFConf(GPIOB, gpio_init.Pins, GPIO_AF_15);
      
    gpio_init.Pins= GPIO_PIN_10;
    gpio_init.PinMode= GPIO_PinMode_Out_PushPull;
    gpio_init.Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOB, &gpio_init);
    GPIO_PinAFConf(GPIOB, gpio_init.Pins, GPIO_AF_15);
      
    gpio_init.Pins= GPIO_PIN_11;
    gpio_init.PinMode= GPIO_PinMode_Out_PushPull;
    gpio_init.Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOB, &gpio_init);
    GPIO_PinAFConf(GPIOB, gpio_init.Pins, GPIO_AF_15);
      
    gpio_init.Pins= GPIO_PIN_2;
    gpio_init.PinMode= GPIO_PinMode_Out_PushPull;
    gpio_init.Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOB, &gpio_init);
    GPIO_PinAFConf(GPIOB, gpio_init.Pins, GPIO_AF_15);
      
    gpio_init.Pins= GPIO_PIN_5;
    gpio_init.PinMode= GPIO_PinMode_Out_PushPull;
    gpio_init.Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOB, &gpio_init);
    GPIO_PinAFConf(GPIOB, gpio_init.Pins, GPIO_AF_15);
}

LCD屏的初始化函数为:void Lcd_Init(void)
{
OLED_RST_Clr();
delay_ms(200);
OLED_RST_Set();
delay_ms(200);
LCD_WR_REG(0x11);
delay_ms(100);
LCD_WR_REG(0x21);
LCD_WR_REG(0xB1);
LCD_WR_DATA8(0x05);
LCD_WR_DATA8(0x3A);
LCD_WR_DATA8(0x3A);
LCD_WR_REG(0xB2);
LCD_WR_DATA8(0x05);
LCD_WR_DATA8(0x3A);
LCD_WR_DATA8(0x3A);
LCD_WR_REG(0xB3);
LCD_WR_DATA8(0x05);
LCD_WR_DATA8(0x3A);
LCD_WR_DATA8(0x3A);
LCD_WR_DATA8(0x05);
LCD_WR_DATA8(0x3A);
LCD_WR_DATA8(0x3A);
LCD_WR_REG(0xB4);
LCD_WR_DATA8(0x03);
LCD_WR_REG(0xC0);
LCD_WR_DATA8(0x62);
LCD_WR_DATA8(0x02);
LCD_WR_DATA8(0x04);
LCD_WR_REG(0xC1);
LCD_WR_DATA8(0xC0);
LCD_WR_REG(0xC2);
LCD_WR_DATA8(0x0D);
LCD_WR_DATA8(0x00);
LCD_WR_REG(0xC3);
LCD_WR_DATA8(0x8D);
LCD_WR_DATA8(0x6A);
LCD_WR_REG(0xC4);
LCD_WR_DATA8(0x8D);
LCD_WR_DATA8(0xEE);
LCD_WR_REG(0xC5);
LCD_WR_DATA8(0x0E);
LCD_WR_REG(0xE0);
LCD_WR_DATA8(0x10);
LCD_WR_DATA8(0x0E);
LCD_WR_DATA8(0x02);
LCD_WR_DATA8(0x03);
LCD_WR_DATA8(0x0E);
LCD_WR_DATA8(0x07);
LCD_WR_DATA8(0x02);
LCD_WR_DATA8(0x07);
LCD_WR_DATA8(0x0A);
LCD_WR_DATA8(0x12);
LCD_WR_DATA8(0x27);
LCD_WR_DATA8(0x37);
LCD_WR_DATA8(0x00);
LCD_WR_DATA8(0x0D);
LCD_WR_DATA8(0x0E);
LCD_WR_DATA8(0x10);
LCD_WR_REG(0xE1);
LCD_WR_DATA8(0x10);
LCD_WR_DATA8(0x0E);
LCD_WR_DATA8(0x03);
LCD_WR_DATA8(0x03);
LCD_WR_DATA8(0x0F);
LCD_WR_DATA8(0x06);
LCD_WR_DATA8(0x02);
LCD_WR_DATA8(0x08);
LCD_WR_DATA8(0x0A);
LCD_WR_DATA8(0x13);
LCD_WR_DATA8(0x26);
LCD_WR_DATA8(0x36);
LCD_WR_DATA8(0x00);
LCD_WR_DATA8(0x0D);
LCD_WR_DATA8(0x0E);
LCD_WR_DATA8(0x10);
LCD_WR_REG(0x3A);
LCD_WR_DATA8(0x05);
LCD_WR_REG(0x36);
LCD_WR_DATA8(0x78);
LCD_WR_REG(0x29);
}

其以色彩清除屏幕的函数为:void LCD_Clear(u16 Color)
{
    u16 i,j;
    LCD_Address_Set(0,0,LCD_W-1,LCD_H-1);
    for(i=0;i<LCD_W;i++)
    {
       for (j=0;j<LCD_H;j++)
       {
          LCD_WR_DATA(Color);
       }
    }
}

依据清屏函数可获得的图片显示函数为:void LCD_ShowPictureb(u16 x1,u16 y1,u16 x2,u16 y2)
{
      int i;
      LCD_Address_Set(x1,y1,x2,y2);
      for(i=0;i<12800;i++)
      {
            LCD_WR_DATA8(gImage_RW);
            LCD_WR_DATA8(gImage_RW);
      }
}

其字符串的显示函数为:void LCD_ShowString(u16 x,u16 y,const u8 *p,u16 color)
{
    while(*p!='\0')
    {
      if(x>LCD_W-16){x=0;y+=16;}
      if(y>LCD_H-16){y=x=0;LCD_Clear(RED);}
      LCD_ShowChar(x,y,*p,0,color);
      x+=8;
      p++;
    }
}

实现图1和图2所示效果的主程序为:int main(void)
{
    BOARD_Init();
    APP_Init();
    Lcd_Init();
    LCD_Clear(YELLOW);
    LCD_ShowPictureb(0,0,159,79);
    del_t(60000);
    BACK_COLOR=RED;
    LCD_Clear(RED);
    LCD_ShowString(20,10,"EVB-L0136",YELLOW);
    LCD_ShowString(20,30,"MM32L0136",YELLOW);
    LCD_ShowString(20,50,"jinglixixi",YELLOW);
    while (1);
}


图1 字符信息显示效果
图2图像显示效果
页: [1]
查看完整版本: 【EV Board (MM32L0136C7P)测评】+彩色LCD屏驱动及图片显示