SugarAddict 227 Posted October 16, 2012 Share Posted October 16, 2012 Played with the Stellaris LP last night for the first time, got the basics working. Very easy to work with, I'm shock and awed. /* * main.c */ #include "inc\hw_types.h" #include "inc\hw_memmap.h" #include "driverlib\pin_map.h" #include "inc\lm4f120h5qr.h" #include "driverlib\sysctl.h" #include "driverlib\ssi.h" #include "driverlib\gpio.h" void LCDSend(unsigned long ulData); void LCDInit(); void LCDGotoXY(short col, short row); int main(void) { SysCtlClockSet(SYSCTL_SYSDIV_4 | SYSCTL_USE_PLL | SYSCTL_XTAL_16MHZ | SYSCTL_OSC_MAIN); // Nuke on-board LEDs SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF); GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3); GPIOPinWrite(GPIO_PORTF_BASE, (GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3), 0x00); // PB0: Reset // PB1: Chip Select(L) // PB2: Data(H)/Command(L) SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB); // Before SSI GPIOPinTypeGPIOOutput(GPIO_PORTB_BASE, GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2); // Setup SSI SysCtlPeripheralEnable(SYSCTL_PERIPH_SSI2); GPIOPinConfigure(GPIO_PB4_SSI2CLK); GPIOPinConfigure(GPIO_PB5_SSI2FSS); GPIOPinConfigure(GPIO_PB6_SSI2RX); GPIOPinConfigure(GPIO_PB7_SSI2TX); GPIOPinTypeSSI(GPIO_PORTB_BASE, GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_6 | GPIO_PIN_7); SSIConfigSetExpClk(SSI2_BASE, SysCtlClockGet(), SSI_FRF_MOTO_MODE_0, SSI_MODE_MASTER, 20000000, 8); SSIEnable(SSI2_BASE); LCDInit(); LCDGotoXY(1,1); LCDSend(0x46); LCDSend(0x49); LCDSend(0x49); LCDSend(0x49); LCDSend(0x31); while(1) { SysCtlDelay(100); } } void LCDSend(unsigned long ulData) { GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_1, 0x00); // CS LOW SysCtlDelay(200); SSIDataPut(SSI2_BASE,ulData); while(SSIBusy(SSI2_BASE)) { //kill time } GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_1, 0x02); // CS HIGH SysCtlDelay(200); } void LCDInit() { // Initially only Reset High GPIOPinWrite(GPIO_PORTB_BASE, (GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2), 0x01); SysCtlDelay(200); // Set all High GPIOPinWrite(GPIO_PORTB_BASE, (GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2), 0x07); SysCtlDelay(200); // Reset Low GPIOPinWrite(GPIO_PORTB_BASE, (GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2), 0x06); SysCtlDelay(200); // Reset High GPIOPinWrite(GPIO_PORTB_BASE, (GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2), 0x07); SysCtlDelay(200); // Command Low GPIOPinWrite(GPIO_PORTB_BASE, (GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2), 0x03); SysCtlDelay(200); LCDSend(0xA6); //Display: Normal LCDSend(0xA3); //LCD Bias Settings: 1/7 (0xA2 for 1/9) LCDSend(0xA0); //ADC Selection: Reverse LCDSend(0xA1); //ADC Selection: Reverse //LCDSend(0xC8); //Common Output: Upside Down LCDSend(0xC0); //Common Output: Normal Direction LCDSend(0x22); //Set the V5 output Voltage LCDSend(0x81); //set Electronic Volume - brightness LCDSend(0x2E); //Power Controller Set: LCDSend(0x2F); //Power Controller Set: Voltage follower circuit: ON LCDSend(0xE3); //Non-OPeration Command LCDSend(0x40); //Set the start line LCDSend(0xAF); //LCD On LCDSend(0xA4); //Display All Points: NORMAL // Data High GPIOPinWrite(GPIO_PORTB_BASE, (GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2), 0x07); SysCtlDelay(200); } void LCDGotoXY(short col, short row) { GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_2, 0x00); // Command Low SysCtlDelay(200); LCDSend(0xB0+row); // page address col += 18; LCDSend(0x10+(col>>4)); // column address LCDSend(0x00+(col&0x0F)); GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_2, 0x04); // Data High SysCtlDelay(200); } bluehash 1 Quote Link to post Share on other sites
Rickta59 589 Posted October 16, 2012 Share Posted October 16, 2012 Quote Link to post Share on other sites
Rickta59 589 Posted October 16, 2012 Share Posted October 16, 2012 I thought the [ gist=3902327 ] feature would show the gist files. It seems to be broken Quote Link to post Share on other sites
SugarAddict 227 Posted October 17, 2012 Author Share Posted October 17, 2012 /* * main.c */ #include "inc\hw_types.h" #include "inc\hw_memmap.h" #include "driverlib\pin_map.h" #include "inc\lm4f120h5qr.h" #include "driverlib\sysctl.h" #include "driverlib\ssi.h" #include "driverlib\gpio.h" #include "7110LCD.h" int main(void) { SysCtlClockSet(SYSCTL_SYSDIV_4 | SYSCTL_USE_PLL | SYSCTL_XTAL_16MHZ | SYSCTL_OSC_MAIN); // Nuke on-board LEDs SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF); GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3); GPIOPinWrite(GPIO_PORTF_BASE, (GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3), 0x00); // PB0: Reset // PB1: Chip Select(L) // PB2: Data(H)/Command(L) SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB); // Before SSI GPIOPinTypeGPIOOutput(GPIO_PORTB_BASE, GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2); // Setup SSI SysCtlPeripheralEnable(SYSCTL_PERIPH_SSI2); GPIOPinConfigure(GPIO_PB4_SSI2CLK); GPIOPinConfigure(GPIO_PB5_SSI2FSS); GPIOPinConfigure(GPIO_PB6_SSI2RX); GPIOPinConfigure(GPIO_PB7_SSI2TX); GPIOPinTypeSSI(GPIO_PORTB_BASE, GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_6 | GPIO_PIN_7); SSIConfigSetExpClk(SSI2_BASE, SysCtlClockGet(), SSI_FRF_MOTO_MODE_0, SSI_MODE_MASTER, 1000000, 8); SSIEnable(SSI2_BASE); LCDInit(); LCDCLS(); LCDGotoXY(0,0); LCDSendChar('S'); LCDSendChar('t'); LCDSendChar('e'); LCDSendChar('l'); LCDSendChar('l'); LCDSendChar('a'); LCDSendChar(' '); LCDSendChar('L'); LCDSendChar('C'); LCDSendChar('D'); while(1) { SysCtlDelay(100); } } /* * 7110LCD.h * * Created on: Oct 16, 2012 * Author: SugarAddict */ #ifndef __7110LCD_H__ #define __7110LCD_H__ #define LCD_WIDTH 96 #define LCD_HEIGHT 64 void LCDSend(unsigned long ulData); void LCDInit(); void LCDGotoXY(short col, short row); void LCDClearRow(short row); void LCDCLS(); const unsigned char table [][5] = { {0x00, 0x00, 0x00, 0x00, 0x00}// (space) ,{0x00, 0x00, 0x5F, 0x00, 0x00}// ! ,{0x00, 0x07, 0x00, 0x07, 0x00}// " ,{0x14, 0x7F, 0x14, 0x7F, 0x14}// # ,{0x24, 0x2A, 0x7F, 0x2A, 0x12}// $ ,{0x23, 0x13, 0x08, 0x64, 0x62}// % ,{0x36, 0x49, 0x55, 0x22, 0x50}// & ,{0x00, 0x05, 0x03, 0x00, 0x00}// ' ,{0x00, 0x1C, 0x22, 0x41, 0x00}// ( ,{0x00, 0x41, 0x22, 0x1C, 0x00}// ) ,{0x08, 0x2A, 0x1C, 0x2A, 0x08}// * ,{0x08, 0x08, 0x3E, 0x08, 0x08}// + ,{0x00, 0x50, 0x30, 0x00, 0x00}// , ,{0x08, 0x08, 0x08, 0x08, 0x08}// - ,{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}// ; ,{0x00, 0x08, 0x14, 0x22, 0x41}// < ,{0x14, 0x14, 0x14, 0x14, 0x14}// = ,{0x41, 0x22, 0x14, 0x08, 0x00}// > ,{0x02, 0x01, 0x51, 0x09, 0x06}// ? ,{0x32, 0x49, 0x79, 0x41, 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, 0x01, 0x01}// F ,{0x3E, 0x41, 0x41, 0x51, 0x32}// 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, 0x04, 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 ,{0x7F, 0x20, 0x18, 0x20, 0x7F}// W ,{0x63, 0x14, 0x08, 0x14, 0x63}// X ,{0x03, 0x04, 0x78, 0x04, 0x03}// Y ,{0x61, 0x51, 0x49, 0x45, 0x43}// Z ,{0x00, 0x00, 0x7F, 0x41, 0x41}// [ ,{0x02, 0x04, 0x08, 0x10, 0x20}// "\" ,{0x41, 0x41, 0x7F, 0x00, 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 ,{0x08, 0x14, 0x54, 0x54, 0x3C}// g ,{0x7F, 0x08, 0x04, 0x04, 0x78}// h ,{0x00, 0x44, 0x7D, 0x40, 0x00}// i ,{0x20, 0x40, 0x44, 0x3D, 0x00}// j ,{0x00, 0x7F, 0x10, 0x28, 0x44}// 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 ,{0x00, 0x08, 0x36, 0x41, 0x00}// { ,{0x00, 0x00, 0x7F, 0x00, 0x00}// | ,{0x00, 0x41, 0x36, 0x08, 0x00}// } ,{0x08, 0x08, 0x2A, 0x1C, 0x08}// -> ,{0x08, 0x1C, 0x2A, 0x08, 0x08} // <- }; void LCDSend(unsigned long ulData) { GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_1, 0x00); // CS LOW SSIDataPut(SSI2_BASE,ulData); while(SSIBusy(SSI2_BASE)) { //kill time } GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_1, 0x02); // CS HIGH } void LCDInit() { // Initially only Reset High GPIOPinWrite(GPIO_PORTB_BASE, (GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2), 0x01); SysCtlDelay(100); // Set all High GPIOPinWrite(GPIO_PORTB_BASE, (GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2), 0x07); SysCtlDelay(100); // Reset Low GPIOPinWrite(GPIO_PORTB_BASE, (GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2), 0x06); SysCtlDelay(100); // Reset High GPIOPinWrite(GPIO_PORTB_BASE, (GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2), 0x07); SysCtlDelay(100); // Command Low GPIOPinWrite(GPIO_PORTB_BASE, (GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2), 0x03); SysCtlDelay(100); LCDSend(0xA6); //Display: Normal LCDSend(0xA3); //LCD Bias Settings: 1/7 (0xA2 for 1/9) LCDSend(0xA0); //ADC Selection: Reverse LCDSend(0xA1); //ADC Selection: Reverse //LCDSend(0xC8); //Common Output: Upside Down LCDSend(0xC0); //Common Output: Normal Direction LCDSend(0x22); //Set the V5 output Voltage LCDSend(0x81); //set Electronic Volume - brightness LCDSend(0x2E); //Power Controller Set: LCDSend(0x2F); //Power Controller Set: Voltage follower circuit: ON LCDSend(0xE3); //Non-OPeration Command LCDSend(0x40); //Set the start line LCDSend(0xAF); //LCD On LCDSend(0xA4); //Display All Points: NORMAL // Data High GPIOPinWrite(GPIO_PORTB_BASE, (GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2), 0x07); } void LCDGotoXY(short col, short row) { GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_2, 0x00); // Command Low LCDSend(0xB0+row); // page address col += 18; LCDSend(0x10+(col>>4)); // column address LCDSend(0x00+(col&0x0F)); GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_2, 0x04); // Data High } void LCDClearRow(short row) { short i = 0; LCDGotoXY(0, row); for(i=0;i<LCD_WIDTH;i++) LCDSend(0x00); } void LCDCLS() { short i = 0; for(i=0;i<=(LCD_HEIGHT/8);i++) LCDClearRow(i); } void LCDSendChar(char cChar) { LCDSend(table[cChar-32][0]); LCDSend(table[cChar-32][1]); LCDSend(table[cChar-32][2]); LCDSend(table[cChar-32][3]); LCDSend(table[cChar-32][4]); LCDSend(0x00); } #endif /* 7110LCD_H_ */ abecedarian 1 Quote Link to post Share on other sites
gmtii 11 Posted October 17, 2012 Share Posted October 17, 2012 5110 nokia lcd version: * * 5110LCD.h * * Created on: Oct 16, 2012 * Author: SugarAddict */ #ifndef __5110LCD_H__ #define __5110LCD_H__ #define LCD_WIDTH 84 #define LCD_HEIGHT 48 void LCDSend(unsigned long ulData); void LCDInit(); void LCDGotoXY(short col, short row); void LCDClearRow(short row); void LCDCLS(); const unsigned char table [][5] = { {0x00, 0x00, 0x00, 0x00, 0x00}// (space) ,{0x00, 0x00, 0x5F, 0x00, 0x00}// ! ,{0x00, 0x07, 0x00, 0x07, 0x00}// " ,{0x14, 0x7F, 0x14, 0x7F, 0x14}// # ,{0x24, 0x2A, 0x7F, 0x2A, 0x12}// $ ,{0x23, 0x13, 0x08, 0x64, 0x62}// % ,{0x36, 0x49, 0x55, 0x22, 0x50}// & ,{0x00, 0x05, 0x03, 0x00, 0x00}// ' ,{0x00, 0x1C, 0x22, 0x41, 0x00}// ( ,{0x00, 0x41, 0x22, 0x1C, 0x00}// ) ,{0x08, 0x2A, 0x1C, 0x2A, 0x08}// * ,{0x08, 0x08, 0x3E, 0x08, 0x08}// + ,{0x00, 0x50, 0x30, 0x00, 0x00}// , ,{0x08, 0x08, 0x08, 0x08, 0x08}// - ,{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}// ; ,{0x00, 0x08, 0x14, 0x22, 0x41}// < ,{0x14, 0x14, 0x14, 0x14, 0x14}// = ,{0x41, 0x22, 0x14, 0x08, 0x00}// > ,{0x02, 0x01, 0x51, 0x09, 0x06}// ? ,{0x32, 0x49, 0x79, 0x41, 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, 0x01, 0x01}// F ,{0x3E, 0x41, 0x41, 0x51, 0x32}// 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, 0x04, 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 ,{0x7F, 0x20, 0x18, 0x20, 0x7F}// W ,{0x63, 0x14, 0x08, 0x14, 0x63}// X ,{0x03, 0x04, 0x78, 0x04, 0x03}// Y ,{0x61, 0x51, 0x49, 0x45, 0x43}// Z ,{0x00, 0x00, 0x7F, 0x41, 0x41}// [ ,{0x02, 0x04, 0x08, 0x10, 0x20}// "\" ,{0x41, 0x41, 0x7F, 0x00, 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 ,{0x08, 0x14, 0x54, 0x54, 0x3C}// g ,{0x7F, 0x08, 0x04, 0x04, 0x78}// h ,{0x00, 0x44, 0x7D, 0x40, 0x00}// i ,{0x20, 0x40, 0x44, 0x3D, 0x00}// j ,{0x00, 0x7F, 0x10, 0x28, 0x44}// 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 ,{0x00, 0x08, 0x36, 0x41, 0x00}// { ,{0x00, 0x00, 0x7F, 0x00, 0x00}// | ,{0x00, 0x41, 0x36, 0x08, 0x00}// } ,{0x08, 0x08, 0x2A, 0x1C, 0x08}// -> ,{0x08, 0x1C, 0x2A, 0x08, 0x08} // <- }; void LCDSend(unsigned long ulData) { GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_1, 0x00); // CS LOW SSIDataPut(SSI2_BASE,ulData); while(SSIBusy(SSI2_BASE)) { //kill time } GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_1, 0x02); // CS HIGH } void LCDInit() { // Initially only Reset High GPIOPinWrite(GPIO_PORTB_BASE, (GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2), 0x01); SysCtlDelay(100); // Set all High GPIOPinWrite(GPIO_PORTB_BASE, (GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2), 0x07); SysCtlDelay(100); // Reset Low GPIOPinWrite(GPIO_PORTB_BASE, (GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2), 0x06); SysCtlDelay(100); // Reset High GPIOPinWrite(GPIO_PORTB_BASE, (GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2), 0x07); SysCtlDelay(100); // Command Low GPIOPinWrite(GPIO_PORTB_BASE, (GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2), 0x03); SysCtlDelay(100); LCDSend(0x21); // Function set - extended instructions enabled //LCDSend(0x21); // Set vop (contrast) 0 - 127 LCDSend(0xE6); // This is better for fast LCD update LCDSend(0x06); // Temperature control LCDSend(0x13); // Set bias system LCDSend(0x20); // Function set - chip active, horizontal addressing, basic instructions LCDSend(0x0C); // Display control - normal mode // Data High GPIOPinWrite(GPIO_PORTB_BASE, (GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2), 0x07); } void LCDGotoXY(short col, short row) { GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_2, 0x00); // Command Low LCDSend(0x80+col); //col += 18; //LCDSend(0x40+(col>>4)); // column address //LCDSend(0x00+(col&0x0F)); LCDSend(0x40+row); GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_2, 0x04); // Data High } void LCDClearRow(short row) { short i = 0; LCDGotoXY(0, row); for(i=0;i<LCD_WIDTH;i++) LCDSend(0x00); } void LCDCLS() { short i = 0; for(i=0;i<=(LCD_HEIGHT/8);i++) LCDClearRow(i); } void LCDSendChar(char cChar) { LCDSend(table[cChar-32][0]); LCDSend(table[cChar-32][1]); LCDSend(table[cChar-32][2]); LCDSend(table[cChar-32][3]); LCDSend(table[cChar-32][4]); LCDSend(0x00); } #endif /* 5110LCD_H_ */ bluehash and SugarAddict 2 Quote Link to post Share on other sites
bluehash 1,581 Posted October 17, 2012 Share Posted October 17, 2012 Thanks gmtii. Could you split this to a new topic, that way it has its own thread. Quote Link to post Share on other sites
reaper7 67 Posted November 17, 2012 Share Posted November 17, 2012 You can add to 5110LCD.h before void LCDSendChar... something like this to write string at X,Y void LCDSendText(short col, short row, char *string) { LCDGotoXY(col, row); while (*string) { LCDSendChar(*string); string++; } } bluehash 1 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.