void LCD_Move(unsigned char Row, unsigned char Col) { if (Row == 0) LCD_Inst(0x80 + Col); if (Row == 1) LCD_Inst(0xC0 + Col); if (Row == 2) LCD_Inst(0x94 + Col); if (Row == 3) LCD_Inst(0xD4 + Col); }
void LCD_Init (void) { int i; // Habilita GPIOA e GPIOC SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF); SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOC); SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB); // Programa como saída GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, GPIO_PIN_2 | GPIO_PIN_3); // Programa como saída GPIOPinTypeGPIOOutput(GPIO_PORTC_BASE, GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_6 | GPIO_PIN_7); // Programa como saída GPIOPinTypeGPIOOutput(GPIO_PORTB_BASE, GPIO_PIN_6); // EN=1 GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_3, 0x08); // RS=0 GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_2, 0x00); for(i=0;i<3;i++) { // Escreve 0x30 no Data (PC7-PC4) GPIOPinWrite(GPIO_PORTC_BASE , GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_6 | GPIO_PIN_7, 0x30); // Dá um pulso no EN LCD_EN_Pulse(); // Delay de ~5ms SysCtlDelay(83333); } // Escreve 0x20 no Data (PC7-PC4) GPIOPinWrite(GPIO_PORTC_BASE , GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_6 | GPIO_PIN_7, 0x20); // Dá um pulso no EN LCD_EN_Pulse(); // Delay de ~5ms SysCtlDelay(83333); // Envia as instruções 0x01, 0x06 e 0x0c (ver lcd1.pdf pág3) LCD_Inst(0x01); // Clear display LCD_Inst(0x06); // Increment, Display Shift Off LCD_Inst(0x0c); // Display On, Cursor Underline Off, Cursor Blink Off }
void LCD_WriteCol (char txt[20], int row, int col) { unsigned char address_d = 0; switch(row) { case 0: address_d = 0x80; break; case 1: address_d = 0xC0; break; case 2: address_d = 0x94; break; case 3: address_d = 0xD4; break; } address_d = address_d + col; // Envia o endereço inicial do LCD como instrução LCD_Inst(address_d); // Envia todos os caracteres da string de entrada while(*txt) LCD_Data(*txt++); }
void main(void) { //variables unsigned char i; //inputs and outputs TRISA = 0; TRISB = 0; TRISC = 0; TRISD = 0; TRISE = 0; ADCON1 = 0x0F; LCD_Init(); LCD_Move(0,0); for (i=0; i<20; i++) LCD_Write(MSG0[i]); Wait_ms(3000); LCD_Inst(1); // set up Timer0 for PS = 1 T0CS = 0; T0CON = 0x88; TMR0ON = 1; TMR0IE = 1; TMR0IP = 1; PEIE = 1; // set up Timer1 for 1ms TMR1CS = 0; T1CON = 0x81; TMR1ON = 1; TMR1IE = 1; TMR1IP = 1; PEIE = 1; // set up Timer3 for 1ms TMR3CS = 0; T3CON = 0x81; TMR3ON = 1; TMR3IE = 1; TMR3IP = 1; PEIE = 1; //Turn on all interrupts GIE = 1; while(1){ LCD_Move(1,0); LCD_Out(Timer0, 3); } }
void LCD_Init(void) { TRISD = 0x03; // 20x4 LCD Boards LCD_Inst(0x33); LCD_Inst(0x32); LCD_Inst(0x28); LCD_Inst(0x0E); LCD_Inst(0x01); LCD_Inst(0x06); }
void LCD_Clear (void) { LCD_Inst(0x01); }