Vivz Boonchi
Newbie level 2
Code:
#include<htc.h>
__CONFIG(FOSC_HS&WDTE_OFF&PWRTE_OFF&BOREN_OFF&LVP_OFF);
#define _XTAL_FREQ 20000000
#define ON RB0
#define OFF RB1
#define PIR RB2
#define MAG RB3
#define LCD_rs RA2
#define LCD_en RA3
#define LCD_data PORTD
#define BUZZER RC3
#define AUTOLOCK RC4
#define LED_ON RB6
#define LED_OFF RB7
#define LED2 RB5
void LCD_sendcommand(unsigned char cmd)
{
LCD_data=cmd;
LCD_rs=0;
LCD_en=1;
__delay_ms(1);
LCD_en=0;
__delay_ms(2);
}
void LCD_senddata(unsigned char data)
{
LCD_data=data;
LCD_rs=1;
LCD_en=1;
__delay_ms(1);
LCD_en=0;
__delay_ms(2);
}
void LCD_sendstringdata(unsigned char* data)
{
while(*data!='\0')
{
LCD_senddata(*data);
data++;
}
}
void LCD_init()
{
__delay_ms(15);
LCD_sendcommand(0x38);
LCD_sendcommand(0x0F);
LCD_sendcommand(0x00);
LCD_sendcommand(0x06);
}
void UART_Init()
{
BRGH = 1;
SPBRG = 64;
SYNC = 0;
SPEN = 1;
TRISC = 0b10000000;
CREN = 1;
TXEN = 1;
}
char UART_TX_Empty()
{
return TRMT;
}
char UART_Data_Ready()
{
return RCIF;
}
char UART_Read()
{
while(!RCIF);
return RCREG;
}
void UART_Read_Text(char *Output, unsigned int length)
{
int i;
for(int i=0;i<length;i++)
Output[i] = UART_Read();
}
void UART_Write(char data)
{
while(!TRMT);
TXREG = data;
}
void UART_Write_Text(char *text)
{
int i;
for(i=0;text[i]!='\0';i++)
UART_Write(text[i]);
}
//**********************AT commands initialization**************
char AT[]="AT";
char noecho[]="ATE0";
char mode_text[]="AT+CMGF=1";
char mobile_no[]="AT+CMGS="+60142107184"";
char terminator=0x1A;
char text[]="intruder!!";
//********************String transmit function****************
void send_to_modem(char *s)
{
while(*s)
{
UART_Write(*s++);
}
UART_Write(0X0D);
}
void send_to_modem1(char *s)
{
while(*s)
UART_Write(*s++);
}
void send_sms()
{
send_to_modem(text);
__delay_ms(1000);
UART_Write(terminator);
__delay_ms(1000);
}
void main()
{
TRISB=0b00001111;
PORTB=0X00;
TRISA=0X00;
PORTA=0X00;
TRISC=0X00;
PORTC=0X00;
TRISD=0X00;
PORTD=0X00;
LCD_init();
ADCON1=0x06;
UART_Init(19200);
while(1)
{
{
if (ON==1)
{
RB6=1;
RB7=0;
}
else if (OFF==1)
{
RB7=1;
RB6=0;
AUTOLOCK=0;
BUZZER=0;
LED2=0;
LCD_sendcommand(0x08);
}
if(PIR==1)
{
AUTOLOCK=1;
BUZZER=1;
LED2=1;
LCD_sendcommand(0x80);
LCD_sendstringdata("shutup");
send_to_modem(AT);
__delay_ms(1000);
send_to_modem(noecho);
__delay_ms(1000);
send_to_modem(mode_text);
__delay_ms(1000);
send_to_modem(mobile_no);
__delay_ms(1000);
send_sms();
__delay_ms(10000);
}
else if(MAG==1)
{
AUTOLOCK=1;
BUZZER=1;
LED2=1;
LCD_sendcommand(0x80);
LCD_sendstringdata("Intruders!!!!!!");
send_to_modem(AT);
__delay_ms(1000);
send_to_modem(noecho);
__delay_ms(1000);
send_to_modem(mode_text);
__delay_ms(1000);
send_to_modem(mobile_no);
__delay_ms(1000);
send_sms();
__delay_ms(10000);
}
}
}
}
With coding above,LCD cant display correctly and GSM cant send message.
Please help!
Thanks.:smile:
Last edited by a moderator: