Summer Ppt
-
Upload
honey-chawla -
Category
Documents
-
view
118 -
download
0
Transcript of Summer Ppt
![Page 1: Summer Ppt](https://reader033.fdocuments.us/reader033/viewer/2022061108/544f7dc7b1af9f37778b47e3/html5/thumbnails/1.jpg)
EMBEDDED SYSTEM & ROBOTICS
AVR MICROCONTROLLERATMEGA16
HONEY CHAWLAROLL NO- 101006056
![Page 2: Summer Ppt](https://reader033.fdocuments.us/reader033/viewer/2022061108/544f7dc7b1af9f37778b47e3/html5/thumbnails/2.jpg)
· 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](https://reader033.fdocuments.us/reader033/viewer/2022061108/544f7dc7b1af9f37778b47e3/html5/thumbnails/3.jpg)
![Page 4: Summer Ppt](https://reader033.fdocuments.us/reader033/viewer/2022061108/544f7dc7b1af9f37778b47e3/html5/thumbnails/4.jpg)
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](https://reader033.fdocuments.us/reader033/viewer/2022061108/544f7dc7b1af9f37778b47e3/html5/thumbnails/5.jpg)
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](https://reader033.fdocuments.us/reader033/viewer/2022061108/544f7dc7b1af9f37778b47e3/html5/thumbnails/6.jpg)
Home Automation using DTMF Relay Controller
![Page 7: Summer Ppt](https://reader033.fdocuments.us/reader033/viewer/2022061108/544f7dc7b1af9f37778b47e3/html5/thumbnails/7.jpg)
LCD DISPLAY
![Page 8: Summer Ppt](https://reader033.fdocuments.us/reader033/viewer/2022061108/544f7dc7b1af9f37778b47e3/html5/thumbnails/8.jpg)
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](https://reader033.fdocuments.us/reader033/viewer/2022061108/544f7dc7b1af9f37778b47e3/html5/thumbnails/9.jpg)
DTMF IC CM8870
![Page 10: Summer Ppt](https://reader033.fdocuments.us/reader033/viewer/2022061108/544f7dc7b1af9f37778b47e3/html5/thumbnails/10.jpg)
INTRODUCTION TO RELAYS
![Page 11: Summer Ppt](https://reader033.fdocuments.us/reader033/viewer/2022061108/544f7dc7b1af9f37778b47e3/html5/thumbnails/11.jpg)
ULN2803
![Page 12: Summer Ppt](https://reader033.fdocuments.us/reader033/viewer/2022061108/544f7dc7b1af9f37778b47e3/html5/thumbnails/12.jpg)
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](https://reader033.fdocuments.us/reader033/viewer/2022061108/544f7dc7b1af9f37778b47e3/html5/thumbnails/13.jpg)
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](https://reader033.fdocuments.us/reader033/viewer/2022061108/544f7dc7b1af9f37778b47e3/html5/thumbnails/14.jpg)
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](https://reader033.fdocuments.us/reader033/viewer/2022061108/544f7dc7b1af9f37778b47e3/html5/thumbnails/15.jpg)
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](https://reader033.fdocuments.us/reader033/viewer/2022061108/544f7dc7b1af9f37778b47e3/html5/thumbnails/16.jpg)
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](https://reader033.fdocuments.us/reader033/viewer/2022061108/544f7dc7b1af9f37778b47e3/html5/thumbnails/17.jpg)
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](https://reader033.fdocuments.us/reader033/viewer/2022061108/544f7dc7b1af9f37778b47e3/html5/thumbnails/18.jpg)
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](https://reader033.fdocuments.us/reader033/viewer/2022061108/544f7dc7b1af9f37778b47e3/html5/thumbnails/19.jpg)
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](https://reader033.fdocuments.us/reader033/viewer/2022061108/544f7dc7b1af9f37778b47e3/html5/thumbnails/20.jpg)
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](https://reader033.fdocuments.us/reader033/viewer/2022061108/544f7dc7b1af9f37778b47e3/html5/thumbnails/21.jpg)
DIGITAL CLOCK USING 7 SEGMENT DISPLAY
![Page 22: Summer Ppt](https://reader033.fdocuments.us/reader033/viewer/2022061108/544f7dc7b1af9f37778b47e3/html5/thumbnails/22.jpg)
Hardware Details
![Page 23: Summer Ppt](https://reader033.fdocuments.us/reader033/viewer/2022061108/544f7dc7b1af9f37778b47e3/html5/thumbnails/23.jpg)
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](https://reader033.fdocuments.us/reader033/viewer/2022061108/544f7dc7b1af9f37778b47e3/html5/thumbnails/24.jpg)
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](https://reader033.fdocuments.us/reader033/viewer/2022061108/544f7dc7b1af9f37778b47e3/html5/thumbnails/25.jpg)
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](https://reader033.fdocuments.us/reader033/viewer/2022061108/544f7dc7b1af9f37778b47e3/html5/thumbnails/26.jpg)
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](https://reader033.fdocuments.us/reader033/viewer/2022061108/544f7dc7b1af9f37778b47e3/html5/thumbnails/27.jpg)