Professional Documents
Culture Documents
h>
#include<util/delay.h>
#include<compat/deprecated.h>
#include<avr/interrupt.h>
#include <avr/sleep.h>
#include <stdio.h>
#include <stdlib.h>
#include<inttypes.h>
#define SCLK 0
#define SDIN 1
#define DC 2
#define SCE 3
#define RST 4
void lcd_cmd(char);
void lcd_data(char);
void lcd_clear(void);
void lcd_init(void);
void lcd_string(char*ptr);
void lcd_position(char);
void lcd_gotoxy(char,char);
void welcome_note(void);
void usart_init(void);
void modem_chk(void);
void condition_chk(void);
void network_init(void);
void poweron_rtc(void);
void poweron_rtcedit(void);
void rtc_read(void);
void calling_fun(void);
void dial_fun(void);
void incoming_chk(void);
void display_innum(void);
void send_sms_fun(void);
void sms_read_fun(void);
char b[100],a[10],dial[20],incomnum[20];
char Receivedbyte,touchrecv,touchstore;
int ts,k,start,d,num,fkey=0,fring=0,fans;
char frtc=0;
/******************************************************/
char ltab[96][5]={
};
/*************************************/
typedef struct {
int x;
int y;
}touch;
touch Get_Touch_Coordinate(void);
/*************************************/
DDRC = 0xFF;
lcd_init();
lcd_clear();
welcome_note();
usart_init();
modem_chk();
poweron_rtc();
a[ts]=0x0a;
poweron_rtcedit();
network_init();
a[ts]=0x0a;
d=0;
lcd_gotoxy(0x44,0x80);
frtc=0;
while(1)
touchscreen_scan();
k=0;
incoming_chk();
if(fring==1)
display_innum();
if(fkey==1)
frtc=1;
calling_fun();
if(frtc==0)
rtc_read();
send_sms_fun();
_delay_ms(100);
/*************************************/
void display_innum(void)
fring=0;
lcd_gotoxy(0x44,0x80);
k=0;
usart_string("AT+CLIP=1");
usart_transmit(0x0D);
_delay_ms(500);
k=21;
num=0;
do
incomnum[num]=b[k];
k++;
num++;
while(b[k]!=0x2c);
lcd_gotoxy(0x45,0x80);
num=0;
do
lcd_position(incomnum[num]);
num++;
while(incomnum[num]!=0x22);
_delay_ms(1000);
frtc=0;
/*************************************/
void calling_fun(void)
fkey=0;
if(a[ts]==0x2B)
dial[d]=';';
d++;
dial[d]=0x0D;
d++;
dial[d]=0x00;
dial_fun();
if(a[ts]==0x2D)
lcd_gotoxy(0x44,0x80);
lcd_gotoxy(0x45,0x80);
lcd_string(" ");
usart_string("ATH");
usart_transmit(0x0D);
_delay_ms(500);
d=0;
while(d==15)
dial[d]=0;
d++;
d=0;
_delay_ms(100);
lcd_gotoxy(0x44,0x80);
lcd_string(" ");
lcd_gotoxy(0x44,0x80);
frtc=0;
else
dial[d]=a[ts];
d++;
/*************************************/
void dial_fun(void)
k=0;
usart_string("AT+SPEAKER=1");
usart_transmit(0x0D);
_delay_ms(100);
lcd_gotoxy(0x44,0x80);
lcd_string("Calling... ");
lcd_gotoxy(0x45,0x80);
usart_string("ATD");
_delay_ms(10);
d=0;
while(dial[d]!=0x00)
{
usart_transmit(dial[d]);
lcd_position(dial[d]);
_delay_ms(10);
d++;
/*************************************/
void incoming_chk(void)
k=2;
if((b[2]=='R')&(b[3]=='I')&(b[4]=='N')&(b[5]=='G'))
fring=1;
//lcd_gotoxy(0x43,0x80);
else
k=0;
/*************************************/
void send_sms_fun(void)
/*************************************/
void rtc_read(void)
{
k=0;
usart_string("AT+CCLK?");
usart_transmit(0x0D);
_delay_ms(1000);
lcd_gotoxy(0x42,0x95);
k=10;
do
lcd_position(b[k]);
k++;
while(b[k]!=0x2c);
k++;
lcd_gotoxy(0x40,0xA5);
do
lcd_position(b[k]);
k++;
while(b[k]!=0x22);
lcd_gotoxy(0x44,0x80);
/*************************************/
void touchscreen_scan(void)
touch TS_val;
TS_val=Get_Touch_Coordinate();
if((TS_val.y>=877)&&(TS_val.y<=938))lcd_position('1');
else if((TS_val.y>=790)&&(TS_val.y<=856))lcd_position('2');
else if((TS_val.y>=711)&&(TS_val.y<=777))lcd_position('3');
else if((TS_val.y>=627)&&(TS_val.y<=691))lcd_position('4');
else if((TS_val.y>=553)&&(TS_val.y<=606))lcd_position('5');
else if((TS_val.y>=465)&&(TS_val.y<=526))lcd_position('6');
else if((TS_val.y>=384)&&(TS_val.y<=445))lcd_position('7');
else if((TS_val.y>=295)&&(TS_val.y<=364))lcd_position('8');
else if((TS_val.y>=215)&&(TS_val.y<=295))lcd_position('9');
else if((TS_val.y>=134)&&(TS_val.y<=194))lcd_position('0');
fkey=1;
if((TS_val.y>=877)&&(TS_val.y<=938))lcd_position('Q');
else if((TS_val.y>=790)&&(TS_val.y<=856))lcd_position('W');
else if((TS_val.y>=711)&&(TS_val.y<=777))lcd_position('E');
else if((TS_val.y>=627)&&(TS_val.y<=691))lcd_position('R');
else if((TS_val.y>=553)&&(TS_val.y<=606))lcd_position('T');
else if((TS_val.y>=465)&&(TS_val.y<=526))lcd_position('Y');
else if((TS_val.y>=384)&&(TS_val.y<=445))lcd_position('U');
else if((TS_val.y>=295)&&(TS_val.y<=364))lcd_position('I');
else if((TS_val.y>=215)&&(TS_val.y<=295))lcd_position('O');
else if((TS_val.y>=134)&&(TS_val.y<=194))lcd_position('P');
fkey=1;
}
if((TS_val.y>=840)&&(TS_val.y<=895))lcd_position('A');
else if((TS_val.y>=756)&&(TS_val.y<=815))lcd_position('S');
else if((TS_val.y>=676)&&(TS_val.y<=735))lcd_position('D');
else if((TS_val.y>=601)&&(TS_val.y<=653))lcd_position('F');
else if((TS_val.y>=508)&&(TS_val.y<=575))lcd_position('G');
else if((TS_val.y>=426)&&(TS_val.y<=485))lcd_position('H');
else if((TS_val.y>=345)&&(TS_val.y<=401))lcd_position('J');
else if((TS_val.y>=265)&&(TS_val.y<=323))lcd_position('K');
else if((TS_val.y>=185)&&(TS_val.y<=235))lcd_position('L');
fkey=1;
if((TS_val.y>=852)&&(TS_val.y<=933))lcd_position('+');
else if((TS_val.y>=763)&&(TS_val.y<=812))lcd_position('Z');
else if((TS_val.y>=671)&&(TS_val.y<=735))lcd_position('X');
else if((TS_val.y>=591)&&(TS_val.y<=651))lcd_position('C');
else if((TS_val.y>=508)&&(TS_val.y<=571))lcd_position('V');
else if((TS_val.y>=426)&&(TS_val.y<=485))lcd_position('B');
else if((TS_val.y>=345)&&(TS_val.y<=401))lcd_position('N');
else if((TS_val.y>=265)&&(TS_val.y<=325))lcd_position('M');
else if((TS_val.y>=145)&&(TS_val.y<=225))lcd_position('-');
fkey=1;
}
if((TS_val.x>=145)&&(TS_val.x<=252)) //FIFTH ROW
if((TS_val.y>=847)&&(TS_val.y<=933))lcd_position('/');
else if((TS_val.y>=748)&&(TS_val.y<=830))lcd_position(':');
else if((TS_val.y>=145)&&(TS_val.y<=325))lcd_clear();
fkey=1;
else
{}
_delay_ms(500);
/**************************************/
touch Get_Touch_Coordinate(void)
touch val;
DDRA=0x03;
cbi(PORTA,0);
sbi(PORTA,1);
_delay_ms(10);
ADMUX = 0x03;
ADCSRA =0XC5;
l = ADCL;
y = y << 8;
y = y + l;
DDRA = 0x0C;
cbi(PORTA,2);
sbi(PORTA,3);
_delay_ms(10);
ADMUX = 0x01;
ADCSRA = 0xC5;
l1 = ADCL;
x = x << 8;
x = x + l1;
val.x=x;
val.y=y;
return val;
/**************************************/
ISR(USART_RXC_vect)
Receivedbyte = UDR;
b[k]=Receivedbyte;
k++;
/**************************************/
void poweron_rtc(void)
{
k=0;
usart_string("AT+CCLK?");
usart_transmit(0x0D);
_delay_ms(100);
lcd_clear();
lcd_gotoxy(0x42,0x95);
k=10;
do
lcd_position(b[k]);
k++;
while(b[k]!=0x2c);
k++;
lcd_gotoxy(0x40,0xA5);
do
lcd_position(b[k]);
k++;
while(b[k]!=0x22);
/**************************************/
void poweron_rtcedit(void)
k=0;
usart_string("AT+CCLK=");
usart_transmit(0x22);
lcd_gotoxy(0x42,0x95);
do
touchscreen_scan();
if((a[ts]>=0x20)&&(a[ts]<=0x59))
if(a[ts]==0x20)
else
//lcd_position(a[ts]);
usart_transmit(a[ts]);
a[ts]=0x0a;
while(a[ts]!=0x20);
a[ts]=0x0a;
usart_transmit(0x2c);
lcd_gotoxy(0x40,0xA5);
a[ts]=0x0a;
do
touchscreen_scan();
if((a[ts]>=0x20)&&(a[ts]<=0x59))
if(a[ts]==0x20)
{
else
//lcd_position(a[ts]);
usart_transmit(a[ts]);
a[ts]=0x0a;
while(a[ts]!=0x20);
usart_transmit(0x22);
usart_transmit(0x0D);
_delay_ms(500);
/**************************************/
void network_init(void)
k=0;
usart_string("AT+COPS=0");
usart_transmit(0x0D);
_delay_ms(100);
k=0;
usart_string("AT+COPS=3,0");
usart_transmit(0x0D);
_delay_ms(100);
k=0;
usart_string("AT+COPS?");
usart_transmit(0x0D);
_delay_ms(100);
lcd_gotoxy(0x41,0x9A);
k=14;
do
lcd_position(b[k]);
k++;
while(b[k]!=0x22);
/**************************************/
void modem_chk(void)
do
k=0;
usart_string("AT");
usart_transmit(0x0D);
_delay_ms(100);
condition_chk();
while(start!=1);
_delay_ms(1000);
}
/**************************************/
void condition_chk(void)
if((b[2]=='O')&(b[3]=='K'))
lcd_clear();
lcd_string("Modem Tested");
_delay_ms(500);
start=1;
else
lcd_gotoxy(0x40,0x80);
lcd_string("Modem Testing");
start=0;
/**************************************/
while(*str)
usart_transmit(*str);
str++;
k=0;
/**************************************/
{
while(!(UCSRA & 0x20));
UDR = dat;
/**************************************/
void usart_init(void)
UCSRB = 0x98;
UCSRC = 0x06;
UBRRL = 0x67;
UBRRH = 0x00;
sei();
/**************************************/
void welcome_note(void)
lcd_string("************");
lcd_gotoxy(0x41,0x99);
lcd_string("RaviTeja");
lcd_gotoxy(0x42,0x99);
lcd_string("UDAY KIRAN");
lcd_gotoxy(0x43,0x80);
lcd_string("************");
_delay_ms(3000);
lcd_clear();
/**************************************/
void lcd_string(char*ptr)
while(*ptr)
{
lcd_position(*ptr);
ptr++;
/**************************************/
touchrecv=data;
unsigned int n;
pos=data-0x20;
for(n=0;n<5;n++)
lcd_data(ltab[pos][n]);
lcd_data(0x00);
a[ts]=touchrecv;
/*************************************/
void lcd_init(void)
sbi(PORTC,RST);
_delay_us(5);
cbi(PORTC,RST);
_delay_us(5);
sbi(PORTC,RST);
lcd_cmd(0x21);
lcd_cmd(0x13);
lcd_cmd(0x06);
lcd_cmd(0xc8);
lcd_cmd(0x20);
lcd_cmd(0x0c);
lcd_cmd(0x40);
lcd_cmd(0x80);
/*************************************/
unsigned int i;
cbi(PORTC,DC);
cbi(PORTC,SCE);
cbi(PORTC,SCLK);
for(i=0;i<8;i++)
if(temp&0x80)
sbi(PORTC,SDIN);
else
cbi(PORTC,SDIN);
sbi(PORTC,SCLK);
_delay_us(5);
cbi(PORTC,SCLK);
temp=temp<<1;
/*************************************/
unsigned int i;
sbi(PORTC,DC);
cbi(PORTC,SCE);
cbi(PORTC,SCLK);
for(i=0;i<8;i++)
if(temp&0x80)
sbi(PORTC,SDIN);
else
cbi(PORTC,SDIN);
sbi(PORTC,SCLK);
_delay_us(5);
cbi(PORTC,SCLK);
temp=temp<<1;
/*************************************/
void lcd_clear(void)
unsigned int j;
for(j=0;j<=504;j++)
lcd_data(0x00);
lcd_gotoxy(0x40,0x80);
/*************************************/
lcd_cmd(x);
lcd_cmd(y);
}