Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

[ARM] How to change Chineess front in STM32F103 C programming

Status
Not open for further replies.

Hasan2017

Member level 4
Joined
Oct 23, 2017
Messages
76
Helped
0
Reputation
0
Reaction score
0
Trophy points
6
Activity points
831
Hi there,


I am handling a project which has display application both for English and Korean front but I would like to add Chiness front in it.
For that reason, I have to add more thing in front.c and front.h etc.

I can made some Chineess front/ charecter using Note pad pixel and a software named KSX1001 frontedit
BMP to front can be made. i.e IMAGE SIZE-16*16, front size-32. Software output gives .c file when input is a .bmp file.

Take a look output c file for a given .bmp,

Code:
#define byte unsigned char
#define word unsigned int
//---------------------------------------------------------
extern code byte ImageFontTbl[];
//---------------------------------------------------------

code byte ImageFontTbl[]={    // ImageSize: 16 X 16
    0xff,0x7f,    // QQQQQQQQ.QQQQQQQ
    0xff,0x7f,    // QQQQQQQQ.QQQQQQQ
    0xff,0x7f,    // QQQQQQQQ.QQQQQQQ
    0xff,0x7f,    // QQQQQQQQ.QQQQQQQ
    0xc0,0x01,    // QQ.............Q
    0xdf,0x7d,    // QQ.QQQQQ.QQQQQ.Q
    0xdf,0x7d,    // QQ.QQQQQ.QQQQQ.Q
    0xdf,0x7d,    // QQ.QQQQQ.QQQQQ.Q
    0xdf,0x7d,    // QQ.QQQQQ.QQQQQ.Q
    0xc0,0x01,    // QQ.............Q
    0xdf,0x7d,    // QQ.QQQQQ.QQQQQ.Q
    0xff,0x7f,    // QQQQQQQQ.QQQQQQQ
    0xff,0x7f,    // QQQQQQQQ.QQQQQQQ
    0xff,0x7f,    // QQQQQQQQ.QQQQQQQ
    0xff,0x7f,    // QQQQQQQQ.QQQQQQQ
    0xff,0x7f,    // QQQQQQQQ.QQQQQQQ
    
};    // FontSize= 32

Now my original front.c file called image registor in following way
Code:
const unsigned char IMAGE_16_16[COUNT_OF_16_IMAGE][32] = {

{0x11,0xaa,0x44,0x00,0xff,0x00,0xff,0x00,0x44,0xaa,0x11,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00}, // trace
{0x00,0xfe,0x02,0x12,0x12,0x12,0x12,0x82,0x42,0x22,0x12,0x0a,0x06,0xfe,0x00,0x00,0x00,0x3f,0x30,0x28,0x24,0x22,0x21,0x24,0x22,0x24,0x28,0x24,0x20,0x3f,0x00,0x00}, // Inverter
{0xff,0x01,0xfd,0xed,0xed,0xed,0xed,0x7d,0xbd,0xdd,0xed,0xf5,0xf9,0x01,0xff,0x00,0x7f,0x40,0x4f,0x57,0x5b,0x5d,0x5e,0x5b,0x5d,0x5b,0x57,0x5b,0x5f,0x40,0x7f,0x00}, // Reverse invertion
................................
................................

Another place they have represent korean front as follows,

Code:
const unsigned char FONT_HAN[0x168][32] = {   
  {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, 0x04, 0x04, 0x04, 0xc4, 0xfc, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x18, 0x0e, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
  {0x00, 0x04, 0x04, 0xfc, 0xfc, 0x04, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x1f, 0x07, 0x18, 0x1f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
..................................
................................


Even they have also present each letter

Code:
const unsigned char WAN_TO_JO[0x92E][2] = {
    {0x88, 0x61},// 가
    {0x88, 0x62},// 각
    {0x88, 0x65},// 간
    {0x88, 0x68},// 갇
    {0x88, 0x69},// 갈
    {0x88, 0x6a},// 갉
    {0x88, 0x6b},// 갊
    {0x88, 0x71},// 감
    {0x88, 0x73},// 갑
    {0x88, 0x74},// 값
    {0x88, 0x75},// 갓
    {0x88, 0x76},// 갔
...............................
...............................


Kindly suggest me what to do things for chiness. Does Image count has particular meaning to display it?
Does chiness front also need ASCI II charecter ? My front C also includes ASCI II.
Figure out the difference between IMAGE and FRONT of constant unsigned charecter.
 

Look at your first image, then think of the hexadecimal numbers in binary. You have 16 rows of 16 bits (the two bytes). Each bit decides whether the pixel within the font is bright or dark to construct the shape of the character.

If you start with a 16x16 grid, draw the shape you want to see which squares are dark or bright then divide it down the middle from top to bottom. Convert the filled squares to '1' and the empty ones to '0' to get a binary number then convert it to hex. Do the same for the both sides to get the two hex numbers for that line of the font.

Remember that in most cases there is a border around characters and it it usually part of the font itself so you should leave at least one border dark to create the gap between them.

Brian.
 

Hi,

I guess there is chines font already --> do an internet search. Maybe on single characters.

Also I guess there is software for font design. --> do internet search for "font generator"

Klaus
 

Look at your first image, then think of the hexadecimal numbers in binary. You have 16 rows of 16 bits (the two bytes). Each bit decides whether the pixel within the font is bright or dark to construct the shape of the character.

If you start with a 16x16 grid, draw the shape you want to see which squares are dark or bright then divide it down the middle from top to bottom. Convert the filled squares to '1' and the empty ones to '0' to get a binary number then convert it to hex. Do the same for the both sides to get the two hex numbers for that line of the font.

Remember that in most cases there is a border around characters and it it usually part of the font itself so you should leave at least one border dark to create the gap between them.

Brian.
Yes. Very impressive feedback. We can consider each square cell as a pixel. Chiness charecters are kind of complex. Hex to binary arrays might clear what you have said.

For a single front may be this explanation is essential to explain.

But if you look at the 3rd portion of code you can see I need to make 0×168 dimention or more. This arry does not contain all possible 0 and 1?

For border all 0 type Hex is included.

Count of image has made intentionally to present LCD operation.

I am not sure how long it will take to change whole code.
 
Last edited:

Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top