آموزش AVRپروژه AVRپروژه اتمل استودیو

آموزش ساخت تابلو روان با میکروکنترلر AVR در اتمل استودیو

پروژه تابلو روان با کامپایلر اتمل استودیو را آماده کردیم ! فیلم عملکرد مدار را از دست ندهید !

پروژه تابلو روان با میکروکنترلر AVR در Atmel Studio

در این آموزش میخواهیم یک تابلو روان 8*8 را با استفاده از میکروکنترلر Atmega 32 (دیتاشیت مگا 32) طراحی کنیم .تابلو روان دارای 64 عدد ال ای دی می باشد و در قالب ماتریس مرتب شده است، این 64 عدد ال ای دی را بر روی فیبر نقطه ای لحیم میکنیم. LED ها میتوانند هر رنگی باشند، هر رنگی که در دسترس باشد را انتخاب کنید .یک برنامه به زبان C برای میکروکنترلر می نویسیم، میکروکنترلر با توجه به برنامه قدرت مناسب را برای نمایش کاراکتر ها در حالت روشن فراهم میکند. همچنین با مولتی پلکس آشنا میشیوید. این برنامه فقط برای اسکرول حروف انگلیسی است.

فیلم زیر را مشاهده کنید تا به طور کامل با نحوه کار این پروژه آشنا شوید.

مالتی پلکس چیست ؟

چشم انسان نمیتواند  فرکانس بیشتر از 30hz را ضبط کند، این یعنی اگر یک چراغ به طور مداوم و با سرعت 30hz یا بیشتر روشن و خاموش شود، چشم انسان آن را به طور مداوم روشن میبیند. به این کار مولتی پلکس میگویند. پیشنهاد میکنم مقاله نمایشگر سون سگمنت و آموزش مالتی پلکس را بخوانید زیرا به این پروژه ما بسیار مرتبط است.

به عنوان مثال  یخواهیم LED های 57 و 50 رو بدون روشن کردن 58 و 49 روشن کنیم . ترفند ما این است که ابتدا ردیف اول ال ای دی 57 را روشن کنیم و 1ms منتظر میمانیم و آن را خاموش میکنیم. این چرخه به طور مداوم با فرکانس بالا ادامه پیدا میکند و ال ای دی 50 و 57 به سرعت روشن میشوند و هر دو ال ای دی به طور مداوم روشن به چشم می آیند. به این معنی که فقط یک بار در یک ردیف قرار میدهیم و احتمال روشن شدن بقیه ال ای دی ها را حذف میکنیم. از این تکنیک برای نشان دادن تمامی کاراکتر ها استفاده میکنیم.

ما برای هر کاراکتر مقدار دهی کردیم و این مقادیر را به میکروکنترلرمان می دهیم  این برنامه این مقدار ها را از چپ به راست به طور مداوم نشان میدهد.

شماتیک پروژه تابلو روان با اتمل استودیو

64 عدد ال ای دی در تصویر زیر مرتب شده اند ، بنابراین ما 8 ستون و 8 ردیف داریم ، تمام ترمینال های مثبت در یک ردیف جمع شده اند. برای هر ردیف ، یک ترمینال مثبت مشترک برای همه 8 ال ای دی آن ردیف وجود دارهد. شکل زیر را ببینید :

پروژه تابلو روان اتمل استودیو
پروژه تابلو روان اتمل استودیو

بنابراین برای 8 ردیف ،  8 ترمینال مثبت وجود دارد و ردیف اول ، همانطور که در تصویر میبینید ، ال ای دی های 57 تا 64 دارای یک ترمینال مثبت مشترک هستند و توسط POSITIVE0 مشخص میشوند. حالا اگر بخواهیم همه ال ای دی ها را در اولین ردیف ماتریسمان روشن کنیم ، باید A0 را در ال ای دی ماتریکسمان فعال کنیم ، به همین ترتیب اگر ما بخواهیم هر LED یا همه را در هر ردیف روشن کنیم ، باید پین مربوط به پین ترمینال مشترک آن ردیف را فعال کنیم !

این پایانش نیست و فقط اینکار کافی نیست ،باید ترمینال های منفی را به هم متصل کنیم ، مثل تصویر زیر !

ترمینال های منفی
ترمینال های منفی

وقتی دارید لحیم کاری میکنید ، به پین ها توجه کنید !

حالا میخواهیم  هر ال ای دی را در ستون اول قرار دهیم، سپس PIN-C7 (NEGATIVE7) MATRIX را به منفی متصل میکنیم. و تمام ال ای دی ها را در ستون اول قرار میدهیم، و همین کار را برای همه هفت ستون انجام میدهیم.

حالا که اثرات مثبت و منفی را فهمیدیم ، باید مدار را کلا طراحی کنیم ، برای طراحی از عکس زیر استفاده کنید
شماتیک پروژه تابلو روان با AVR
درایو کردن ماتریکس 8*8 :
مثلا میخواهیم  ال ای دی 57 را روشن کنیم و سپس پورت A0 میکروکنترلر را خاموش کنیم و پورت C0 را هم خاموش کنیم. حالا برای روشن شدن ال ای دی 57 و 50 باید پین A1 , A0 و پین C0 , C1 را به برق وصل کنیم. این کار باعث میشود ال ای دی های 57-50-49-58 روشن بشوند ، برای جلوگیری از تکنیکی به نام مولتی پلکس استفاده میکنیم.

قطعات مورد نیاز پروژه تابلو روان

  • میکروکنترلر مگا 32
  • منبع تغذیه 5V
  • 64 عدد LED
  • 8 عدد مقاومت 1 کیلو اهم
  • برد نقطه ای و ابزار لحیم کاری
  • کامپایلر اتمل استودیو ورژن 6.1 به بالا (دانلود اتمل استودیو)
