8051 microcontroller 8051 microcontroller
Forums

Page 3 of 6    1 2 [3] 4 5 6
Moderators: Ajay Bhargav, Arun Kumar V, pdi33, Shailesh NAYAK, ۞ TPS ۞, shyam, sashijoseph, ExperimenterUK, DavesGarage, majoka
Author Post
robotics_mait
Fri Feb 24 2012, 07:57AM

Registered Member #19013
Joined: Wed Jun 03 2009, 10:17AM
Location (Home Town): India
Posts: 77
hi guyz... Me too interested in dis project... I want to ask that is it possible to use proteus's Virtual hyperterminal for getting input from my real hardware GSM modem and simulate using it? Thnx
Back to top
kirangowle
Sun Feb 26 2012, 10:43PM

Registered Member #26972
Joined: Thu Mar 18 2010, 09:18AM
Location (Home Town): Bangalore, Karnataka
Posts: 587
Yes u can use proteus Virtual terminal
Back to top
robotics_mait
Mon Feb 27 2012, 02:48AM

Registered Member #19013
Joined: Wed Jun 03 2009, 10:17AM
Location (Home Town): India
Posts: 77
continued in a seperate post : http://www.8051projects.net/forum-t52973-last.html
help me in dat..
Back to top
Alvanbert
Mon Feb 27 2012, 01:12PM
Registered Member #37274
Joined: Fri Feb 10 2012, 02:33PM
Location (Home Town): Kampala
Posts: 33
Hi guys. Am trying to display my messages on the lcd in moving format. Pliz guys help me out. How can this be done.
Back to top
kirangowle
Tue Feb 28 2012, 04:07AM

Registered Member #26972
Joined: Thu Mar 18 2010, 09:18AM
Location (Home Town): Bangalore, Karnataka
Posts: 587
First have u succeeded with SMS Reception and display the same on LCD.
Back to top
Alvanbert
Tue Feb 28 2012, 04:42AM
Registered Member #37274
Joined: Fri Feb 10 2012, 02:33PM
Location (Home Town): Kampala
Posts: 33
Yes kiran. Sorry i didnt tell u that. I can display the sms on lcd. Problem is if msg is a bit long. It gets cut off. So i thout displaying it in a moving format wud solve problem. If nt pliz give me some alternatives. Thanx
Back to top
firoz3321
Tue Feb 28 2012, 12:04PM
Registered Member #24995
Joined: Thu Jan 07 2010, 06:12AM
Location (Home Town): kakinada
Posts: 235
I am sorry that i might be wrong, but this code worked for me :

CODE:

for(int i=0; i<40; i++)
{              
   LCDCmd(0x80);
  LCDWriteString("HELLO:");
  LCDCmd(0xC0);
  LCDWriteString("This is Feroz,Testing LCD scrolling CODE");   // Maximum 40 chars
  LCDCmd(0x1C);
  _delay_ms(200);
}//END For
 


[ Edited Tue Feb 28 2012, 12:05PM ]
Back to top
majoka
Wed Feb 29 2012, 06:51AM

Registered Member #22104
Joined: Thu Sep 10 2009, 03:04PM
Location (Home Town): Wah Cantt, Pakistan
Posts: 3900
@ firoz3321
u can take it as a reference

scroll_lcd.rar
Back to top
Alvanbert
Wed Feb 29 2012, 12:42PM
Registered Member #37274
Joined: Fri Feb 10 2012, 02:33PM
Location (Home Town): Kampala
Posts: 33
Hi Guys, Below i have attached the code. it can read from address 1 t0 5 while displaying the message. But it can only display message in the first line of lcd. Can i mek it display same message in all lines i.e if its long.

Thanx Majoka AND Froz3321 for the code for ur help. The messages can scroll one at a time but not one after the other, i thout this was better. If u get the idea pliz help me edit this code accordingly. Thanks

CODE:

#include <REGX52.H>

#define LCD P1
#define LCD_EN          0x80
#define LCD_RS          0x20
                     
//LCD Commands        

#define LCD_SETMODE                0x04
#define LCD_SETVISIBLE     0x08
#define LCD_SETFUNCTION    0x28
#define LCD_SETDDADDR      0x80

void delayms(unsigned char);
void delayus(unsigned char);
void lcd_init();
void lcd_reset();
void lcd_cmd (char);
void lcd_data(unsigned char);
void lcd_str (unsigned char *);
void clear(void);
void tx0(unsigned char);
void delay_sms (unsigned int);
void SMSString(char*text) ;
void init();
void read_text(unsigned char *);
unsigned int var,i,n;
unsigned char j,abc;
unsigned char idata msg1[150];
unsigned char rec_no[20];
unsigned char time_date[20];
void gsm_loop(unsigned int);

