27
EMBEDDED SYSTEM & ROBOTICS AVR MICROCONTROLLER ATMEGA16 HONEY CHAWLA ROLL NO- 101006056

Summer Ppt

Embed Size (px)

Citation preview

Page 1: Summer Ppt

EMBEDDED SYSTEM & ROBOTICS

AVR MICROCONTROLLERATMEGA16

HONEY CHAWLAROLL NO- 101006056

Page 2: Summer Ppt

·        16KB of Flash memory        ·        1KB of SRAM        ·        512 Bytes of EEPROM        ·         Available in 40-Pin DIP        ·         8-Channel 10-bit ADC        ·         Two 8-bit Timers/Counters        ·         One 16-bit Timer/Counter        ·         4 PWM Channels        ·         In System Programmer (ISP)        ·         Serial USART        ·         SPI Interface        ·         Digital to Analog Comparator.

Page 3: Summer Ppt
Page 4: Summer Ppt

Different compilers and burner software information:            Compiler used are                                                                AVR studio,winAVR,CVAVR   C-code converted to hex                                                              AVRGCC   Hex code transferred to hardware programme                        USBASP   Serial hardware programmer                                                       STK500   Parallel hardware programmer                                                    STK200   USB hardware programmer                                                          USBASP   Serial software programmer                                                         Siprog   Parallel software programmer                                                      AVR Dude,ponyprog   USB software programmer                                                            AVR Dude

Page 5: Summer Ppt

Configuring I/O Ports :-

Every  PORTX(A,B,C & D) have three registers associated with it to configure I/O Ports . These are• DDRX• PORTX• PINX

Basic overview of program written for AVR Microcontroller i.e ATmega16

#include<avr.io.h>                           //header files#include<util/delay.h>                   //header filesint main(){DDRA=0xff;                                       //data direction registerPORTA=0xff;                                      //values to be supplied at output of port are                  written in this register//}

Page 6: Summer Ppt

Home Automation using DTMF Relay Controller

Page 7: Summer Ppt

LCD DISPLAY

Page 8: Summer Ppt

