در این پست از سایت اِمیک, نحوه نمایش متن متحرک روی LCD کاراکتری اموزش داده خواهد شد. این پروژه با استفاده از میکروکنترلر AVR و بوسیله ی کامپایلر کدویژن (CodeVision) انجام شده است. در ادامه با نحوه انجام این پروژه بیشتر اشنا خواهید شد.
پروژه AVR نمایش متن متحرک روی LCD کاراکتری :
در این پروژه AVR علاوه بر LCD کاراکتری 2*16 از یک میکروکنترلر ATmega16 و یک پتانسیومتر 10K نیز استفاده شده است. پتانسیومتر برای تنظیم روشنایی (کنتراست) ال سی دی کاراکتری استفاده شده است, در صورتی که نخواستید از پتانسیومتر استفاده کنید پین 3 ال سی دی را به زمین متصل کنید. در ادامه شماتیک این پروژه را مشاهده می کنید:
همانطور که در شماتیک بالا مشاهده می کنید, LCD کاراکتری به پورت D میکروکنترلر متصل شده است. قبلا در پست “نوشتن متن روی LCD کاراکتری” ال سی دی کاراکتری را راه اندازی کرده بودیم که در ان پست با ال سی دی کاراکتری و پایه های ان اشنا شدید. در صورتی که با ترتیب پایه های LCD کاراکتری 2*16 اشنا نیستید حتما پست معرفی شده را مطالعه کنید.
عملکرد پروژه به این صورت است که متن مورد نظر ما که در این مثال ما از متن WWW.EMIC.IR استفاده کرده ایم, در ابتدا حروف ان یکی یکی روی LCD نمایش داده می شوند. بعد از اینکه متن بطور کامل نوشته شد, متن شروع به جابجایی بین سطر اول و دوم LCD می کند. در مرحله بعد متن WWW.EMIC.IR از راست به چپ در سطر دوم LCD شروع به حرکت می کند و در وسط LCD متوقف می شود. و در اخر تمام عبارات نوشته شده روی LCD کاراکتری حرف به حرف پاک می شوند و دوباره این فرایند از اول شروع می شود و ادامه دارد. در انتهای مطلب می توانید کلیپ عملکرد پروژه را مشاهده کنید.
پایه های تغذیه میکروکنترلر (پایه های 10 و 11) که در تصویر بالا وجود ندارند را فراموش نکنید به تغذیه 5 ولت متصل کنید.
برنامه کدویژن :
در این پروژه فرکانس میکروکنترلر یک مگاهرتز تنظیم شده است. در زیر برنامه نوشته شده به زبان C و کامپایلر کدویژن را مشاهده می کنید:
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 |
////////// WWW.EMIC.IR ////////// #include <mega16.h> #include <alcd.h> #include <delay.h> void main(void) { int i,a; char text[]={'W','W','W','.','E','M','I','C','.','I','R'}; // درون یک ارایه برای نمایش روی ال سی دی WWW.EMIC.IR قرار دادن حروف عبارت// //میکروکنترلر برای اتصال به ال سی دی خروجی شده اند D در زیر پین های پورت// DDRD=(1<<DDD7) | (1<<DDD6) | (1<<DDD5) | (1<<DDD4) | (1<<DDD3) | (1<<DDD2) | (1<<DDD1) | (1<<DDD0); PORTD=(0<<PORTD7) | (0<<PORTD6) | (0<<PORTD5) | (0<<PORTD4) | (0<<PORTD3) | (0<<PORTD2) | (0<<PORTD1) | (0<<PORTD0); lcd_init(16); while (1) { lcd_clear(); //یکی یکی با فاصله زمانی 120 میلی ثانیه روی ال سی دی کاراکتری نمایش داده می شوند WWW.EMIC.IR در زیر حروف عبارت// for(i=0;i<11;i++) { lcd_gotoxy(i,0); lcd_putchar(text[i]); delay_ms(120); } //بین سطر اول و دوم ال سی دی می شوند WWW.EMIC.IR زیر باعث جابجایی عبارت FOR دو حلقه// for(i=0;i<6;i++) { for(a=1;a>=0;a--) { lcd_clear(); lcd_gotoxy(2,a); lcd_putsf("WWW.EMIC.IR"); delay_ms(150); } } // در سطر دوم ال سی دی می شود WWW.EMIC.IR زیر باعث حرکت عبارت FOR حلقه// for(i=15;i>1;i--) { lcd_gotoxy(i,1); lcd_putsf("WWW.EMIC.IR "); delay_ms(100); } //در زیر عبارات نوشته شده روی ال سی دی کاراکتری حرف به حرف و با فاصله زمانی 150 میلی ثانیه پاک می شوند// delay_ms(1500); for(i=12;i>1;i--) { lcd_gotoxy(i,1); lcd_putsf(" "); lcd_gotoxy(i,0); lcd_putsf(" "); delay_ms(150); } } } |
توضیحات قسمت های مهم برنامه نوشته شده, اگر سوالی داشتید می تونید در قسمت نظرات مطرح کنید. فقط دقت کنید که مقدار شمارنده حلقه های FOR (متغیر i) در خط های 20,35,42 برنامه با توجه به طول عبارت WWW.EMIC.IR که 11 کاراکتر می باشد, مقدار دهی شده و شما باید با توجه به طول عبارت مورد نظر خود متغیر i را در سه خط معرفی شده در بالا مقدار دهی کنید.
کلیپ تست عملی پروژه :
پسورد فایل زیپ : www.emic.ir
نظر یادتون نره …
البته لازمه اشاره کنم که قسمت بالا و پایین کردن متن در صفحه LCD چندان جالب در نمیاد!
تست کردم و خوب جواب داد.
سلام من چند تا سوال داشتم امکانش هست ایمیلتون رو داشته باشم .
سلام
ایمیل: emic1395@gmail.com
سلام اگر بخوام یک متن با بیشتر از 16 کاراکتر رو به صورت متحرک نمایش بدم چه تغییری باید ایجاد کنم تو برنامه؟
سلام میتونم این پروژه رو با atmega 32 انجام بدم . اگه میشه لطفا توضیح بدید که باید کد یا شماتیک رو عوض کنم یا خیر
سلام, بله فقط کافیه در ابتدای برنامه mega16 را به mega32 تغییر بدید. شماتیک و ادامه برنامه نیازی به تغییر ندارد