void serial () interrupt 4
{
msg1[abc]=SBUF;
abc++;
RI=0;
}

void main (void)
{

n=0x35;

gsm_loop(n);
delay_sms(2000);
}

void gsm_loop(unsigned int n)
{
  for(i=0x31;i<=n;i++)
  {
  clear();
  init();
  lcd_init();
  var=i;
  SMSString("AT\r"); // AT commands to initialize gsm modem
  delay_sms(1000);

  SMSString( "ATe0\r"); // turn off echo
  delay_sms(1000);

  SMSString( "AT&W\r"); // save settings
  delay_sms(1000);

  SMSString( "AT+CMGF=1\r"); // select text mode for sms
  delay_sms(1000);

  SMSString( "AT+CNMI=2,1,0,0,0\r"); // notification of new sms
  delay_sms(1000);

  SMSString( "AT+CMGR=");   // AT command to read sms
  tx0(var);
  SMSString("\r");

  IE=0X90;   // Enable serial interrupt
  delay_sms(2000);

  read_text(msg1);              // read sms and store in buffer msg1

  delay_sms(2000);                       
  IE=0X00;       // Disable all interrupt
           
  }
}


void init(void)
{
j=0;
abc=0;
TL1=0XFD; //9600 @ 11.0592
TH1=0xFD;
TMOD=0x20;
SCON=0x50;
TR1=1;
}

void SMSString(unsigned char* text) //function to send SMS using GSM modem
{
while (*text)
{
tx0(*text++);
}
}


void tx0(unsigned char x) //send data to serial port 0
{
EA=0;
SBUF=x;
while(TI==0);
TI=0;
EA=1;
}


void delay_sms (unsigned int count)
{
unsigned int i;                         // Keil v7.5a
    while(count) {
        i = 115;
                while(i>0) i--;
        count--;
}
}

void read_text( unsigned char *msg)
{
unsigned char *temp;
temp=msg;
do
msg++;
while(*msg!='#');
msg++;
do
*temp++=*msg++;
while(*msg!='#');       // reaching at end of message
*temp='\0';


lcd_cmd(0x80);
lcd_str(msg1);



         // array having message

}

void lcd_reset()
{
        LCD = 0xFF;
        delay_sms(40);
        LCD = 0x03+LCD_EN;
        LCD = 0x03;
        delay_sms(40);
        LCD = 0x03+LCD_EN;
        LCD = 0x03;
        delay_sms(5);
        LCD = 0x03+LCD_EN;
        LCD = 0x03;
        delay_sms(5);
        LCD = 0x02+LCD_EN;
        LCD = 0x02;
        delay_sms(5);
}


void lcd_init ()
{
        lcd_reset();
        lcd_cmd(LCD_SETFUNCTION);                    // 4-bit mode - 1 line - 5x7 font.
        lcd_cmd(LCD_SETVISIBLE+0x04);                // Display no cursor - no blink.
        lcd_cmd(LCD_SETMODE+0x02);                   // Automatic Increment - No Display shift.
        lcd_cmd(LCD_SETDDADDR);                      // Address DDRAM with 0 offset 80h.
 }

 void lcd_cmd (char cmd)
{
        LCD = ((cmd >> 4) & 0x0F)|LCD_EN;
        LCD = ((cmd >> 4) & 0x0F);

        LCD = (cmd & 0x0F)|LCD_EN;
        LCD = (cmd & 0x0F);

    delay_sms(1);
}

void lcd_data (unsigned char dat)
{
        LCD = (((dat >> 4) & 0x0F)|LCD_EN|LCD_RS);
        LCD = (((dat >> 4) & 0x0F)|LCD_RS);
       
        LCD = ((dat & 0x0F)|LCD_EN|LCD_RS);
        LCD = ((dat & 0x0F)|LCD_RS);

    delay_sms(1);
}

void clear(void)
{
unsigned char a;
for(a=0;a<100;a++)
msg1[a]=0x00;
}

void lcd_str (unsigned char *str)
{
        while(*str){
                lcd_data(*str++);
        }
}

 
Back to top
kirangowle
Thu Mar 01 2012, 08:11AM

Registered Member #26972
Joined: Thu Mar 18 2010, 09:18AM
Location (Home Town): Bangalore, Karnataka
Posts: 587
Is above code is working fine at all time..
Try to send msgs continuously of 10msgs and see does it receives all of them.
Back to top
Page 3 of 6    1 2 [3] 4 5 6  

Jump:     Back to top

Syndicate this thread: rss 0.92 Syndicate this thread: rss 2.0 Syndicate this thread: RDF
Powered by e107 Forum System

© 2010 Rickey's World
Render time: 0.0819 sec, 0.0089 of that for queries. DB queries: 69. Memory Usage: 3,022kB