Jump to content
43oh

Nokia 5110 display


Recommended Posts

  • Replies 59
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

Popular Posts

Here's the code I am using to control 5110. It uses USCIB (2553) but USI (2231) can also be use without any problem or major updates. There is still a lot of work to be done, but basic text and some g

I wrote some code for the nokia lcd using spi a couple of months ago and after seeing Robs post I thought I'd post mine as well. sorry about the video quality I lost my good camera in a drift boat ac

Updated original post with new code. Added simple graphic stuff, 8 x 8 pixel graphics can be displayed, rotated, and flipped. Rotating is not very efficient, maybe there is another way of doing it.

Posted Images

You need to do 3 things to use USI

 

1. remove USCI configuration and add USI config (here's an example)

USICTL0 |= USIPE6 + USIPE5 + USIMST + USIOE;
USICTL1 |= USICKPH + USICKPL + USIIE;
USICKCTL = USIDIV_7 + USISSEL_2;
USICTL0 &= ~USISWRST;

 

2. swap data pin from P1.7 to P1.6

3. instead of writing to TX buffer, write to 2 registers below

USISRL = data;
USICNT |= 8;
Link to post
Share on other sites

hi robg,

             i tried out the corrections you suggested but my lcd is still not displaying anything. following is the code . Please suggest corrections if any.

thankyou.

 

 

#include "msp430g2231.h"
#include "PCD8544.h"


#define LCD5110_SCLK_PIN BIT5
#define LCD5110_DN_PIN BIT6
#define LCD5110_SCE_PIN BIT0
#define LCD5110_DC_PIN BIT1
#define LCD5110_SELECT P1OUT &= ~LCD5110_SCE_PIN
#define LCD5110_DESELECT P1OUT |= LCD5110_SCE_PIN
#define LCD5110_SET_COMMAND P1OUT &= ~LCD5110_DC_PIN
#define LCD5110_SET_DATA P1OUT |= LCD5110_DC_PIN
#define LCD5110_COMMAND 0
#define LCD5110_DATA 1


#define SPI_MSB_FIRST  USICTL0 &= ~USILSB 
#define SPI_LSB_FIRST  USICTL0 |= USILSB


void writeStringToLCD(const char *string);
void writeCharToLCD(char c);
void writeBlockToLCD(char *byte, unsigned char length);
void writeGraphicToLCD(char *byte, unsigned char transform);
void writeToLCD(unsigned char dataCommand, unsigned char data);
void clearLCD();
void clearBank(unsigned char bank);
void setAddr(unsigned char xAddr, unsigned char yAddr);
void initLCD();


unsigned char currXAddr = 0; //TODO this will be used for tracking current addr
unsigned char currYAddr = 0; //not implemented


//char testBlock[8] = {0x01, 0x03, 0x07, 0x0F, 0x1F, 0x3F, 0x7F, 0xFF};
char testBlock[8] = {0x00, 0x7F, 0x7F, 0x33, 0x33, 0x03, 0x03, 0x03};
char testBlock2[8] = {0x00, 0x18, 0x18, 0x18, 0x7E, 0x3C, 0x18, 0x00};


void main(void) {


    WDTCTL = WDTPW + WDTHOLD;         // disable WDT
    BCSCTL1 = CALBC1_1MHZ;            // 1MHz clock
    DCOCTL = CALDCO_1MHZ;


    P1OUT |= LCD5110_SCE_PIN + LCD5110_DC_PIN;
    P1DIR |= LCD5110_SCE_PIN + LCD5110_DC_PIN;


    // setup USIB
    P1SEL |= LCD5110_SCLK_PIN + LCD5110_DN_PIN;
    P2SEL |= LCD5110_SCLK_PIN + LCD5110_DN_PIN;


    USICTL0 |= USIPE6 + USIPE5 + USIMST + USIOE+ USIGE;
    USICTL1 |= USICKPH + USICKPL + USIIE;
    USICKCTL = USIDIV_7 + USISSEL_2;
    USICTL0 &= ~USISWRST;


    _delay_cycles(500000);
    initLCD();
    clearLCD();


    // LCD test
    writeStringToLCD("Nokia 5110");


    _delay_cycles(2000000);
    setAddr(0, 0);


    int c = 0x20;
    while(c < (65 + 0x20)) {
        writeCharToLCD(c);
        c++;
    }


    _delay_cycles(2000000);
    clearLCD();


    c = 65 + 0x20;


    while(c < (96 + 0x20)) {
        writeCharToLCD(c);
        c++;
    }


    _delay_cycles(2000000);


    c = 0;
    clearBank(3);
    while(c < 64) {
        writeToLCD(LCD5110_DATA, 0xFF);
        c++;
        _delay_cycles(20000);
    }
    clearBank(4);
    while(c < 100) {
        writeToLCD(LCD5110_DATA, 0xFF);
        c++;
        _delay_cycles(20000);
    }
    clearBank(5);
    while(c < 184) {
        writeToLCD(LCD5110_DATA, 0xFF);
        c++;
        _delay_cycles(20000);
    }


    _delay_cycles(2000000);


    clearBank(3);
    writeGraphicToLCD(testBlock, NONE);
    writeGraphicToLCD(testBlock, FLIP_V);
    writeGraphicToLCD(testBlock, FLIP_H);
    writeGraphicToLCD(testBlock, ROTATE);
    writeGraphicToLCD(testBlock, FLIP_V | ROTATE);
    writeGraphicToLCD(testBlock, FLIP_H | ROTATE);
    writeGraphicToLCD(testBlock, ROTATE_90_CCW);
    writeGraphicToLCD(testBlock, ROTATE_180);


    clearBank(4);
    writeGraphicToLCD(testBlock2, NONE);
    writeGraphicToLCD(testBlock2, FLIP_H);
    writeGraphicToLCD(testBlock2, ROTATE);
    writeGraphicToLCD(testBlock2, ROTATE_90_CCW);






    clearBank(0);
    writeStringToLCD("For details,");
    clearBank(1);
    writeStringToLCD("visit 43oh.com");
    clearBank(2);
}


void writeStringToLCD(const char *string) {
    while(*string) {
        writeCharToLCD(*string++);
    }
}


void writeCharToLCD(char c) {
    unsigned char i;
    for(i = 0; i < 5; i++) {
        writeToLCD(LCD5110_DATA, font[c - 0x20][i]);
    }
    writeToLCD(LCD5110_DATA, 0);
}


void writeBlockToLCD(char *byte, unsigned char length) {
    unsigned char c = 0;
    while(c < length) {
        writeToLCD(LCD5110_DATA, *byte++);
        c++;
    }
}


void writeGraphicToLCD(char *byte, unsigned char transform) {
    int c = 0;
    char block[8];


    if(transform & FLIP_V) {
        SPI_LSB_FIRST;
    }
    if(transform & ROTATE) {
        c = 1;
        while(c != 0) {
            (*byte & 0x01) ? (block[7] |= c) : (block[7] &= ~c);
            (*byte & 0x02) ? (block[6] |= c) : (block[6] &= ~c);
            (*byte & 0x04) ? (block[5] |= c) : (block[5] &= ~c);
            (*byte & 0x08) ? (block[4] |= c) : (block[4] &= ~c);
            (*byte & 0x10) ? (block[3] |= c) : (block[3] &= ~c);
            (*byte & 0x20) ? (block[2] |= c) : (block[2] &= ~c);
            (*byte & 0x40) ? (block[1] |= c) : (block[1] &= ~c);
            (*byte & 0x80) ? (block[0] |= c) : (block[0] &= ~c);
            *byte++;
            c <<= 1;
        }
    } else {
        while(c < 8) {
            block[c++] = *byte++;
        }
    }


    if(transform & FLIP_H) {
        c = 7;
        while(c > -1) {
            writeToLCD(LCD5110_DATA, block[c--]);
        }
    } else {
        c = 0;
        while(c < 8) {
            writeToLCD(LCD5110_DATA, block[c++]);
        }
    }
    SPI_MSB_FIRST;
}


void writeToLCD(unsigned char dataCommand, unsigned char data) {
    LCD5110_SELECT;
    if(dataCommand) {
        LCD5110_SET_DATA;
    } else {
        LCD5110_SET_COMMAND;
    }
    USISRL = data;                    //CORRECTIONS
    USICNT|=8;
    while(!(P2IFG & USIIE))      
        ;
    LCD5110_DESELECT;
}


void clearLCD() {
    setAddr(0, 0);
    int c = 0;
    while(c < PCD8544_MAXBYTES) {
        writeToLCD(LCD5110_DATA, 0);
        c++;
    }
    setAddr(0, 0);
}


void clearBank(unsigned char bank) {
    setAddr(0, bank);
    int c = 0;
    while(c < PCD8544_HPIXELS) {
        writeToLCD(LCD5110_DATA, 0);
        c++;
    }
    setAddr(0, bank);
}


void setAddr(unsigned char xAddr, unsigned char yAddr) {
    writeToLCD(LCD5110_COMMAND, PCD8544_SETXADDR | xAddr);
    writeToLCD(LCD5110_COMMAND, PCD8544_SETYADDR | yAddr);
}


void initLCD() {
    writeToLCD(LCD5110_COMMAND, PCD8544_FUNCTIONSET | PCD8544_EXTENDEDINSTRUCTION);
    writeToLCD(LCD5110_COMMAND, PCD8544_SETVOP | 0x3F);
    writeToLCD(LCD5110_COMMAND, PCD8544_SETTEMP | 0x02);
    writeToLCD(LCD5110_COMMAND, PCD8544_SETBIAS | 0x03);
    writeToLCD(LCD5110_COMMAND, PCD8544_FUNCTIONSET);
    writeToLCD(LCD5110_COMMAND, PCD8544_DISPLAYCONTROL | PCD8544_DISPLAYNORMAL);
}
 

 

Edited by bluehash
Wrapped in <code>
Link to post
Share on other sites

I see couple of problems, I will comment once I get my coffee.

 

 

OK, remove

    // setup USIB
    P1SEL |= LCD5110_SCLK_PIN + LCD5110_DN_PIN;
    P2SEL |= LCD5110_SCLK_PIN + LCD5110_DN_PIN;

 

Then change while in writeToLCD to

    while(!(USICTL1 & USIIFG))
        ;

You may also want to remove USIIE from config

 USICTL1 |= USICKPH + USICKPL;

 

I don't have access to 2231 right now, so this is all untested.

Link to post
Share on other sites
  • 3 weeks later...

I purchased a blue backlight 5110 from ebay and am having trouble getting to work.

 

I have tied SCE to 1.0, RST to GND, D/C to 1.1, DN to 1.7, SCLK to 1.5, LED to VCC, and made the GND and VCC connections.

 

After compiling and loading it onto two different rev 1.5 launchpads with 2553s, I get nothing but the blue backlight.

 

I know the display works because I got it working with an Arduino (using 10k current limiting resistors vice a level shifter).

 

Any ideas what this newb is doing wrong?

Link to post
Share on other sites

I purchased a blue backlight 5110 from ebay and am having trouble getting to work.

 

I have tied SCE to 1.0, RST to GND, D/C to 1.1, DN to 1.7, SCLK to 1.5, LED to VCC, and made the GND and VCC connections.

 

After compiling and loading it onto two different rev 1.5 launchpads with 2553s, I get nothing but the blue backlight.

 

I know the display works because I got it working with an Arduino (using 10k current limiting resistors vice a level shifter).

 

Any ideas what this newb is doing wrong?

Try pulling the TX/RX jumpers - you're using one of those pins for the display.  Either that or don't use 1.1 and 1.2.

Link to post
Share on other sites
  • 3 months later...

The Reset solution in OP is not quite up to the specs which says something along the lines of "Must be low upon power-on and must then be pulled high within 0.1 second" . But it works and saves 1 on the MSP!

 

I needed a font which could be read from a larger distance. It would probably have been better to change addressing mode to V than to use this solution. But despite being un-pretty it woks. I have also attached the bash-script (dependent on NetPBM) i used to convert the font http://scruss.com/enterprise.net/Images/pbmtext_atari8x16.png .Any 8x16 pbmtext/BDF-font, Other font-sizes will work but the crop values will need to be changed. Since it is a quick-hack you have to manually remove the first , in the generated struct. 

 

The byte-order of the generated struct is not optimal from a speed standpoint, and the generated font lacks a degree-sign. So it is by no means perfect. Still, if you just need a quick-hack to display larger text and have a few cycles to spare, why re-invent the wheel?

 

Added this to main.c

void writeBigStringToLCD(const char *string,char x,char y) {
	while(*string) {
        writeBigCharToLCD(*string++,x,y);
		x+=8;
	}
}


void writeBigCharToLCD(char c,char x,char y) {
	//TODO get this to work
    unsigned char i;
    setAddr(x,y);
	for(i = 1; i < 16; i+=2) {
		writeToLCD(LCD5110_DATA, bigFont[c - 0x20][i]);
    }
    setAddr(x,y+1);
    for(i = 0; i < 16; i+=2) {
        writeToLCD(LCD5110_DATA, bigFont[c - 0x20][i]);
    }
    writeToLCD(LCD5110_DATA, 0);
}

Added this to PDC8544.h

static const char bigFont[][16] = {		// big font		{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} //		,{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0xfe, 0x19, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} //    !		,{0x00, 0x00, 0x00, 0x7e, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x7e, 0x00, 0x00} //    "		,{0x01, 0x98, 0x07, 0xfe, 0x07, 0xfe, 0x01, 0x98, 0x01, 0x98, 0x07, 0xfe, 0x07, 0xfe, 0x00, 0x00} //    #		,{0x00, 0x00, 0x06, 0x3c, 0x06, 0x7e, 0x1e, 0x67, 0x1e, 0x67, 0x07, 0xe6, 0x03, 0xc6, 0x00, 0x00} //    $		,{0x00, 0x00, 0x06, 0x0e, 0x07, 0x8e, 0x01, 0xe0, 0x00, 0x78, 0x07, 0x1e, 0x07, 0x06, 0x00, 0x00} //    %		,{0x0f, 0x80, 0x1f, 0xe7, 0x18, 0x7f, 0x19, 0xf9, 0x0f, 0x9f, 0x1f, 0x87, 0x19, 0x80, 0x00, 0x00} //    &		,{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} //    '		,{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf8, 0x0f, 0xfc, 0x1c, 0x0e, 0x10, 0x02, 0x00, 0x00} //    (		,{0x00, 0x00, 0x10, 0x02, 0x1c, 0x0e, 0x0f, 0xfc, 0x07, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} //    )		,{0x00, 0x60, 0x06, 0x66, 0x07, 0xfe, 0x01, 0xf8, 0x01, 0xf8, 0x07, 0xfe, 0x06, 0x66, 0x00, 0x00} //    *		,{0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x03, 0xfc, 0x03, 0xfc, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00} //    +		,{0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x3e, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} //    ,		,{0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00} //    -		,{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} //    .		,{0x00, 0x00, 0x1c, 0x00, 0x1f, 0x00, 0x03, 0xc0, 0x00, 0xf0, 0x00, 0x3e, 0x00, 0x0e, 0x00, 0x00} //    /		,{0x00, 0x00, 0x0f, 0xfc, 0x1f, 0xfe, 0x18, 0x86, 0x18, 0x46, 0x1f, 0xfe, 0x0f, 0xfc, 0x00, 0x00} //    0		,{0x00, 0x00, 0x18, 0x00, 0x18, 0x18, 0x1f, 0xfe, 0x1f, 0xfe, 0x18, 0x00, 0x18, 0x00, 0x00, 0x00} //    1		,{0x00, 0x00, 0x18, 0x1c, 0x1e, 0x1e, 0x1f, 0x86, 0x19, 0xe6, 0x18, 0x7e, 0x18, 0x1c, 0x00, 0x00} //    2		,{0x00, 0x00, 0x0e, 0x06, 0x1e, 0x06, 0x18, 0x66, 0x19, 0xfe, 0x1f, 0x9e, 0x0e, 0x06, 0x00, 0x00} //    3		,{0x00, 0x00, 0x07, 0x80, 0x07, 0xe0, 0x06, 0x78, 0x1f, 0xfe, 0x1f, 0xfe, 0x06, 0x00, 0x00, 0x00} //    4		,{0x00, 0x00, 0x0c, 0x7e, 0x1c, 0x7e, 0x18, 0x66, 0x18, 0x66, 0x1f, 0xe6, 0x0f, 0xc6, 0x00, 0x00} //    5		,{0x00, 0x00, 0x0f, 0xf8, 0x1f, 0xfc, 0x18, 0xce, 0x18, 0xc6, 0x1f, 0xc6, 0x0f, 0x80, 0x00, 0x00} //    6		,{0x00, 0x00, 0x00, 0x06, 0x1e, 0x06, 0x1f, 0x86, 0x01, 0xe6, 0x00, 0x7e, 0x00, 0x1e, 0x00, 0x00} //    7		,{0x00, 0x00, 0x0f, 0x9c, 0x1f, 0xfe, 0x18, 0x66, 0x18, 0x66, 0x1f, 0xfe, 0x0f, 0x9c, 0x00, 0x00} //    8		,{0x00, 0x00, 0x00, 0x3c, 0x18, 0x7e, 0x18, 0x66, 0x1c, 0x66, 0x0f, 0xfe, 0x07, 0xfc, 0x00, 0x00} //    9		,{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x78, 0x1e, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} //    :		,{0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x3e, 0x78, 0x1e, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} //    ;		,{0x00, 0x40, 0x00, 0xe0, 0x01, 0xf0, 0x03, 0xb8, 0x07, 0x1c, 0x06, 0x0c, 0x04, 0x04, 0x00, 0x00} //    <		,{0x00, 0x00, 0x01, 0x98, 0x01, 0x98, 0x01, 0x98, 0x01, 0x98, 0x01, 0x98, 0x01, 0x98, 0x00, 0x00} //    =		,{0x04, 0x04, 0x06, 0x0c, 0x07, 0x1c, 0x03, 0xb8, 0x01, 0xf0, 0x00, 0xe0, 0x00, 0x40, 0x00, 0x00} //    >		,{0x00, 0x00, 0x00, 0x1c, 0x00, 0x1e, 0x1b, 0x86, 0x1b, 0xe6, 0x00, 0x7e, 0x00, 0x1c, 0x00, 0x00} //    ?		,{0x07, 0xf8, 0x0f, 0xfc, 0x1c, 0x0e, 0x19, 0xe6, 0x19, 0x26, 0x19, 0xcc, 0x0c, 0xf8, 0x00, 0x00} //    @		,{0x00, 0x00, 0x1f, 0xf8, 0x1f, 0xfc, 0x01, 0x8e, 0x01, 0x8e, 0x1f, 0xfc, 0x1f, 0xf8, 0x00, 0x00} //    A		,{0x00, 0x00, 0x1f, 0xfe, 0x1f, 0xfe, 0x18, 0x66, 0x18, 0x66, 0x1f, 0xfe, 0x0f, 0xbc, 0x00, 0x00} //    B		,{0x00, 0x00, 0x0f, 0xfc, 0x1f, 0xfe, 0x18, 0x06, 0x18, 0x06, 0x1e, 0x1e, 0x0e, 0x1c, 0x00, 0x00} //    C		,{0x00, 0x00, 0x1f, 0xfe, 0x1f, 0xfe, 0x18, 0x06, 0x1c, 0x0e, 0x0f, 0xfc, 0x07, 0xf8, 0x00, 0x00} //    D		,{0x00, 0x00, 0x1f, 0xfe, 0x1f, 0xfe, 0x18, 0x66, 0x18, 0x66, 0x18, 0x66, 0x18, 0x06, 0x00, 0x00} //    E		,{0x00, 0x00, 0x1f, 0xfe, 0x1f, 0xfe, 0x00, 0x66, 0x00, 0x66, 0x00, 0x66, 0x00, 0x06, 0x00, 0x00} //    F		,{0x00, 0x00, 0x0f, 0xfc, 0x1f, 0xfe, 0x18, 0x06, 0x18, 0x66, 0x1f, 0xe6, 0x0f, 0xe6, 0x00, 0x00} //    G		,{0x00, 0x00, 0x1f, 0xfe, 0x1f, 0xfe, 0x00, 0x60, 0x00, 0x60, 0x1f, 0xfe, 0x1f, 0xfe, 0x00, 0x00} //    H		,{0x00, 0x00, 0x18, 0x06, 0x18, 0x06, 0x1f, 0xfe, 0x1f, 0xfe, 0x18, 0x06, 0x18, 0x06, 0x00, 0x00} //    I		,{0x00, 0x00, 0x0e, 0x00, 0x1e, 0x00, 0x18, 0x00, 0x18, 0x00, 0x1f, 0xfe, 0x0f, 0xfe, 0x00, 0x00} //    J		,{0x1f, 0xfe, 0x1f, 0xfe, 0x00, 0x60, 0x01, 0xf8, 0x07, 0x9e, 0x1e, 0x06, 0x18, 0x00, 0x00, 0x00} //    K		,{0x00, 0x00, 0x1f, 0xfe, 0x1f, 0xfe, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x00, 0x00} //    L		,{0x1f, 0xfe, 0x1f, 0xfe, 0x00, 0x38, 0x00, 0xe0, 0x00, 0x38, 0x1f, 0xfe, 0x1f, 0xfe, 0x00, 0x00} //    M		,{0x00, 0x00, 0x1f, 0xfe, 0x1f, 0xfe, 0x00, 0xf0, 0x03, 0xc0, 0x1f, 0xfe, 0x1f, 0xfe, 0x00, 0x00} //    N		,{0x00, 0x00, 0x0f, 0xfc, 0x1f, 0xfe, 0x18, 0x06, 0x18, 0x06, 0x1f, 0xfe, 0x0f, 0xfc, 0x00, 0x00} //    O		,{0x00, 0x00, 0x1f, 0xfe, 0x1f, 0xfe, 0x01, 0x86, 0x01, 0x86, 0x01, 0xfe, 0x00, 0xfc, 0x00, 0x00} //    P		,{0x00, 0x00, 0x0f, 0xfc, 0x1f, 0xfe, 0x18, 0x06, 0x0c, 0x06, 0x1b, 0xfe, 0x17, 0xfc, 0x00, 0x00} //    Q		,{0x1f, 0xfe, 0x1f, 0xfe, 0x00, 0xc6, 0x01, 0xc6, 0x07, 0xfe, 0x1e, 0x7c, 0x18, 0x00, 0x00, 0x00} //    R		,{0x00, 0x00, 0x18, 0x3c, 0x18, 0x7e, 0x18, 0xe6, 0x19, 0xc6, 0x1f, 0x86, 0x0f, 0x06, 0x00, 0x00} //    S		,{0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x1f, 0xfe, 0x1f, 0xfe, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00} //    T		,{0x00, 0x00, 0x0f, 0xfe, 0x1f, 0xfe, 0x18, 0x00, 0x18, 0x00, 0x1f, 0xfe, 0x0f, 0xfe, 0x00, 0x00} //    U		,{0x00, 0x00, 0x01, 0xfe, 0x07, 0xfe, 0x1e, 0x00, 0x1e, 0x00, 0x07, 0xfe, 0x01, 0xfe, 0x00, 0x00} //    V		,{0x1f, 0xfe, 0x0f, 0xfe, 0x07, 0x00, 0x03, 0xc0, 0x07, 0x00, 0x0f, 0xfe, 0x1f, 0xfe, 0x00, 0x00} //    W		,{0x00, 0x00, 0x1c, 0x0e, 0x1f, 0x3e, 0x03, 0xf0, 0x03, 0xf0, 0x1f, 0x3e, 0x1c, 0x0e, 0x00, 0x00} //    X		,{0x00, 0x00, 0x00, 0x1e, 0x00, 0x7e, 0x1f, 0xe0, 0x1f, 0xe0, 0x00, 0x7e, 0x00, 0x1e, 0x00, 0x00} //    Y		,{0x00, 0x00, 0x1e, 0x06, 0x1f, 0x86, 0x19, 0xe6, 0x18, 0x7e, 0x18, 0x1e, 0x18, 0x06, 0x00, 0x00} //    Z		,{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xfe, 0x1f, 0xfe, 0x18, 0x06, 0x18, 0x06, 0x00, 0x00} //    [		,{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} //    

font2struct.tgz

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...