turd 31 Posted December 31, 2011 Share Posted December 31, 2011 Just a simple test of the Nokia 5110 lcd with mspgcc nokiatest.c #include #include //Include font file const int sclk = BIT0; //LCD clock line (clocked on falling edge) const int sda = BIT1; //LCD data line (MSB first) const int dc = BIT2; //LCD mode select (low for instruction and high for data) const int cs = BIT3; //LCD chip select (low for select) const int rst = BIT4; //LCD reset (low for reset) const int draw = 1; //Used to select data mode const int inst = 0; //Used to select instruction mode void init_lcd(void); //Initialise LCD void shift_out(unsigned int, unsigned char);//SPI void delay(unsigned int); void main(void) { WDTCTL = WDTPW + WDTHOLD; //Put watchdog timer on hold BCSCTL1 = CALBC1_1MHZ; //Set frequency to 16MHZ DCOCTL = CALDCO_1MHZ; P1DIR = sclk | sda | dc | cs | rst; //Initialise output pins init_lcd(); //Initialise LCD shift_out(inst, 128); //Move cursor to start shift_out(inst, 64); //of first line unsigned int i; for(i = 0; i < 455; ++i) //Shift out all characters { shift_out(draw, font[i]); } while(1) //Do nothing in a loop { } } void init_lcd(void) { P1OUT &= ~(sclk | sda | dc | cs | rst); //Set all outputs low delay(50000); //Wait for LCD to reset P1OUT |= rst; //Deactivate reset P1OUT &= ~cs; //Set chip select low to select LCD shift_out(inst, 0b00100000); //function set: chip is active, horizontal addressing, use basic instruction set shift_out(inst, 0b00001100); //Display control: normal mode unsigned int i; for(i = 0; i < 504; ++i) //Shift out zeros to whole screen to clear { shift_out(draw, 0x00); } P1OUT |= cs; //Set chip select high to deselect LCD } void shift_out(unsigned int ints_draw, unsigned char data_byte) { if(ints_draw == inst) //Set dc (mode) line low if inst is used { P1OUT &= ~dc; } else if(ints_draw == draw) //Set dc (mode) line high if draw is used { P1OUT |= dc; } P1OUT &= ~cs; //Set chip select low to select LCD unsigned char i; for(i = 0; i <= 7; i++) { P1OUT &= ~sclk; //Set clock line low if(data_byte > 127) //If most significant bit is 1 set data line high { P1OUT |= sda; } else if(data_byte < 128) //If most significant bit is 0 set data line low { P1OUT &= ~sda; } P1OUT |= sclk; //Bring clock line high to shift out bit data_byte = data_byte << 1; //shift bits in data_byte left } P1OUT |= cs; //Set chip select high to deselect LCD } void delay(unsigned int time) { unsigned int i; for(i = 0; i < time; i++) //Waste time { } } lcdfont.h const unsigned char font[] = { 0x00, 0x00, 0x00, 0x00, 0x00, // sp 0x00, 0x00, 0x2f, 0x00, 0x00, // ! 0x00, 0x07, 0x00, 0x07, 0x00, // " 0x14, 0x7f, 0x14, 0x7f, 0x14, // # 0x24, 0x2a, 0x7f, 0x2a, 0x12, // $ 0xc4, 0xc8, 0x10, 0x26, 0x46, // % 0x36, 0x49, 0x55, 0x22, 0x50, // & 0x00, 0x05, 0x03, 0x00, 0x00, // ' 0x00, 0x1c, 0x22, 0x41, 0x00, // ( 0x00, 0x41, 0x22, 0x1c, 0x00, // ) 0x14, 0x08, 0x3E, 0x08, 0x14, // * 0x08, 0x08, 0x3E, 0x08, 0x08, // + 0x00, 0x00, 0x50, 0x30, 0x00, // , 0x10, 0x10, 0x10, 0x10, 0x10, // - 0x00, 0x60, 0x60, 0x00, 0x00, // . 0x20, 0x10, 0x08, 0x04, 0x02, // / 0x3E, 0x51, 0x49, 0x45, 0x3E, // 0 0x00, 0x42, 0x7F, 0x40, 0x00, // 1 0x42, 0x61, 0x51, 0x49, 0x46, // 2 0x21, 0x41, 0x45, 0x4B, 0x31, // 3 0x18, 0x14, 0x12, 0x7F, 0x10, // 4 0x27, 0x45, 0x45, 0x45, 0x39, // 5 0x3C, 0x4A, 0x49, 0x49, 0x30, // 6 0x01, 0x71, 0x09, 0x05, 0x03, // 7 0x36, 0x49, 0x49, 0x49, 0x36, // 8 0x06, 0x49, 0x49, 0x29, 0x1E, // 9 0x00, 0x36, 0x36, 0x00, 0x00, // : 0x00, 0x56, 0x36, 0x00, 0x00, // ; 0x08, 0x14, 0x22, 0x41, 0x00, // < 0x14, 0x14, 0x14, 0x14, 0x14, // = 0x00, 0x41, 0x22, 0x14, 0x08, // > 0x02, 0x01, 0x51, 0x09, 0x06, // ? 0x32, 0x49, 0x59, 0x51, 0x3E, // @ 0x7E, 0x11, 0x11, 0x11, 0x7E, // A 0x7F, 0x49, 0x49, 0x49, 0x36, // B 0x3E, 0x41, 0x41, 0x41, 0x22, // C 0x7F, 0x41, 0x41, 0x22, 0x1C, // D 0x7F, 0x49, 0x49, 0x49, 0x41, // E 0x7F, 0x09, 0x09, 0x09, 0x01, // F 0x3E, 0x41, 0x49, 0x49, 0x7A, // G 0x7F, 0x08, 0x08, 0x08, 0x7F, // H 0x00, 0x41, 0x7F, 0x41, 0x00, // I 0x20, 0x40, 0x41, 0x3F, 0x01, // J 0x7F, 0x08, 0x14, 0x22, 0x41, // K 0x7F, 0x40, 0x40, 0x40, 0x40, // L 0x7F, 0x02, 0x0C, 0x02, 0x7F, // M 0x7F, 0x04, 0x08, 0x10, 0x7F, // N 0x3E, 0x41, 0x41, 0x41, 0x3E, // O 0x7F, 0x09, 0x09, 0x09, 0x06, // P 0x3E, 0x41, 0x51, 0x21, 0x5E, // Q 0x7F, 0x09, 0x19, 0x29, 0x46, // R 0x46, 0x49, 0x49, 0x49, 0x31, // S 0x01, 0x01, 0x7F, 0x01, 0x01, // T 0x3F, 0x40, 0x40, 0x40, 0x3F, // U 0x1F, 0x20, 0x40, 0x20, 0x1F, // V 0x3F, 0x40, 0x38, 0x40, 0x3F, // W 0x63, 0x14, 0x08, 0x14, 0x63, // X 0x07, 0x08, 0x70, 0x08, 0x07, // Y 0x61, 0x51, 0x49, 0x45, 0x43, // Z 0x00, 0x7F, 0x41, 0x41, 0x00, // [ 0x55, 0x2A, 0x55, 0x2A, 0x55, // 55 0x00, 0x41, 0x41, 0x7F, 0x00, // ] 0x04, 0x02, 0x01, 0x02, 0x04, // ^ 0x40, 0x40, 0x40, 0x40, 0x40, // _ 0x00, 0x01, 0x02, 0x04, 0x00, // ' 0x20, 0x54, 0x54, 0x54, 0x78, // a 0x7F, 0x48, 0x44, 0x44, 0x38, // b 0x38, 0x44, 0x44, 0x44, 0x20, // c 0x38, 0x44, 0x44, 0x48, 0x7F, // d 0x38, 0x54, 0x54, 0x54, 0x18, // e 0x08, 0x7E, 0x09, 0x01, 0x02, // f 0x0C, 0x52, 0x52, 0x52, 0x3E, // g 0x7F, 0x08, 0x04, 0x04, 0x78, // h 0x00, 0x44, 0x7D, 0x40, 0x00, // i 0x20, 0x40, 0x44, 0x3D, 0x00, // j 0x7F, 0x10, 0x28, 0x44, 0x00, // k 0x00, 0x41, 0x7F, 0x40, 0x00, // l 0x7C, 0x04, 0x18, 0x04, 0x78, // m 0x7C, 0x08, 0x04, 0x04, 0x78, // n 0x38, 0x44, 0x44, 0x44, 0x38, // o 0x7C, 0x14, 0x14, 0x14, 0x08, // p 0x08, 0x14, 0x14, 0x18, 0x7C, // q 0x7C, 0x08, 0x04, 0x04, 0x08, // r 0x48, 0x54, 0x54, 0x54, 0x20, // s 0x04, 0x3F, 0x44, 0x40, 0x20, // t 0x3C, 0x40, 0x40, 0x20, 0x7C, // u 0x1C, 0x20, 0x40, 0x20, 0x1C, // v 0x3C, 0x40, 0x30, 0x40, 0x3C, // w 0x44, 0x28, 0x10, 0x28, 0x44, // x 0x0C, 0x50, 0x50, 0x50, 0x3C, // y 0x44, 0x64, 0x54, 0x4C, 0x44 }; // z The Font was found here: http://homepage.ntlworld.com/c.lewis19/nokia.htm The Make file: CC=msp430-gcc CFLAGS= -Wall -g -mmcu=msp430x2012 OBJS=nokiatest.o all: $(OBJS) $(CC) $(CFLAGS) -o nokiatest.elf $(OBJS) %.o: %.c $(CC) $(CFLAGS) -c $< clean: rm -fr nokiatest.elf $(OBJS) (Change lcdfont.c to lcdfont.h) nokiatest.c lcdfont.c richardamullens, bluehash and Alan 3 Quote Link to post Share on other sites
bluehash 1,581 Posted December 31, 2011 Share Posted December 31, 2011 Pictures? :thumbup: Quote Link to post Share on other sites
turd 31 Posted December 31, 2011 Author Share Posted December 31, 2011 Updated Quote Link to post Share on other sites
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.