/** * @brief Displays a bitmap picture loaded in the internal Flash. * @param BmpAddress: Bmp picture address in the internal Flash. * @retval None */ void st7735_DrawBitmap(uint16_t Xpos, uint16_t Ypos, uint8_t *pbmp) { uint32_t index = 0, size = 0; /* Read bitmap size */ size = *(volatile uint16_t *) (pbmp + 2); size |= (*(volatile uint16_t *) (pbmp + 4)) << 16; /* Get bitmap data address offset */ index = *(volatile uint16_t *) (pbmp + 10); index |= (*(volatile uint16_t *) (pbmp + 12)) << 16; size = (size - index)/2; pbmp += index; /* Set GRAM write direction and BGR = 0 */ /* Memory access control: MY = 0, MX = 1, MV = 0, ML = 0 */ st7735_WriteReg(LCD_REG_54, 0x40); /* Set Cursor */ st7735_SetCursor(Xpos, Ypos); LCD_IO_WriteMultipleData((uint8_t*)pbmp, size*2); /* Set GRAM write direction and BGR = 0 */ /* Memory access control: MY = 1, MX = 1, MV = 0, ML = 0 */ st7735_WriteReg(LCD_REG_54, 0xC0); }
/** * @brief Draws horizontal line. * @param RGBCode: Specifies the RGB color * @param Xpos: specifies the X position. * @param Ypos: specifies the Y position. * @param Length: specifies the line length. * @retval None */ void st7735_DrawHLine(uint16_t RGBCode, uint16_t Xpos, uint16_t Ypos, uint16_t Length) { uint8_t counter = 0; // if(Xpos + Length > ST7735_LCD_PIXEL_WIDTH) return; /* Set Cursor */ st7735_SetCursor(Xpos, Ypos); for(counter = 0; counter < Length; counter++) { ArrayRGB[counter] = RGBCode; } LCD_IO_WriteMultipleData((uint8_t*)&ArrayRGB[0], Length * 2); }
/** * @brief Writes pixel. * @param Xpos: specifies the X position. * @param Ypos: specifies the Y position. * @param RGBCode: the RGB pixel color * @retval None */ void st7735_WritePixel(uint16_t Xpos, uint16_t Ypos, uint16_t RGBCode) { uint8_t data = 0; /*if((Xpos >= ST7735_LCD_PIXEL_WIDTH) || (Ypos >= ST7735_LCD_PIXEL_HEIGHT)) { return; }*/ /* Set Cursor */ st7735_SetCursor(Xpos, Ypos); data = RGBCode >> 8; LCD_IO_WriteMultipleData(&data, 1); data = RGBCode; LCD_IO_WriteMultipleData(&data, 1); }