بررسی جاروب ستونی مدار عملی تابلو روان - برنامه نویسی
 

در برنامه قبلی ما از روش جاروب سطری در برنامه نویسی تابلو روان استفاده کردیم. حال من تصمیم به توضیح روش جاروب ستونی در تابلو روان را دارم. و از همان مدار قبلی برای تست این روش استفاده میکنیم و فقط برنامه میکروکنترلر تغییر میکند.

در جاروب ستونی ما ابتدا نخستین ستون را فعال میکنیم و سپس ستون دوم فعال میشود و این روال ادامه پیدا میکند تا به ستون آخر برسیم. اگر به مدار ماتریس LED دقت کنید می‌بینید که ما آند LED های هر ستون را به هم متصل نموده‌ایم، پس جهت فعال نمودن هر سطر باستی آنرا به سطح ولتاژ مثبت متصل کنیم، از طرفی بدلیل اینکه در ماتریس LED، کاتد LED های هر سطر به هم متصل هستند، جهت روشن نمودن هر LED سطر متناظر با آن LED بایستی به سطح ولتاژ صفر متصل گردد. از همین جا روشن میشود که در طراحی جدول گلایف بایستی بر خلاف برنامه قبلی به ازای نقاطی که میخواهیم LED در آنجا روشن باشد، بایستی عدد صفر را قرار دهیم. به تصویر زیر دقت کنید.

 

جدول گلایف جهت جاروب ستونی در تابلو روان - طراح مهندس حسین لاچینی

 

در تصویر فوق من نحوه طراحی جدول گلایف را برای جاروب ستونی در تابلو روان نشان داده‌ام، که باعث به نمایش در آمدن کاراکتر A در ماتریس LED تابلو روان خواهد شد. همانطور که مشاهده میکنید به ازای نقاط فعال ( نقاطی که LED در آنجا روشن خواهد بود )  من مقدار بیت متانظر با آنرا صفر در نظر گرفتم و بالعکس در نقاط غیر فعال بیت متناظر را صفر در نظر گرفته‌ام. از طرفی اگر به یاد داشته باشد در برنامه قبلی تعداد بایت های مورد نیاز جهت نمایش کاراکتر A، هفت بایت بود ولی در اینجا ما فقط با استفاده از پنج بایت توانستیم همین کار را انجام دهیم!!!

اما برنامه این روش، من برنامه را مجددا به زبان بیسیک نوشتم و از نرم افزار BASCOM-AVR استفاده کردم.

 

من در اینجا صرفا بخش هایی از برنامه را بررسی میکنم که با برنامه قبلی تفاوت کرده است.

 

Dim Col As Byte
Dim Scan As Byte

در این دو دستور من دو متغییر از نوع بایت تعریف کردم. متغییر  Col  جهت شمارش ستونها و متغییر Scan  جهت تهیه سیگنال جاروب در ستونها استفاده میشود.

 

بعد از موارد فوق در برنامه، به حلقه اصلی برنامه میرسیم. جهت ساخت این حلقه از دستور Do-Loop استفاده شده و بدلیل عدم ذکر هیچگونه شرطی در این دستور، دستورات موجود در بدنه این حلقه به تعداد بینهایت بار اجرا میگردند.

 

Scan = &B00000001

در ابتدای حلقه  Do-Loop متغییر Scan، مقدار دهی اولیه میشود تا سیگنال مورد نیاز جهت فعال نمودن سطر نخست تولید گردد. با توجه به ساختار ماتریس LED مورد استفاده در این تابلو روان ( اتصال آند LED های موجود در یک ستون به یکدیگر ) جهت فعال سازی یک ستون باید پین مربوط به آن ستون در میکرو یک شود و سایر پین های مربوط به دیگر ستونها، صفر شوند. همانطور نیز که مشاهده کردید در دستور فوق نیز بیت نخست متغییر Scan نیز یک شده که مربوط به ستون اول ماتریس است و سایر بیت‌ها نیز صفر شده‌اند. در نتیجه فقط ستون اول فعال خواهد شد و سایر ستونها غیر فعال هستند.

 