قطعات مورد نیاز را از فروشگاه قطعات آیرنکس تهیه کنید.

برنامه نویسی پروژه تابلو روان با AVR

کد کامل را میتوانید از فایل دانلود کنید ، این فایل مقدار آماده حروف است  ! برای مقدار دهی فقط مقدار حرف مورد نظرتان را در این آرایه جایگزین کنید : [] char ALPHA

{0,0b01111111,0b11111111,0b11001100,0b11001100,0b11001100,0b11111111,0b01111111}, //A
{0,0b00111100,0b01111110,0b11011011,0b11011011,0b11011011,0b11111111,0b11111111}, //B
{0,0b11000011,0b11000011,0b11000011,0b11000011,0b11100111,0b01111110,0b00111100}, //C
{0,0b01111110,0b10111101,0b11000011,0b11000011,0b11000011,0b11111111,0b11111111}, //D
{0,0b11011011,0b11011011,0b11011011,0b11011011,0b11011011,0b11111111,0b11111111}, //E
{0,0b11011000,0b11011000,0b11011000,0b11011000,0b11011000,0b11111111,0b11111111}, //F
{0b00011111,0b11011111,0b11011000,0b11011011,0b11011011,0b11011011,0b11111111,0b11111111}, //G
{0,0b11111111,0b11111111,0b00011000,0b00011000,0b00011000,0b11111111,0b11111111}, //H
{0b11000011,0b11000011,0b11000011,0b11111111,0b11111111,0b11000011,0b11000011,0b11000011}, //I
{0b11000000,0b11000000,0b11000000,0b11111111,0b11111111,0b11000011,0b11001111,0b11001111}, //J
{0,0b11000011,0b11100111,0b01111110,0b00111100,0b00011000,0b11111111,0b11111111}, //K
{0b00000011,0b00000011,0b00000011,0b00000011,0b00000011,0b00000011,0b11111111,0b11111111}, //L
{0b11111111,0b11111111,0b01100000,0b01110000,0b01110000,0b01100000,0b11111111,0b11111111}, //M
{0b11111111,0b11111111,0b00011100,0b00111000,0b01110000,0b11100000,0b11111111,0b11111111}, //N
{0b01111110,0b11111111,0b11000011,0b11000011,0b11000011,0b11000011,0b11111111,0b01111110}, //O
{0,0b01110000,0b11111000,0b11001100,0b11001100,0b11001100,0b11111111,0b11111111}, //P
{0b01111110,0b11111111,0b11001111,0b11011111,0b11011011,0b11000011,0b11111111,0b01111110}, //Q
{0b01111001,0b11111011,0b11011111,0b11011110,0b11011100,0b11011000,0b11111111,0b11111111}, //R
{0b11001110,0b11011111,0b11011011,0b11011011,0b11011011,0b11011011,0b11111011,0b01110011}, //S
{0b11000000,0b11000000,0b11000000,0b11111111,0b11111111,0b11000000,0b11000000,0b11000000}, //T
{0b11111110,0b11111111,0b00000011,0b00000011,0b00000011,0b00000011,0b11111111,0b11111110}, //U
{0b11100000,0b11111100,0b00011110,0b00000011,0b00000011,0b00011110,0b11111100,0b11100000}, //V
{0b11111110,0b11111111,0b00000011,0b11111111,0b11111111,0b00000011,0b11111111,0b11111110}, //W
{0b01000010,0b11100111,0b01111110,0b00111100,0b00111100,0b01111110,0b11100111,0b01000010}, //X
{0b01000000,0b11100000,0b01110000,0b00111111,0b00111111,0b01110000,0b11100000,0b01000000}, //Y
{0b11000011,0b11100011,0b11110011,0b11111011,0b11011111,0b11001111,0b11000111,0b11000011}  //Z
مثلا اگه میخواید DAD را در ال ای دی ماتریکسی نشان بدهید ، باید این مقدار ها را در آرایه [] char ALPHA قرار بدهید. مقدار های حروف D,A,D را از مقدار های بالا بردارید و قرار بدهید ! مثل :
char ALPHA[] = {0,0,0,0,0,0,0,0,0,0,0,
0,0b01111110,0b10111101,0b11000011,0b11000011,0b11000011,0b11111111,0b11111111,
0,0b01111111,0b11111111,0b11001100,0b11001100,0b11001100,0b11111111,0b01111111,
0,0b01111110,0b10111101,0b11000011,0b11000011,0b11000011,0b11111111,0b11111111,
0,0,0,0,0,0,0,0,0,0,0};
برای این که کد هارو به صورت درست ببینید کد ها را در اتمل کپی کنید تا جایگذاری درست انجام شود و متوجه شوید!
موارد موجود در فایل : شماتیک کامل ، فایل سورس ، و …
 
5 (5 نفر)

برای دریافت مطالب جدید کانال تلگرام یا پیج اینستاگرام ما را دنبال کنید.

محمد رحیمی

محمد رحیمی هستم. سعی میکنم در آیرنکس مطالب مفید قرار بدهم. سوالات مربوط به این مطلب را در قسمت نظرات همین مطلب اعلام کنید. سعی میکنم در اسرع وقت به نظرات شما پاسخ بدهم.

2 نظر

  1. بهرامی گفت:

    تشکر میکنم بسیار عالی بود

    1. محمد رحیمی گفت:

      سلام عزیز
      خوشحالم که براتون مفید بوده

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *