This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

uart +switch +lcd coding

#include<lpc21xx.h>
void SendMessage(char *Message);
void SendByteSerially(unsigned char a);
void initLCD(void);
void enable(void);
void LCD_WriteChar(unsigned char c);
void LCD_WriteString(unsigned char *z);
void LCD_Cmd(unsigned int cmd);
void delay(void);

#define CR 0x0D

void initLCD(void)
{ IODIR0 = 0xFF; //P0.0 to P0.7 configured as Output - Using 8 Bit mode IODIR0 |= (1<<16) | (1<<17); //P1.16 and P1.17 configured as Output - Control Pins // IOPIN0 = 0x0; //Reset Port0 to 0. // IOPIN1 = 0x0; //Reset Port1 to 0 - Which also makes RS and Enable LOW.

//LCD Initialization Sequence Now starts delay(); //Initial Delay LCD_Cmd(0x38); LCD_Cmd(0x04); LCD_Cmd(0x01); LCD_Cmd(0x0c);
LCD_Cmd(0x80);

// LCD_Cmd(0x3C); //Function Set Command : 8 Bit Mode , 2 Rows , 5x10 Font Style // LCD_Cmd(0x0F); //Display Switch Command : Display on , Cursor on , Blink on // LCD_Cmd(0x06); //Input Set : Increment Mode // LCD_Cmd(0x01); //Screen Clear Command , Cursor at Home // LCD_Cmd(0x80); //Not required the 1st time but needed to reposition the cursor at home after Clearing Screen //Done!
}

void enable(void)
{ delay();

// IOSET1=0x000e0000; IOPIN0 |= (1<<17);//Enable=High delay(); delay(); //IOCLR1=0x000e0000; IOPIN0 &= ~(1<<17);//Enable=Low delay();
}

void LCD_WriteChar(unsigned char c)
{ IOPIN0 = c& 0x000000FF; IOPIN0 |= (1<<16); //(char)Switch to Data Mode // c+=3; // (char)Supply Character Code enable(); //Pulse Enable to process it !='\0'
}

void LCD_WriteString(unsigned char *z) { // unsigned int i=0; while(*z!='\0') { // LCD_WriteChar(*z++);

}
/*do
{

z++; }while(1); */ }

void LCD_Cmd(unsigned char cmd)
{ IOPIN0 = cmd& 0x000000FF;
IOPIN0 &= ~(1<<17); IOPIN0 &= ~(1<<16); // IOPIN1 = 0x00000000; //Enter Instruction Mode //Supply Instruction/Command Code enable(); //Pulse Enable to process it
}

void delay(void)
{ int i=0,x=0; for(i=0; i<19999; i++){ x++; }
} ////////////// int putchar (int ch) { /* Write character to Serial Port */

if (ch == '\n') { while (!(U1LSR & 0x20)); U1THR = CR; /* output CR */ } while (!(U1LSR & 0x20)); return (U1THR = ch);
}

int getchar (void) { /* Read character from Serial Port */

while (!(U1LSR & 0x01));

return (U1RBR);
}

void srl()
{ PINSEL0 = 0x00050000; /* Enable RxD1 and TxD1 */ U1LCR = 0x83; /* 8 bits, no Parity, 1 Stop bit */ U1DLL = 97; /* 9600 Baud Rate @ 15MHz VPB Clock */ U1LCR = 0x03; }
/////////////

void main()
{ initLCD(); srl(); // 20 INPUT 24 OUT // init_uart1(); IODIR1 &= ~((1<<20)) ; // explicitly making P0.7 as Input - even though by default its already Input IODIR1 |= (1<<21); IODIR1 |= (1<<22);

/* DLAB = 0 */

while(1) { //LCD Now intialized and ready to Print! LCD_Cmd(0x80);LCD_WriteString("RFID BASED VEHICLE"); LCD_Cmd(0xC0); LCD_WriteString("ADHOC N/W");

if( !(IOPIN1 & (1<<20)) ) // Evaluates to True for a 'LOW' on P0.7 { IOSET1 |= (1<<21); // drive P0.30 High

IOCLR1 |= (1<<22); LCD_Cmd(0x01); LCD_Cmd(0x80);LCD_WriteString(" !ALERT!"); LCD_Cmd(0xC0); LCD_WriteString(" ALCOHOL DETECTED");

printf (" ALCOHOL DETECTED\n");

} else if( (IOPIN1 & (1<<20)) ) // Evaluates to True for a 'HIGH' on P0.7 { IOCLR1 |= (1<<21); // drive P0.30 High IOSET1 |= (1<<22); } while ((U1LSR & 0x01)) { if(U1RBR=='a') { LCD_Cmd(0xC0); LCD_WriteString(" 123456"); }}

}
}

0