INTRODUCTION TO D.T.M.F(DUAL TONE MULTIPLE FREQUENCY DIGIT LOW FREQUENCY(HZ) HIGH FREQUENCY(HZ)

1 697 1209

2 697 1336

3 697 1477

4 770 1209

5 770 1336

6 770 1477

7 852 1209

8 852 1336

9 852 1477

0 941 1336

* 941 1209

# 941 1477

Page 9: Summer Ppt

DTMF IC CM8870

Page 10: Summer Ppt

INTRODUCTION TO RELAYS

Page 11: Summer Ppt

ULN2803

Page 12: Summer Ppt

16*2 LCDVSS: power supply(GND)VCC: power supply(+5v)VEE: contrast adjustRS  : 0=Instruction input        1=Data inputR/W: 0=write to LCD 

module        1=read from LCD 

moduleEN  : enable signalD0  : Data bus line 0D1  : Data bus line 1D2  : Data bus line 2D3  : Data bus line 3D4  : Data bus line 4D5  : Data bus line 5D6  : Data bus line 6D7  : Data bus line 7

Page 13: Summer Ppt

Basic terminology used in writing LCD programFor executing instruction command will bevoid LCD_cmd(unsigned char item)          //function to execute instruction{PORTB=item;PORTB|=(0<<RS)|(0<<RW)|(1<<EN);_delay_ms(1);PORTB|=(0<<RS)|(0<<RW)|(0<<EN);_delay_ms(1);}

For executing data command will bevoid LCD_data(unsigned char item)        //function to execute data{PORTB=item;PORTB|=(1<<RS)|(0<<RW)|(1<<EN);_delay_ms(1);PORTB|=(1<<RS)|(0<<RW)|(0<<EN);_delay_ms(1);

Page 14: Summer Ppt

For initializing of LCD in 4-bit mode logic will bevoid LCD_init()          //function to initialize{dis_cmd(0x02);        //to initialize LCD in 4-bit modedis_cmd(0x28);        //to initialize LCD in 2 lines,5*7 dotsdis_cmd(0x0c);        //display on cursor ondis_cmd(0x06);       //for autoincrement mode}

For instructions masking logic will bevoid dis_cmd(unsigned char item)    //function to send instructions{unsigned int value;value=item & 0xf0;LCD_cmd(value);item=((item<<4)&0xf0);LCD_cmd(item);}

Page 15: Summer Ppt

For data masking logic will bevoid dis_data(unsigned char item)    //function to send data{unsigned int value;value=item & 0xf0;LCD_data(value);item=((item<<4)&0xf0);LCD_data(item);}

Page 16: Summer Ppt

Code of Program used :-#include<avr/io.h>#include<util/delay.h>

#define LCD_port PORTC#define RS PC0#define RW PC1#define EN PC2

void LCD_cmd(unsigned char item);void LCD_data(unsigned char item);void dis_cmd(unsigned char item);void dis_data(unsigned char item);void LCD_init(void);void LCD_string(unsigned char str[]);

int main(){DDRB=0xff;DDRA=0x00;DDRC=0xff;LCD_init();

Page 17: Summer Ppt

while(1){     if((PINA & 0b00001111)==1)      //connect dtmf pins to porta   {   PORTB|=0x01;                      // lcd to portc   dis_cmd(0x83);   LCD_string("relay1");           //relay to portb   }

   if((PINA & 0b00001111)==2)   {   PORTB|=0x02;   dis_cmd(0x83);   LCD_string("relay2");   }   if((PINA & 0b00001111)==3)   {   PORTB &=0xfe;   }

   if((PINA & 0b00001111)==4)   {   PORTB|=0x04;   dis_cmd(0x83);   LCD_string("relay3");   }

Page 18: Summer Ppt

 if((PINA & 0b00001111)==5)   {   PORTB &=0xfd;   }if((PINA & 0b00001111)==6)   {   PORTB &=0xfb;   }

   if((PINA & 0b00001111)==8)   {   PORTB|=0x08;   dis_cmd(0x83);   LCD_string("relay4");   }   if((PINA & 0b00001111)==9)   {   PORTB &=0xf7;   }

}   return 0;}void LCD_cmd(unsigned char item){    LCD_port=item;    LCD_port|=(0<<RS)|(0<<RW)|(1<<EN);   _delay_ms(1);    LCD_port|=(0<<RS)|(0<<RW)|(0<<EN);   _delay_ms(1);}

Page 19: Summer Ppt

void LCD_data(unsigned char item){    LCD_port=item;    LCD_port|=(1<<RS)|(0<<RW)|(1<<EN);   _delay_ms(1);    LCD_port|=(1<<RS)|(0<<RW)|(0<<EN);   _delay_ms(1);}void dis_cmd(unsigned char item){    unsigned int value1;    value1=item & 0xf0;    LCD_cmd(value1);    item=(item<<4) & 0xf0;    LCD_cmd(item);}

void dis_data(unsigned char item){    unsigned int value1;    value1=item & 0xf0;    LCD_data(value1);    item=(item<<4) & 0xf0;    LCD_data(item);}

Page 20: Summer Ppt

void LCD_init(void){    dis_cmd(0x02);    _delay_ms(1);

    dis_cmd(0x28);   _delay_ms(1);

    dis_cmd(0x06);   _delay_ms(1);

    dis_cmd(0x0c);   _delay_ms(1);

    dis_cmd(0x80);   _delay_ms(1);}void LCD_string(unsigned char str[]){     unsigned int i=0;   while(str[i]!='\0')   {   dis_data(str[i]);   _delay_ms(1);    i++;   }}

Page 21: Summer Ppt

DIGITAL CLOCK USING 7 SEGMENT DISPLAY

Page 22: Summer Ppt

Hardware Details

Page 23: Summer Ppt

Code of Program for Digital Clock#include<avr/io.h>#include<util/delay.h>

int main(){ DDRB=0xff;

DDRD=0xff;

while(1){ clk();}return 0;

}

void display(int x){ if(x==0){PORTD=0b10000001;}

if(x==1){PORTD=0b10110111;}if(x==2){PORTD=0b11000010;}if(x==3){PORTD=0b10010010;}if(x==4){PORTD=0b10110100;}if(x==5){PORTD=0b10011000;}if(x==6){PORTD=0b10001000;}if(x==7){PORTD=0b10110011;}if(x==8){PORTD=0b10000000;}if(x==9){PORTD=0b10110000;}

}

Page 24: Summer Ppt

void ssd_number(int x,int y){ if(y==1){PORTB=0x01;display(x);}

if(y==2){PORTB=0x02;display(x);}if(y==3){PORTB=0x04;display(x);}if(y==4){PORTB=0x08;display(x);}if(y==5){PORTB=0x10;display(x);}if(y==6){PORTB=0x20;display(x);}

}

void clk(void){for(int b=0;b<3;b++){     for(int a=0;a<10;a++)          {for(int i=0;i<6;i++)

       { for(int j=0;j<10;j++)   { for(int k=0;k<6;k++)

{ for(int l=0;l<10;l++){

Page 25: Summer Ppt

for(int p=0;p<10;p++)            {

ssd_number((l%10),1);_delay_ms(5);ssd_number((k%10),2);_delay_ms(5);ssd_number((j%10),3);_delay_ms(5);ssd_number((i%10),4);_delay_ms(5);ssd_number((a%10),5);_delay_ms(5);ssd_number((b%10),6);_delay_ms(5);

}}}}}

                }}                }

Page 26: Summer Ppt

Apart from the project what I have learnt during Summer Training in I3 Indya are:-

• Interfacing of LEDS with ATmega16• Displaying digits using 7 segment display• Motor Interfacing with ATmega16• Interfacing of keypad with ATmega16 • Introduction to ADC• Introduction to Sensors• Introduction to Interrupts• Introduction to Touch Screen• Introduction to RF Communication• Introduction to Serial Communication

Page 27: Summer Ppt