Education_and_avr_microcontroller

در نمایش آنلاین پاورپوینت، ممکن است بعضی علائم، اعداد و حتی فونت‌ها به خوبی نمایش داده نشود. این مشکل در فایل اصلی پاورپوینت وجود ندارد.




  • جزئیات
  • امتیاز و نظرات
  • متن پاورپوینت

امتیاز

درحال ارسال
امتیاز کاربر [0 رای]

نقد و بررسی ها

هیچ نظری برای این پاورپوینت نوشته نشده است.

اولین کسی باشید که نظری می نویسد “AVR Microcontrollers”

AVR Microcontrollers

اسلاید 1: AVR MicrocontrollersFirsrt Session

اسلاید 2: منابع : منابع موجود در www.atmel.comمرجع كامل ميكروكنترلرهاي AVR - انتشارات نص - محمد مهدي پرتوي فر و ..ميكروكنترلرهاي AVR و كاربردهاي آنها - انتشارات نص - امير ره افروزنرم افزارها : CodeVisionAVRProteusAVR Studio

اسلاید 3: ميان ترم : 5 نمرهتمرين : 3 نمرهپروژه : 3 نمرهپايان ترم : 10 نمره

اسلاید 4: IntroductionATMEL 8 bit MicrocontrollerFamiliesTiny90S (CLASSIC)MegaLCD AVRExecute One Instruction Per Cycle (MIPS)

اسلاید 5: جایگزینی تراشه های قدیمی

اسلاید 6: نام میکروکنترلر از دو یا سه قسمت تشکیل شده استATMEGA 16ATMEGA 8ATTINY 28LATTINY 28 Vقسمت اول نوع و سری میکرو و قسمت دوم حافظه flash را بیان می کند.قسمت سوم مخفف low power و very low power است. که در جدول زیر شرح داده شده است:

اسلاید 7:

اسلاید 8: PDIP-Package – Mega32

اسلاید 9: TQFP/MLF Package – Mega32

اسلاید 10:

اسلاید 11: ArchitectureRISC: Reduced Instruction Set Computer ==> AVRCISC: Complex Instruction Set Computer

اسلاید 12: CPU Structures

اسلاید 13:

اسلاید 14: Memory TypesDataSRAM (Static Random Access Memory)EEPROM (Electrically Erasable Programmable Read Only Memo)ProgramFlash

اسلاید 15: Program MemoryFlash (for mega32)32K Bytes of In-System Self-Programmable Flash Endurance: 10,000 Write/Erase Cycles

اسلاید 16: Data MemoriesSRAM (for mega32)2K Byte Internal SRAM- Register file, I/O Register, Data Address.EEPROM (for mega32)1024 Bytes EEPROM Endurance: 100,000 Write/Erase Cycles

اسلاید 17: Program Counter (PC)Instruction Register (IR)Instruction Decoder (ID)

اسلاید 18: REGISTER FILES

اسلاید 19:

اسلاید 20: X-Y-Z Registers

اسلاید 21:

اسلاید 22: ALUArithmetic And Logic UnitArithmeticADD R1,R2R1R1+R2LogicAND R1,R2R1R1 AND R2

اسلاید 23: فیوز بیت هاقسمتی از حافظه میکرو کنترلر ها هستند که امکاناتی را در اختیار کاربر قرار می دهند و با پاک شدن حافظه میکرو تنظیمات آنها از بین نمی رود

اسلاید 24: Clock Source

اسلاید 25: Clock Sources

اسلاید 26: PDIP-Package – Mega32

اسلاید 27: External Crystal Oscillator

اسلاید 28: Low Frequency Crystal Oscillator

اسلاید 29: External RC Oscillator

اسلاید 30: Calibrated Internal RC Oscillator

اسلاید 31: External Clock

اسلاید 32: Timer/Counter OscillatorFor AVR microcontrollers with Timer/Counter Oscillator pins (TOSC1 and TOSC2), the crystal is connected directly between the pins. No external capacitors are needed. The Oscillator is optimized for use with a 32.768 kHz watch crystal. Applying an external clock source to TOSC1 is not recommended.

اسلاید 33: Clock Distribution

اسلاید 34:

اسلاید 35:

اسلاید 36: AVR MicrocontrollersSecond Session

اسلاید 37: SRAM Management

اسلاید 38: SRAM Data Memory (mega32)

