Documente Academic
Documente Profesional
Documente Cultură
SOURCECODE
#include "LCD.c"
#include <stdio.h>
#define TranEna 0x00080000 //P0.16 --> LCD.11 (D4)
#define TranEna_Set() IO0SET |= TranEna
#define TranEna_Clr() IO0CLR |= TranEna
#define DELAY_SEC 7500000
void wait_sec(void);
void TransmitRF (unsigned char);
void Transmit_Dec(unsigned char ch);
void RFDelay (unsigned char);
#define _ADC_H
#define _ADC_H
#define END_0F_CONVERSION_BIT
(1<<31)
#define END_OF_CONVERSION(i)
(i & END_0F_CONVERSION_BIT)
#define ADC_VALUE_MASK
0x03FF
#define ADC_CHANNEL_NUMBER_MASK
0x07
#define CHANNEL_0
#define CHANNEL_1
#define CHANNEL_2
#define CHANNEL_3
#define CHANNEL_4
#define CHANNEL_5
#define CHANNEL_6
#define CHANNEL_7
0
1
2
3
4
5
6
7
0x00000001
0x00000002
0x00000004
0x00000008
0x00000010
0x00000020
0x00000040
0x00000080
#define AD1_0
#define AD1_1
#define AD1_2
#define AD1_3
0x00000001
0x00000002
0x00000004
0x00000008
#define AD1_4
#define AD1_5
#define AD1_6
#define AD1_7
0x00000010
0x00000020
0x00000040
0x00000080
#define CLKDIV_BIT0
(1<<8)
#define CLKDIV_BIT1
(1<<9)
#define CLKDIV_BIT2
(1<<10)
#define CLKDIV_BIT3
(1<<11)
#define CLKDIV_BIT4
(1<<12)
#define CLKDIV_BIT5
(1<<13)
#define CLKDIV_BIT6
(1<<14)
#define CLKDIV_BIT7
(1<<15)
#define BURST
(1<<16)
#define CLKS_BIT0 (1<<17)
#define CLKS_BIT1 (1<<18)
#define CLKS_BIT2 (1<<19)
#define PDN
(1<<21)
#define START_BIT0
(1<<24)
#define START_BIT1
(1<<25)
#define START_BIT2
(1<<26)
#define EDGE
(1<<27)
//TN_EVENT EVT_ADC0;
//TN_EVENT EVT_ADC1;
void adc0_isr(void);
void adc1_isr(void);
void init_adc0( void );
void init_adc1( void );
unsigned short adc_read(unsigned char adc_num, unsigned char ch);
#endif
void READSENSOR_DATA(void);
void process_adc(void);
void init_adc0(void);
void init_adc1(void);
unsigned short adc_read(unsigned char adc_num, unsigned char ch);
////////////////////////////////////////////////////////////////////////////////////////////
#define _DONE_BIT 0X80000000
int adc_val,adc_val1,cmp;
void Enable_Uart_Intrpt(void);
void init_serial (void);
void UART0ISR (void) __irq ;
unsigned char a[100]; //used for UART0
unsigned char ut0=0;
unsigned char temp;
char uart0_buf[];
void send_bcd(int value);
void ascii(unsigned int data);
void delay(void);
void delay_ms1(unsigned long int);
void del_1ms
(void);
void del_30ms
(void);
void del_1s
(void);
void del_3ms
(void);
void print_uart0(void);
void Enter(void);
void displaydata(void);
unsigned short X, Y, Z, W;
unsigned char a[]={"Design of ARM Based Embedded Ethernet Interface"};
unsigned char a1[]={"
\r\n************************************************** \r\n"}; //60
unsigned char a8[]={" \r\n-------------------------------------------------- \r\n"}; //60
unsigned char a2[]={" \r\n Design of ARM-Based \r\n"}; //34
unsigned char a3[]={" \r\n As per MTech cource curriculam \r\n"}; //41
unsigned char a4[]={" \r\n Deveoloped by hemanth \r\n"}; // 31
unsigned char a5[]={" \r\n Embedded Ethernet Interface \r\n"};
// 38
unsigned char a6[]={" \r\n Rmc Engineering College \r\n"}; //38
unsigned char b[]={"Usg Ethernet LAN \r\n"};
#define
#define
#define
#define
D1
D2
D3
D4
0x00000100
0x00000200
0x00000400
0x00000800
//
if(X<L1)
{
cmd_lcd(0x01);
cmd_lcd(0x84);
display_lcd("LIGHT NOT");
cmd_lcd(0xC2);
display_lcd("AVAILABLE");
delay_ms(100000);
cmd_lcd(0x01);
display_lcd("LIGHT 1 ON ");
IO0SET = D1;
delay_ms(50000000);
}
else
{
cmd_lcd(0x01);
cmd_lcd(0x84);
display_lcd("LIGHT");
cmd_lcd(0xC2);
display_lcd("AVAILABLE");
delay_ms(100000);
cmd_lcd(0x01);
display_lcd("LIGHT 1 OFF ");
IO0CLR = D1;
delay_ms(5000000);
}
delay_ms(100000000);
if(Y>L2)
{
cmd_lcd(0x01);
cmd_lcd(0x80);
display_lcd("HIGH TEMPERATURE");
cmd_lcd(0xC2);
display_lcd("DETECTED");
delay_ms(100000);
cmd_lcd(0x01);
cmd_lcd(0x82);
display_lcd("FAN 2 ON ");
IO0SET=D2;
delay_ms(50000000);
}
else
{
cmd_lcd(0x01);
cmd_lcd(0x84);
display_lcd("NORMAL TEMPERATURE");
cmd_lcd(0xC2);
display_lcd("DETECTED");
delay_ms(100000);
cmd_lcd(0x01);
cmd_lcd(0x82);
display_lcd("FAN 2 OFF ");
IO0CLR=D2;
delay_ms(5000000);
}
delay_ms(100000000);
if(Z>L3)
{
cmd_lcd(0x01);
cmd_lcd(0x84);
display_lcd("HUMIDITY");
cmd_lcd(0xC2);
display_lcd("IS NORMAL");
delay_ms(100000);
cmd_lcd(0x01);
display_lcd("DEVICE 3 ON ");
IO0SET=D3;
delay_ms(5000000);
}
else
{
cmd_lcd(0x01);
cmd_lcd(0x84);
display_lcd("NORMAL HUMIDITY");
cmd_lcd(0xC2);
display_lcd("DETECTED");
delay_ms(100000);
cmd_lcd(0x01);
cmd_lcd(0x81);
display_lcd("DEVICE 3 OFF ");
IO0CLR=D3;
delay_ms(5000000);
}
delay_ms(100000000);
if(W>L4)
{
cmd_lcd(0x01);
cmd_lcd(0x84);
display_lcd("SMOKE");
cmd_lcd(0xC2);
display_lcd("DETECTED");
delay_ms(100000);
cmd_lcd(0x01);
cmd_lcd(0x82);
display_lcd("ALARM 4 ON ");
IO0SET=D4;
delay_ms(5000000);
}
else
{
cmd_lcd(0x01);
cmd_lcd(0x84);
display_lcd("NO SMOKE");
cmd_lcd(0xC3);
display_lcd("DETECTED");
delay_ms(100000);
//
}
delay_ms(500000);
cmd_lcd(0x01);
display_lcd("ALARM 4 OFF ");
IO0CLR=D4;
delay_ms(5000000);
cmd_lcd(0x01);
delay_ms(500000);
init_serial();
//
for(i=0;i<50;i++)
for(i=0;a1[i]!='\0';i++)
{
U0THR=a1[i];
while(!(U0LSR&0X20));
delay_ms(500);
}
//
for(i=0;i<50;i++)
for(i=0;a8[i]!='\0';i++)
{
U0THR=a8[i];
while(!(U0LSR&0X20));
delay_ms(500);
}
//
for(i=0;i<50;i++)
for(i=0;a2[i]!='\0';i++)
{
U0THR=a2[i];
while(!(U0LSR&0X20));
delay_ms(500);
}
//
for(i=0;i<50;i++)
for(i=0;a3[i]!='\0';i++)
{
U0THR=a3[i];
while(!(U0LSR&0X20));
delay_ms(500);
}
//
for(i=0;i<50;i++)
for(i=0;a4[i]!='\0';i++)
{
U0THR=a4[i];
while(!(U0LSR&0X20));
delay_ms(500);
}
//
for(i=0;i<50;i++)
for(i=0;a5[i]!='\0';i++)
{
U0THR=a5[i];
while(!(U0LSR&0X20));
delay_ms(500);
}
//
for(i=0;i<50;i++)
for(i=0;a6[i]!='\0';i++)
{
U0THR=a6[i];
while(!(U0LSR&0X20));
delay_ms(500);
}
//for(i=0;i<50;i++)
for(i=0;b[i]!='\0';i++)
{
U0THR=b[i];
while(!(U0LSR&0X20));
delay_ms(500);
}
//
for(i=0;i<50;i++)
for(i=0;a8 [i]!='\0';i++)
{
U0THR=a8[i];
while(!(U0LSR&0X20));
delay_ms(500);
}
Enter();
Enter();
}
///////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////
void sendsms(unsigned int S1, unsigned int S2,unsigned int S3,unsigned int S4)
{
delay_ms(10000);
cmd_lcd(0x01);
display_lcd("DATA SENDING...");
delay_ms(5000);
sendString("\r\n");
delay_ms(5000);
sendString("***********************************************");
sendString("\r\n");
sendString("\r\n");
delay_ms(50000);
sendString("SENSOR VAL RECEIVING..");
delay_ms(100000);
sendString("\r\n");
sendString("\r\n");
delay_ms(100000);
sendString("LDR SenSor VAL :");
Send_Dec(S1);
delay_ms(1000000);
sendString("\r\n");
delay_ms(1000000);
delay_ms(1000000);
sendString("\r\n");
delay_ms(1000000);
sendString("TEMPERATURE VAL :");
Send_Dec(S2);
delay_ms(1000000);
sendString("\r\n");
delay_ms(1000000);
delay_ms(1000000);
sendString("\r\n");
delay_ms(1000000);
sendString("HUMIDITY VAL :");
Send_Dec(S3);
delay_ms(1000000);
sendString("\r\n");
delay_ms(1000000);
delay_ms(1000000);
sendString("\r\n");
delay_ms(1000000);
sendString("SMOKE VALUE :");
Send_Dec(S4);
delay_ms(1000000);
sendString("\r\n");
sendString("\r\n");
delay_ms(1000000);
delay_ms(50000);
sendString("************************************************");
sendString("\r\n");
sendString("\r\n");
delay_ms(50000);
cmd_lcd(0x01);
display_lcd(" SENSOR VALUES....");
delay_ms(2000);
cmd_lcd(0xC2);
display_lcd("SENDED......");
delay_ms(10000000);
}
////////////////////////////////////////////////////////////////////
void sendString(unsigned char *str)
{
while(*str != '\0')
Send_Data(*str++);
delay_ms(10000);
}
//////////////////////////////////////////////////////////////////////////////////////////////////
void Enable_Uart_Intrpt(void)
{
VICVectCntl0 = 0x00000026;
VICVectAddr0 = (unsigned)UART0ISR;
VICIntEnable = 0x00000040; // Enable UART0 Interrupt
U0IER = 0x03;
interrupts
//
}
IO1DIR = 0xffffffff;
void init_serial(void)
{
PINSEL0 = 0x00000005; // Enable RxD0 and TxD0
U0LCR = 0x83;
// 8 bits, no Parity, 1 Stop bit
U0DLL = 97;
// 9600 Baud Rate @ 15MHz VPB Clock
U0LCR = 0x03;
// DLAB = 0
U0FCR = 0x01;
// FIFO Enable
}
void UART0ISR (void) __irq
{
while(!(U0LSR & 0x01));//Loop for UART0 RDR(Receive Data
Ready(U0RBR contains valid data))
a[ut0]=U0RBR; //Taking Received value into the array "a" @ location "ut0"
//
U0THR = temp;
Transmit pin"
if(ut0==15)
cmd_lcd(0xc0);
if(ut0==31)
{ ut0=0;
cmd_lcd(0x01);
}
*/
ut0++;
/////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////
void Send_Dec(unsigned int ch)
{
unsigned char x1,x2,x3,temp;
x1 =ch%10; // first decimal digit
temp=ch/10; //
x2 =temp%10; // second digit
temp=temp/10;
x3 =temp%10; // third digit
x3 =dis[x3];
x2 =dis[x2];
x1 =dis[x1];
Send_Data(x3);
del_1s();
Send_Data(x2);
del_1s();
Send_Data(x1);
del_1s();
}
//////////////////////////////////////////////////////////////////////
int Send_Data(int data)
{
while (!(U0LSR & 0x20));
delay_ms(20000);
U0THR = data;
return (U0THR);
}
void Send_String(char* string, unsigned char no_of_bytes)
{
int i, stringlength = no_of_bytes;
for(i=1; i<=stringlength; i++)
{
Send_Data(*string++);
delay_ms(1000000);
}
}
/********************************************************************
*/
/* Write character to UART0 */
/********************************************************************
*/
void putchar0 (int ch)
{
if (ch == '\n')
{
while (!(U0LSR & 0x20));
// Wait TXD Buffer Empty
U0THR = 0x0D;
// Write CR
}
while (!(U0LSR & 0x20));
// Wait TXD Buffer Empty
U0THR = ch;
// Write Character
}
///////////////////////////////////////////////////////////////////////
/*
void print_uart0(void)
{
while(*p)
{
putchar0(*p);
// Write char to
UART
p++;
delay_ms(10);
}
}
*/
/* delay interrupt routine*/
void delay(void)
{
unsigned int i;
for(i=0;i<=60000;i++);
}
///////////// DELAYS /////////////////////////////////////////////////////////
void del_1ms(void)
{
unsigned char j;
for(j=0;j<100;j++);
}
void del_3ms(void)
{
unsigned char i,j;
for(i=0;i<15;i++)
for(j=0;j<98;j++);
}
void del_30ms(void)
{
unsigned char j;
for(j=0;j<10;j++)
del_3ms();
}
void del_1s(void)
{
unsigned char i;
for(i=0;i < 60;i++)
del_30ms();
}
////////////////////////////////////////////////////////////////////
/********************************************************************
**************************
Function Name :
main()
Description :
Input : Void
*********************************************************************
*************************/
void READSENSOR_DATA(void)
{
PINSEL0=0X00000000;
PINSEL1=0x00000000;
IO0DIR=0x0000FFFF;
IO1DIR = IO1DIR| 0xFF000000;
// Initialize LCD
init_adc0();
delay_ms(500000);
cmd_lcd(0x01);
//
X = adc_read(0,1);
X= ((5.00*X)/1024)*100;
X = ((5.00*X)/0xff);
X=X+10;
/*
init_adc0();
delay_ms(10000);
X = adc_read(0,1);
X = ((3.3*X)/1024)*100;
X = X - 10;
*/
delay_ms(10000000);
cmd_lcd(0x01);
display_lcd("READING TEMPERATURE");
delay_ms(500000);
cmd_lcd(0xc0);
display_lcd(" VALUE ");
init_adc0();
delay_ms(10000000);
Y = adc_read(0,2);
Y=Y-54;
Y= ((3.3*Y)/1024)*100;
delay_ms(10000000);
cmd_lcd(0x01);
display_lcd("READING HUMIDITY");
delay_ms(500000);
cmd_lcd(0xc0);
display_lcd(" VALUE ");
init_adc0();
delay_ms(10000000);
Z = adc_read(0,3);
Z= ((3.3*Z)/1024)*100;
Z=Z-64;
delay_ms(10000000);
cmd_lcd(0x01);
display_lcd("READING SMOKE");
delay_ms(500000);
cmd_lcd(0xc0);
display_lcd(" VALUE ");
//
init_adc0();
delay_ms(10000000);
W = adc_read(0,4);
W= ((3.3*W)/1024)*100;
W = ((5.00*W)/0xff);
W=W+106;
delay_ms(10000000);
init_adc0();
cmd_lcd(0x01);
display_lcd("LDR VALUE :");
cmd_lcd(0xc0);
display_lcd(" ");
delay_ms(10000000);
Dec(X);
//
send_bcd(X);
delay_ms(5000000);
cmd_lcd(0x01);
display_lcd("TEMPERATURE VALUE:");
cmd_lcd(0xc0);
display_lcd(" ");
delay_ms(5000000);
Dec(Y);
//
send_bcd(Y);
delay_ms(5000000);
cmd_lcd(0x01);
display_lcd("HUMIDITY VALUE :");
delay_ms(5000000);
cmd_lcd(0xc0);
display_lcd(" ");
//
Dec(Z);
send_bcd(Z);
delay_ms(5000000);
delay_ms(50000);
cmd_lcd(0x01);
display_lcd("SMOKE VALUE :");
delay_ms(500000);
cmd_lcd(0xc0);
display_lcd(" ");
//
Dec(W);
send_bcd(W);
delay_ms(5000000);
cmd_lcd(0x01);
delay_ms(500000);
display_lcd("DISPLAY SENSOR");
delay_ms(5000000);
cmd_lcd(0xC0);
display_lcd("VALUES CMPLTD");
delay_ms(500000);
cmd_lcd(0x01);
init_serial();
delay_ms(500);
cmd_lcd(0x01);
}
/********************************************************************
**************************
Function Name :
process_adc()
Description :
Input : Void
Output : Void
Note :
*********************************************************************
*************************/
void process_adc(void)
{
}
/********************************************************************
*************
Function Name :init_adc0()
Description : Initialises the ADC0
Input :
None
Output :
None
*********************************************************************
***********/
void init_adc0(void)
{
PINSEL1 = (PINSEL1 & ~(3 << 28)) | (1 << 28);
PINSEL1 |= 0x15000000;
}
/********************************************************************
*************
Function Name :init_adc1()
Description : Initialises the ADC1
Input :
None
Output :
None
Note :
*********************************************************************
***********/
void init_adc1(void)
{
}
/********************************************************************
*************
Function Name : adc_read()
Description :
Input
: adc number,channel
Output
: 10 bit AD value
Note
:
*********************************************************************
***********/
unsigned short adc_read(unsigned char adc_num, unsigned char ch)
{
while(value>=10)
{
value=value-10;
d2++ ;
}
ascii(d2);
d1=value;
ascii(d1);
}
void ascii(unsigned int data)
{
data=data+0x30;
write_lcd(data);
delay_ms(500000);
U0THR=data;
while(!(U0LSR&0X20));
}
REFERENCES
Reference books:
Cryptography & Network security by William Stallings, 4th edition, prentice hall of
India
Embedded systems using microcontroller 8051, M.A.mazidi., PHI publications
Embedded C, Dr.K.V.K.K.Prasad, 4th edition. Dream-tech publications
Embedded & Real time control systems, Dr.K.V.K.K.Prasad, 4th edition. Dream-tech
publications
Internet :
www.keil.com
www.wiznet.com
www.wikipedia.org
www.electronics-lab.org