Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

I want modulate this code ( interfacing at89c51 with gsm )

Status
Not open for further replies.

Mohammed_

Newbie level 6
Newbie level 6
Joined
Mar 30, 2013
Messages
13
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,281
Visit site
Activity points
1,381
Hi

In my project will be there two switches. One for send AT to gsm to make sure the gsm is work and switch number two when it`s 1 will send AT commands to send a message to a specific number.

Now I`ll explain more.

see this link .. **broken link removed**

I`ll use this circuit, in P1.6 here will be switch if 1 it will send AT to gsm ounce after that I want the response show on LCD.
And in P1.7 another switch, if 1 send AT+CMGF=1 then show response on lcd , then send AT+CMGW="+*********", then send a written message example "Hi".
See this link .. HERE



Code is here .. **broken link removed**







// Program to Interface GSM Module with 8051 microcontroller (AT89C51) without using PC

#include<reg51.h>
#define port P1
#define dataport P2 // Data port for LCD
sbit rs = port^2;
sbit rw = port^3;
sbit en = port^4;
int count,i;
unsigned char check,str[15];
bit check_space;

void init_serial() // Initialize serial port
{
TMOD=0x20; // Mode2
TH1=0xfd; // 9600 baud
SCON=0x50; // Serial mode=1 ,8-Bit data,1 Stop bit ,1 Start bit, Receiving on
TR1=1; // Start timer
}
void delay(unsigned int msec) // Function for delay
{
int i,j;
for(i=0;i<msec;i++)
for(j=0; j<1275; j++);
}

void lcd_cmd(unsigned char item) // Function to send command on LCD
{
dataport = item;
rs= 0;
rw=0;
en=1;
delay(1);
en=0;
return;
}

void lcd_data(unsigned char item) // Function to display character on LCD
{
dataport = item;
rs= 1;
rw=0;
en=1;
delay(1);
en=0;
return;
}

void lcd_data_string(unsigned char *str) // Function to display string on LCD
{
int i=0;
while(str!='\0')
{
lcd_data(str);
i++;
delay(10);
}
return;
}
void lcd()
{
lcd_cmd(0x38); // For using 8-bit 2 row LCD
delay(5);
lcd_cmd(0x0F); // For display on cursor blinking
delay(5);
lcd_cmd(0x80); // Set the cursor on first position of LCD
delay(5);
}

void transmit_data(unsigned char str) // Function to transmit data through serial port
{
SBUF=str; //Store data in SBUF
while(TI==0); //Wait till data transmits
TI=0;
}

void receive_data() interrupt 4 // Function to recieve data serialy from RS232 into microcontroller
{
RI=0;
str[++count]=SBUF; //Read SBUF

}

unsigned char byte_check() // Function to check carraige return and new line character
{
switch(str[0])
{
case 0x0a:
{ // Return 0x00 for new line
return 0x00;
break ;
}
case 0x0d:
{ // Return 0x01 for carriage return
return 0x01;
break ;
}
default :return 0x02 ; // Return 0x02 for characters except new line and carriage return
}
}

void main()
{
lcd(); // Initialize LCD
init_serial(); // Initialize serial port
count=(-1);
delay(500);
lcd_data_string("Ready");
delay(10);
lcd_cmd(0x01);
IE=0x94;
transmit_data('A'); // Transmit 'A' to serial port
delay(1);
transmit_data('T'); // Transmit 'T' to serial port
delay(1);
transmit_data(0x0d); // Transmit carriage return to serial port
delay(50);
while(1)
{
if(count>=0)
{
check=byte_check(); // Check the character
if(check!=0x00)
{
if(check==0x01)
{
if(check_space==1) // Check previous character
{
lcd_data(0x20);
check_space=0;
}
}
else
{
lcd_data(str[0]);
check_space=1;
}
}
count--;
for(i=0;i<count;i++) // Shift the whole array to one left
{
str=str[i+1];
}
}
}
}
 

Hi..
Can you help how to write it? because I don`t know Embedded C good.

thank you
 

Hi ..
just increase the buffer value and check
i mean.. make this
unsigned char check,str[15];
as
unsigned char check,str[65];
 

^^^^
I`ll try. And I`ll search how include switch and make if statement. And how to define used ports?
 
Last edited:

Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top