اسلاید 39: Programming WithCodevisionAVR

اسلاید 40: Prototype#include <mega32.h>global definitionmain(){local variable;statements;}function1(){local variable;Statements;}function2(){local variable;Statements;}

اسلاید 41: Prototypeچون میکرو همیشه باید در حال فعالیت باشد، درون تابع main یک حلقه دائم قرار داده می شود.#include <mega32.h>global definitionmain(){local variable;دستوراتی که باید یک بار اجرا شوندWhile (1){دستورات و کدهای اصلی برنامه که دائما اجرا می شوند}}

اسلاید 42: نکاتی در مورد برنامه نویسیخط اول همیشه دستور فراخوانی فایل های حاوی توابع header استدر انتهای هر عبارت یک سمی کالن قرار داده می شود} و { در ابتدا و انتهای هر حلقه، عبارت شرطی و یا بلوک قرار داده می شوداز // یا ( /* و */) برای نوشتن توضیح در برنامه استفاده می شود

اسلاید 43: Data TypeTypeSize (Bits)Rangebit10 , 1char8-128 to 127unsigned char80 to 255signed char8-128 to 127int16-32768 to 32767short int16-32768 to 32767unsigned int160 to 65535signed int16-32768 to 32767long int32-2147483648 to 2147483647unsigned long int320 to 4294967295signed long int32-2147483648 to 2147483647float32±1.175e-38 to ±3.402e38double32±1.175e-38 to ±3.402e38

اسلاید 44: متغیر ها و ثابت ها ابتدا باید معرفی شوندنام متغیر نوع متغیر حافظه مورد نیاز برای متغیرeeprom int temp;flash int temp=10;eeprom char str; float a; int b=30;نام متغیر ها می تواند ترکیبی از حروف و اعداد باشد، فقط نام متغیر نباید با عدد شروع شود.

اسلاید 45: Constantsflash int x=123;const char y=‘a’;#define C 100;

اسلاید 46: آرایه هاتعدادی متغیر دلخواه از یک نوع و یک نام که با اندیس های شماره دار از هم جدا هستندint str[10];int i[3]= {2,5,6}رشته(string):به آرایه هایی که حروف اسکی را درون خود نگه می دارند، رشته می گوییم.Char t[5]= “temp”;

اسلاید 47: bit Data typebit x,y;x=1;from R2.0 to R14.7  max=104Set in following menu:Project/Configure/C Compiler/Code Generation/Bit Variable size

اسلاید 48: Operators + - * / % ++ -- = == ~ ! != < > <= >= & && | || ^ ? << >> -= += /= %= &= *= ^= |= >>= <<=

اسلاید 49:

اسلاید 50:

اسلاید 51:

اسلاید 52:

اسلاید 53: Variables[<storage modifier>] <type definition> <identifier>;auto int i;static char x[10];register int y;The volatile modifier must be used in order to prevent a variable to be allocated to registers and to warn the compiler that it may be subject to outside change during evaluation.volatile int abc;

اسلاید 54: Specifying the SRAM Storage Address for Global Variablesint a @0x80;struct x { int a; char c; } alfa @0x90;

اسلاید 55: Structures[<storage modifier>] struct [<structure tag-name>] { [<type> <variable-name>[,<variable-name>, ...]]; [<type> [<bitfield-id>]:<width>[,[<bitfield-id>]:<width>, ...]]; ... } [<structure variables>];struct ram_structure { char a,b; int c; char d[30],e[10]; char *pp; } sr;

اسلاید 56: Accessing the EEPROMeeprom char beta;int eeprom *ptr_to_eeprom;Pointers to the EEPROM always use 16 bits.

اسلاید 57: Including Assembly Language in Your Programwhile (i--) { /* Assembly language code sequence */ #asm nop nop #endasm };}

اسلاید 58: AVR Microcontrollers3th Session

اسلاید 59: Decision and loopsif –elsewhiledo-whileforSwitch - case

اسلاید 60:

اسلاید 61:

اسلاید 62:

اسلاید 63:

اسلاید 64:

اسلاید 65:

اسلاید 66:

اسلاید 67:

اسلاید 68: توابع و فرم تابع نویسی(داده های ورودی) نام تابع نوع داده خروجی}تعریف متغیر های محلیدستوراتبازگرداندن مقدار خروجی در صورت وجود{

اسلاید 69: مثال: برنامه ای بنویسید که عدد ورودی را به توان 3 برساندlong int func( int x){long int s;s=x*x*x;return s;}

اسلاید 70: جایگاه نوشتن توابعتوابع را در دو جا می توان نوشت:1- قبل از تابع main2- در زیر کل برنامه#include<header>Void func(void){دستورات{Void main(){دستورات{

اسلاید 71: #include<header>Void func(void);Void main(void){دستوراتWhile(1){دستورات}}Void func(){دستورات}

اسلاید 72:

اسلاید 73: Libraries math.hstdio.hdelay.hMega16.hAnd …

اسلاید 74: PORTS

اسلاید 75:

اسلاید 76: Input= 0 Output=1 DDRA.0=0; // PA.0 input DDRA.5=1; // PA.5 output DDRC=0xff ; // PORTC Direction

اسلاید 77: Output Latch

اسلاید 78: Input register

اسلاید 79: Example-1برنامه ای بنویسد که بر روی پورت B مقدار 0x28 را بنویسد.#include <mega32.h>void main(void){DDRB=0xFF;while (1) { PORTB=0x28; };}

اسلاید 80: Example-2تابعي بنويسيد كه يك چراغ راهنمايي را بصورت زير پياده سازي كند:سبز : 15ثانيهزرد: 3ثانيهقرمز: 15ثانيه-------------------------------------------------------------------نام تابع : trafficsignalورودي : نداردخروجي : نداردسبز : PORTA.0 زرد: PORTA.1 قرمز : PORTA.2

اسلاید 81: Example-2Header file : delay.hvoid delay_us(unsigned int n);void delay_ms(unsigned int n);مثال : تاخير 100 ميكروثانيه ==< delay_us(100)مثال : تاخير 5 ثانيه == < delay_ms(5000)

اسلاید 82: Example-2#include <mega32.h>#include <delay.h>void traficsignal(void);void main(void){DDRA=0x07;while (1) { traficsignal(); };}void traficsignal(void){PORTA.0=1;PORTA.1=0;PORTA.2=0; delay_ms(15000);PORTA.0=0;PORTA.1=1;PORTA.2=0;delay_ms(3000); PORTA.0=0;PORTA.1=0;PORTA.2=1;delay_ms(15000);}

اسلاید 83: Exercise-11- تابعي بنويسد كه يك چراغ راهنمايي را با دريافت تاخيرها توسط برنامه زير، راه اندازي كند.سبز : Gdelay ثانيهزرد: Ydelay ثانيهقرمز: Rdelay ثانيه-----------------------------------

اسلاید 84: Exercise-1#include <mega32.h>void traficsignal(int gdelay,int ydeay,int rdelay);void main(void){DDRA=0x07;while (1) {traficsignal(x,y,z); };}void traficsignal(int gdelay, int ydelay, int rdelay){PORTA.0=1;PORTA.1=0;PORTA.2=0; delay_ms(gdelay);PORTA.0=0;PORTA.1=1;PORTA.2=0;delay_ms(ydelay); PORTA.0=0;PORTA.1=0;PORTA.2=1;delay_ms(rdelay);}

اسلاید 85: Example-3تابعی بنویسید که یک عدد بی علامت را از پورت A خوانده و بر روی پورت B نشان دهد.#include <mega32.h>void in_out_port(void);void main(void){DDRA=0x00;DDRB=0xff;while (1) { in_out_port(); };} void in_out_port(void){ unsigned char x; x=PINA; PORTB=x;}

اسلاید 86: 7segment

اسلاید 87: Common Anode

اسلاید 88: Common Cathode

اسلاید 89: Example-4برنامه ای بنویسید که اعداد 0 تا 9 را بر روي 7segment آند مشترك به فاصله يك ثانيه نشان دهد .#include <mega32.h>#include <delay.h>unsigned char seven_seg_code(unsigned char num);void main(void){unsigned char i;DDRA=0xff;while (1) { for (i=0;i<10;i++) { PORTA=seven_seg_code(i); delay_ms(1000); } };}

اسلاید 90: Coding

اسلاید 91: Example-4unsigned char seven_seg_code(unsigned char num){unsigned char out;switch(num){case 0:out=0xc0;break;case 1:out=0xf9;break;case 2:out=0xa4;break;case 3:out=0xb0;break;case 4:out=0x99;break;case 5:out=0x92;break;case 6:out=0x83;break;case 7:out=0xf8;break;case 8:out=0x80;break;case 9:out=0x98;break;}return out;}

اسلاید 92: Exercise2- مثال قبل را براي يك 7seg كاتد مشترك پياده سازي كنيد.3- مثال قبل را با استفاده از IC مبدل BCD به 7segment ، 7447 پياده سازي كنيد.4- با استفاده از 7segment كاتد مشترك و IC ، 7448 يك شمارنده 0 تا 9 با فاصله زماني 1 ثانيه بسازيد.5- برنامه اي بنويسيد كه عددي را از پورت B خوانده و برروي 7seg نمايش دهد.6- يك شمارنده 0 تا 99 با فاصله زماني 1 ثانيه بسازيد

اسلاید 93: Double 7Segment

اسلاید 94: AVR Microcontrollers4th Session

اسلاید 95: LCD

اسلاید 96:

اسلاید 97:

اسلاید 98:

اسلاید 99: Initialization/* the LCD module is connected to PORTC */#asm. equ __lcd_port=0x15#endasm/* now you can include the LCD Functions */#include <lcd. h>Lcd_init(20);

اسلاید 100: PORT ADDRESS

اسلاید 101: LCD Configuration With CodeWizard

اسلاید 102: lcd.h – High Levelunsigned char lcd_init(unsigned char lcd_columns)void lcd_clear(void)void lcd_gotoxy(unsigned char x, unsigned char y)void lcd_putchar(char c)void lcd_puts(char *str)void lcd_putsf(char flash *str)

اسلاید 103: unsigned char lcd_init(unsigned char lcd_columns)Example:lcd_init(16)

اسلاید 104: void lcd_clear(void)صفحه ال سی دی را پاک می کندvoid lcd_gotoxy(unsigned char x, unsigned char y)مکان نما را به سطر و ستون دلخواه می بردLcd_gotoxy(4,2)

اسلاید 105: void lcd_putchar(char c)Example :lcd_putchar(a);void lcd_putsf(char flash *str)lcd_putsf(”Hello World);

اسلاید 106: void lcd_puts(char *str)Example:sprintf(buffer, “tempreture= %d”, temp);lcd_puts(buffer);

اسلاید 107: Example - 7 در سطر اول ستون پنجم كاراكتر ‘a’ و در سطر دوم ستون اول عبارت “CodeVisionAVR” را بر روي يك LCD 2x16 نمايش دهيد.#include <mega16.h>#asm .equ __lcd_port=0x1B ;PORTA#endasm#include <lcd.h>#include <delay.h>void main(void){lcd_init(16);while (1) {lcd_clear();lcd_gotoxy(5,0);lcd_putchar(a);lcd_gotoxy(0,1);lcd_putsf(CodeVisionAVR);delay_ms(200); };}

اسلاید 108: Example-8تابعي بنويسيد كه بصورت روان كلمه CodeVision را بر روي LCD نمايش دهد.#include <mega16.h>// Alphanumeric LCD Module functions#asm .equ __lcd_port=0x1B ;PORTA#endasm#include <lcd.h>#include <delay.h>void main(void){int i;lcd_init(16);while (1) { for (i=0;i<7;i++) { lcd_clear(); lcd_gotoxy(i,0); lcd_putsf(CodeVision); delay_ms(400); } };}

اسلاید 109: PULL UP

اسلاید 110: example5برنامه اي بنويسيد كه پين پنجم پورت A را pull up كرده و ورودي آن را بخواند چنانچه ورودي صفر شد يك led را روشن نمايد.#include <mega32.h>void main(void){bit x;DDRA.5=0;PORTA.5=1;DDRA.0=1;PORTA.0=0;SFIOR=0x00;while (1) { x=PINA.5; if (x==0) PORTA.0=1; else PORTA.0=0; };}

اسلاید 111: Keypad

اسلاید 112:

اسلاید 113:

اسلاید 114:

اسلاید 115:

اسلاید 116: Initializationvoid initial_keypad_port(){SFIOR=SFIOR&0xFB;}

اسلاید 117: unsigned char key, butnum; int s;unsigned char keytbl[16]={0xee, 0xed, 0xeb, 0xe7, 0xde, 0xdd, 0xdb, 0xd7, 0xbe, 0xbd, 0xbb, 0xb7, 0x7e, 0x7d, 0x7b, 0x77};DDRC = 0x0f; PORTC = 0xf0; delay_us(5); key = PINC; DDRC = 0xf0; PORTC = 0x0f; delay_us(5); key = key | PINC;

اسلاید 118: if (key != 0xff) { for (butnum=0; butnum<16; butnum++) { if (keytbl[butnum]==key) break; }

اسلاید 119: Key Pressint key_press(){if ( (PINA & 0xF0)!=0xF0 ){delay_ms(T_DEB); // repeat if ( (PINA & 0xF0)!=0xF0 )return 1; // key presselse return 0;// parasite}else return 0;}

اسلاید 120: Find Keyint find_key(){int code, key;// pressed key is in ROW_1PORTA=0b11111110; delay_ms(50); if ((PINA&0xf0)!=0xf0) goto find; // pressed key is in ROW_2 PORTA=0b11111101; delay_ms(50); if ((PINA&0xf0)!=0xf0) goto find; // pressed key is in ROW_3 PORTA=0b11111011; delay_ms(50); if ((PINA&0xf0)!=0xf0) goto find; // pressed key is in ROW_4 PORTA=0b11110111; delay_ms(50); if ((PINA&0xf0)!=0xf0) goto find;

اسلاید 121: Find Key// create codefind: code = ( PINA & 0xF0 ) | ( PORTA & 0x0F ); // COLUMNS value Link With ROWS value switch(code) { case 0xEE:key = R1_C1; break; case 0xDE:key = R1_C2; break; case 0xBE:key = R1_C3; break; case 0x7E:key = R1_C4; break; case 0xED:key = R2_C1; break; case 0xDD:key = R2_C2; break; case 0xBD:key = R2_C3; break; case 0x7D:key = R2_C4; break; case 0xEB:key = R3_C1; break; case 0xDB:key = R3_C2; break; case 0xBB:key = R3_C3; break; case 0x7B:key = R3_C4; break; case 0xE7:key = R4_C1; break; case 0xD7:key = R4_C2; break; case 0xB7:key = R4_C3; break; case 0x77:key = R4_C4; break; default:key = NO_PRS; break; }; PORTA=0xF0;return key;}

اسلاید 122: Key Releasevoid wait_release(){while ((PINA & 0xF0)!=0xF0);delay_ms (T_DEB); // release debounce pass after 20ms}

اسلاید 123: Read Keypadint read_keypad(){ int key; initial_keypad_port(); while ( key_press()== 0); key = find_key(); wait_release(); return key;}

اسلاید 124: ٍExample-9 برنامه اي بنويسيد كه عددي را از keypad خوانده برروي 7segنمايش دهد.

اسلاید 125: #include<mega16.h> #include<delay.h>int key();display(int x);int a;main(){ DDRB=0xff;a=key();display(a);}

اسلاید 126: int key(){ unsigned char key, butnum; int s;unsigned char keytbl[16]={0xee, 0xed, 0xeb, 0xe7, 0xde, 0xdd, 0xdb, 0xd7, 0xbe, 0xbd, 0xbb, 0xb7, 0x7e, 0x7d, 0x7b, 0x77}; DDRC = 0x0f; PORTC = 0xf0; delay_us(5); key = PINC; DDRC = 0xf0; PORTC = 0x0f; delay_us(5); key = key | PINC; if (key != 0xff) { for (butnum=0; butnum<16; butnum++) { if (keytbl[butnum]==key) break; } s=butnum; } else s=17; return s; }

اسلاید 127: display(int x) { char str[16]= {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D, 0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71}; PORTB=str[x]; }

اسلاید 128: نمایش دهدLCD برنامه بالا را طوری تغییر دهید که عدد را بر روی یک

اسلاید 129: ProgrammerSTK 200/300

34,000 تومان

خرید پاورپوینت توسط کلیه کارت‌های شتاب امکان‌پذیر است و بلافاصله پس از خرید، لینک دانلود پاورپوینت در اختیار شما قرار خواهد گرفت.

در صورت عدم رضایت سفارش برگشت و وجه به حساب شما برگشت داده خواهد شد.

در صورت نیاز با شماره 09353405883 در واتساپ، ایتا و روبیکا تماس بگیرید.

افزودن به سبد خرید