- Aim: To send a message using gsm module from microcontroller to phone.
- Code:
#define F_CPU 8000000UL
#define BAUD RATE 9600
#include<avr/io.h>
#include<util/delay.h>
void lcd_cmd(char value);
void lcd_data(char value);
void lcd_string(char *str);
void lcd_num(unsigned int number);
void usart_init();
void usart_transmit(char x);
char usart_recieve();
int j=0;
void initialize()
{
lcd_cmd(0x01); //clear LCD
lcd_cmd(0x02); //home position
lcd_cmd(0x06); //L-R
//lcd_cmd(0x04);
lcd_cmd(0x28); //4 bit mode
lcd_cmd(0x0C); //character generation
}
void lcd_cmd(char value)
{
int un,ln; // pc7-pc4 = un ; pc3-pc4 =ln
un=value&0xF0; // & is anding function
PORTC=0x04|un;
_delay_ms(2);
PORTC=0x00|un;
_delay_ms(2);
ln=(value<<4)&0xF0; //<<=left shif by 4 bits
_delay_ms(2);
PORTC=0x04|ln;
_delay_ms(2);
PORTC=0x00|ln;
}
void lcd_data(char value)
{
int un,ln; // pc7-pc4 = un ; pc3-pc4 =ln
un=value&0xF0; // & is anding function
PORTC=0x05|un;
_delay_ms(2);
PORTC=0x01|un;
_delay_ms(2);
ln=(value<<4)&0xF0; //<<=left shif by 4 bits
_delay_ms(2);
PORTC=0x05|ln;
_delay_ms(2);
PORTC=0x01|ln;
}
void lcd_string(char *str)
{
int i=0;
while(str[i]!='\0')
{
lcd_data(str[i]);
i++;
}
}
void lcd_num(unsigned int number)
{
lcd_cmd(0x04);
int d=0;
if(number>0){
while(number!=0)
{
d=number%10;
lcd_data(d+48);
number=number/10;
}}
else lcd_string("0");
}
void usart_init(){
UBRRH=0;
UBRRL=51; // or 0x33
UCSRB=0x18;
UCSRC=0x86;
}
void usart_transmit(char x){
UDR=x; //data gets stored in UDR
lcd_cmd(0x80+j);
lcd_data(x);
j++;
while((UCSRA&0x20)==0);
}
char usart_recieve(){
while((UCSRA&0x80)==0);//Till it gets overflow
return UDR;
}
void read(char *str){
int i=0;
while(str[i]!='\0')
{
usart_transmit(str[i]);
i++;
}
}
int main(){
DDRC=0xFF;
initialize();
_delay_ms(2);
usart_init();
int k=0;
while(1){
k++;
if(k==1){
read("AT");
usart_transmit(0x2B);
read("CMGF");
usart_transmit(0x3D);
read("1");
usart_transmit(0x0D);
_delay_ms(10);
read("AT");
usart_transmit(0x2B);
read("CMGS");
usart_transmit(0x3D);
usart_transmit(0x22);
usart_transmit(0x2B);
read("916380327990");
usart_transmit(0x22);
usart_transmit(0x0D);
_delay_ms(10);
read("HELLO");
usart_transmit(0x1A);
usart_transmit(0x0D);
_delay_ms(100);
break;
}
}}
#define BAUD RATE 9600
#include<avr/io.h>
#include<util/delay.h>
void lcd_cmd(char value);
void lcd_data(char value);
void lcd_string(char *str);
void lcd_num(unsigned int number);
void usart_init();
void usart_transmit(char x);
char usart_recieve();
int j=0;
void initialize()
{
lcd_cmd(0x01); //clear LCD
lcd_cmd(0x02); //home position
lcd_cmd(0x06); //L-R
//lcd_cmd(0x04);
lcd_cmd(0x28); //4 bit mode
lcd_cmd(0x0C); //character generation
}
void lcd_cmd(char value)
{
int un,ln; // pc7-pc4 = un ; pc3-pc4 =ln
un=value&0xF0; // & is anding function
PORTC=0x04|un;
_delay_ms(2);
PORTC=0x00|un;
_delay_ms(2);
ln=(value<<4)&0xF0; //<<=left shif by 4 bits
_delay_ms(2);
PORTC=0x04|ln;
_delay_ms(2);
PORTC=0x00|ln;
}
void lcd_data(char value)
{
int un,ln; // pc7-pc4 = un ; pc3-pc4 =ln
un=value&0xF0; // & is anding function
PORTC=0x05|un;
_delay_ms(2);
PORTC=0x01|un;
_delay_ms(2);
ln=(value<<4)&0xF0; //<<=left shif by 4 bits
_delay_ms(2);
PORTC=0x05|ln;
_delay_ms(2);
PORTC=0x01|ln;
}
void lcd_string(char *str)
{
int i=0;
while(str[i]!='\0')
{
lcd_data(str[i]);
i++;
}
}
void lcd_num(unsigned int number)
{
lcd_cmd(0x04);
int d=0;
if(number>0){
while(number!=0)
{
d=number%10;
lcd_data(d+48);
number=number/10;
}}
else lcd_string("0");
}
void usart_init(){
UBRRH=0;
UBRRL=51; // or 0x33
UCSRB=0x18;
UCSRC=0x86;
}
void usart_transmit(char x){
UDR=x; //data gets stored in UDR
lcd_cmd(0x80+j);
lcd_data(x);
j++;
while((UCSRA&0x20)==0);
}
char usart_recieve(){
while((UCSRA&0x80)==0);//Till it gets overflow
return UDR;
}
void read(char *str){
int i=0;
while(str[i]!='\0')
{
usart_transmit(str[i]);
i++;
}
}
int main(){
DDRC=0xFF;
initialize();
_delay_ms(2);
usart_init();
int k=0;
while(1){
k++;
if(k==1){
read("AT");
usart_transmit(0x2B);
read("CMGF");
usart_transmit(0x3D);
read("1");
usart_transmit(0x0D);
_delay_ms(10);
read("AT");
usart_transmit(0x2B);
read("CMGS");
usart_transmit(0x3D);
usart_transmit(0x22);
usart_transmit(0x2B);
read("916380327990");
usart_transmit(0x22);
usart_transmit(0x0D);
_delay_ms(10);
read("HELLO");
usart_transmit(0x1A);
usart_transmit(0x0D);
_delay_ms(100);
break;
}
}}
- Hardware information:
- GSM Module
- Additional Information
1)Compatible with only 2g/3g networks.
2) one major application is that it can be used for automation of home. It can be used to control various devices using messages.
- Conclusion:
Comments
Post a Comment