TODOPIC
Otros Microcontroladores / Dispositivos programables => Microcontroladores ARM => Mensaje iniciado por: alexrlopez86 en 08 de Agosto de 2013, 17:54:28
-
hola a todos estoy usando la pantalla de la placa hy-mini stm32 con el driver de anilandro y queria mostrar letras mas grandes e probado el programa "glcd fon creator" y trato de usar las letras generadas pero me pierdo a la ora de modificar las funciones encargadas de mostrar los caracteres
pongo un ejemplo
letra 23x33:
0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char cuadro blanco
0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0x3F, 0x07, 0x00, 0x80, 0xFF, 0x3F, 0x07, 0x00, 0x80, 0xFF, 0x3F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char !
funciones implicadas:
GUI_Text(30,30,"T",Blue,Red); //en el main
/******************************************************************************
* Function Name : GUI_Text
* Modified by : Anilandro
* Description :
* Input : - Xpos, Ypos, str, charColor, bkColor:
*******************************************************************************/
void GUI_Text(uint16_t Xpos, uint16_t Ypos, uint8_t *str, uint16_t Color, uint16_t bkColor)
{
uint8_t TempChar;
do
{
TempChar=*str++;
PutChar(Xpos,Ypos,TempChar,Color,bkColor);
if(PMode==0x01)
{
if (Xpos<232)
{
Xpos=Xpos+12;
}
else if (Ypos<287)
{
Xpos=0;
Ypos=Ypos+24;
}
else
{
Xpos=0;
Ypos=0;
}
}
if(PMode==0)
{
if (Xpos<311)
{
Xpos=Xpos+12;
}
else if (Ypos<208)
{
Ypos=Ypos+24;
Xpos=0;
}
else
{
Xpos=0;
Ypos=0;
}
}
}
while (*str!=0);
}
#endif
#if HZ_LIB > 0
#endif
/******************************************************************************
* Function Name : PutChar
* Description :
* Input : Xpos, Ypos, c, charColor, bkColor
*******************************************************************************/
void PutChar(unsigned short Xpos,unsigned short Ypos,unsigned char c,unsigned short charColor,unsigned short bkColor)
{
unsigned short i=0;
unsigned short j=0;
unsigned char buffer[24];
unsigned char tmp_char=0;
GetASCIICode(buffer,c);
for (i=0;i<8;i++)
{
tmp_char=buffer;
for (j=0;j<16;j++)
{
if ( (tmp_char >> 7-j) & 0x01 == 0x01)
{
LCD_SetPoint(Xpos+j,Ypos+i,charColor);
}
else
{
LCD_SetPoint(Xpos+j,Ypos+i,bkColor);
}
}
}
}
void GetASCIICode(unsigned char* pBuffer,unsigned char ASCII)
{
memcpy(pBuffer,AsciiLib[(ASCII - 32)] ,24);
}
espero su ayuda
-
Los fonts se guardan en arrays, si quieres crear un nuevo font, tendrías que utilizar alguna utilidad que convierta el texto o imágenes a un array con el formato RGB565 de 18bits. Yo para convertir imágenes estoy usando ImageConvert, supongo que habrán utilidades para crear o convertir fonts, eso aún no lo he probado.
En cuanto al código fuente, yo estoy utilizando otro, pero en esencia es lo mismo, debes de tener una función para seleccionar el tipo de font, y otra para sacar el texto, por ejemplo en el programa que yo estoy utilzando es así:
Clear_Screen(0x0000); // borra pantalla
Set_Font(&Font16x24); // selecciona font
Display_String(107, 255, "Lineas al Azar", LCD_WHITE); // visualiza texto en x,y, color blanco
Debes de tener algún achivo del tipo fonts.c y fonts.h, donde se recogern los arrays para cada font, y las funciones relacionadas.