در ادامه برنامه به حلقه For-Next میرسیم. متغییر  Col در این حلقه با  صفر مقدار دهی اولیه میشود و اجرای دستورات حلقه تا رسیدن  این متغییر به عدد 4 تعریف شده. لذا تعداد دفعات اجرای دستورات درون حلقه 5 بار خواهد بود. در واقع ما در درون این حلقه یک بار کامل کل ستونهای ماتریس را که پنج عدد میباشد جاروب میکنیم.

 

    For Col = 0 To 4
        Portd = Scan
        Rotate Scan , Left
        Portb = Lookup(col , Gelayof)
        Waitus 20
        Portb = &B11111111
    Next Col

در اولین دستور در حلقه For-Next  مقدار متغییر Scan در پورت D میکروکنترلر قرار میگیرد. تا ستون مورد نظر در ماتریس فعال شود. در دستور بعدی متغییر  Scan به اندازه یک بیت به سمت چپ شیفت چرخشی داده میشود. با این شیفت بیت 1 موجود در این متغییر به سمت چپ منتقل شده و جای آنرا یک بیت صفر پر میکند. بعنوان مثال در نخستین بار اجرای این دستور متغییر Scan از مقدار 00000001 به مقدار 00000010 تغییر میکند و در شیفت بعدی به 00000100 تا اینکه بعد از پنجمین شیفت بصورت 00010000 در می‌آید. که در پنجمین مرحله در واقع بیت پنجم، یک شده است که باعث فعال گشتن ستون پنجم ماتریس خواهد شد.

در این برنامه من قصد نمایش حرف A را داشتم، لذا جدولی با نام Gelayof در برنامه تعریف کردم .همانطور نیز که در زیر مشاهده میکنید، جهت ذخیره اطلاعات مربوط به حرف A من از پنج بایت استفاده نمودم و اطلاعات مربوط به هر ستون را در یک بایت قرار داده‌ام. از طرفی چون در این مدار ارتفاع ماتریس LED، هفت است فقط از هفت بیت اول هر بایت استفاده شده و بیت با ارزش آن یک شده. شما بنابر نیاز خود میتوانید با تغییر دادن وضعیت بیتها به نمایش هر شکل و یا کاراکتری بپردازید.

برای تولید کدهای گلایف مورد نظر خود از نرم افزار آنلاین و رایگان آن استفاده کنید. برای استفاده بر روی لینک زیر کلیک کنید:

http://www.hlachini.com/text2hex.wiz

 

Gelayof:
Data &B10000011
Data &B11110101
Data &B11110110
Data &B11110101
Data &B10000011
Data &B11111111
Data &B11111111
Data &B11111111
Data &B11111111
Data &B11111111

 

حال اطلاعات این جدول مرحله به مرحله و ستون به ستون خوانده شده و در پورت B قرار میگیرد.این عمل توسط دستور Lookup در برنامه صورت میگیرد. در این دستور بایت مورد نظر ( اطلاعات ستون مورد نظر ) توسط متغییر Col تعیین میشود. بعد از قرار دادن اطلاعات مربوط هر ستون در پورت B به اندازه 20 میکرو ثانیه این اطلاعات در پورت نگاه داشته  میشود تا LED های موجود در آن ستون روشن بمانند و اثر آن در چشم بیننده باقی بماند. سپس تمامی پینهای پورت B یک میشود تا LED های این ستون خاموش شوند و اعمال فوق مجددا جهت ستون بعدی تکرار میگردد.

بعد از هر بار جاروب کامل تمامی ستونها، کنترل برنامه از حلقه For-Next خارج شده و مجددا متغییر Scan مقدار دهی اولیه شده تا برای جاروب مجدد آماده گردد. بله به همین سادگی شما یک نمونه ساده از تابلو روان را با روش جاروب ستونی ساختید!

 

متن کامل برنامه را بصورت یکجا در زیر آورده شده است.


'*********************************************
'* This Program Writing By : Hossein Lachini *
'* This, Displyed "A" on the Signe Board     *
'* For to get more details visit :           *
'*                
www.HLachini.com          *
'* Contact to me by :
eLachini@Gmail.com     *
'*********************************************

$regfile = "m8def.dat"
$crystal = 8000000

Config Portb = Output
Config Portd = Output

Dim Col As Byte
Dim Scan As Byte


Do
    Scan = &B00000001
    For Col = 0 To 4
        Portd = Scan
        Rotate Scan , Left
        Portb = Lookup(col , Gelayof)
        Waitus 20
        Portb = &B11111111
    Next Col
Loop
End 'end program

Gelayof:
Data &B10000011
Data &B11110101
Data &B11110110
Data &B11110101
Data &B10000011

 

جهت ادامه مطلب اینجا کلیک کنید.