Académique Documents
Professionnel Documents
Culture Documents
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
*/
GSM-GPS INTERFACE
ARM CODE
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);
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