872 lines
19 KiB
C
872 lines
19 KiB
C
#include "ST7735s.h"
|
||
#include <stdio.h>
|
||
#include "spi_master_dma_interrupt.h"
|
||
#include "public.h"
|
||
#include "fpc.h"
|
||
#include "sim_eeprom.h"
|
||
|
||
#define ST7735_SLPOUT 0x11
|
||
#define ST7735_FRMCTR1 0xB1
|
||
#define ST7735_FRMCTR2 0xB2
|
||
#define ST7735_FRMCTR3 0xB3
|
||
#define ST7735_INVCTR 0xB4
|
||
#define ST7735_PWCTR1 0xC0
|
||
#define ST7735_PWCTR2 0xC1
|
||
#define ST7735_PWCTR3 0xC2
|
||
#define ST7735_PWCTR4 0xC3
|
||
#define ST7735_PWCTR5 0xC4
|
||
#define ST7735_VMCTR1 0xC5
|
||
#define ST7735_COLMOD 0x3A
|
||
#define ST7735_GMCTRP1 0xE0
|
||
#define ST7735_GMCTRN1 0xE1
|
||
#define ST7735_NORON 0x13
|
||
#define ST7735_DISPON 0x29
|
||
#define ST7735_CASET 0x2A
|
||
#define ST7735_RASET 0x2B
|
||
#define ST7735_RAMWR 0x2C
|
||
#define ST7735_INVOFF 0x20
|
||
#define ST7735_INVON 0x21
|
||
|
||
#define ST7735_MADCTL 0x36
|
||
#define ST7735_MADCTL_MX 0x40
|
||
#define ST7735_MADCTL_MY 0x80
|
||
#define ST7735_MADCTL_MV 0x20
|
||
#define ST7735_XOFFSET 0x02 //如果用80*160 最左边第二列的ram有问题,屏幕有黑线
|
||
//故用82*160的ram 图片的x坐标记加漂移 偶现,可能是不同屏幕的素质不同导致
|
||
#define PLATFORM_DelayMS DELAY_Ms
|
||
|
||
static uint8_t DMA_ram_buffer[4096];
|
||
|
||
float breath_down[10] = {0.900000, 0.810000, 0.729000, 0.656100, 0.590490, 0.531441, 0.478297, 0.430467, 0.387420, 0.348678};
|
||
//float breath_up[10] = {1.250000,1.562500,1.953125,2.441406,3.051758,3.814697,4.768372,5.960464,7.450581,9.313226};
|
||
u8 debug_flag = 0;
|
||
float Cclt_Power(float a, uint8_t b)
|
||
{
|
||
uint8_t i;
|
||
float temp;
|
||
|
||
temp = 1.0;
|
||
for(i=0;i<b;i++)
|
||
temp = temp*a;
|
||
return temp;
|
||
}
|
||
|
||
void ST7735_Reset(void)
|
||
{
|
||
DELAY_Ms(1);
|
||
GPIO_ResetBits(ST7735_RST_GPIO_Port, ST7735_RST_Pin);
|
||
PLATFORM_DelayMS(1);
|
||
GPIO_SetBits(ST7735_RST_GPIO_Port, ST7735_RST_Pin);
|
||
PLATFORM_DelayMS(120);
|
||
}
|
||
void ST7735_WriteCommand(uint8_t cmd)
|
||
{
|
||
GPIO_ResetBits(ST7735_DC_GPIO_Port, ST7735_DC_Pin);
|
||
SPI2_WriteBuffer(&cmd,1);
|
||
}
|
||
void ST7735_WriteByte(uint8_t data)
|
||
{
|
||
GPIO_SetBits(ST7735_DC_GPIO_Port, ST7735_DC_Pin);
|
||
SPI2_WriteBuffer(&data,1);
|
||
}
|
||
void ST7735_WriteData(uint8_t *data, uint16_t data_size)
|
||
{
|
||
|
||
GPIO_SetBits(ST7735_DC_GPIO_Port, ST7735_DC_Pin);
|
||
SPI2_WriteBuffer(data,data_size);
|
||
}
|
||
void ST7735_Init(void)
|
||
{
|
||
GPIO_InitTypeDef GPIO_InitStruct;
|
||
|
||
RCC_AHBPeriphClockCmd(RCC_AHBENR_GPIOA, ENABLE);
|
||
RCC_AHBPeriphClockCmd(RCC_AHBENR_GPIOB, ENABLE);
|
||
RCC_AHBPeriphClockCmd(RCC_AHBENR_GPIOD, ENABLE);
|
||
|
||
GPIO_StructInit(&GPIO_InitStruct);
|
||
GPIO_InitStruct.GPIO_Pin = PVCC_EN_Pin ;//PVCC
|
||
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
|
||
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;
|
||
GPIO_Init(PVCC_EN_Port, &GPIO_InitStruct);
|
||
|
||
GPIO_StructInit(&GPIO_InitStruct);
|
||
GPIO_InitStruct.GPIO_Pin = ST7735_DC_Pin ;//DC(RS)
|
||
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
|
||
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;
|
||
GPIO_Init(ST7735_DC_GPIO_Port, &GPIO_InitStruct);
|
||
|
||
GPIO_StructInit(&GPIO_InitStruct);
|
||
GPIO_InitStruct.GPIO_Pin = ST7735_RST_Pin ;//REST
|
||
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
|
||
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;
|
||
GPIO_Init(ST7735_RST_GPIO_Port, &GPIO_InitStruct);
|
||
|
||
GPIO_StructInit(&GPIO_InitStruct);
|
||
GPIO_InitStruct.GPIO_Pin = ST7735_LED_Pin ;//LED
|
||
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_10MHz;
|
||
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;
|
||
GPIO_Init(ST7735_LED_GPIO_Port, &GPIO_InitStruct);
|
||
|
||
|
||
PVCC_EN_ON();//pvcc_3.0 enable
|
||
GPIO_SetBits(ST7735_DC_GPIO_Port, ST7735_DC_Pin);
|
||
GPIO_SetBits(ST7735_RST_GPIO_Port, ST7735_RST_Pin);
|
||
|
||
ST7735_Reset();
|
||
|
||
ST7735_WriteCommand(0x11); //SleepOut
|
||
|
||
ST7735_WriteCommand(0x21); //设置反色,即白变黑 黑变白
|
||
|
||
ST7735_WriteCommand(0xB1);
|
||
ST7735_WriteByte(0x01);
|
||
ST7735_WriteByte(0x2C);
|
||
ST7735_WriteByte(0x2D);
|
||
|
||
ST7735_WriteCommand(0xB2);
|
||
ST7735_WriteByte(0x01);
|
||
ST7735_WriteByte(0x2C);
|
||
ST7735_WriteByte(0x2D);
|
||
|
||
ST7735_WriteCommand(0xB3);
|
||
ST7735_WriteByte(0x01);
|
||
ST7735_WriteByte(0x2C);
|
||
ST7735_WriteByte(0x2D);
|
||
ST7735_WriteByte(0x01);
|
||
ST7735_WriteByte(0x2C);
|
||
ST7735_WriteByte(0x2D);
|
||
|
||
ST7735_WriteCommand(0xB4); //Dot inversion
|
||
ST7735_WriteByte(0x03);
|
||
|
||
ST7735_WriteCommand(0xC0);
|
||
ST7735_WriteByte(0x62);
|
||
ST7735_WriteByte(0x02);
|
||
ST7735_WriteByte(0x04);
|
||
|
||
ST7735_WriteCommand(0xC1);
|
||
ST7735_WriteByte(0xC0);
|
||
|
||
ST7735_WriteCommand(0xC2);
|
||
ST7735_WriteByte(0x0D);
|
||
ST7735_WriteByte(0x00);
|
||
|
||
ST7735_WriteCommand(0xC3);
|
||
ST7735_WriteByte(0x8D);
|
||
ST7735_WriteByte(0x6A);
|
||
|
||
ST7735_WriteCommand(0xC4);
|
||
ST7735_WriteByte(0x8D);
|
||
ST7735_WriteByte(0xEE);
|
||
|
||
ST7735_WriteCommand(0xC5); //VCOM
|
||
ST7735_WriteByte(0x0E);
|
||
|
||
ST7735_WriteCommand(ST7735_CASET);
|
||
ST7735_WriteByte(0x00);
|
||
ST7735_WriteByte(0x00);
|
||
ST7735_WriteByte(0x00);
|
||
ST7735_WriteByte(0x83);
|
||
ST7735_WriteCommand(ST7735_RASET);
|
||
ST7735_WriteByte(0x00);
|
||
ST7735_WriteByte(0x00);
|
||
ST7735_WriteByte(0x00);
|
||
ST7735_WriteByte(0xa1);
|
||
|
||
|
||
ST7735_WriteCommand(0xE0);
|
||
ST7735_WriteByte(0x10);
|
||
ST7735_WriteByte(0x0E);
|
||
ST7735_WriteByte(0x02);
|
||
ST7735_WriteByte(0x03);
|
||
ST7735_WriteByte(0x0E);
|
||
ST7735_WriteByte(0x07);
|
||
ST7735_WriteByte(0x02);
|
||
ST7735_WriteByte(0x07);
|
||
ST7735_WriteByte(0x0A);
|
||
ST7735_WriteByte(0x12);
|
||
ST7735_WriteByte(0x27);
|
||
ST7735_WriteByte(0x37);
|
||
ST7735_WriteByte(0x00);
|
||
ST7735_WriteByte(0x0D);
|
||
ST7735_WriteByte(0x0E);
|
||
ST7735_WriteByte(0x10);
|
||
|
||
|
||
ST7735_WriteCommand(0xE1);
|
||
ST7735_WriteByte(0x10);
|
||
ST7735_WriteByte(0x0E);
|
||
ST7735_WriteByte(0x03);
|
||
ST7735_WriteByte(0x03);
|
||
ST7735_WriteByte(0x0F);
|
||
ST7735_WriteByte(0x06);
|
||
ST7735_WriteByte(0x02);
|
||
ST7735_WriteByte(0x08);
|
||
ST7735_WriteByte(0x0A);
|
||
ST7735_WriteByte(0x13);
|
||
ST7735_WriteByte(0x26);
|
||
ST7735_WriteByte(0x36);
|
||
ST7735_WriteByte(0x00);
|
||
ST7735_WriteByte(0x0D);
|
||
ST7735_WriteByte(0x0E);
|
||
ST7735_WriteByte(0x10);
|
||
ST7735_WriteCommand(0x3A); //像素格式
|
||
ST7735_WriteByte(0x06); //3 rgb444;5 rgb565 ;6 rgb666;
|
||
ST7735_WriteCommand(0x36); //显存访问格式
|
||
ST7735_WriteByte(0xC8);
|
||
ST7735_WriteCommand(0x29);
|
||
ST7735_FillScreen_666(BG_COLOR);//ui背景色
|
||
LCD_ON();
|
||
}
|
||
|
||
void ST7735_SetAddressWindow(uint8_t x0, uint8_t y0, uint8_t x1, uint8_t y1)
|
||
{
|
||
x0 += ST7735_XSTART;
|
||
y0 += ST7735_YSTART;
|
||
|
||
x1 += ST7735_XSTART;
|
||
y1 += ST7735_YSTART;
|
||
|
||
ST7735_WriteCommand(ST7735_CASET);
|
||
uint8_t data[] = {0x00,x0,0x00,x1};
|
||
ST7735_WriteData(data,4);
|
||
|
||
ST7735_WriteCommand(ST7735_RASET);
|
||
data[1] = y0;
|
||
data[3] = y1;
|
||
ST7735_WriteData(data,4);
|
||
}
|
||
|
||
void ST7735_DrawRectangle_666(uint16_t x, uint16_t y, uint16_t width, uint16_t height, uint32_t color)
|
||
{
|
||
// uint16_t i,j;
|
||
// uint16_t len = width*height*3;
|
||
// uint16_t times = 0;
|
||
// uint16_t remainder = 0;
|
||
// times = len/4095;
|
||
// remainder = len%4095;
|
||
// ST7735_SetAddressWindow(x,y,x+width-1,y+height-1);
|
||
// ST7735_WriteCommand(ST7735_RAMWR);
|
||
// for(i = 0;i<times;i++)
|
||
// {
|
||
// for(j=0;j<4095;j++)
|
||
// {
|
||
// DMA_ram_buffer[j] = color >> (16-(j%3)*8)& 0xFF;
|
||
// }
|
||
// ST7735_WriteData((uint8_t *)DMA_ram_buffer,4095);
|
||
// }
|
||
// if(remainder)
|
||
// {
|
||
// for(j=0;j<remainder;j++)
|
||
// {
|
||
// DMA_ram_buffer[j] = color >> (16-(j%3)*8)& 0xFF;
|
||
// }
|
||
// ST7735_WriteData((uint8_t *)DMA_ram_buffer,4096);
|
||
// }
|
||
uint8_t buff[width * 3];
|
||
uint16_t i = 0;
|
||
for (i = 0; i < width; i++) {
|
||
buff[i * 3] = color >> 16& 0xFF;
|
||
buff[i * 3 + 1] = color >>8 & 0xFF;
|
||
buff[i * 3 + 2] = color & 0xFF;
|
||
}
|
||
ST7735_SetAddressWindow(x, y, x + width - 1, y + height - 1);
|
||
ST7735_WriteCommand(ST7735_RAMWR);
|
||
for (i = 0; i < height; i++) {
|
||
ST7735_WriteData(buff, 3* width);
|
||
}
|
||
}
|
||
|
||
void ST7735_DrawRectangle(uint16_t x, uint16_t y, uint16_t width, uint16_t height, uint16_t color)
|
||
{
|
||
uint8_t buff[width * 2];
|
||
uint16_t i = 0;
|
||
|
||
for (i = 0; i < width; i++) {
|
||
buff[i * 2] = color >> 8;
|
||
buff[i * 2 + 1] = color & 0xFF;
|
||
}
|
||
|
||
ST7735_SetAddressWindow(x, y, x + width - 1, y + height - 1);
|
||
ST7735_WriteCommand(ST7735_RAMWR);
|
||
// Write the color data
|
||
for (i = 0; i < height; i++) {
|
||
ST7735_WriteData(buff, sizeof(uint16_t) * width);
|
||
}
|
||
}
|
||
|
||
void ST7735_FillScreen(uint16_t color)
|
||
{
|
||
ST7735_DrawRectangle(0, 0, ST7735_WIDTH, ST7735_HEIGHT, color);
|
||
}
|
||
|
||
void ST7735_FillScreen_666(uint32_t color)
|
||
{
|
||
ST7735_DrawRectangle_666(0, 0, ST7735_WIDTH, ST7735_HEIGHT, color);
|
||
}
|
||
|
||
void ST7735_Clear_Part_Window(uint16_t x, uint16_t y, uint16_t width, uint16_t height,uint32_t color)
|
||
{
|
||
ST7735_DrawRectangle_666(x, y, width, height, color);
|
||
}
|
||
|
||
void ST7735_ImageBreath_down(uint16_t x, uint16_t y, uint16_t width, uint16_t height, const uint8_t *image,uint16_t lenth,uint8_t k)
|
||
{
|
||
uint16_t i,j,time,remainder;
|
||
remainder = lenth%4096;
|
||
time = lenth/4096;
|
||
ST7735_SetAddressWindow(x, y, x + width - 1, y + height - 1);
|
||
ST7735_WriteCommand(ST7735_RAMWR);
|
||
for(i=0;i<time;i++)
|
||
{
|
||
for(j=0;j<4096;j++)
|
||
{
|
||
DMA_ram_buffer[j]=image[j+i*4096]*breath_down[k];
|
||
}
|
||
ST7735_WriteData((uint8_t *)DMA_ram_buffer,4096);
|
||
}
|
||
if(remainder)
|
||
{
|
||
for(j=0;j<remainder;j++)
|
||
{
|
||
DMA_ram_buffer[j]=image[j+i*4096]*breath_down[k];
|
||
}
|
||
ST7735_WriteData((uint8_t *)DMA_ram_buffer,remainder);
|
||
}
|
||
}
|
||
|
||
void ST7735_ImageBreath_up(uint16_t x, uint16_t y, uint16_t width, uint16_t height,uint16_t lenth, uint8_t num ,uint8_t k)
|
||
{
|
||
|
||
}
|
||
|
||
void ST7735_DrawImage(uint16_t x, uint16_t y, uint16_t width, uint16_t height,uint16_t lenth,const uint8_t *image)
|
||
{
|
||
uint16_t i,j,time;
|
||
ST7735_SetAddressWindow(x, y, x + width - 1, y + height - 1);
|
||
|
||
ST7735_WriteCommand(ST7735_RAMWR);
|
||
time = lenth%4096?(lenth/4096 +1):(lenth/4096);
|
||
|
||
if(lenth<4096)
|
||
{
|
||
for(j=0;j<lenth;j++)
|
||
{
|
||
DMA_ram_buffer[j]=image[j];
|
||
}
|
||
ST7735_WriteData((uint8_t *)DMA_ram_buffer,lenth);
|
||
}
|
||
else
|
||
{
|
||
for(i=0;i<time;i++)
|
||
{
|
||
if(i<time-1)
|
||
{
|
||
for(j=0;j<4096;j++)
|
||
{
|
||
DMA_ram_buffer[j]=image[j+i*4096];
|
||
}
|
||
ST7735_WriteData((uint8_t *)DMA_ram_buffer,4096);
|
||
}
|
||
else
|
||
{
|
||
if(lenth%4096)
|
||
{
|
||
for(j=0;j<lenth%4096;j++)
|
||
{
|
||
DMA_ram_buffer[j]=image[j+i*4096];
|
||
}
|
||
ST7735_WriteData((uint8_t *)DMA_ram_buffer,lenth%4096);
|
||
}
|
||
else
|
||
{
|
||
for(j=0;j<4096;j++)
|
||
{
|
||
DMA_ram_buffer[j]=image[j+i*4096];
|
||
}
|
||
ST7735_WriteData((uint8_t *)DMA_ram_buffer,4096);
|
||
}
|
||
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
void ST7735_DrawFlashImage(uint16_t x, uint16_t y, uint16_t width, uint16_t height,uint16_t lenth,uint8_t num)
|
||
{
|
||
uint16_t i,time,remainder,j,k;
|
||
remainder = lenth%4096;
|
||
time = lenth/4096;
|
||
k = 0;
|
||
ST7735_SetAddressWindow(x, y, x + width - 1, y + height - 1);
|
||
ST7735_WriteCommand(ST7735_RAMWR);
|
||
|
||
for(i=0;i<time;i++)
|
||
{
|
||
SPI1_FLASH_FastRead((uint32_t)num*64*1024 + i*4096,(uint8_t *)DMA_ram_buffer,4096);
|
||
ST7735_WriteData((uint8_t *)DMA_ram_buffer,4096);
|
||
// if(debug_flag)
|
||
// {
|
||
// for(j = 0;j<4096;j++)
|
||
// {
|
||
// printf("0X%02x,",DMA_ram_buffer[j]);
|
||
// ++k;
|
||
// if(k==16)
|
||
// {
|
||
// k=0;
|
||
// printf("\n");
|
||
// }
|
||
// }
|
||
// k = 0;
|
||
// }
|
||
}
|
||
if(remainder)
|
||
{
|
||
SPI1_FLASH_FastRead((uint32_t)num*64*1024 + i*4096,(uint8_t *)DMA_ram_buffer,remainder);
|
||
ST7735_WriteData((uint8_t *)DMA_ram_buffer,remainder);
|
||
// if(debug_flag)
|
||
// {
|
||
// for(j = 0;j<remainder;j++)
|
||
// {
|
||
//
|
||
// printf("0X%02x,",DMA_ram_buffer[j]);
|
||
// ++k;
|
||
// if(k==16)
|
||
// {
|
||
// k=0;
|
||
// printf("\n");
|
||
// }
|
||
//
|
||
// }
|
||
// }
|
||
}
|
||
// if(debug_flag)
|
||
// {
|
||
// debug_flag = 0;
|
||
// }
|
||
|
||
}
|
||
|
||
void ST7735_Draw_BatLevel(uint16_t x, uint16_t y)
|
||
{
|
||
static uint8_t buff[15] = {0X44,0X8C,0XE4, 0X5C,0XA0,0XF4, 0X44,0X8C,0XE0, 0X3C,0X84,0XDC, 0X34,0X80,0XDC};
|
||
ST7735_SetAddressWindow(x, y, x , y + 5 - 1);
|
||
ST7735_WriteCommand(ST7735_RAMWR);
|
||
ST7735_WriteData(buff,15);
|
||
}
|
||
|
||
void animation_start_tow(void)
|
||
{
|
||
|
||
}
|
||
|
||
void animation_start(void)
|
||
{
|
||
static u8 pic_rank = 0;
|
||
static u8 first_flag = 0;
|
||
if(logo1_flag == 0 )
|
||
{
|
||
ST7735_FillScreen_666(BG_COLOR);
|
||
ST7735_DrawFlashImage(11,5,58,13,2262,1);
|
||
ST7735_DrawFlashImage(26,30,27,113,9153,3);
|
||
logo1_flag =1 ;
|
||
first_flag =0;
|
||
pic_clock = 0;
|
||
}
|
||
if(pic_clock >=80)
|
||
{
|
||
pic_clock = 0;
|
||
////////////////////
|
||
switch(pic_rank)
|
||
{
|
||
case 12:
|
||
ST7735_DrawFlashImage(26,30,27,113,9153,pic_rank);
|
||
pic_rank++;
|
||
break;
|
||
case 11:
|
||
ST7735_DrawFlashImage(26,30,27,113,9153,pic_rank);
|
||
pic_rank++;
|
||
break;
|
||
case 10:
|
||
ST7735_DrawFlashImage(26,30,27,113,9153,pic_rank);
|
||
pic_rank++;
|
||
break;
|
||
case 9:
|
||
ST7735_DrawFlashImage(26,30,27,113,9153,pic_rank);
|
||
pic_rank++;
|
||
break;
|
||
case 8:
|
||
ST7735_DrawFlashImage(26,30,27,113,9153,pic_rank);
|
||
pic_rank++;
|
||
break;
|
||
case 7:
|
||
ST7735_DrawFlashImage(26,30,27,113,9153,pic_rank);
|
||
pic_rank++;
|
||
break;
|
||
case 6:
|
||
ST7735_DrawFlashImage(26,30,27,113,9153,pic_rank);
|
||
pic_rank++;
|
||
break;
|
||
case 5:
|
||
ST7735_DrawFlashImage(26,30,27,113,9153,pic_rank);
|
||
pic_rank++;
|
||
break;
|
||
case 4:
|
||
ST7735_DrawFlashImage(26,30,27,113,9153,pic_rank);
|
||
pic_rank++;
|
||
break;
|
||
case 3:
|
||
ST7735_DrawFlashImage(26,30,27,113,9153,pic_rank);
|
||
pic_rank++;
|
||
break;
|
||
case 0:
|
||
first_flag ++;
|
||
if(first_flag==10)
|
||
{
|
||
first_flag = 0;
|
||
pic_rank = 3;
|
||
}
|
||
break;
|
||
case 13:
|
||
pic_rank = 0;
|
||
restart = 0;
|
||
break;
|
||
default:
|
||
break;
|
||
|
||
}
|
||
|
||
////////////////////清屏+小图的方法
|
||
/*
|
||
switch(pic_rank)
|
||
{
|
||
case 12:
|
||
ST7735_Clear_Part_Window(26,30,27,113,BG_COLOR);
|
||
ST7735_DrawFlashImage(35,64,10,45,1350,pic_rank);
|
||
pic_rank++;
|
||
break;
|
||
case 11:
|
||
ST7735_Clear_Part_Window(26,30,27,113,BG_COLOR);
|
||
ST7735_DrawFlashImage(34,61,12,51,1836,pic_rank);
|
||
pic_rank++;
|
||
break;
|
||
case 10:
|
||
ST7735_Clear_Part_Window(26,30,27,113,BG_COLOR);
|
||
ST7735_DrawFlashImage(33,58,14,58,2436,pic_rank);
|
||
pic_rank++;
|
||
break;
|
||
case 9:
|
||
ST7735_Clear_Part_Window(26,30,27,113,BG_COLOR);
|
||
ST7735_DrawFlashImage(32,54,15,65,2925,pic_rank);
|
||
pic_rank++;
|
||
break;
|
||
case 8:
|
||
ST7735_Clear_Part_Window(26,30,27,113,BG_COLOR);
|
||
ST7735_DrawFlashImage(31,51,17,72,3672,pic_rank);
|
||
pic_rank++;
|
||
break;
|
||
case 7:
|
||
ST7735_Clear_Part_Window(26,30,27,113,BG_COLOR);
|
||
ST7735_DrawFlashImage(31,47,18,79,4266,pic_rank);
|
||
pic_rank++;
|
||
break;
|
||
case 6:
|
||
ST7735_Clear_Part_Window(26,30,27,113,BG_COLOR);
|
||
ST7735_DrawFlashImage(30,44,20,85,5100,pic_rank);
|
||
pic_rank++;
|
||
break;
|
||
case 5:
|
||
ST7735_Clear_Part_Window(26,30,27,113,BG_COLOR);
|
||
ST7735_DrawFlashImage(29,41,22,92,6072,pic_rank);
|
||
pic_rank++;
|
||
break;
|
||
case 4:
|
||
ST7735_Clear_Part_Window(26,30,27,113,BG_COLOR);
|
||
ST7735_DrawFlashImage(28,37,23,99,6831,pic_rank);
|
||
pic_rank++;
|
||
break;
|
||
case 3:
|
||
ST7735_DrawFlashImage(26,30,27,113,9153,pic_rank);
|
||
pic_rank++;
|
||
break;
|
||
case 0:
|
||
first_flag ++;
|
||
if(first_flag==10)
|
||
{
|
||
first_flag = 0;
|
||
pic_rank = 3;
|
||
}
|
||
break;
|
||
case 13:
|
||
pic_rank = 0;
|
||
restart = 0;
|
||
break;
|
||
default:
|
||
break;
|
||
|
||
}
|
||
*/
|
||
}
|
||
|
||
}
|
||
|
||
void animation_show_v(void)
|
||
{
|
||
static u8 last_battery_level;
|
||
static u8 x_start =0;
|
||
static u8 y_start =0;
|
||
static u8 time_count = 0;
|
||
static bool charge_start_flag = 0;
|
||
static bool flicker_flag = 0;
|
||
u8 i;
|
||
if(logo2_flag == 0 )
|
||
{
|
||
restart = 0;
|
||
logo2_flag =1 ;
|
||
flicker_flag = 0;
|
||
pic_clock = 0;
|
||
time_count = 0;
|
||
charge_start_flag = 0;
|
||
last_battery_level = g_work.m_conditon.m_conditon.V_conditon;
|
||
ST7735_FillScreen_666(BG_COLOR);
|
||
ST7735_DrawFlashImage(11,5,58,13,2262,1);
|
||
for(i = 0;i<16;i++)
|
||
{
|
||
ST7735_DrawFlashImage(10,20+i*8,60,5,900,16);
|
||
}
|
||
if(last_battery_level > 0 )
|
||
{
|
||
for(i = 1;i<=last_battery_level;i++)
|
||
{
|
||
ST7735_DrawFlashImage(10,12+i*8,60,5,900,15);
|
||
}
|
||
if(is_charging)//充电动画,先确定初始位置
|
||
{
|
||
ST7735_DrawFlashImage(10,12+(i-1)*8,60,5,900,13);
|
||
charge_start_flag = 1;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
if(is_charging)//充电动画,先确定初始位置
|
||
{
|
||
charge_start_flag = 1;
|
||
}
|
||
}
|
||
|
||
x_start = 69;
|
||
y_start = 12+(i-1)*8;
|
||
}
|
||
if(is_charging)
|
||
{
|
||
if(charge_start_flag==0)
|
||
{
|
||
charge_start_flag = 1;
|
||
logo2_flag = 0;
|
||
return ;
|
||
}
|
||
if(last_battery_level == 0)
|
||
{
|
||
return ;
|
||
}
|
||
if(pic_clock>=33 && time_count<60)
|
||
{
|
||
ST7735_Draw_BatLevel(x_start-time_count,y_start);
|
||
time_count++;
|
||
pic_clock = 0;
|
||
}
|
||
if(time_count>=60)
|
||
{
|
||
ST7735_DrawFlashImage(10,y_start,60,5,900,13);
|
||
time_count = 0;
|
||
if(last_battery_level==(g_work.m_conditon.m_conditon.V_conditon+1))
|
||
{
|
||
logo2_flag = 0;
|
||
}
|
||
}
|
||
}
|
||
else
|
||
{
|
||
if(charge_start_flag==1)//充电更新
|
||
{
|
||
logo2_flag = 0;
|
||
charge_start_flag = 0;
|
||
return ;
|
||
}
|
||
|
||
if(last_battery_level<16 && last_battery_level>=13)
|
||
{
|
||
if(pic_clock >= 400)
|
||
{
|
||
if(flicker_flag==0)
|
||
{
|
||
for(i = last_battery_level;i<16;i++)
|
||
{
|
||
ST7735_DrawFlashImage(10,20+i*8,60,5,900,15);
|
||
}
|
||
flicker_flag = 1;
|
||
}
|
||
else
|
||
{
|
||
for(i = last_battery_level;i<16;i++)
|
||
{
|
||
ST7735_DrawFlashImage(10,20+i*8,60,5,900,16);
|
||
}
|
||
flicker_flag = 0;
|
||
}
|
||
pic_clock = 0;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
pic_clock = 0;
|
||
flicker_flag = 0;
|
||
}
|
||
}
|
||
|
||
}
|
||
|
||
void animation_temp_on(void)
|
||
{
|
||
static u8 up_down_flag = 0;
|
||
static u8 up_down_time = 0;
|
||
if(logo3_flag == 0 )
|
||
{
|
||
restart = 0;
|
||
ST7735_FillScreen_666(BG_COLOR);
|
||
ST7735_DrawFlashImage(11,5,58,13,2262,1);
|
||
ST7735_DrawFlashImage(33,22,12,123,4428,17);
|
||
logo3_flag =1 ;
|
||
g_work.m_work_flag._beep_flag = 1;
|
||
pic_clock = 0;
|
||
}
|
||
if(pic_clock>=50)
|
||
{
|
||
if(up_down_flag == 0)
|
||
{
|
||
if(up_down_time<10)
|
||
{
|
||
#ifdef package_3
|
||
ST7735_ImageBreath_down(33,22,12,123,(const unsigned char *)gImage_17,4428,up_down_time);
|
||
#endif
|
||
up_down_time++;
|
||
}
|
||
if(up_down_time == 10)
|
||
{
|
||
up_down_time = 0;
|
||
up_down_flag = 1;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
if(up_down_time<10)
|
||
{
|
||
#ifdef package_3
|
||
ST7735_ImageBreath_down(33,22,12,123,(const unsigned char *)gImage_17,4428,(9-up_down_time));
|
||
#endif
|
||
up_down_time++;
|
||
|
||
}
|
||
if(up_down_time == 10)
|
||
{
|
||
up_down_time = 0;
|
||
up_down_flag = 0;
|
||
}
|
||
}
|
||
pic_clock = 0;
|
||
}
|
||
}
|
||
|
||
void animation_smoking(void)
|
||
{
|
||
static u8 times = 0;
|
||
if(logo4_flag == 0 )
|
||
{
|
||
restart = 0;
|
||
ST7735_FillScreen_666(BG_COLOR);
|
||
ST7735_DrawFlashImage(11,5,58,13,2262,1);
|
||
ST7735_DrawFlashImage(33,22,12,123,4428,17);
|
||
ST7735_DrawFlashImage(33,141,12,5,180,19);
|
||
logo4_flag =1 ;
|
||
times = 0;
|
||
pic_clock = 0;
|
||
g_work.m_work_flag._beep_flag = 2;
|
||
}
|
||
if(pic_clock >= (g_work.m_set_other_hot.set_all_time-g_work.m_set_other_hot.set_order_time-10)*1000/78)
|
||
{
|
||
if(times<=78)
|
||
{
|
||
ST7735_DrawFlashImage(33,141-times,12,5,180,19);
|
||
times++;
|
||
}
|
||
if(times>78)
|
||
{
|
||
times = 0;
|
||
}
|
||
pic_clock = 0;
|
||
}
|
||
}
|
||
|
||
void animation_heat_over(void)
|
||
{
|
||
static u8 up_down_flag = 0;
|
||
static u8 up_down_time = 0;
|
||
static bool over_flag = 0;
|
||
if(logo5_flag == 0 )
|
||
{
|
||
restart = 0;
|
||
ST7735_DrawFlashImage(11,5,58,13,2262,1);
|
||
ST7735_DrawFlashImage(33,22,12,49,1764,18);
|
||
pic_clock = 0;
|
||
logo5_flag =1 ;
|
||
g_work.m_work_flag._beep_flag = 2;
|
||
over_flag = 0;
|
||
}
|
||
if(keep_temp_time)
|
||
{
|
||
if(pic_clock>=50)
|
||
{
|
||
if(up_down_flag == 0)
|
||
{
|
||
if(up_down_time<10)
|
||
{
|
||
#ifdef package_3
|
||
ST7735_ImageBreath_down(33,22,12,49,(const unsigned char *)gImage_18,1764,up_down_time);
|
||
#endif
|
||
up_down_time++;
|
||
}
|
||
if(up_down_time == 10)
|
||
{
|
||
up_down_time = 0;
|
||
up_down_flag = 1;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
if(up_down_time<50)
|
||
{
|
||
#ifdef package_3
|
||
ST7735_ImageBreath_down(33,22,12,49,(const unsigned char *)gImage_18,1764,(9-up_down_time));
|
||
#endif
|
||
up_down_time++;
|
||
}
|
||
if(up_down_time == 10)
|
||
{
|
||
up_down_time = 0;
|
||
up_down_flag = 0;
|
||
}
|
||
}
|
||
pic_clock = 0;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
if(over_flag==0)
|
||
{
|
||
ST7735_DrawFlashImage(33,22,12,49,1764,20);
|
||
over_flag =1;
|
||
}
|
||
}
|
||
}
|
||
|