به نام خدا : شمارنده پالس مربعی با میکروکنترلر avr – توضیح پروژه : راسش این پروژه رو یکی از دوستان تو سایت مطرح کرد که براش درست کنیم؛ پروژه ساده ای هستش ، با وقفه نوشتمش چون دقیق کار میکنه و اگه در مورد وقفه چیزی نمیدونید مطلب زیر رو بخونید : آموزش جامع میکروکنترلر AVR جلسه۳ (موضوع : وقفه) ؛ یه منبع ولتاژ پالس هم وصل کردم به پایه های int0 و int1 که یکی تو حالت rise و اون یکی تو حالت fall هستش یعنی یکی به صفر(صفر منطقی-یا ۰ ولت) حساسه و یکی به یک(یک منطقی یا ۵ ولت)؛ حالا با وقفه هر موقع که مقدار ولتاژ منبع ما ۰ یا ۵ ولت بشه به میکرو میگه و میکرو هم توسط دو متغییر مقدار اینا رو ذخیره میکنه و در lcd نشون میده. وسلام به همین سادگی و به همین… ؛ البته شما میتونید منبع تغزیه رو تغییر بدید و یه منبع ولتاژ سینوسی-دی سی و… بزارین(اصلا هرچی عشقتون کشید)
شمارنده پالس مربعی با میکروکنترلر avr
اگه مطلب مربوط به وقفه رو که در بالا گزاشتم رو بخونید دو سه خط کد زیر رو سه سوت میفهمید که کارشون چیه.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
#include <mega16.h> #include <delay.h> //تابع تاخیر زمانی //با تعریف کتابخانه زیر میتوانیم از //توابع تبدیل انواع متغیر به هم استفاده کنیم #include <stdlib.h> #include <lcd.h> #asm .equ __lcd_port=0x1B; //PORTA #endasm //تعریف متغییر ها unsigned long int i=0,j=0; char ii[],jj[]; ///////////////////////////////////////////////// interrupt [EXT_INT0] void exit_vagfe_int0 (void) { if(PIND.2==1) { i++; lcd_gotoxy(0,0); //تعیین مکان نوشتن lcd_puts(" "); lcd_gotoxy(0,0); lcd_puts("V~5 : ");//نوشتن متن itoa(i,ii); //تبدیل چار به آرایه lcd_puts(ii); //نمایش مقدار آرایه } } ///////////////////////////////////////////////// interrupt [EXT_INT1] void exit_vagfe_int1 (void) { if(PIND.3==0) { j++; lcd_gotoxy(0,1); lcd_puts(" "); lcd_gotoxy(0,1); lcd_puts("V~0 : "); itoa(j,jj); lcd_puts(jj); } } ///////////////////////////////////////////////// //تابع اصلی پروژه void main(void) { DDRB.0=0; lcd_init(16); GICR=0xc0; // فعال کردن وقفه ۰ و ۱ MCUCR=0x0b; // تعیین نحوه فعال و غیر فعال شدن (نحوه تحریک شدن) وقفه ۰ , ۱ GIFR=0xc0; //دادن قدرت تصمیم گیری به وقفه ۰ و ۱ #asm("sei") //فعال کردن وقفه سراسری } |
مهمان
سلام.
چرا توی ال سی دی کاراکتری منویسیم × منویسه:
<-
اما توی گرافیکی نه!
مهمان
درود
در ورودی مدار را اگر شبکه محافظ مثلا مانند مقاومت و دیود قرار دهیم بهتر است ممکن است برخی افراد بدون آگاهی از این موضوع میکرو خود را از دست دهند و آه و ناله شان را نثار شما کنند …
مهمان
سلام و درود
آقا مهدی از توضیحات فارسی در کد برنامه هایت بسیار خوشم آمد.
امیدوارم در آموزشهای دیگرتان هم باشد.
سپاس