This is the code i am sending it is having gsm.h, lcd.h, main.c, uart0.h, uart.h files.
#include<string.h>
#include"lcd.h"
#include"uart0.h"
#include"uart1.h"
#include"gsm.h"
unsigned char GSM_recive,newmsg=0;
extern unsigned char msg[50],mobilenum[11];
unsigned char store_m[11],vib=0,gpsdata,GPSvalue[50],Longitude[50];
void GPS_read (void);
#define motor 0x00020000 // p0.17 pin no=35 (in pin)
#define ir 0x00040000 // p0.18 pin no=45 (in pin)
#define sw 0x00080000 // p0.19 pin no=45 (in pin)
#define enrol 0x00100000 // p0.20 pin no=45 (in pin)
#define buzz 0x00800000
#define gsm 0x00000004
#define gps 0x00000008
#define Motor_ON IOSET0 |= motor
#define Motor_OFF IOCLR0 |= motor
#define buzz_ON IOCLR0 |=buzz
#define buzz_OFF IOSET0 |= buzz
#define gsm_on IOSET0 |= gsm
#define gsm_off IOCLR0 |= gsm
#define gps_on IOSET0 |= gps
#define gps_off IOCLR0 |= gps
unsigned char uart0_rx,t1,t2,t3,suc=0,ide=0,id1=0;
unsigned char baudrate[14]={0xef,0x01,0xff,0xff,0xff,0xff,0x01,0x00,0x05,0x0e,0x04,0x01,0x00,0x19};
unsigned char enroll[12]={0xEF,0X01,0XFF,0XFF,0XFF,0XFF,0X01,0X00,0X03,0X01,0X00,0X05};
unsigned char generate_ch[13]={0xEF,0X01,0XFF,0XFF,0XFF,0XFF,0X01,0X00,0X04,0x02,0X01,0X00,0X08};
unsigned char generate_ch1[13]={0xEF,0X01,0XFF,0XFF,0XFF,0XFF,0X01,0X00,0X04,0x02,0X02,0X00,0X09};
unsigned char un_cmd[12]={0xef,0x01,0xff,0xff,0xff,0xff, 0x01,0x00,0x03,0x05,0x00,0x09 };
unsigned char store[12]={0xEF,0X01,0XFF,0XFF,0XFF,0XFF,0X01,0X00,0X06,0X06,0X02,0x00};
unsigned char identify[17]={0xef,0x01,0xff,0xff,0xff,0xff,0x01,0x00,0x08,0x1b,0x01,0x00,0x00,0x01,0x01,0x00,0x27};
unsigned int fp_i=0,fp[20],fp_j=0;
unsigned int rec=0x00,dummy=0x0f,id;
void clearfp(void);
void enroll_finger(void);
void identify_finger(void);
void main_delay( unsigned int value )
{
unsigned int ui_temp1,ui_temp2;
for(ui_temp1=0;ui_temp1<value;ui_temp1++)
for(ui_temp2=0;ui_temp2<5000;ui_temp2++);
}
void UART0_irq (void) __irq
{
while (!(U0LSR & 0x01)); // Wait RXD Receive Data Ready
GSM_recive=U0RBR;
if(GSM_recive=='+')
{
newmsg=1;
VICIntEnable = 0x00000000; //interrupt Enable
U0IER=0; // Clear the interrupt;
VICVectAddr = 0x00000000; // interrupt address;
}
VICVectAddr = 0x00000000; //Dummy write to signal end of interrupt
}
void UART1ISR (void) __irq
{
while (!(U1LSR & 0x01));
fp[fp_j]=U1RBR;
fp_j++;
VICVectAddr = 0x00000000; //Dummy write to signal end of interrupt
}
void EXTINT0_ISR (void) __irq //external interrupt 0 EINT0 pin0 16
{
vib=1;
VICVectAddr = 0x00000000;
EXTINT =0x01;
}
void uart0_irq_init(void)
{
VICVectCntl1 = 0x00000026;
VICVectAddr1 = (unsigned long)UART0_irq;
VICIntEnable |= 0x00000040;
U0IER=0x01;
}
void uart1_irq_init(void)
{
VICVectCntl0 = 0x00000027;
VICVectAddr0 = (unsigned)UART1ISR;
VICIntEnable = 0x00000080;
U1IER=0x05;
}
void EXTINT0_init()
{
VICVectCntl2 = 0x0000002E;
VICVectAddr2 = (unsigned)EXTINT0_ISR;
VICIntEnable |=0x00004000;
PINSEL1 |= 0x00000001;
EXTINT |=0x01;
EXTMODE |=0x01;
EXTPOLAR |=0x00;
}
int main()
{
char vh_status=0,glass_b=0,vh_s=0;
IODIR0 |=gsm;
gsm_off;
IODIR0 |=gps;
gps_off;
IODIR0 |=motor;
Motor_OFF;
IODIR0 |=buzz;
buzz_OFF;
lcd_init();
uart0_init();
uart1_init();
lcd_cmd(0x01);
lcd_puts("vehicle security "); //Vehicle security
lcd_cmd(0xc0);
lcd_puts(" system");
main_delay(2000);
gsm_on;
gps_off;
gsm_check();
gsm_init();
gsm_clear_msg(1);
uart0_irq_init();
lcd_cmd(0x01);
lcd_puts("Store Ph.No");
while(newmsg==0);
{
newmsg=0;
lcd_cmd(0x01);
lcd_puts("msg.........");
main_delay(2000);
U0IER=0x00;
gsm_mes_read();
lcd_cmd(0x01);
lcd_puts(mobilenum);
gsm_delay(2000);
store_m[0]=mobilenum[0];
store_m[1]=mobilenum[1];
store_m[2]=mobilenum[2];
store_m[3]=mobilenum[3];
store_m[4]=mobilenum[4];
store_m[5]=mobilenum[5];
store_m[6]=mobilenum[6];
store_m[7]=mobilenum[7];
store_m[8]=mobilenum[8];
store_m[9]=mobilenum[9];
store_m[10]=mobilenum[10];
U0IER=0x01;
main_delay(2000);
}
EXTINT0_init();
uart1_irq_init();
start:
lcd_cmd(0x01);
lcd_puts("vehicle security "); //Vehicle security
lcd_cmd(0xc0);
lcd_puts(" system");
main_delay(5000);
lcd_cmd(0x01);
lcd_puts(" PUT UR FINGER");
while(1)
{
if(newmsg==1)
{
char i;
newmsg=0;
gsm_mes_read();
main_delay(1000);
lcd_cmd(0x01);
lcd_puts("vehicle security "); //Vehicle security
lcd_cmd(0xc0);
lcd_puts(" system");
if(!strcmp(msg,"STOP"))
{
if(!strcmp(mobilenum,store_m))
{
buzz_ON ;
vh_status=1;
for(i=0;i<5;i++)
{
lcd_cmd(0x01);
lcd_puts("vh going to be ");
lcd_cmd(0xc0);
lcd_puts("stop....");
main_delay(500);
}
Motor_OFF;
U0IER=0x00;
gsm_send_num_mesg_data(mobilenum,Longitude,"vh stoped");
main_delay(1500);
U0IER=0x01;
lcd_cmd(0x01);
lcd_puts("Door locked");
lcd_cmd(0xc0);
lcd_puts("vh ctrl by user");
}
else
{
lcd_cmd(0x01);
lcd_puts("Unauthorized ");
lcd_cmd(0xc0);
lcd_puts(" Access");
main_delay(500);
goto start;
}
}
if(!strcmp(msg,"LOCATION"))
{
if(!strcmp(mobilenum,store_m))
{
U0IER=0x00;
gsm_send_num_mesg(mobilenum,Longitude);
gsm_delay(2000);
U0IER=0x01;
lcd_cmd(0x01);
lcd_puts("vehicle security "); //Vehicle security
lcd_cmd(0xc0);
lcd_puts(" system");
main_delay(1000);
if(vh_status==1)
{
lcd_cmd(0x01);
lcd_puts("Door locked");
lcd_cmd(0xc0);
lcd_puts("vh ctrl by user");
}
}
else
{
lcd_cmd(0x01);
lcd_puts("Unauthorized P");
lcd_cmd(0xc0);
lcd_puts(" Try to Access");
main_delay(1500);
goto start;
}
}
if(!strcmp(msg,"START"))
{
if(!strcmp(mobilenum,store_m))
{
vh_status=0;
U0IER=0x00;
gsm_send_num_mesg_data(mobilenum,Longitude,"vh start");
gsm_delay(2000);
U0IER=0x01;
lcd_cmd(0x01);
lcd_puts("vh start by user");
goto start;
}
else
{
lcd_cmd(0x01);
lcd_puts("Unauthorized ");
lcd_cmd(0xc0);
lcd_puts(" Access");
main_delay(1500);
goto start;
}
}
}
if((IOPIN0&ir)!=0 && vh_status==0 && vh_s==0)
{
//U0IER=0x00;
//enroll_finger();
// U0IER=0x01;
U0IER=0x00;
identify_finger();
U0IER=0x01;
if( ide==1)
{
ide=0;
vh_s=1;
Motor_ON ;
U0IER=0x00;
gsm_off;
gps_on;
GPS_read();
uart0_init();
gps_off;
gsm_on;
gsm_send_num_mesg_data(store_m,Longitude,"authorized access");
U0IER=0x01;
}
else
{
U0IER=0x00;
gsm_off;
gps_on;
GPS_read();
uart0_init();
gps_off;
gsm_on;
gsm_send_num_mesg_data(store_m,Longitude,"unauthorized access");
U0IER=0x01;
}
lcd_cmd(0x01);
lcd_puts("vehicle security "); //Vehicle security
lcd_cmd(0xc0);
lcd_puts(" system");
}
if((IOPIN0&sw)==0&&vh_s==1)
{
vh_s=0;
while(!(sw&IOPIN0));
Motor_OFF ;
goto start;
}
if((IOPIN0&enrol)==0 && vh_s==1)
{
while(!(enrol&IOPIN0));
U0IER=0x00;
enroll_finger();
U0IER=0x01;
lcd_cmd(0x01);
lcd_puts("vehicle security "); //Vehicle security
lcd_cmd(0xc0);
lcd_puts(" system");
}
if(vib==1)
{
vib=0;
vh_s=0;
Motor_OFF ;
lcd_cmd(0x01);
lcd_puts("Accident ");
lcd_cmd(0xc0);
lcd_puts(" occurred");
main_delay(1000);
U0IER=0x00;
gsm_off;
gps_on;
GPS_read();
uart0_init();
gps_off;
gsm_on;
gsm_send_num_mesg_data(store_m,Longitude,"Accident occurred");
U0IER=0x01;
EXTINT0_init();
goto start;
}
/*if(vh_status==1)
{
lcd_cmd(0x80);
lcd_puts(" ");
lcd_cmd(0xc0);
lcd_puts(" ");
lcd_cmd(0x80);
lcd_puts("Door locked");
lcd_cmd(0xc0);
lcd_puts("vh cont by user");
main_delay(800);
}
if(glass==1 && glass_b==0)
{
glass_b=1;
buzz_ON;
glass=0;
lcd_cmd(0x01);
lcd_puts(" Glass Broken ");
main_delay(1500);
U0IER=0x00;
gsm_send_num_mesg_data(store,Longitude,"Glass Broken");
main_delay(1500);
lcd_cmd(0x01);
U0IER=0x01;
goto start;
}*/
}
}
void GPS_read (void)
{
unsigned char gps_i,gps_k;
com_baudrate0(4800);
while(1)
{
gpsdata =uart0_getch();
if(gpsdata=='$')
{
gpsdata= uart0_getch();
gpsdata= uart0_getch();
if(uart0_getch()=='R')
{
if(uart0_getch()=='M')
{
if(uart0_getch()=='C')
{
gps_i=0;
while(gps_i<45)
{
GPSvalue[gps_i]=uart0_getch();
gps_i++;
}
GPSvalue[gps_i]='\0';
gps_i=0;gps_k=0;
main_delay(100);
lcd_cmd(0x80);
lcd_puts(" ");
lcd_cmd(0xc0);
lcd_puts(" ");
lcd_cmd(0x80);
lcd_puts("LT: ");
Longitude[gps_k]='L';
gps_k++;
Longitude[gps_k]='T';gps_k++;
Longitude[gps_k]=':';gps_k++;
for(gps_i=14;gps_i<25;gps_i++)
{
lcd_data(GPSvalue[gps_i]);
Longitude[gps_k]= GPSvalue[gps_i];
gps_k++;
//main_delay(100);
}
Longitude[gps_k]=' ';gps_k++;
Longitude[gps_k]=' ';gps_k++;
Longitude[gps_k]='L';gps_k++;
Longitude[gps_k]='G';gps_k++;
Longitude[gps_k]=':';gps_k++;
lcd_cmd(0xc0);
lcd_puts("LG: ");
for(gps_i=27;gps_i<38;gps_i++)
{
lcd_data(GPSvalue[gps_i]);
Longitude[gps_k]=GPSvalue[gps_i];
gps_k++;
//main_delay(100);
}
Longitude[gps_k]='\0';
gps_i=0;
gps_k=0;
main_delay(1000);
break;
}
}
}
}
}
}
void clearfp(void)
{
unsigned char cl=0;
while(cl<20)
{
fp[cl]=' ';
cl++;
}
fp_j=0;
}
void enroll_finger(void)
{
lcd_cmd(0x01);
lcd_puts("Enrolling.....");
main_delay(1000);
fp_i=0;
clearfp();
while(fp_i<14)
{
uart1_putch( baudrate[fp_i]);
fp_i++;
}
fp_j=0;
fp[11]=0x00;
while(fp_j==0);
main_delay(500);
if(fp[11]==0x0a)
{
//lcd_cmd(0x01);
//lcd_puts("BAUDRATE SUCCESS");
//main_delay(800);
}
else
{
lcd_cmd(0x01);
lcd_puts("BAUDRATE FAILED");
main_delay(800);
goto end;
}
fp_i=0;
clearfp();
while(fp_i<12)
{
uart1_putch(enroll[fp_i]);
fp_i++;
}
fp_j=0;
fp[9]=0x01;
while(fp_j==0);
main_delay(500);
if(fp[9]==0x00)
{
}
else
{
lcd_cmd(0x01);
lcd_puts("ENROLL FAILED");
main_delay(3000);
goto end;
}
clearfp();
fp_j=0;
fp_i=0;
while(fp_i<13)
{
uart1_putch(generate_ch[fp_i]);
fp_i++;
}
fp_j=0;
fp[9]=0x01;
while(fp_j==0);
main_delay(500);
if(fp[9]==0x00)
{
}
else
{
lcd_cmd(0x01);
lcd_puts("ENROLL FAILED");
main_delay(3000);
goto end;
}
fp_i=0;
clearfp();
while(fp_i<12)
{
uart1_putch(enroll[fp_i]);
fp_i++;
}
fp_j=0;
fp[9]=0x01;
while(fp_j==0);
main_delay(500);
if(fp[9]==0x00)
{
}
else
{
lcd_cmd(0x01);
lcd_puts("ENROLL FAILED");
main_delay(3000);
goto end;
}
clearfp();
fp_j=0;
fp_i=0;
while(fp_i<13)
{
uart1_putch(generate_ch1[fp_i]);
fp_i++;
}
fp_j=0;
fp[9]=0x01;
while(fp_j==0);
main_delay(500);
if(fp[9]==0x00)
{
}
else
{
lcd_cmd(0x01);
lcd_puts("ENROLL FAILED");
main_delay(3000);
goto end;
}
clearfp();
fp_j=0;
fp_i=0;
while(fp_i<12)
{
uart1_putch(un_cmd[fp_i]);
fp_i++;
}
fp_j=0;
fp[9]=0x01;
while(fp_j==0);
main_delay(500);
if(fp[9]==0x00)
{
}
else
{
lcd_cmd(0x01);
lcd_puts("ENROLL FAILED");
main_delay(3000);
goto end;
}
clearfp();
fp_j=0;
fp_i=0;
while(fp_i<12)
{
uart1_putch(store[fp_i]);
fp_i++;
}
uart1_putch(rec);
uart1_putch(0x00);
uart1_putch(dummy);
fp_j=0;
fp[9]=0x01;
while(fp_j==0);
main_delay(500);
if(fp[9]==0x00)
{
suc=1;
lcd_cmd(0x01);
lcd_puts(" successfully ");
lcd_cmd(0xc0);
lcd_puts(" Enrolled");
main_delay(3000);
lcd_cmd(0x01);
lcd_puts(" ur id : ");
lcd_data(rec/10+48);
lcd_data(rec%10+48);
id1++;
rec++;
dummy++;
main_delay(3000);
goto end;
}
else
{
lcd_cmd(0x01);
lcd_puts("ENROLL FAILED");
main_delay(3000);
goto end;
}
end:
main_delay(1);
}
void identify_finger(void)
{
lcd_cmd(0x01);
lcd_puts("IDENTIFYING...");
main_delay(1000);
fp_i=0;
clearfp();
while(fp_i<14)
{
uart1_putch( baudrate[fp_i]);
fp_i++;
}
fp_j=0;
fp[11]=0x00;
while(fp_j==0);
main_delay(1500);
if(fp[11]==0x0a)
{
//lcd_cmd(0x01);
//lcd_puts("BAUDRATE SUCCESS");
//main_delay(800);
}
else
{
lcd_cmd(0x01);
lcd_puts("BAUDRATE FAILED");
main_delay(800);
goto end;
}
fp_i=0;
clearfp();
while(fp_i<12)
{
uart1_putch(enroll[fp_i]);
fp_i++;
}
fp_j=0;
fp[9]=0x01;
while(fp_j==0);
main_delay(500);
if(fp[9]==0x00)
{
}
else
{
lcd_cmd(0x01);
lcd_puts("IDENTIFY FAILED");
main_delay(3000);
goto end;
}
clearfp();
fp_j=0;
fp_i=0;
while(fp_i<13)
{
uart1_putch(generate_ch[fp_i]);
fp_i++;
}
fp_j=0;
fp[9]=0x01;
while(fp_j==0);
main_delay(500);
if(fp[9]==0x00)
{
}
else
{
lcd_cmd(0x01);
lcd_puts("IDENTIFY FAILED");
//lcd_puts1(0,4,"IDENTIFY FAILED..");
main_delay(3000);
goto end;
}
clearfp();
fp_i=0;
fp_j=0;
while(fp_i<17)
{
uart1_putch(identify[fp_i]);
fp_i++;
}
fp_j=0;
while(fp_j==0);
main_delay(500);
if(fp[9]==0x00)
{
ide=1;
lcd_cmd(0x01);
lcd_puts(" successfully ");
lcd_cmd(0xc0);
lcd_puts("identified ");
//lcd_puts1(0,4," successfully ");
//lcd_puts1(0,5,"identified ");
id=fp[11];
//lcd_puts1(0,5," ur id : ");
//lcd_data2(fp[11]/10+48);
//lcd_data2(fp[11]%10+48);
lcd_data(fp[11]/10+48);
lcd_data(fp[11]%10+48);
main_delay(3000);
}
else
{
lcd_cmd(0x01);
lcd_puts("IDENTIFY FAILED");
//lcd_puts1(0,4,"IDENTIFY FAILED..");
main_delay(3000);
goto end;
}
end:
main_delay(1);
}
// file name :lcd.h
//*****************************************************************************
#ifndef _LPC214X_H_
#define _LPC214X_H_
// Define LCD PinIO Mask
#define LCD_RS 0x00010000 // P1.16(0000 0000 0000 000x 0000 0000 0000 0000)
#define LCD_EN 0x00020000 // P1.17(0000 0000 0000 00x0 0000 0000 0000 0000)
#define LCD_D4 0x00040000 // P1.18(0000 0000 0000 0x00 0000 0000 0000 0000)
#define LCD_D5 0x00080000 // P1.19(0000 0000 0000 x000 0000 0000 0000 0000)
#define LCD_D6 0x00100000 // P1.20(0000 0000 000x 0000 0000 0000 0000 0000)
#define LCD_D7 0x00200000 // P1.21(0000 0000 00x0 0000 0000 0000 0000 0000)
lcd_cmd(unsigned char val)
{
unsigned int lcd_ch;
unsigned int lcd_i; // LCD Initial Delay Count
IOCLR1 = LCD_RS ; // RS = 0
lcd_ch=((val>>4)&0x0F); // Strobe 4-Bit High-Nibble to LCD
IOCLR1 = (LCD_D7|LCD_D6|LCD_D5|LCD_D4); // Reset 4-Bit Pin Data
IOSET1 = (lcd_ch<<18); // EN,0,RW,RS:DDDD:0000:0000:0000:0000:0000:0000
IOSET1 = LCD_EN ; // EN = 1 (Enable)
for (lcd_i=0;lcd_i<10000;lcd_i++);
IOCLR1 = LCD_EN ; // EN = 0 (Disable)
lcd_ch=(val&0x0F); // Strobe 4-Bit Low-Nibble to LCD
IOCLR1 = (LCD_D7|LCD_D6|LCD_D5|LCD_D4); // Reset 4-Bit Pin Data
IOSET1 = (lcd_ch<<18); // EN,0,RW,RS:DDDD:0000:0000:0000:0000:0000:0000
IOSET1 = LCD_EN ; // EN = 1 (Enable)
for (lcd_i=0;lcd_i<10000;lcd_i++);
IOCLR1 = LCD_EN ; // EN = 0 (Disable)
for (lcd_i=0;lcd_i<10000;lcd_i++);
}
lcd_data(unsigned char val)
{
unsigned int lcd_ch;
unsigned int lcd_i; // LCD Initial Delay Count
IOSET1 = LCD_RS ; // RS = 1
lcd_ch=((val>>4)&0x0F); // Strobe 4-Bit High-Nibble to LCD
IOCLR1 = (LCD_D7|LCD_D6|LCD_D5|LCD_D4); // Reset 4-Bit Pin Data
IOSET1 = (lcd_ch<<18); // EN,0,RW,RS:DDDD:0000:0000:0000:0000:0000:0000
IOSET1 = LCD_EN ; // EN = 1 (Enable)
for (lcd_i=0;lcd_i<10000;lcd_i++);
IOCLR1 = LCD_EN ; // EN = 0 (Disable)
lcd_ch=(val&0x0F); // Strobe 4-Bit Low-Nibble to LCD
IOCLR1 = (LCD_D7|LCD_D6|LCD_D5|LCD_D4); // Reset 4-Bit Pin Data
IOSET1 = (lcd_ch<<18); // EN,0,RW,RS:DDDD:0000:0000:0000:0000:0000:0000
IOSET1 = LCD_EN ; // EN = 1 (Enable)
for (lcd_i=0;lcd_i<10000;lcd_i++);
IOCLR1 = LCD_EN ; // EN = 0 (Disable)
for (lcd_i=0;lcd_i<10000;lcd_i++);
}
void lcd_puts(unsigned char* str)
{
while(*str)
lcd_data(*str++);
}
void lcd_int(unsigned int lcd_value)
{
unsigned int lcd_arr[10],lcd_val;
for(lcd_val=1;lcd_val<5;lcd_val++)
{
lcd_arr[lcd_val] = lcd_value%10;
lcd_value = lcd_value/10;
}
for(lcd_val=4; lcd_val!=0 ; lcd_val--) //sending data to LCD
{
lcd_data(lcd_arr[lcd_val]+48);
}
}
lcd_init()
{
unsigned int lcd_main_i; // LCD Initial Delay Count
PINSEL2 |= 0x00000000; // GPIO1[31..26] = I/O Function
IODIR1 |= 0x003F0000 ; // LCD Data Bus = Write // LCD Data Bus = Write
for (lcd_main_i=0;lcd_main_i<10000;lcd_main_i++); // Power-On Delay (15 mS)
IOCLR1 = ((LCD_D7|LCD_D6|LCD_D5|LCD_D4|LCD_RS|LCD_EN)); // Reset (RS,RW,EN,4-Bit Data) Pin
IOSET1 = (LCD_D5|LCD_D4); // DDDD:EN,RW,RS,0:0000:0000:0000:0000:0000:0000
IOSET1 = LCD_EN ; // EN = 1 (Enable)
for (lcd_main_i=0;lcd_main_i<10000;lcd_main_i++);
IOCLR1 = LCD_EN ; // EN = 0 (Disable)
for (lcd_main_i=0;lcd_main_i<10000;lcd_main_i++); // Delay 4.1mS
IOCLR1 = ((LCD_D7|LCD_D6|LCD_D5|LCD_D4|LCD_RS|LCD_EN)); // Reset (RS,RW,EN,4-Bit Data) Pin
IOSET1 = (LCD_D5|LCD_D4); // DDDD:EN,RW,RS,0:0000:0000:0000:0000:0000:0000
IOSET1 = LCD_EN ; // EN = 1 (Enable)
for (lcd_main_i=0;lcd_main_i<10000;lcd_main_i++);
IOCLR1 = LCD_EN ; // EN = 0 (Disable)
for (lcd_main_i=0;lcd_main_i<10000;lcd_main_i++); // delay 100uS
IOCLR1 = ((LCD_D7|LCD_D6|LCD_D5|LCD_D4|LCD_RS|LCD_EN)); // Reset (RS,RW,EN,4-Bit Data) Pin
IOSET1 = (LCD_D5|LCD_D4); // DDDD:EN,RW,RS,0:0000:0000:0000:0000:0000:0000
IOSET1 = LCD_EN ; // EN = 1 (Enable)
for (lcd_main_i=0;lcd_main_i<10000;lcd_main_i++);
IOCLR1 = LCD_EN ; // EN = 0 (Disable)
for (lcd_main_i=0;lcd_main_i<10000;lcd_main_i++);
IOCLR1 = ((LCD_D7|LCD_D6|LCD_D5|LCD_D4|LCD_RS|LCD_EN)); // Reset (RS,RW,EN,4-Bit Data) Pin
IOSET1 = (LCD_D5); // DDDD:EN,RW,RS,0:0000:0000:0000:0000:0000:0000
IOSET1 = LCD_EN ; // EN = 1 (Enable)
for (lcd_main_i=0;lcd_main_i<10000;lcd_main_i++);
IOCLR1 = LCD_EN ; // EN = 0 (Disable)
for (lcd_main_i=0;lcd_main_i<10000;lcd_main_i++);
lcd_cmd(0x28);
lcd_cmd(0x0c);
lcd_cmd(0x06);
lcd_cmd(0x01);
for (lcd_main_i=0;lcd_main_i<10000;lcd_main_i++); // Wait Command Ready
}
void lcd_float(float value)
{
unsigned char xxx[5],z=0;
int intval;
intval=(int)value;
value=value-intval;
while(intval!=0)
{
xxx[z]=intval%10;
intval=intval/10;
z++;
}
while(z!=0)
{
z--;
lcd_data(xxx[z]+48);
}
lcd_puts(".");
intval=value*10;
lcd_data(intval+48);
/* while(intval!=0)
{
xx[z]=intval%10;
intval=intval/10;
z++;
}
while(z!=0)
{
z--;
lcd_data(xx[z]+48);
} */
}
#endif
{
PINSEL0 |=0x00000005;
U0LCR =0X80;
U0DLL =97;
U0LCR =0X03;
}
void com_baudrate0 (unsigned int baudrate)
{
unsigned long DLreload;
PINSEL0 |=0x00000005;
DLreload = (15000000UL / baudrate) / 16UL;
U0LCR = 0x80; /* Set DLAB */
U0DLL = DLreload;
U0DLM = (DLreload >> 8);
U0LCR = 0x03; /* Clear DLAB */
}
void uart0_putch(unsigned char val)
{
while(!(U0LSR & 0x20));
U0THR =val;
}
unsigned char uart0_getch()
{
while(!(U0LSR & 0x01));
return(U0RBR);
}
void uart0_puts( char *stringptr)
{
while (*stringptr)
uart0_putch(*stringptr++);
}
void uart0_int(unsigned long value)
{
unsigned char arr[10];
unsigned char val=0;
if(value==0)
uart0_putch(0+48);
while(value!=0)
{
arr[val] = value%10;
value = value/10;
val++;
}
while(val!=0)
{
val--;
uart0_putch(arr[val]+48);
}
}
- main.c
#include<lpc214x.h>
#include<string.h>
#include"lcd.h"
#include"uart0.h"
#include"uart1.h"
#include"gsm.h"
unsigned char GSM_recive,newmsg=0;
extern unsigned char msg[50],mobilenum[11];
unsigned char store_m[11],vib=0,gpsdata,GPSvalue[50],Longitude[50];
void GPS_read (void);
#define motor 0x00020000 // p0.17 pin no=35 (in pin)
#define ir 0x00040000 // p0.18 pin no=45 (in pin)
#define sw 0x00080000 // p0.19 pin no=45 (in pin)
#define enrol 0x00100000 // p0.20 pin no=45 (in pin)
#define buzz 0x00800000
#define gsm 0x00000004
#define gps 0x00000008
#define Motor_ON IOSET0 |= motor
#define Motor_OFF IOCLR0 |= motor
#define buzz_ON IOCLR0 |=buzz
#define buzz_OFF IOSET0 |= buzz
#define gsm_on IOSET0 |= gsm
#define gsm_off IOCLR0 |= gsm
#define gps_on IOSET0 |= gps
#define gps_off IOCLR0 |= gps
unsigned char uart0_rx,t1,t2,t3,suc=0,ide=0,id1=0;
unsigned char baudrate[14]={0xef,0x01,0xff,0xff,0xff,0xff,0x01,0x00,0x05,0x0e,0x04,0x01,0x00,0x19};
unsigned char enroll[12]={0xEF,0X01,0XFF,0XFF,0XFF,0XFF,0X01,0X00,0X03,0X01,0X00,0X05};
unsigned char generate_ch[13]={0xEF,0X01,0XFF,0XFF,0XFF,0XFF,0X01,0X00,0X04,0x02,0X01,0X00,0X08};
unsigned char generate_ch1[13]={0xEF,0X01,0XFF,0XFF,0XFF,0XFF,0X01,0X00,0X04,0x02,0X02,0X00,0X09};
unsigned char un_cmd[12]={0xef,0x01,0xff,0xff,0xff,0xff, 0x01,0x00,0x03,0x05,0x00,0x09 };
unsigned char store[12]={0xEF,0X01,0XFF,0XFF,0XFF,0XFF,0X01,0X00,0X06,0X06,0X02,0x00};
unsigned char identify[17]={0xef,0x01,0xff,0xff,0xff,0xff,0x01,0x00,0x08,0x1b,0x01,0x00,0x00,0x01,0x01,0x00,0x27};
unsigned int fp_i=0,fp[20],fp_j=0;
unsigned int rec=0x00,dummy=0x0f,id;
void clearfp(void);
void enroll_finger(void);
void identify_finger(void);
void main_delay( unsigned int value )
{
unsigned int ui_temp1,ui_temp2;
for(ui_temp1=0;ui_temp1<value;ui_temp1++)
for(ui_temp2=0;ui_temp2<5000;ui_temp2++);
}
void UART0_irq (void) __irq
{
while (!(U0LSR & 0x01)); // Wait RXD Receive Data Ready
GSM_recive=U0RBR;
if(GSM_recive=='+')
{
newmsg=1;
VICIntEnable = 0x00000000; //interrupt Enable
U0IER=0; // Clear the interrupt;
VICVectAddr = 0x00000000; // interrupt address;
}
VICVectAddr = 0x00000000; //Dummy write to signal end of interrupt
}
void UART1ISR (void) __irq
{
while (!(U1LSR & 0x01));
fp[fp_j]=U1RBR;
fp_j++;
VICVectAddr = 0x00000000; //Dummy write to signal end of interrupt
}
void EXTINT0_ISR (void) __irq //external interrupt 0 EINT0 pin0 16
{
vib=1;
VICVectAddr = 0x00000000;
EXTINT =0x01;
}
void uart0_irq_init(void)
{
VICVectCntl1 = 0x00000026;
VICVectAddr1 = (unsigned long)UART0_irq;
VICIntEnable |= 0x00000040;
U0IER=0x01;
}
void uart1_irq_init(void)
{
VICVectCntl0 = 0x00000027;
VICVectAddr0 = (unsigned)UART1ISR;
VICIntEnable = 0x00000080;
U1IER=0x05;
}
void EXTINT0_init()
{
VICVectCntl2 = 0x0000002E;
VICVectAddr2 = (unsigned)EXTINT0_ISR;
VICIntEnable |=0x00004000;
PINSEL1 |= 0x00000001;
EXTINT |=0x01;
EXTMODE |=0x01;
EXTPOLAR |=0x00;
}
int main()
{
char vh_status=0,glass_b=0,vh_s=0;
IODIR0 |=gsm;
gsm_off;
IODIR0 |=gps;
gps_off;
IODIR0 |=motor;
Motor_OFF;
IODIR0 |=buzz;
buzz_OFF;
lcd_init();
uart0_init();
uart1_init();
lcd_cmd(0x01);
lcd_puts("vehicle security "); //Vehicle security
lcd_cmd(0xc0);
lcd_puts(" system");
main_delay(2000);
gsm_on;
gps_off;
gsm_check();
gsm_init();
gsm_clear_msg(1);
uart0_irq_init();
lcd_cmd(0x01);
lcd_puts("Store Ph.No");
while(newmsg==0);
{
newmsg=0;
lcd_cmd(0x01);
lcd_puts("msg.........");
main_delay(2000);
U0IER=0x00;
gsm_mes_read();
lcd_cmd(0x01);
lcd_puts(mobilenum);
gsm_delay(2000);
store_m[0]=mobilenum[0];
store_m[1]=mobilenum[1];
store_m[2]=mobilenum[2];
store_m[3]=mobilenum[3];
store_m[4]=mobilenum[4];
store_m[5]=mobilenum[5];
store_m[6]=mobilenum[6];
store_m[7]=mobilenum[7];
store_m[8]=mobilenum[8];
store_m[9]=mobilenum[9];
store_m[10]=mobilenum[10];
U0IER=0x01;
main_delay(2000);
}
EXTINT0_init();
uart1_irq_init();
start:
lcd_cmd(0x01);
lcd_puts("vehicle security "); //Vehicle security
lcd_cmd(0xc0);
lcd_puts(" system");
main_delay(5000);
lcd_cmd(0x01);
lcd_puts(" PUT UR FINGER");
while(1)
{
if(newmsg==1)
{
char i;
newmsg=0;
gsm_mes_read();
main_delay(1000);
lcd_cmd(0x01);
lcd_puts("vehicle security "); //Vehicle security
lcd_cmd(0xc0);
lcd_puts(" system");
if(!strcmp(msg,"STOP"))
{
if(!strcmp(mobilenum,store_m))
{
buzz_ON ;
vh_status=1;
for(i=0;i<5;i++)
{
lcd_cmd(0x01);
lcd_puts("vh going to be ");
lcd_cmd(0xc0);
lcd_puts("stop....");
main_delay(500);
}
Motor_OFF;
U0IER=0x00;
gsm_send_num_mesg_data(mobilenum,Longitude,"vh stoped");
main_delay(1500);
U0IER=0x01;
lcd_cmd(0x01);
lcd_puts("Door locked");
lcd_cmd(0xc0);
lcd_puts("vh ctrl by user");
}
else
{
lcd_cmd(0x01);
lcd_puts("Unauthorized ");
lcd_cmd(0xc0);
lcd_puts(" Access");
main_delay(500);
goto start;
}
}
if(!strcmp(msg,"LOCATION"))
{
if(!strcmp(mobilenum,store_m))
{
U0IER=0x00;
gsm_send_num_mesg(mobilenum,Longitude);
gsm_delay(2000);
U0IER=0x01;
lcd_cmd(0x01);
lcd_puts("vehicle security "); //Vehicle security
lcd_cmd(0xc0);
lcd_puts(" system");
main_delay(1000);
if(vh_status==1)
{
lcd_cmd(0x01);
lcd_puts("Door locked");
lcd_cmd(0xc0);
lcd_puts("vh ctrl by user");
}
}
else
{
lcd_cmd(0x01);
lcd_puts("Unauthorized P");
lcd_cmd(0xc0);
lcd_puts(" Try to Access");
main_delay(1500);
goto start;
}
}
if(!strcmp(msg,"START"))
{
if(!strcmp(mobilenum,store_m))
{
vh_status=0;
U0IER=0x00;
gsm_send_num_mesg_data(mobilenum,Longitude,"vh start");
gsm_delay(2000);
U0IER=0x01;
lcd_cmd(0x01);
lcd_puts("vh start by user");
goto start;
}
else
{
lcd_cmd(0x01);
lcd_puts("Unauthorized ");
lcd_cmd(0xc0);
lcd_puts(" Access");
main_delay(1500);
goto start;
}
}
}
if((IOPIN0&ir)!=0 && vh_status==0 && vh_s==0)
{
//U0IER=0x00;
//enroll_finger();
// U0IER=0x01;
U0IER=0x00;
identify_finger();
U0IER=0x01;
if( ide==1)
{
ide=0;
vh_s=1;
Motor_ON ;
U0IER=0x00;
gsm_off;
gps_on;
GPS_read();
uart0_init();
gps_off;
gsm_on;
gsm_send_num_mesg_data(store_m,Longitude,"authorized access");
U0IER=0x01;
}
else
{
U0IER=0x00;
gsm_off;
gps_on;
GPS_read();
uart0_init();
gps_off;
gsm_on;
gsm_send_num_mesg_data(store_m,Longitude,"unauthorized access");
U0IER=0x01;
}
lcd_cmd(0x01);
lcd_puts("vehicle security "); //Vehicle security
lcd_cmd(0xc0);
lcd_puts(" system");
}
if((IOPIN0&sw)==0&&vh_s==1)
{
vh_s=0;
while(!(sw&IOPIN0));
Motor_OFF ;
goto start;
}
if((IOPIN0&enrol)==0 && vh_s==1)
{
while(!(enrol&IOPIN0));
U0IER=0x00;
enroll_finger();
U0IER=0x01;
lcd_cmd(0x01);
lcd_puts("vehicle security "); //Vehicle security
lcd_cmd(0xc0);
lcd_puts(" system");
}
if(vib==1)
{
vib=0;
vh_s=0;
Motor_OFF ;
lcd_cmd(0x01);
lcd_puts("Accident ");
lcd_cmd(0xc0);
lcd_puts(" occurred");
main_delay(1000);
U0IER=0x00;
gsm_off;
gps_on;
GPS_read();
uart0_init();
gps_off;
gsm_on;
gsm_send_num_mesg_data(store_m,Longitude,"Accident occurred");
U0IER=0x01;
EXTINT0_init();
goto start;
}
/*if(vh_status==1)
{
lcd_cmd(0x80);
lcd_puts(" ");
lcd_cmd(0xc0);
lcd_puts(" ");
lcd_cmd(0x80);
lcd_puts("Door locked");
lcd_cmd(0xc0);
lcd_puts("vh cont by user");
main_delay(800);
}
if(glass==1 && glass_b==0)
{
glass_b=1;
buzz_ON;
glass=0;
lcd_cmd(0x01);
lcd_puts(" Glass Broken ");
main_delay(1500);
U0IER=0x00;
gsm_send_num_mesg_data(store,Longitude,"Glass Broken");
main_delay(1500);
lcd_cmd(0x01);
U0IER=0x01;
goto start;
}*/
}
}
void GPS_read (void)
{
unsigned char gps_i,gps_k;
com_baudrate0(4800);
while(1)
{
gpsdata =uart0_getch();
if(gpsdata=='$')
{
gpsdata= uart0_getch();
gpsdata= uart0_getch();
if(uart0_getch()=='R')
{
if(uart0_getch()=='M')
{
if(uart0_getch()=='C')
{
gps_i=0;
while(gps_i<45)
{
GPSvalue[gps_i]=uart0_getch();
gps_i++;
}
GPSvalue[gps_i]='\0';
gps_i=0;gps_k=0;
main_delay(100);
lcd_cmd(0x80);
lcd_puts(" ");
lcd_cmd(0xc0);
lcd_puts(" ");
lcd_cmd(0x80);
lcd_puts("LT: ");
Longitude[gps_k]='L';
gps_k++;
Longitude[gps_k]='T';gps_k++;
Longitude[gps_k]=':';gps_k++;
for(gps_i=14;gps_i<25;gps_i++)
{
lcd_data(GPSvalue[gps_i]);
Longitude[gps_k]= GPSvalue[gps_i];
gps_k++;
//main_delay(100);
}
Longitude[gps_k]=' ';gps_k++;
Longitude[gps_k]=' ';gps_k++;
Longitude[gps_k]='L';gps_k++;
Longitude[gps_k]='G';gps_k++;
Longitude[gps_k]=':';gps_k++;
lcd_cmd(0xc0);
lcd_puts("LG: ");
for(gps_i=27;gps_i<38;gps_i++)
{
lcd_data(GPSvalue[gps_i]);
Longitude[gps_k]=GPSvalue[gps_i];
gps_k++;
//main_delay(100);
}
Longitude[gps_k]='\0';
gps_i=0;
gps_k=0;
main_delay(1000);
break;
}
}
}
}
}
}
void clearfp(void)
{
unsigned char cl=0;
while(cl<20)
{
fp[cl]=' ';
cl++;
}
fp_j=0;
}
void enroll_finger(void)
{
lcd_cmd(0x01);
lcd_puts("Enrolling.....");
main_delay(1000);
fp_i=0;
clearfp();
while(fp_i<14)
{
uart1_putch( baudrate[fp_i]);
fp_i++;
}
fp_j=0;
fp[11]=0x00;
while(fp_j==0);
main_delay(500);
if(fp[11]==0x0a)
{
//lcd_cmd(0x01);
//lcd_puts("BAUDRATE SUCCESS");
//main_delay(800);
}
else
{
lcd_cmd(0x01);
lcd_puts("BAUDRATE FAILED");
main_delay(800);
goto end;
}
fp_i=0;
clearfp();
while(fp_i<12)
{
uart1_putch(enroll[fp_i]);
fp_i++;
}
fp_j=0;
fp[9]=0x01;
while(fp_j==0);
main_delay(500);
if(fp[9]==0x00)
{
}
else
{
lcd_cmd(0x01);
lcd_puts("ENROLL FAILED");
main_delay(3000);
goto end;
}
clearfp();
fp_j=0;
fp_i=0;
while(fp_i<13)
{
uart1_putch(generate_ch[fp_i]);
fp_i++;
}
fp_j=0;
fp[9]=0x01;
while(fp_j==0);
main_delay(500);
if(fp[9]==0x00)
{
}
else
{
lcd_cmd(0x01);
lcd_puts("ENROLL FAILED");
main_delay(3000);
goto end;
}
fp_i=0;
clearfp();
while(fp_i<12)
{
uart1_putch(enroll[fp_i]);
fp_i++;
}
fp_j=0;
fp[9]=0x01;
while(fp_j==0);
main_delay(500);
if(fp[9]==0x00)
{
}
else
{
lcd_cmd(0x01);
lcd_puts("ENROLL FAILED");
main_delay(3000);
goto end;
}
clearfp();
fp_j=0;
fp_i=0;
while(fp_i<13)
{
uart1_putch(generate_ch1[fp_i]);
fp_i++;
}
fp_j=0;
fp[9]=0x01;
while(fp_j==0);
main_delay(500);
if(fp[9]==0x00)
{
}
else
{
lcd_cmd(0x01);
lcd_puts("ENROLL FAILED");
main_delay(3000);
goto end;
}
clearfp();
fp_j=0;
fp_i=0;
while(fp_i<12)
{
uart1_putch(un_cmd[fp_i]);
fp_i++;
}
fp_j=0;
fp[9]=0x01;
while(fp_j==0);
main_delay(500);
if(fp[9]==0x00)
{
}
else
{
lcd_cmd(0x01);
lcd_puts("ENROLL FAILED");
main_delay(3000);
goto end;
}
clearfp();
fp_j=0;
fp_i=0;
while(fp_i<12)
{
uart1_putch(store[fp_i]);
fp_i++;
}
uart1_putch(rec);
uart1_putch(0x00);
uart1_putch(dummy);
fp_j=0;
fp[9]=0x01;
while(fp_j==0);
main_delay(500);
if(fp[9]==0x00)
{
suc=1;
lcd_cmd(0x01);
lcd_puts(" successfully ");
lcd_cmd(0xc0);
lcd_puts(" Enrolled");
main_delay(3000);
lcd_cmd(0x01);
lcd_puts(" ur id : ");
lcd_data(rec/10+48);
lcd_data(rec%10+48);
id1++;
rec++;
dummy++;
main_delay(3000);
goto end;
}
else
{
lcd_cmd(0x01);
lcd_puts("ENROLL FAILED");
main_delay(3000);
goto end;
}
end:
main_delay(1);
}
void identify_finger(void)
{
lcd_cmd(0x01);
lcd_puts("IDENTIFYING...");
main_delay(1000);
fp_i=0;
clearfp();
while(fp_i<14)
{
uart1_putch( baudrate[fp_i]);
fp_i++;
}
fp_j=0;
fp[11]=0x00;
while(fp_j==0);
main_delay(1500);
if(fp[11]==0x0a)
{
//lcd_cmd(0x01);
//lcd_puts("BAUDRATE SUCCESS");
//main_delay(800);
}
else
{
lcd_cmd(0x01);
lcd_puts("BAUDRATE FAILED");
main_delay(800);
goto end;
}
fp_i=0;
clearfp();
while(fp_i<12)
{
uart1_putch(enroll[fp_i]);
fp_i++;
}
fp_j=0;
fp[9]=0x01;
while(fp_j==0);
main_delay(500);
if(fp[9]==0x00)
{
}
else
{
lcd_cmd(0x01);
lcd_puts("IDENTIFY FAILED");
main_delay(3000);
goto end;
}
clearfp();
fp_j=0;
fp_i=0;
while(fp_i<13)
{
uart1_putch(generate_ch[fp_i]);
fp_i++;
}
fp_j=0;
fp[9]=0x01;
while(fp_j==0);
main_delay(500);
if(fp[9]==0x00)
{
}
else
{
lcd_cmd(0x01);
lcd_puts("IDENTIFY FAILED");
//lcd_puts1(0,4,"IDENTIFY FAILED..");
main_delay(3000);
goto end;
}
clearfp();
fp_i=0;
fp_j=0;
while(fp_i<17)
{
uart1_putch(identify[fp_i]);
fp_i++;
}
fp_j=0;
while(fp_j==0);
main_delay(500);
if(fp[9]==0x00)
{
ide=1;
lcd_cmd(0x01);
lcd_puts(" successfully ");
lcd_cmd(0xc0);
lcd_puts("identified ");
//lcd_puts1(0,4," successfully ");
//lcd_puts1(0,5,"identified ");
id=fp[11];
//lcd_puts1(0,5," ur id : ");
//lcd_data2(fp[11]/10+48);
//lcd_data2(fp[11]%10+48);
lcd_data(fp[11]/10+48);
lcd_data(fp[11]%10+48);
main_delay(3000);
}
else
{
lcd_cmd(0x01);
lcd_puts("IDENTIFY FAILED");
//lcd_puts1(0,4,"IDENTIFY FAILED..");
main_delay(3000);
goto end;
}
end:
main_delay(1);
}
2. gsm.h file
#include "LCD.h"
extern unsigned char mx,my,mz,mm;
unsigned char uc_temp,uc_temp1,uc_temp2=0;
unsigned long int uli_temp3=0;
void gsm_delay( unsigned int value );
void gsm_cmd(char *cmd);
void gsm_check(void);
void gsm_init(void);
void gsm_send_num_mesg(unsigned char *num,unsigned char *mes);
unsigned char msg[50],mobilenum[11];
void gsm_delay( unsigned int value )
{
unsigned int ui_temp1,ui_temp2;
for(ui_temp1=0;ui_temp1<value;ui_temp1++)
for(ui_temp2=0;ui_temp2<2500;ui_temp2++);
}
void gsm_cmd(char *cmd)
{
while(*cmd)
{
while (!(U0LSR & 0x20));
U0THR = *cmd++;
}
}
void gsm_enter(void)
{
uart0_putch(10);
uart0_putch(13);
}
void gsm_check()
{
check:
uc_temp1=0;
uli_temp3=0;
gsm_cmd("AT");
gsm_enter();
while(uc_temp1<10)
{
while (!(U0LSR & 0x01))
{
uli_temp3++;
if(uli_temp3==6000000)
{
uli_temp3=0;
goto end;
}
}
uc_temp= U0RBR;
if(uc_temp=='O')
{
uc_temp=uart0_getch();
if(uc_temp=='K')
{
uc_temp2=1;
break;
}
}
uc_temp1++ ;
uli_temp3=0;
}
end:
if(uc_temp2==0)
{
lcd_cmd(0x01);
lcd_puts("MODEM IS NOT");
lcd_cmd(0xc0);
lcd_puts(" READY");
gsm_delay(1000);
goto check;
}
}
void gsm_init()
{
check1:
uc_temp1=0;
uli_temp3=0;
uc_temp2=0;
gsm_cmd("ATE0");
gsm_enter();
while(uc_temp1<10)
{
while (!(U0LSR & 0x01))
{
uli_temp3++;
if(uli_temp3==8000000)
{
uli_temp3=0;
goto end1;
}
} // Wait RXD Receive Data Ready
uc_temp= U0RBR;
if(uc_temp=='O')
{
uc_temp=uart0_getch();
if(uc_temp=='K')
{
uc_temp2=1;
break;
}
}
uc_temp1++ ;
uli_temp3=0;
}
end1:
if(uc_temp2==0)
{
lcd_cmd(0x01);
lcd_puts("MODEM IS NOT");
lcd_cmd(0xc0);
lcd_puts(" READY");
gsm_delay(1000);
goto check1;
}
check:
uc_temp1=0;
uli_temp3=0;
uc_temp2=0;
gsm_cmd("AT+CMGF=1");
gsm_enter();
while(uc_temp1<10)
{
while (!(U0LSR & 0x01))
{
uli_temp3++;
if(uli_temp3==8000000)
{
uli_temp3=0;
goto end;
}
} // Wait RXD Receive Data Ready
uc_temp= U0RBR;
if(uc_temp=='O')
{
uc_temp=uart0_getch();
if(uc_temp=='K')
{
uc_temp2=1;
break;
}
}
uc_temp1++ ;
uli_temp3=0;
}
end:
if(uc_temp2==0)
{
lcd_cmd(0x01);
lcd_puts("MODEM IS NOT");
lcd_cmd(0xc0);
lcd_puts(" READY");
gsm_delay(1000);
goto check;
}
lcd_cmd(0x01);
lcd_puts("MODEM IS READY");
gsm_delay(2000);
}
void gsm_clear_msg(char num)
{
check:
uc_temp1=0;
uli_temp3=0;
uc_temp2=0;
gsm_cmd("at+cmgd=");
uart0_putch(num+48);
gsm_enter();
while(uc_temp1<10)
{
while (!(U0LSR & 0x01))
{
uli_temp3++;
if(uli_temp3==8000000)
{
uli_temp3=0;
goto end;
}
} // Wait RXD Receive Data Ready
uc_temp= U0RBR;
if(uc_temp=='O')
{
uc_temp=uart0_getch();
if(uc_temp=='K')
uc_temp2=1;
break;
}
uc_temp1++ ;
uli_temp3=0;
}
end:
if(uc_temp2==0)
{
lcd_cmd(0x01);
lcd_puts("MSG DELETE ERROR");
gsm_delay(1500);
goto check;
}
lcd_cmd(0x01);
lcd_puts("MSG DELETED");
gsm_delay(2000);
}
void gsm_send_num_mesg(unsigned char *num,unsigned char *mes)
{
unsigned char uc_temp,uc_temp1,uc_temp3=0;
unsigned long long int uli_temp2;
U1IER=0;
U0IER=0;
gsm_cmd("at+cmgs=");
uart0_putch('"');
while(*num)
uart0_putch(*num++);
uart0_putch('"');
gsm_enter();
while(*mes)
uart0_putch(*mes++);
gsm_enter();
gsm_enter();
uart0_putch(0x1a);
uc_temp1=0;
uli_temp2=0;
while(uc_temp1<10)
{
while (!(U0LSR & 0x01))
{
if(uli_temp2==8000000)
{
lcd_cmd(0x01);
lcd_puts("MSG SENDING ");
lcd_cmd(0xc0);
lcd_puts(" ERROR");
gsm_delay(2000);
lcd_cmd(0x01);
lcd_puts("MODEM IS");
lcd_cmd(0xc0);
lcd_puts(" NOT CONNECTED");
gsm_delay(2000);
goto end;
}
uli_temp2++;
} // Wait RXD Receive Data Ready
uc_temp= U0RBR;
if(uc_temp=='+')
{
uc_temp=uart0_getch();
if(uc_temp=='C')
uc_temp=uart0_getch();
else
{
lcd_cmd(0x01);
lcd_puts("NO BALENCE");
lcd_cmd(0xc0);
lcd_puts(" IN UR SIM CARD");
gsm_delay(2000);
goto end;
}
if(uc_temp=='M')
uc_temp=uart0_getch();
else
{
lcd_cmd(0x01);
lcd_puts("NO BALENCE");
lcd_cmd(0xc0);
lcd_puts(" IN UR SIM CARD");
gsm_delay(2000);
goto end;
}
if(uc_temp=='G')
uc_temp=uart0_getch();
else
{
lcd_cmd(0x01);
lcd_puts("NO BALENCE");
lcd_cmd(0xc0);
lcd_puts(" IN UR SIM CARD");
gsm_delay(2000);
goto end;
}
if(uc_temp=='S')
{
uc_temp3=1;
break;
}
else
{
lcd_cmd(0x01);
lcd_puts("NO BALENCE");
lcd_cmd(0xc0);
lcd_puts(" IN UR SIM CARD");
gsm_delay(2000);
goto end;
}
}
uc_temp1++ ;
}
if(uc_temp3==1)
{
lcd_cmd(0x01);
lcd_puts("MESSAGE HAS BEEN");
lcd_cmd(0xc0);
lcd_puts(" SENT TO USER");
gsm_delay(2000);
}
else
{
lcd_cmd(0x01);
lcd_puts("MSG SENDING ");
lcd_cmd(0xc0);
lcd_puts(" ERROR");
gsm_delay(2000);
}
end:
U1IER=0x01;
U0IER=0x01;
}
void gsm_send_num_mesg_data(unsigned char *num,unsigned char *mes ,unsigned char *mes1)
{
unsigned char uc_temp,uc_temp1,uc_temp3=0;
unsigned long long int uli_temp2;
U1IER=0;
U0IER=0;
gsm_cmd("at+cmgs=");
uart0_putch('"');
while(*num)
uart0_putch(*num++);
uart0_putch('"');
gsm_enter();
while(*mes)
uart0_putch(*mes++);
gsm_enter();
while(*mes1)
uart0_putch(*mes1++);
gsm_enter();
uart0_putch(0x1a);
uc_temp1=0;
uli_temp2=0;
while(uc_temp1<10)
{
while (!(U0LSR & 0x01))
{
if(uli_temp2==8000000)
{
lcd_cmd(0x01);
lcd_puts("MSG SENDING ");
lcd_cmd(0xc0);
lcd_puts(" ERROR");
gsm_delay(2000);
lcd_cmd(0x01);
lcd_puts("MODEM IS");
lcd_cmd(0xc0);
lcd_puts(" NOT CONNECTED");
gsm_delay(2000);
goto end;
}
uli_temp2++;
} // Wait RXD Receive Data Ready
uc_temp= U0RBR;
if(uc_temp=='+')
{
uc_temp=uart0_getch();
if(uc_temp=='C')
uc_temp=uart0_getch();
else
{
lcd_cmd(0x01);
lcd_puts("NO BALENCE");
lcd_cmd(0xc0);
lcd_puts(" IN UR SIM CARD");
gsm_delay(2000);
goto end;
}
if(uc_temp=='M')
uc_temp=uart0_getch();
else
{
lcd_cmd(0x01);
lcd_puts("NO BALENCE");
lcd_cmd(0xc0);
lcd_puts(" IN UR SIM CARD");
gsm_delay(2000);
goto end;
}
if(uc_temp=='G')
uc_temp=uart0_getch();
else
{
lcd_cmd(0x01);
lcd_puts("NO BALENCE");
lcd_cmd(0xc0);
lcd_puts(" IN UR SIM CARD");
gsm_delay(2000);
goto end;
}
if(uc_temp=='S')
{
uc_temp3=1;
break;
}
else
{
lcd_cmd(0x01);
lcd_puts("NO BALENCE");
lcd_cmd(0xc0);
lcd_puts(" IN UR SIM CARD");
gsm_delay(2000);
goto end;
}
}
uc_temp1++ ;
}
if(uc_temp3==1)
{
lcd_cmd(0x01);
lcd_puts("MESSAGE HAS BEEN");
lcd_cmd(0xc0);
lcd_puts(" SENT TO USER");
gsm_delay(2000);
}
else
{
lcd_cmd(0x01);
lcd_puts("MSG SENDING ");
lcd_cmd(0xc0);
lcd_puts(" ERROR");
gsm_delay(2000);
}
end:
U1IER=0x01;
U0IER=0x01;
}
void gsm_mes_read(void)
{
unsigned char a,b,i,count,numcnt;
U1IER=0;
U0IER=0;
gsm_delay(100);
while ((U0LSR & 0x01)) // Wait RXD Receive Data Ready
{
b= U0RBR;
gsm_delay(5);
}
gsm_cmd("at+cmgr=1");
gsm_enter();
count=0;
i=0;
a=0;
numcnt=0;
while(count!=3)
{
b=uart0_getch();
if((b==',')||(a==1))
{
if(numcnt<15)
{
if(numcnt>4)
{
mobilenum[numcnt-5]=b;
}
a=1;
numcnt++;
}
else
a=0;
}
if(count==2)
{
msg[i++]=b;
}
if(b==10)
count+=1;
}
msg[--i]='\0';
msg[--i]='\0';
mobilenum[10]='\0';
lcd_cmd(0x01);
lcd_puts(msg);
gsm_delay(2000);
gsm_cmd("at+cmgd=1");
gsm_enter();
U1IER=0x01;
U0IER=0x01;
}
3. lcd.h
//*****************************************************************************// file name :lcd.h
//*****************************************************************************
#ifndef _LPC214X_H_
#define _LPC214X_H_
// Define LCD PinIO Mask
#define LCD_RS 0x00010000 // P1.16(0000 0000 0000 000x 0000 0000 0000 0000)
#define LCD_EN 0x00020000 // P1.17(0000 0000 0000 00x0 0000 0000 0000 0000)
#define LCD_D4 0x00040000 // P1.18(0000 0000 0000 0x00 0000 0000 0000 0000)
#define LCD_D5 0x00080000 // P1.19(0000 0000 0000 x000 0000 0000 0000 0000)
#define LCD_D6 0x00100000 // P1.20(0000 0000 000x 0000 0000 0000 0000 0000)
#define LCD_D7 0x00200000 // P1.21(0000 0000 00x0 0000 0000 0000 0000 0000)
lcd_cmd(unsigned char val)
{
unsigned int lcd_ch;
unsigned int lcd_i; // LCD Initial Delay Count
IOCLR1 = LCD_RS ; // RS = 0
lcd_ch=((val>>4)&0x0F); // Strobe 4-Bit High-Nibble to LCD
IOCLR1 = (LCD_D7|LCD_D6|LCD_D5|LCD_D4); // Reset 4-Bit Pin Data
IOSET1 = (lcd_ch<<18); // EN,0,RW,RS:DDDD:0000:0000:0000:0000:0000:0000
IOSET1 = LCD_EN ; // EN = 1 (Enable)
for (lcd_i=0;lcd_i<10000;lcd_i++);
IOCLR1 = LCD_EN ; // EN = 0 (Disable)
lcd_ch=(val&0x0F); // Strobe 4-Bit Low-Nibble to LCD
IOCLR1 = (LCD_D7|LCD_D6|LCD_D5|LCD_D4); // Reset 4-Bit Pin Data
IOSET1 = (lcd_ch<<18); // EN,0,RW,RS:DDDD:0000:0000:0000:0000:0000:0000
IOSET1 = LCD_EN ; // EN = 1 (Enable)
for (lcd_i=0;lcd_i<10000;lcd_i++);
IOCLR1 = LCD_EN ; // EN = 0 (Disable)
for (lcd_i=0;lcd_i<10000;lcd_i++);
}
lcd_data(unsigned char val)
{
unsigned int lcd_ch;
unsigned int lcd_i; // LCD Initial Delay Count
IOSET1 = LCD_RS ; // RS = 1
lcd_ch=((val>>4)&0x0F); // Strobe 4-Bit High-Nibble to LCD
IOCLR1 = (LCD_D7|LCD_D6|LCD_D5|LCD_D4); // Reset 4-Bit Pin Data
IOSET1 = (lcd_ch<<18); // EN,0,RW,RS:DDDD:0000:0000:0000:0000:0000:0000
IOSET1 = LCD_EN ; // EN = 1 (Enable)
for (lcd_i=0;lcd_i<10000;lcd_i++);
IOCLR1 = LCD_EN ; // EN = 0 (Disable)
lcd_ch=(val&0x0F); // Strobe 4-Bit Low-Nibble to LCD
IOCLR1 = (LCD_D7|LCD_D6|LCD_D5|LCD_D4); // Reset 4-Bit Pin Data
IOSET1 = (lcd_ch<<18); // EN,0,RW,RS:DDDD:0000:0000:0000:0000:0000:0000
IOSET1 = LCD_EN ; // EN = 1 (Enable)
for (lcd_i=0;lcd_i<10000;lcd_i++);
IOCLR1 = LCD_EN ; // EN = 0 (Disable)
for (lcd_i=0;lcd_i<10000;lcd_i++);
}
void lcd_puts(unsigned char* str)
{
while(*str)
lcd_data(*str++);
}
void lcd_int(unsigned int lcd_value)
{
unsigned int lcd_arr[10],lcd_val;
for(lcd_val=1;lcd_val<5;lcd_val++)
{
lcd_arr[lcd_val] = lcd_value%10;
lcd_value = lcd_value/10;
}
for(lcd_val=4; lcd_val!=0 ; lcd_val--) //sending data to LCD
{
lcd_data(lcd_arr[lcd_val]+48);
}
}
lcd_init()
{
unsigned int lcd_main_i; // LCD Initial Delay Count
PINSEL2 |= 0x00000000; // GPIO1[31..26] = I/O Function
IODIR1 |= 0x003F0000 ; // LCD Data Bus = Write // LCD Data Bus = Write
for (lcd_main_i=0;lcd_main_i<10000;lcd_main_i++); // Power-On Delay (15 mS)
IOCLR1 = ((LCD_D7|LCD_D6|LCD_D5|LCD_D4|LCD_RS|LCD_EN)); // Reset (RS,RW,EN,4-Bit Data) Pin
IOSET1 = (LCD_D5|LCD_D4); // DDDD:EN,RW,RS,0:0000:0000:0000:0000:0000:0000
IOSET1 = LCD_EN ; // EN = 1 (Enable)
for (lcd_main_i=0;lcd_main_i<10000;lcd_main_i++);
IOCLR1 = LCD_EN ; // EN = 0 (Disable)
for (lcd_main_i=0;lcd_main_i<10000;lcd_main_i++); // Delay 4.1mS
IOCLR1 = ((LCD_D7|LCD_D6|LCD_D5|LCD_D4|LCD_RS|LCD_EN)); // Reset (RS,RW,EN,4-Bit Data) Pin
IOSET1 = (LCD_D5|LCD_D4); // DDDD:EN,RW,RS,0:0000:0000:0000:0000:0000:0000
IOSET1 = LCD_EN ; // EN = 1 (Enable)
for (lcd_main_i=0;lcd_main_i<10000;lcd_main_i++);
IOCLR1 = LCD_EN ; // EN = 0 (Disable)
for (lcd_main_i=0;lcd_main_i<10000;lcd_main_i++); // delay 100uS
IOCLR1 = ((LCD_D7|LCD_D6|LCD_D5|LCD_D4|LCD_RS|LCD_EN)); // Reset (RS,RW,EN,4-Bit Data) Pin
IOSET1 = (LCD_D5|LCD_D4); // DDDD:EN,RW,RS,0:0000:0000:0000:0000:0000:0000
IOSET1 = LCD_EN ; // EN = 1 (Enable)
for (lcd_main_i=0;lcd_main_i<10000;lcd_main_i++);
IOCLR1 = LCD_EN ; // EN = 0 (Disable)
for (lcd_main_i=0;lcd_main_i<10000;lcd_main_i++);
IOCLR1 = ((LCD_D7|LCD_D6|LCD_D5|LCD_D4|LCD_RS|LCD_EN)); // Reset (RS,RW,EN,4-Bit Data) Pin
IOSET1 = (LCD_D5); // DDDD:EN,RW,RS,0:0000:0000:0000:0000:0000:0000
IOSET1 = LCD_EN ; // EN = 1 (Enable)
for (lcd_main_i=0;lcd_main_i<10000;lcd_main_i++);
IOCLR1 = LCD_EN ; // EN = 0 (Disable)
for (lcd_main_i=0;lcd_main_i<10000;lcd_main_i++);
lcd_cmd(0x28);
lcd_cmd(0x0c);
lcd_cmd(0x06);
lcd_cmd(0x01);
for (lcd_main_i=0;lcd_main_i<10000;lcd_main_i++); // Wait Command Ready
}
void lcd_float(float value)
{
unsigned char xxx[5],z=0;
int intval;
intval=(int)value;
value=value-intval;
while(intval!=0)
{
xxx[z]=intval%10;
intval=intval/10;
z++;
}
while(z!=0)
{
z--;
lcd_data(xxx[z]+48);
}
lcd_puts(".");
intval=value*10;
lcd_data(intval+48);
/* while(intval!=0)
{
xx[z]=intval%10;
intval=intval/10;
z++;
}
while(z!=0)
{
z--;
lcd_data(xx[z]+48);
} */
}
#endif
4. uart.h
void uart0_init(){
PINSEL0 |=0x00000005;
U0LCR =0X80;
U0DLL =97;
U0LCR =0X03;
}
void com_baudrate0 (unsigned int baudrate)
{
unsigned long DLreload;
PINSEL0 |=0x00000005;
DLreload = (15000000UL / baudrate) / 16UL;
U0LCR = 0x80; /* Set DLAB */
U0DLL = DLreload;
U0DLM = (DLreload >> 8);
U0LCR = 0x03; /* Clear DLAB */
}
void uart0_putch(unsigned char val)
{
while(!(U0LSR & 0x20));
U0THR =val;
}
unsigned char uart0_getch()
{
while(!(U0LSR & 0x01));
return(U0RBR);
}
void uart0_puts( char *stringptr)
{
while (*stringptr)
uart0_putch(*stringptr++);
}
void uart0_int(unsigned long value)
{
unsigned char arr[10];
unsigned char val=0;
if(value==0)
uart0_putch(0+48);
while(value!=0)
{
arr[val] = value%10;
value = value/10;
val++;
}
while(val!=0)
{
val--;
uart0_putch(arr[val]+48);
}
}
5. uart1.h
void uart1_init()
{
PINSEL0 |=0x00050000;
U1LCR =0X80;
U1DLL =97;
U1LCR =0X03;
}
void uart1_putch(unsigned char val)
{
while(!(U1LSR & 0x20));
U1THR =val;
}
unsigned char uart1_getch()
{
while(!(U1LSR & 0x01));
return(U1RBR);
}
void uart1_puts( unsigned char *stringptr)
{
while (*stringptr)
uart1_putch(*stringptr++);
}
void uart1_int(unsigned long value)
{
unsigned char arr[10];
unsigned char val=0;
if(value==0)
uart1_putch(0+48);
while(value!=0)
{
arr[val] = value%10;
value = value/10;
val++;
}
while(val!=0)
{
val--;
uart1_putch(arr[val]+48);
}
}
No comments:
Post a Comment