Red de conocimiento informático - Material del sitio web - ¿Cómo mostrar caracteres chinos en tft?

¿Cómo mostrar caracteres chinos en tft?

La visualización de caracteres chinos TFT debe mostrarse uno por uno

1. El formato de fuente es primero fila y luego columna. Tomando el formato 12*12 como ejemplo, los dos primeros. Los bytes de la fuente son la primera fila de la matriz de puntos (el primer byte tiene 8 bits, los 4 bits superiores del segundo byte), *** 24 bytes son el contenido de un carácter chino. Lo mismo puede decirse de otras fuentes

2. Cuando se muestra, se muestra en orden desde el bit alto (bit7) hasta el bit bajo (bit0). Si el bit es 1, el color del carácter será. se generará, y si es 0, se generará el color de fondo.

3 La siguiente es una rutina de visualización de caracteres, de 8*5, 12*6, 16*8, 24*12. . .

const unsigned long tab_addr_offset_asc[]=

{

offset_asc_8, offset_asc_12, offset_asc_16, offset_asc_24, offset_asc_32, offset_asc_40, offset_asc_48, offset_asc_56,

offset_asc_64, offset_asc_72, offset_asc_80, offset_asc_96, offset_asc_128, offset_asc_end,

};

const tab_len_asc corto sin firmar[]=

{

0x08, 0x0c, 0x10, 0x30, 0x40, 0x78, 0x90, 0xe0, 0x100, 0x168, 0x190, 0x240, 0x400,

}; =

{

0x04, 0x05, 0x07, 0x0b, 0x0f, 0x13, 0x17, 0x1b, 0x1f, 0x23, 0x27, 0x2f, 0x3f,

} ;

const unsigned char tab_yw_asc[]=

{

0x07, 0x0b, 0x0f, 0x17, 0x1f, 0x27, 0x2f, 0x37, 0x3f, 0x47, 0x4f, 0x5f, 0x7f,

};

//************************** *************************************************

// Este es un programa de visualización de caracteres, los datos de visualización se pasan mediante lcd_byte_data

// Se muestra en pos_x (fila), pos_y (columna)

/ /*** ********************************************** ***** **********************

void wr_lcd_hex(unsigned char lcd_byte_data, unsigned char font_ord)

{

unsigned char i, j, k;

unsigned char x_w, y_w; //fila y ancho de bits de fila

unsigned char x_byte_w; ancho de bytes

unsigned char zoom_bak;

unsigned short b_order;

x_w=tab_xw_asc[font_ord];

y_w=tab_yw_asc[font_ord] ];

x_byte_w=x_w;

x_byte_w =0x07;

x_byte_wgt;gt;=0x03; //Número de bytes por línea

clrwdt();

ex_ee_addr.w[0]=lcd_byte_data;

ex_ee_addr.w[1]=0x00;

p>

ex_ee_addr.val*=tab_len_asc[font_ord];

ex_ee_addr.val =tab_addr_offset_asc[font_ord];

lcd_set_rang(lcd_pos_x, lcd_pos_x x_w, lcd_pos_y, lcd_pos_y y_w) ; //Establecer el área de escritura

b_order=0x00;

set_lcd_cs_on;

lcd_wr_cmd(lcd_cmd_wr_rams); //Escribir memoria, seguido de contenido

zoom_bak=zoom;

zoom=0x01;

x_w ; //El número real de dígitos en ancho

k=max_45db_buff; Ingrese el siguiente bucle Lea automáticamente la biblioteca de fuentes durante el programa

while (b_orderlt; tab_len_asc[font_ord])

{

if (kgt; =max_45db_buff) //Continuar leyendo la biblioteca de fuentes

{

rd_45db_data(ex_ee_addr.val, rd_45db_buff, max_45db_buff); //Leer la biblioteca de fuentes

ex_ee_addr.val =max_45db_buff); ;

i =x_w;

k=0x00;

}

j=0x80;

mientras ((i)amp;amp;( j))

{

if (rd_45db_buff[k]amp;j)

lcd_wr_color(lcd_word_color);

else

p>

lcd_wr_color(lcd_back_color);

jgt; =0x01;

}

k ;

b_order ;

if (i==0x00) //La línea actual está terminada, actualiza la longitud de la línea

i=x_w;

}

zoom=zoom_bak;

set_lcd_cs_off;

//Ajustar al siguiente posición de visualización

lcd_pos_x =x_w

if (lcd_pos_xgt; max_lcd_pos_x)

{

lcd_pos_x=0x00; p> lcd_pos_y =y_w 0x01;

if (lcd_pos_ygt; max_lcd_pos_y)

lcd_pos_y=0x00;

}

}