Subrutina de inicialización:
INICIO
0x7C; Subdirección I2C
0xEA; ICSET, chip de reinicio del software
0xC0; MODSET, apaga la pantalla
0xF0; BLKCTL, apaga el parpadeo
0xA3; DISCTL, 80Hz Inversión de línea, modo de alta potencia
0xE8; ICSET, borra el bit de reinicio 1
STOP
Subrutina de actualización de pantalla:
INICIO
0x7C; Subdirección I2C
0xF0; BLKCTL, parpadeando
0xA3; DISCTL, Inversión de línea de 80Hz, modo de alta potencia
0xE8 o 0xEC; ICSET, la dirección alta de la memoria de video es 0 o 1
0xXX; ADSET, configure el inicio de actualización de la memoria de video dirección, generalmente 0x00, actualizada desde cero, esta vez en una instrucción general a 0xE8
...
...
STOP
INICIO
0x7C
0xC8; MODSET, pantalla abierta
STOP
Por último, adjunte un programa de prueba sencillo:
#define Address_BL55072 0x7C
void BL55072_Init(void)
{
uint8_t BL5502_Init_BUFF[5];
BL5502_Init_BUFF[0]= 0xEA;
BL5502_Init_BUFF[1]= 0xC0;
BL5502_Init_BUFF[2]= 0xF0;
BL5502_Init_BUFF[3]= 0xA3;
BL5502_Init_BUFF[4]= 0xE8;
HAL_I2C_Master_Transmit(&hi2c1, Address_BL55072, (uint8_t *)BL5502_Init_BUFF, 5, 100);
}
uint8_t BL5502_BUFF[23];
void SEG_WriteBuffer(uint8_t data)
{
BL5502_BUFF[0]= 0xF0;
BL5502_BUFF[1]= 0xA3;
BL5502_BUFF[2]= 0xE8;
BL5502_BUFF[3]= 0x00;
for(int i=4;i<22;i++)
{
BL5502_BUFF[i] = data;//
}
HAL_I2C_Master_Transmit(&hi2c1, Address_BL55072, (uint8_t *)BL5502_BUFF, 22, 100);
BL5502_BUFF[0]= 0xC8;
HAL_I2C_Master_Transmit(&hi2c1, Address_BL55072, (uint8_t *)BL5502_BUFF, 1, 100);
}