Vous êtes sur la page 1sur 4

DelayMs(2);

CmdB(0X20);
Cmd(0X28);
Cmd(0X01);
Cmd(0X06);
Cmd(0X0C);
}

/* Minimum DelayTime */
/* 4-bit Mode Enabling */
/* Double Line Enabling
*/
/* Display Clearing
*/
/* Auto Address Increment*/
/* Display On
*/

void Send2Lcd(const char Adr, const char *Lcd)


{
Cmd(Adr);
while(*Lcd!='\0')
{
Data(*Lcd);
Lcd++;
DelayUs(10);
}

GSM-GPS INTERFACE
ARM CODE

void Char2Lcd(const char Adr, char Lcd)


{
Cmd(Adr);
Data(Lcd);
DelayUs(10);
}
void DelayMs(int DelayTime)
{
DelayTime=DelayTime*12000;
Function
while(--DelayTime!=0);
}
void DelayUs(int DelayTime)
{
DelayTime=DelayTime*12;
while(--DelayTime!=0);
}

// 1 MilliSec Multiple Delay

// 1 MicroSec Multiple Delay Function

APRIL 4, 2014
MUHSIN

#include "LPC214x.h"
#include<lpc213x.h>
#define ClearLCD {Cmd(0x01); DelayMs(1);}
#define led IOPIN1 // Define LED to Port1
#define tled IO1DIR // Define Port1 as output
void DelayMs(int);
void DelayUs(int);
void uart_init();
void CmdB(int);
void Cmd(int);
void Data(int);
void LCD_Init(void);
void PrintD(int);
void Send2Lcd(const char Adr, const char *Lcd);
void Char2Lcd(const char Adr, char Lcd);
char getchar(void);
void init(void);
extern unsigned char cmgf[]="AT+CMGF=1";
//Text format
in GSM modem
extern unsigned char cmgs[]="AT+CMGS=\"9526122211\"";
//Mobile number to which the msg is sent
extern unsigned char msg[160]="Project Success";
//secret code
void init()
{
VPBDIV = 0x2;
// pclk to 30MHz
// PINSEL0 = 0x5;
// Enable RxD0 and TxD0
U1LCR = 0x00000083; // 8 bits, no Parity, 1 Stop bit
U1DLL = 0x000000C3; // 9600 Baud Rate @ 30MHz VPB Clock
U1LCR = 0x00000003; // DLAB = 0
}

}
void Data(int Value)
/* Data Outuing In 4-Bit Mode */
{
int Shift;
IO1CLR=0X00FE0000;
//
Clear ALL 17-23 Pins
IO1SET=0X00020000;
//
SET 17th Pin [RS ]
IO1CLR=0X00040000;
//
Clear 18th Pin [R/W]
IO1SET=0X00080000;
//
SET 19th Pin [EN ]
Shift=Value & 0XF0;
//
Higher Nibble Extracting 0X0A [0High]
Shift=Shift<<16;
//
Higher Nibble [4-7] Shifted To [20-23 ]
IO1SET=IO1SET|Shift;
//
0X00080000 | 0X00000000[Shifted] =
0X00080000[Only '0' Is in [20-23]pins
DelayMs(5);
//
Minimum DelayTime
IO1CLR=0X00080000;
//
ENABLE High-Low Transition
IO1CLR=0X00FE0000;
//
Clear ALL 17-23 Pins
IO1SET=0X00020000;
//
SET 17th Pin [RS ]
IO1CLR=0X00040000;
//
Clear 18th Pin [R/W]
IO1SET=0X00080000;
//
SET 19th Pin [EN ]
Shift=Value & 0X0F;
//
Lower Nibble Extracting 0X0A [8Lower]
Shift=Shift<<20;
//
Lower Nibble [0-3] Shifted To [20-23]
IO1SET=IO1SET|Shift;
//
0X00080000 | 0X00A00000[Shifted] =
0X00A80000[Only 'A' Is in [20-23]pins
DelayMs(5);
//
Minimum DelayTime
IO1CLR=0X00080000;
//
ENABLE High-Low Transition
}
void LCD_Init()
{
DelayMs(15);
CmdB(0X30);
DelayMs(5);
CmdB(0X30);
DelayUs(100);
CmdB(0X30);

/* LCD Power Up Time */


/* Initializing Command */
/* Minimum DelayTime */
/* Initializing Command */
/* Minimum DelayTime */
/* Initializing Command */

void CmdB(int Value)


/* Function Before 4-Bit Enabling */
{
int Shift;
IO1CLR=0X00FE0000;
// Clear ALL 17-23 Pins
IO1CLR=0X00020000;
// Clear 17th Pin [RS ]
IO1CLR=0X00040000;
// Clear 18th Pin [R/W]
IO1SET=0X00080000;
// SET 19th Pin [EN ]
Shift=Value & 0XF0;
// Higher Nibble Extracting 0X30 [3High]
Shift=Shift<<16;
// Higher Nibble [4-7] Shifted To [20-23 ]
IO1SET=IO1SET|Shift;
// 0X00080000 | 0X00300000[Shifted] =
0X00380000[Only '3' Is in [20-23]pins
DelayMs(5);
// Minimum DelayTime
IO1CLR=0X00080000;
// ENABLE High-Low Transition
}
void Cmd(int Value)
/* Function After 4-Bit Enabling */
{
int Shift;
IO1CLR=0X00FE0000;
//
Clear ALL 17-23 Pins
IO1CLR=0X00020000;
//
Clear 17th Pin [RS ]
IO1CLR=0X00040000;
//
Clear 18th Pin [R/W]
IO1SET=0X00080000;
//
SET 19th Pin [EN ]
Shift=Value & 0XF0;
// Higher Nibble Extracting 0X28 [2-High]
Shift=Shift<<16;
// Higher Nibble [4-7] Shifted To [20-23]
IO1SET=IO1SET|Shift;
// 0X00080000 | 0X00200000[Shifted] =
0X00280000[Only '2' Is in [20-23]pins
DelayMs(5);
//
Minimum DelayTime
IO1CLR=0X00080000;
//
ENABLE High-Low Transition
IO1CLR=0X00FE0000;
//
Clear ALL 17-23 Pins
IO1CLR=0X00020000;
//
Clear 17th Pin [RS ]
IO1CLR=0X00040000;
//
Clear 18th Pin [R/W]
IO1SET=0X00080000;
//
SET 19th Pin [EN ]
Shift=Value & 0X0F;
// Lower Nibble Extracting 0X28 [8-Lower]
Shift=Shift<<20;
// Lower Nibble [0-3] Shifted To [20-23]
IO1SET=IO1SET|Shift;
//
0X00080000 | 0X00800000[Shifted] =
0X00880000[Only '8' Is in [20-23]pins
DelayMs(5);
//
Minimum DelayTime
IO1CLR=0X00080000; //
ENABLE High-Low Transition

void senduart1(unsigned char a)


U1
{
U1THR=a;
while (!(U1LSR & 0x20));
}

//sends a byte through

void sendstring(unsigned char *p)


through UART1
{
while(1)
{
if(*p=='\0') break;
senduart1(*p++);
}
}

//Sends a string of data

void delaygsm()
{
int i,j;
for(i=0;i<60000;i++)
for(j=0;j<51;j++);
}

//delay function

int main()
{
unsigned pos=0xC0;
int i,j,c=0;
char gps[20][17], temp[100], key[]="GPRMC",cont='y';
uart_init();
IO1DIR=0x00FF0000;
IO0DIR=0X00FF0000;
IO0SET=0X00FF0000;
DelayMs(5000);
IO0CLR=0X00FF0000;

}
/* PINSEL2 = 0x00000000; // Define port lines as GPIO
tled = 0x00FF0000; // Define P1.16 P1.23 as O/P
led = 0x00000000; // Define P1.16 P1.23 as zero
led = 0x00020000;
PINSEL0=0x00050005;
//initialized U0 and U1 as UART and not
GPIO
PINSEL1 = 0x00000000;
PINSEL2 = 0x00000000;
DelayMs(5000)*/
LCD_Init();
Send2Lcd(0x80,"VEHICLE MONITOR");
Send2Lcd(0xC1,"GPS CONNECTED");
i=0;
do
{
cont='n';
while(getchar()!='$');
if(getchar()=='G')
if(getchar()=='P')
if(getchar()=='R')
if(getchar()=='M')
if(getchar()=='C')
temp[0]='#';
else
cont='y';
}while(cont=='y');
while(temp[i]!='$') temp[i++]=getchar();
temp[i]='\0';
pos=0xC0;
for(i=0;temp[i]!='\0';i++)
{
Char2Lcd(pos++,temp[i]);
if(pos>=0XCF)
{
pos=0xC0;
DelayMs(5000);
}

for(i=0;i<159;i++)
msg[i]=temp[i];
msg[159]='\0';
3

init();
sendstring(cmgf);
senduart1(0x0d);
senduart1(0x0a);
delaygsm();
sendstring(cmgs);
senduart1(0x0d);
senduart1(0x0a);
delaygsm();
sendstring(msg);
senduart1(0x1a);
led = 0x000F0000;
while(1);
}
void uart_init()
{
VPBDIV=0X2;
PINSEL0=0X5;U0LCR=0X00000083;
U0DLL=0X000000C3;
U0LCR=0X00000003;
}

char getchar(void)
{
while(!(U0LSR&0X01));
return(U0RBR);
}

// equivalent of
//
enter key

Vous aimerez peut-être aussi