تبليغاتX
شبکه های بی سیم بلوتوث
شبکه های بی سیم بلوتوث

ظبط ديجيتالي (سخنگو کردن دستگاه ها) :

 نقشه اي را که ملاحظه مي فرمايد يک ظبط ديجيتال کامل است که قادر است از 20 ثانيه تا 16 دقيقه (تا امروز) صدا ظبط کند و روز به روز آي سي هاي با حافظه بيشتر از اين شرکت به بازار مي آيند. آي سي هاي مشهور به سري ISD.

دانلود PDF فارسی شامل نقشه و PCB ظبط دیجیتالی 20 ثانیه ای با آی سی ISD1420

دانلود دیتاشیت زبان اصلی آی سی های سری ISD

نقشه ظبط صوت دیجیتال
 

اين چيپ هاي فشرده بسیار کامل مي باشند به طوري که داراي پري آمپلي فاير داخلي براي ميکروفن هستند و شما ميکروفن خازني را به طور مستقيم به پايه هاي آن وصل مي کنيد و داراي سيتم کنترل بهره خودکار نيز مي باشند؛ بدين معني که چه از فاطله 3 متري در ميکروفن صحبت کنيد و چه جلوي آن فرياد بزنيد با يک کيفيت ظبط مي شود. از طرفي داراي آمپلي فاير داخلي هم مي باشد و قادر است تا يک بلندگوي کوچک را به طور مستقيم راه بيندازد و صداي آن به قدري شديد است که به هيچ وجه با گوشي قابل تحمل نمي باشد و حتما ميباسستي با يک پتانسيومتر که با خروجي بلندگو سري شده است کم گردد.
 

  و اما بهترين ويژگي اين چيپ ها که آنها را پرکاربرد کرده اينست که شما مي توانيد در يک چيپ چندين بخش جدا صداهاي مختلف ظبط کنيد و بسته به نياز هر يک را پخش کنيد که با اين ويژگي شما مي توانيد تمام دستگاه هايي را که مي سازيد سخنگو کنيد.
 

  با وصل کردن کليد B دستگاه به حالت ساده رفته و مي توانيد با زدن کليد S2 به ابتداي نوار بپريد و با زدن کليد S1 اولين Track را ظبط کنيد پس از گفتن جمله دوباره کليد S1 را بزنيد تا قطع شود و با فشار مجدد همان کليد Track دوم را ظبط کنيد ...

  حال کليد 2 حالته را در حالت پخش بگذاريد و يک بار کليد S2 رابزنيد تا به اول نوار بپرد . با هر بار زدن کليد S1  تِرَک ها به ترتيب پخش مي شوند و پس از اتمام به حالت استند باي مي رود و دوباره بايد کليد S1 را بزنيد.

  براي استفاده واقعي کليد B را قطع کنيد و کليد A را وصل کنيد . در اين حالت با زدن کليد S2 به ابتداي نوار ميپرد و در اين مد کليد S1 کار جديدي را انجام مي دهد يعني هر بار که آنرا بزنيد به Track بعدي مي پرد بدون اينکه آنرا پخش کند . مثلا اگر با ميکرو فرمان بدهيد که 15 بار کليد S1 را بزن و سپس به مد B برو ( کليد A را قط کن و B را وصل کن ) در اين حالت اگر کليد S1 را بزنيد پيام شماره 15 پخش مي شود .

 

  لازم به ذکر است اخيراْ شرکت مذکور چيپ جديد خود را با ظرفيت ۱۶دقيقه ظبط صدا و با نام:
ISD5216 توليد کرده است.

+ نوشته شده در  دوشنبه هفتم آبان 1386ساعت 12:55 بعد از ظهر  توسط بهنام زکی زاده  |  یک نظر
نوشته شده در سه شنبه سوم اردیبهشت 1387ساعت 13:18 توسط : جمشید . محسن . حبیب |

پروگرمر AVR با تغذیه USB


     پروگرمری که ملاحظه می فرمایید قادر به برنامه ریزی میکروکنترلر های خانواده AVR می باشد که برای آگاهی از جزئیات بیشتر در مورد این پروگرمر می توانید PDF زیر را دانلود نمایید:

دانلود فایل زیپ شامل فایل ورد و پی دی اف

((این فایل شامل نکات جالبی در مورد فیوز بیت ها و طریقه تنظیم آنها نیز می باشد (به زبان فارسی))

نمای ظاهری پروگرمر AVR

    لازم به ذکر است که شما می توانید این پروگرمر را به قیمت ۶۰۰۰ تومان خریداری نمایید.

     نحوه سفارش: ابتدا با شماره بنده تماس حاصل فرمایید: 09329484669 ( بهنام زکی زاده، قزوین)پس از هماهنگی های لازم در ابتدا وجه پروژه درخواستی از طریق شماره حساب بانک ملت (شماره شانزده رقمی عابر بانک ملت به شماره 6104332102062774) دریافت می گردد و پروژه آماده و تست شده به همراه سی دی در مدت 3 الی 5 روز با پست پیشتاز به آدرس شما ارسال می گردد.  از طرفی در صورت تمایل می توانید مدار را به صورت حضوری از بنده خریداری نمایید(در  صورتی که اهل قزوین باشید) 

نوشته شده در سه شنبه سوم اردیبهشت 1387ساعت 13:13 توسط : جمشید . محسن . حبیب |

قفل رمز 8 رقمي با قابليت تغيير رمز و داراي کنترل پنل

      اين مدار را با استفاده از ميکروي AVR طراحي و برنامه ريزي کرده ام. پروژه مذکور يک قفل رمز ديجيتالي مي باشد که مي توانيد از آن براي درب خانه و يا روشن کردن وسايلي که نياز به مجوز شما دارند استفاده  کنيد.

   يکي از ويژگيهاي منحصر به فرد آن قابليت تغيير رمز به وسيله کيبرد خود دستگاه مي باشد (بدون نياز به کامپيوتر). طبق مراحلي که بعداً توضيح داده خواهد شد مي توانيد رمز عبور جديد را به دستگاه  بدهيد. همچنين براي جلوگيري از ورود افراد متفرقه به بخش کنترل سيستم (کنترل پنل) يک PIN Code چهار رقمي در نظر گرفته ام که اين عدد را فقط خود شما بايد بدانيد و توسط آن وارد بخش کنترل شده و مي توانيد تمامي تنظيمات دستگاه را تغيير دهيد حتي PIN Code را.

   يکي ديگر از ويژگيهاي مدار اينست که اگر 3 بار رمز عبور غلط بدهيد  سيستم به طور خودکار LCD را خاموش کرده و کيبرد را هم از کار مي اندازد و تا 5 دقيقه به خواب فرو مي رود و پس از 5 دقيقه به طور خودکار روشن مي شود.

  با دادن رمز در نهايت يک رله وصل مي شود که مي توانيد وصل بودن اين رله را طوري تنظيم کنيد که دائم وصل بماند يا به صورت زمان دار ( مثلاً اگر از اين قفل رمز براي F.F منزل استفاده کنيد بايد وصل بودن رله را زمان دار تعريف کرده و زمان آنرا نيز 1 ثانيه قرار دهيد تا به محض دريافت رمز عبور صحيح يک ثانيه رله را وصل کرده و دوباره قطع نمايد. رله را بايد به سيم هاي شاسي دربازکن اف اف متصل کنيد) (مثال حالت دوم: اگر از قفل رمز براي روشن کردن يک وسيله برقي مثل کامپيوتر يا TV استفاده مي کنيد بايد
وصل بودن رله را دائمي تعريف کنيد که در اين صورت با وارد کردن پسورد صحيح، رله به صورت دائمي وصل بماند و در صورت نياز با فشار کليد معيني قطع شود.

در شکل زير نمونه ساخته شده را ملاحظه مي فرماييد:

در حال تست روی تخته آزمایش


نقشه شماتيک:
نقشه

منوهاي دستگاه:

تمام منوهای دستگاه


يک نمونه ساخته شده:

نمونه ساخته شده برای آزمایش

   همانطوريکه مي دانيد رمز عبور در حافظه EEPROM آي سي ذخيره مي شود و با قطع برق و ريست مدار نيز قابل پاک شدن نيست. براي اين منظور يک جامپر کوچک در طرح مدار قرار داده ام که در صورت فراموشي رمز عبور، برق سيستم را قطع کرده و اين جامپر را اتصال کوتاه نماييد و سيستم را روشن کنيد. مشاهده مي کنيد که روي LCD نوشته مي شود : Memory Erased و رمز عبور و پين کد پيش فرض نيز روي صفحه نمايش داده مي شوند که رمز عبور 12345678 , پين 1234 است. سپس جامپر را قطع نماييد.
 
   بلندگوي کوچک نيز مسئول پخش صداهاي Error و تاييد سيستم و نيز  صدا های صفحه کليد است. آنرا از نوع صفحه پلاستيکي کوچک انتخاب نماييد.
---------------------------------------------------------------------------------------------------------------

      

نوشته شده در سه شنبه سوم اردیبهشت 1387ساعت 13:10 توسط : جمشید . محسن . حبیب |

چگونه ساعت دیجیتال بسازیم

 

این هم لینک بزرگ مدارهHier

Hier ist der Schaltplan in höherer Auflösung zu finden.

Gesteuert wird der Countdown von zwei Tastern: Der eine Taster (SW1) dient zum Starten/Stoppen des Countdowns (immer abwechselnd), der andere Taster (SW2) zum Resetten auf die eingestellte Startzeit.

Der Schaltplan wirkt natürlich sehr komplex und ohne geätzte Platine nur schwer aufzubauen. Dennoch ist es eigentlich gar nicht so kompliziert, da alles weitestgehend parallel aufgebaut wird.

Die drei Anzeigen wurden auf je einer Europaplatine (160mmx100mm) untergebracht, die Doppelpunkte bekamen eine ca. 4cm breite Extraplatine spendiert. Die Trägerplatinen selber besaßen kein Kupfer-Lochraster, sodass auf der Rückseite dieser Platinen ein paar Hilfsplatinen mit Kupferraster angeklebt werden mussten. Die vier Platinen wurden zunächst silber besprüht und dann auf je einer Dachlatte pro Seite verschraubt:

Der Arbeitsplatz

Das Bohren der Platinen

Das komplette Modul wird gebohrt

Das Verschrauben der Platinen

Hier sieht man das Modul von der Rückseite:

Das Modul von der Rückseite

Die angeklebten Platinen sind gut zu erkennen. Die Vorwiderstände wurden direkt an die Pins der ANzeigen gelötet, um Platz auf der Steuerungsplatine einzusparen. SO auch die beiden Treibertransistoren für die Doppelpunkte.

Hier ist das Steuerungsmodul zu sehen:

Die Steuerungsplatine

Es fallen die beiden transistor-ähnlichen Bauteile in der Mitte auf. Das sind beides Spannungsregler; der rechte Spannungsregler ist der des Typs 7805, der auch im obigen Schaltplan zu sehen ist. Der zweite, linke SPannungsregler ist ein 7812-Regler (für 12V also), der aber später entfernt wurde, da 12V als Eingansspannung dienen sollten.

Die langen roten Drähte weg von der Platine sind die Steuerungsleitungen weg von den ULN2804A-Treibern, die direkt zu den Segmenten führen. Diese dienen festgelötet dann auch als Befestigung für die Steuerungsplatine am gesamten Modul.

Hier ist das fertige Modul von hinten zu sehen:

Modul von hinten

Die vierpolige Klemmleiste unten rechts ist die Anschlussbuchse für das Steuerungsmodul:

Das Steuerungsmodul

Hier sieht man die Anschlüsse an der Steuerungsplatine noch mal genau:

Die Anschlüsse an der Steuerungsplatine

Und so sieht die Schaltung fertig und im Betrieb aus (die Startzeit ist innerhalb der Software auf 5 Minuten (300s) eingestellt, das sollte nach Durchsicht des Programmcodes aber leicht abzuändern sein):

Die Schaltung im Betrieb

Und nach vergangener Zeit:

Die Schaltung im Betrieb nach vergangener Zeit

 

Das gesamte Modulcountdown.zip (3KB)این هم فایل zip

 

نوشته شده در سه شنبه سوم اردیبهشت 1387ساعت 13:1 توسط : جمشید . محسن . حبیب |

 

کنترل از راه دور مادون قرمز


مدار فرستنده يک تن را از طريق LED مادون قرمز ارسال مي نمايد.گيرنده نيز اين تن را آشکار نموده و رله را فعال ميکند.جهت تنظيم مدار کليد S1 را بروي فرستنده فشار دهيد و LED مادون قرمز را به سمت فتو ترانزيستور Q3 نگه داريد سپس آنقدر مقاومت R6 را تغيير دهيد تا صداي کليک را در رله بشنويد.شما مي توانيد برد مدار با استفاده از LED  هاي مادون قرمز قوي تر افزايش دهيد.

نقشه فرستنده

شماتيک فرستنده مادون قرمز

نقشه گيرنده

شماتيک گيرنده مادون قرمز

ليست قطعات :

توضيحات
قطعه مشابه
R1 1 22K 1/4W مقاومت
R2 1 1مگااهم 1/4W مقاومت
R3 1 1K 1/4W مقاومت
R4, R5 2 100K 1/4W مقاومت
R6 1 50K پتانسیومتر
C1, C2 2 0.01uF 16V خازن سرامیکی
C3 1 100pF 16V خازن سرامیکی
C4 1 0.047uF 16Vخازن سرامیکی
C5 1 0.1uF 16V خازن سرامیکی
C6 1 3.3uF 16V خازن الکترولیت
C7 1 1.5uF 16V خازن الکترولیت
Q1 1 2N2222 NPN ترانزیستور سیلیکون 2N3904
Q2 1 2N2907 PNP ترانزیستور سیلیکون
Q3 1 NPN فتو ترانزیستور
D1 1 1N914 دیود سیلیکون
IC1 1 LM308 Op Amp IC
IC2 1 LM567 Tone Decoder
LED1 1 مادون قرمز LED
RELAY 1 رله 6ولت
S1 1 SPST کلید فشاری
B1 1 باطری 3 ولتی دو باطری 1.5ولتی
MISC 1 برد, سوکت, جا باطری

نوشته شده در سه شنبه سوم اردیبهشت 1387ساعت 12:49 توسط : جمشید . محسن . حبیب |

کنترل از راه دور 5 کاناله با برد نامحدود (با استفاده از موبايل)

آيا تابحال شده که براي کنترل يک روبات يا هواپيماي مدل به يک ريموت کنترل راديويي با برد نامحدود نياز داشته باشيد؟

مداري که که در زير ملاحظه مي فرماييد توسط بنده طراحي شده است و قادر خواهد بود که با استفاده از يک گوشي موبايل (ترجيحاً دولتي!) ۵ عدد رله را قطع و وصل نمايد.

نقشه شماتیک

عملکرد اين مدار به اين صورت مي باشد که شما مدار را ساخته و ميکروفن آنرا نزديک به گوشي تلفن همراه نصب مي نماييد و با يک تلفن ثابت (يا همراه) ديگر به اين موبايل زنگ ميزنيد و پس از پاسخ به تماس دستگاه فعال مي شود. بدين صورت که شما هر يک از کليد هاي 0 تا 9 و * و # را که روي تلفن ثابت (يا همراه ) فشار دهيد تن صوتي به گوشي اين موبايل رسيده و توسط ميکروفن دستگاه دريافت مي شود و پس از پردازش توسط آي سي ديکدر براي تصميم گيري نهايي و راه اندازي رله ها به ميکرو ارسال مي شود.

 

 مدار ساخته شده

اگر از 2 عدد موبايل براي اين کار استفاده کنيد مي توانيد يک روبات با کنترل نامحدود بسازيد خصوصاً اگر هر دو گوشي مجهزبه دوربين و سيستم ام ام اس باشند در اين صورت شما مي توانيد در خانه بنشينيد و روبات خود را به کيلومتر ها آنطرف تر بفرستيد و آنرا به صورت تصويري هدايت نماييد!

همچنين براي هواپيماهاي مدل نيز اين امر صادق است. و کاربرد ديگر آن روشن کردن کولر و سماور خانه مي باشد!

البته لازم به ذکر است در وهله اول که به اين دستگاه زنگ مي زنيد بايد به صورت دستي کليد سبز را بزنيد و اگر در راه ارتباط قطع شود قادر به ايجاد ارتباط نخواهيد بودو البته در يک مورد بنده يک راه حل جالب ابداع کردم ؛ البته نياز به دستکاري گوشي دارد. بدين صورت که هرگاه ارتباط قطع شد دوباره شماره گوشي را مي گيريد ومسلماً گوشي زنگ مي زند ، صداي زنگ توسط ميکرفن ديگري اتخاذ شده ودستگاه کوچک ديگري دو سيمي را که به پايه هاي کليد سبز موبايل لحيم شده اند را يک لحظه اتصال کوتاه مي کند ( مثل اينست که کسي گوشي را برداشته) البته اين روش نياز به باز کردن تلفن دارد و توصيه نمي شود.

جامپر کوچکي را که کنار آي سي ميکرو مشاهده مي کنيد براي تايين مد دستگاه مي باشند:

مد 1 : هر دو جامپر باز - دستگاه غير فعال است و هر کليدي را فشار دهيم اصلاً رله هاي آن عمل نمي کنند.

مد 2 : هر دو جامپر بسته - هر کليدي را فشرده نگه داريم رله مربوط به آن وصل مي ماند و همينکه دستمان را از روي کليد برداريم رله هم قطع مي شود.

مد 3 : جامپر بالا بسته - هر کليدي را بزنيم رله مربوط به آن وصل مي ماند و اگر دوباره بزنيم قطع مي شود ( فليپ فلاپ) 12 رله مستقل عمل مي کنند.

مد 4 : جامپر پايين بسته - هر کليدي را بزنيم رله مربوط به آن وصل مي ماند و کليد ديگري را بزنيم قبلي را قطع کرده و رله جديد را وصل مي کند ( حالتي شبه کليد هاي ضبط صوت هاي قديمي يا واکمن ها ) ( هميشه فقط يک رله وصل مي ماند)

جامپر ها را فقط يکبار تنظم کنيد چون پس از روشن کردن دستگاه فقط در اول برنامه وضعيت آنها چک ميشود و در طول برنامه اگر وضعيت آنها را تغيير دهيد مد عوض نمي شود مگر ميکرو را ري ست کنيد.

نوشته شده در سه شنبه سوم اردیبهشت 1387ساعت 12:37 توسط : جمشید . محسن . حبیب |

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

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

دماسنج دیجیتال

مقاله ویژه این  هفته به تشریح مدار و نحوه ساخت یک دماسنج ( ترمومتر ) دیجیتال مربوط می شود. این مدار دارای کاربرد و جذابیتهای فراوان می باشد و قابلیت ارائه به عنوان پروژه دانشجویی و یا در در کنار مجموعه ای از وسایل دیگر با کمی چاشنی ابتکار می تواند طرحی جهت ارائه به جشنواره خوارزمی باشد.این مدار با دقت قابل قبولی دمای محیط را بر روی نمایشگر کریستال مایع ( در صورت تمایل می توانید از نمایشگر ال ای دی استفاده نمایید ) نشان می دهد. برای سنسور حسگر حرارت این مدار می توانید از آی سی S8100 استفاده نمایید که قابلیت اندازه گیری دماهایی بین -40 تا +100 درجه سانتیگراد را دارد. همچنین می توانید از دیود 1S1588 استفاده نمایید که در این صورت مدار شما قابلیت اندازه گیری دما از -20 تا +150 درجه سانتیگراد را دارا خواهد بود.

کلیه تصاویر در ابعاد بزرگ و واضح بر روی سیستم شما بارگزاری شده اند. برای مشاهده هر تصویر در ابعاد بزرگتر بر روی آن کلیک کنید.

LCD termometer SP521PRSP521PR LCD termometer
نمایشگر کریستال مایع استفاده شده در این مدار و شکل پایه های آن

در این مدار آی سی  ICL7136  به کار گرفته شده است که ولتاژ رسیده از دیود حسگر حرارت را را اندازه گیری می نماید.برای نمایش اطلاعات از یک نمایشگر کریستال مایع  3/5 رقم  به شماره SP521PR استفاده شده است. که با ارزش ترین رقم آن تنها امکان نمایش عدد یک را دارد. در صورت نیاز می توانید با کمی تغییر در مدار از نمایشگرهای  ال ای دی  و نظیر آنها نیز استفاده نمایید. انرژی مصرفی  آی سی  ICL7136 بسیار اندک بوده به گونه ای که دماسنج دیجیتال شما می تواند حدود 3 ماه به صورت پیوسته تنها با یک باتری 9 ولت به خوبی دمای محیط را اندازه گیری نماید. توجه داشته باشد که برای آیسی و نمایشگر مدار حتماً از سوکت استفاده مایید.

Circuit drawing of the LCD thermometer

شکل PCB  ( نقشه مدارچاپی ) ترمومتر دیجیتال به صورت زیر است. دقت کنید که به خاطر واضح شدن نقشه تصویر بزرگتر از اندازه واقعی برد است. برای بدست آوردن اندازه واقعی می توانید اندازه آی سی را مبنای کار خود قرار دهید.

نقشه PCB ترمومتر دیجیتال

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

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

 

تنظیم و راه اندازی :

پس از ساخت مدار ، هنگامی که مطمئن شدید همه چیز به درستی انجام شده است ، تغذیه مدار را متصل نمایید. دماسنج دیجیتال شما قبل از استفاده نیاز به تنظیم دارد. معمولاً این تنظیم را در دمای صفر و 100 درجه انجام داده و ملاک را مخلوط آب و یخ برای صفر درجه و آب جوش برای 100 درجه قرار می دهند.
برای تنظیم ابتدا سنسور را در مخلوط آب و یخ قرار داده و توسط  پتانسیومتر VR2  دما را بر روی صفر درجه تنظیم نمایید. پس از آن سنسور را در آب در حال جوشیدن قرار داده و پتانسیومتر VR1 را آنقدر بچرخانید تا دماسنج دیجیتال عدد 100 را نمایش دهد. حال دستگاه شما تنظیم شده و آماده به کار است.
در زیر جدول مقایسه ای بین دماهای اندازه گیری شده توسط دماسنج الکلی و ترمومتر دیجیتال را مشاهده می کنید . همانگونه که از نمودار رسم شده نیز مشخص است ، دماسنج ساخته شده توسط شما با دقت قابل قبولی قادر به اندازه گیری دما است.


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




نوشته شده در سه شنبه سوم اردیبهشت 1387ساعت 12:32 توسط : جمشید . محسن . حبیب |

مدار كامل تابلو روان - توسط ميكرومنترلر ATmega8

مدار كامل تابلو روان - توسط ميكرومنترلر ATmega8 - توضيح برنامه

 

اين برنامه هم با استفاده از نرم‌افزار BASCOM نوشته شده است.

جهت تهیه نرم افزار BASCOM-AVR ، اینجا کلیک کنید.

اين برنامه براي نمايش دو تصوير و دو متن طراحي شده است. بنابراين برنامه به چهار بخش تقسيم شده است كه هر بخش وظيفه نمايش يك مورد را دارد من جهت خواناتر شدن برنامه هريك از اين بخشها را در برنامه با قرار دادن توضيح قبل از شروع هر قسمت مشخص كردم.

در بخش اول نمايش تصوير قلب است كه ضمن نمايش اين تصوير را به سمت بالا هم شيفت ميدهد. در بخش دوم كلمه Lachini نمايش داده ميشود كه بر روي تابلو روان سمت چپ حركت ميكند. در بخش سوم تصوير آدمك خندان به سمت پايين حركت داده ميشود و در نهايت در بخش چهارم برنامه متن (--==**==--) به سمت راست حركت داده ميشود.

شما در مقالات قبلي به حركت متن و تصوير در چهار جهت اصلي آشنا شديد و من در اين مقاله فقط به توضيح چگونگي نمايش و گسترش تابلو قبلي اكتفا ميكنم، مطلبي كه شما در اين مقاله به دنبال آموختن آن هستيد.

البته من در ساير بخشهاي اين مقاله هم اشاره به اين موضوع كردم كه در اينجا بيشتر تمركز ما بر روي اعمال اين تغييرات بر روي برنامه است. و فقط به توضيح قسمت اول برنامه كه مربوط به نمايش قلب بر روي تابلو روان است مي‌پردازم. و ساير قسمتها مشابه همين بخش هستند و تحليل آن را بر عهده شما خواننده تيزبين و  با هوش ميگذارم (;

 

هر يك از بخشها برنامه شامل 3 حلقه تو در تو For-Next است. حلقه داخلي شامل دستورات خواندن اطلاعات از جداول گلايف و توليد سيگنالهاي مورد نياز جهت نمايش است. كه اين قسمت نيز خود از پنج قسمت تشكيل شده است. چهار قسمت اول براي ارسال اطلاعات مورد نياز براي لچ ها هستند و قسمت آخر وظيفه فعال كردن ستونهاي تابلو را بر غهده دارد.

پس در اينجا من به توضيح يكي از چهار قسمت اول ميپردازم.ما در اين قسمت با دو متغيير A ، S و Index سر و كار داريم. متغيير اول آدرس مكاني از جدول را كه اطلاعات آن بايد نمايش داده شود را در خود نگهداري ميكند. و همين طور كه در برنامه مشاهده ميكنيد ، در مقدار در قسمت اول برابر Index در نظر گرفته شده است و دليل آن هم اين است كه قسمت اول برنامه ماتريس 5 در 7 سمت چپ تابلو روان را كنترل ميكند و اطلاعات اين بخش از تابلو روان در ابتداي جداول گلايف قرار گرفته است.در قسمتهاي ديگر نيز چون هر يك به ترتيب كنترل پنج ستون ديگر تابلو روان را برعهده دارند لذا متغيير A به ميزان 5 تا نسبت به مقدار قسمت قبلي به آن اضافه ميشود.

 

                A = Index
                Portd = Lookup(A , Heart)
                Shift Portd , Left , S
                Portc = 1
                Portc = 0

در سطر بعدي برنامه پورت D با مقدار خوانده شده از جداول گلايف مربوط به تصوير قلب مقدار دهي مي‌شود و اين  مقدار در ورودي چهار لچ 7453 قرا ميگيرد. در سطر بعدي مقدار پورت D به اندازه S مرتبه به سمت چپ شيفت داده ميشود تا اين تصوير به سمت بالا بر روي تابلو روان حركت كند.از طرف ديگر به علت اينكه ما ميخواهيم اين اطلاعات فقط بر روي 5 ستون اول (از سمت چپ تابلو) نمايش داده شود و اين بخش از برنامه هم اين وظيه را بر عهده دارد. لذا بايستي فقط لچ اول اين اطلاعات را از ورودي خود برداشته و در خروجي خود قرار دهد. براي اين منظور من پايه هاي LE هر لچ را به يك پين از پورت C متصل كردم و لچ اول به پين صفر اين پورت متصل است پس با قرار دادن مقدار يك وسپس صفر بر روي اين پورت، لچ اول فعال شده و اطلاعات را از ورودي خود خوانده و در خروجي خود ثبت ميكند و مجدداً غير فعال ميشود تا اطلاعات خروجي آن تغيير نكند.

 

 

اين مراحل براي سه بخش بعدي نيز تكرار ميگردند با اين تفاوت كه در هر بخش فقط از طريق پورت C لچ مربوط به همان بخش كنترل ميشود. و اطلاعات مورد نياز همان بخش از جدول خوانده ميشود.

در قسمت آخر ستونهاي مورد نظر از طريق پورت B فعال ميشوند تا اطلاعات قرار گرفته توسط  چهار لچ 7453 بر روي چهار ستون نمايش داده شود.

 

                Portb = Scan
                Rotate Scan , Left , 1
                Waitus 250
                Portb = &H00

 

البته ميكروكنترولر به جهت اينكه همزمان بايد در اينجا چهار ستون مختلف را فعال كند و  تامين جريان مورد نياز براي LED هاي اين ستون‌ها از عهده ميكرو ساخته نيست لذا من در ايم مدار از آي سي ULN2803 استفاده كردم. همانطور در برنامه نيز مشاهده ميكنيد. در سطر اول برنامه ستون مورد نظر بر روي ماتريس LED توسط متغيير Scan انتخاب شده و بر روي پورت B قرار ميگيرد و سپس اين متغيير جهت استفاده بعدي به ميزان يك واحد به سمت چپ شيفت داده مي شود. حال براي اينكه اثر نور LEDها بر روي تابلو توسط چشم ديده شود به اندازه 250 ميكرو ثانيه LEDها در اين وضعيت روشن نگه داشته ميشوند و پس از آن توسط صفر كردن پورت C خاموش ميشوند.

در انيميشن زير شما ميتوانيد كل اجراي روند فوق را براي اجراي اولين بار حلقه داخلي مشاهده كنيد. به انيميشن توجه كنيد.

 

آموزش ساخت تابلو روان توسط مهندس حسين لاچيني | www.HLachini.Com

 

در انيميشن فوق من جهت درك بهتر موضوع مقادير خوانده شده از جداول گلايف در هر بار اجراي حلقه داخلي نمايش داده‌ام. البته باز هم براي درك بهتر موضوع اين مقادير را دقيقا زير لچ مربوط به مقدار خود در كادر مشكي مشخص كردم.

از آنجايي كه اين دستورات با سرعت بالايي در ميكرو اجرا ميشود در نتيجه چشم شما در عمل متوجه اين موضوع نخواهد شد و تصوير قلب را به صورت كامل همانند تصوير زير مشاهده خواهد كرد.

 

آموزش ساخت تابلو روان توسط مهندس حسين لاچيني | www.HLachini.Com

 

من در اينجا عكس واقعي اين مدار را هنگام نمايش تصوير قلب گذاشتم كه ميتوانيد آنرا در زير مشاهده كنيد.حيرت انگيز و جالب است. نه؟!

 

آموزش ساخت تابلو روان توسط مهندس حسين لاچيني | www.HLachini.Com

البته شما ميتوانيد فيلم كامل تابلو روان را از طريق كليك بر روي لينك زير مشاهده كنيد.

 

¸جهت دیدن فیلم تابلو روان اینجا کلیک کنید.

 

همانطور كه در كدهاي برنامه نيز مي‌بينيد شما جهت نمايش متن و علامات مختلف نياز به محاسبه كدهاي مربوط به جداول گلايف داريد. و اگر از قبل اين دسته از مقالات را دنبال كرده باشيد. مي‌دانيد كه من جهت راحتي شما دوستان علاقمند دو نرم افزار  زير را طراحي كردم:

- نرم افزار LTG كه جهت تبديل متن به كد هاي مورد نباز در تابلو روان است.(كليك كنيد)

- نرم افزار طراحي فونت و تصوير كه كد لازم را نيز خود توليد ميكند.(كليك كنيد)

 جهت كسب اطلاعات بيشتر در اين مورد و همچنين دريافت آنها بر روي دو لينك بالا كليك كنيد.

 

كد كامل برنامه :

 

'*********************************************
'* This Program Writing By : Hossein Lachini *
'* The LED 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 Portc = Output
Config Portd = Output

Dim Scan As Byte
Dim Refresh As Byte
Dim Index As Byte
Dim S As Byte

Dim M As Byte
Dim E As Byte
Dim A As Byte

Do

' +-------------------------------------------+
' | Scrolling "Heart" sign to Up              |
' +-------------------------------------------+

    For S = 0 To 6
        M = 15
        If S = 0 Then M = 50
        For Refresh = 1 To M
            Scan = &H01
            For Index = 0 To 4

                A = Index
                Portd = Lookup(A , Heart)
                Shift Portd , Left , S
                Portc = 1
                Portc = 0

                A = Index + 5
                Portd = Lookup(A , Heart)
                Shift Portd , Left , S
                Portc = 2
                Portc = 0

                A = Index + 10
                Portd = Lookup(A , Heart)
                Shift Portd , Left , S
                Portc = 4
                Portc = 0

                A = Index + 15
                Portd = Lookup(A , Heart)
                Shift Portd , Left , S
                Portc = 8
                Portc = 0

                Portb = Scan
                Rotate Scan , Left , 1
                Waitus 250
                Portb = &H00

            Next Index
        Next Refresh
    Next S

' +-------------------------------------------+
' | Scrolling "Lachini" text to Left          |
' +-------------------------------------------+

    For S = 0 To 79
        E = S + 4
        For Refresh = 1 To 7
            Scan = &H01
            For Index = S To E

                A = Index
                Portd = Lookup(A , Lachini)
                Portc = 1
                Portc = 0

                A = Index + 5
                Portd = Lookup(A , Lachini)
                Portc = 2
                Portc = 0

                A = Index + 10
                Portd = Lookup(A , Lachini)
                Portc = 4
                Portc = 0

                A = Index + 15
                Portd = Lookup(A , Lachini)
                Portc = 8
                Portc = 0

                Portb = Scan
                Rotate Scan , Left , 1
                Waitus 250
                Portb = &H00

            Next Index
        Next Refresh
    Next S

' +-------------------------------------------+
' | Scrolling "Smilly" sign to Downe          |
' +-------------------------------------------+

    For S = 0 To 6
        M = 15
        If S = 0 Then M = 50
        For Refresh = 1 To M
            Scan = &H01
            For Index = 0 To 4

                A = Index
                Portd = Lookup(A , Smilly)
                Shift Portd , Right , S
                Portc = 1
                Portc = 0

                A = Index + 5
                Portd = Lookup(A , Smilly)
                Shift Portd , Right , S
                Portc = 2
                Portc = 0

                A = Index + 10
                Portd = Lookup(A , Smilly)
                Shift Portd , Right , S
                Portc = 4
                Portc = 0

                A = Index + 15
                Portd = Lookup(A , Smilly)
                Shift Portd , Right , S
                Portc = 8
                Portc = 0

                Portb = Scan
                Rotate Scan , Left , 1
                Waitus 250
                Portb = &H00

            Next Index
        Next Refresh
    Next S

' +-------------------------------------------+
' | Scrolling "(--==**==--)" text to Right    |
' +-------------------------------------------+

    For S = 0 To 79
        M = 79 + S
        E = M + 4
        For Refresh = 1 To 7
            Scan = &H01
            For Index = M To E

                A = Index
                Portd = Lookup(A , Star)
                Portc = 1
                Portc = 0

                A = Index + 5
                Portd = Lookup(A , Star)
                Portc = 2
                Portc = 0

                A = Index + 10
                Portd = Lookup(A , Star)
                Portc = 4
                Portc = 0

                A = Index + 15
                Portd = Lookup(A , Star)
                Portc = 8
                Portc = 0

                Portb = Scan
                Rotate Scan , Left , 1
                Waitus 250
                Portb = &H00

            Next Index
        Next Refresh
    Next S

Loop
End 'end program

Heart:
Data &H00 , &H00 , &H00 , &H00 , &H00
Data &H30 , &H78 , &H7C , &H7C , &H3E
Data &H1F , &H3E , &H7C , &H7C , &H78
Data &H30 , &H00 , &H00 , &H00 , &H00

Lachini:
Data &H00 , &H00 , &H00 , &H00 , &H00
Data &H00 , &H00 , &H00 , &H00 , &H00
Data &H00 , &H00 , &H00 , &H00 , &H00
Data &H00 , &H00 , &H00 , &H00 , &H00
Data &H7F , &H01 , &H01 , &H01 , &H01 ' "L"
Data &H02 , &H15 , &H15 , &H15 , &H0F ' "a"
Data &H0E , &H11 , &H11 , &H11 , &H02 ' "c"
Data &H7F , &H08 , &H10 , &H10 , &H0F ' "h"
Data &H00 , &H11 , &H5F , &H01 , &H00 ' "i"
Data &H1F , &H08 , &H10 , &H10 , &H0F ' "n"
Data &H00 , &H11 , &H5F , &H01 , &H30 ' "i"
Data &H00 , &H00 , &H00 , &H00 , &H00
Data &H00 , &H00 , &H00 , &H00 , &H00
Data &H00 , &H00 , &H00 , &H00 , &H00
Data &H00 , &H00 , &H00 , &H00 , &H00

Smilly:
Data &H00 , &H00 , &H00 , &H00 , &H00
Data &H00 , &H1C , &H3E , &H77 , &H5B
Data &H7B , &H5B , &H77 , &H3E , &H1C
Data &H00 , &H00 , &H00 , &H00 , &H00

Star:
Data &H00 , &H00 , &H00 , &H00 , &H00
Data &H00 , &H00 , &H00 , &H00 , &H00
Data &H00 , &H00 , &H00 , &H00 , &H00
Data &H00 , &H00 , &H00 , &H00 , &H00
Data &H00 , &H1C , &H22 , &H41 , &H00 ' "("
Data &H08 , &H08 , &H08 , &H08 , &H08 ' "-"
Data &H08 , &H08 , &H08 , &H08 , &H08 ' "-"
Data &H14 , &H14 , &H14 , &H14 , &H14 ' "="
Data &H14 , &H14 , &H14 , &H14 , &H14 ' "="
Data &H14 , &H08 , &H3E , &H08 , &H14 ' "*"
Data &H14 , &H08 , &H3E , &H08 , &H14 ' "*"
Data &H14 , &H14 , &H14 , &H14 , &H14 ' "="
Data &H14 , &H14 , &H14 , &H14 , &H14 ' "="
Data &H08 , &H08 , &H08 , &H08 , &H08 ' "-"
Data &H08 , &H08 , &H08 , &H08 , &H08 ' "-"
Data &H00 , &H41 , &H22 , &H1C , &H00 ' ")"
Data &H00 , &H00 , &H00 , &H00 , &H00
Data &H00 , &H00 , &H00 , &H00 , &H00
Data &H00 , &H00 , &H00 , &H00 , &H00
Data &H00 , &H00 , &H00 , &H00 , &H00
 

 

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

 

Í

جهت دانلود فایلهای فوق اینجا کلیک کنید.

حجم فایل : 5.74 کیلو بایت

فرمت فایل Zip

 

 

جهت تهیه  پروگرمر ، اینجا کلیک کنید.

البته شايد برخي از دوستان از اين كه در اين برنامه از توابع جهت نوشتن برنامه استفاده نكردم و همچنين برنامه بشكل ساخت يافته نوشته نشده ايراد بگيرند كه من در اينجا بايد اين نكته را يادآوري كنم كه هدف من آموزش اصول ساخت تابلوهاي روان به همه كساني است كه حتي شايد اين اولين تجربه آنها در طراحي و برنامه نويسي مدارات الكترونيكي است. پس تا حد امكان برنامه را ساده نوشتم كه البته در عين سادگي كامل نيز هست.

 

 

در صورتي كه شما دوستان علاقمند نيز تجربياتي در اين زمينه داريد و اين مدار را چه در سخت افزار آن و چه در نرم‌افزار آن تغيير ايجاد كرده‌ايد و آن را كامل تر كرديد مي‌توانيد اطلاعات آنرا از طريق ايميل eLachini@Gmail.Com براي من ارسال كنيد تا با نام شما در اين سايت قرار بگيرد و ساير دوستان علاقمند هم بتوانند از تجربيات شما استفاده كنند.

نوشته شده در سه شنبه سوم اردیبهشت 1387ساعت 11:25 توسط : جمشید . محسن . حبیب |

مدار كامل تابلو روان - توسط ميكرومنترلر ATmega8

مدار كامل تابلو روان - توسط ميكرومنترلر ATmega8 - توضيح برنامه

 

اين برنامه هم با استفاده از نرم‌افزار BASCOM نوشته شده است.

جهت تهیه نرم افزار BASCOM-AVR ، اینجا کلیک کنید.

اين برنامه براي نمايش دو تصوير و دو متن طراحي شده است. بنابراين برنامه به چهار بخش تقسيم شده است كه هر بخش وظيفه نمايش يك مورد را دارد من جهت خواناتر شدن برنامه هريك از اين بخشها را در برنامه با قرار دادن توضيح قبل از شروع هر قسمت مشخص كردم.

در بخش اول نمايش تصوير قلب است كه ضمن نمايش اين تصوير را به سمت بالا هم شيفت ميدهد. در بخش دوم كلمه Lachini نمايش داده ميشود كه بر روي تابلو روان سمت چپ حركت ميكند. در بخش سوم تصوير آدمك خندان به سمت پايين حركت داده ميشود و در نهايت در بخش چهارم برنامه متن (--==**==--) به سمت راست حركت داده ميشود.

شما در مقالات قبلي به حركت متن و تصوير در چهار جهت اصلي آشنا شديد و من در اين مقاله فقط به توضيح چگونگي نمايش و گسترش تابلو قبلي اكتفا ميكنم، مطلبي كه شما در اين مقاله به دنبال آموختن آن هستيد.

البته من در ساير بخشهاي اين مقاله هم اشاره به اين موضوع كردم كه در اينجا بيشتر تمركز ما بر روي اعمال اين تغييرات بر روي برنامه است. و فقط به توضيح قسمت اول برنامه كه مربوط به نمايش قلب بر روي تابلو روان است مي‌پردازم. و ساير قسمتها مشابه همين بخش هستند و تحليل آن را بر عهده شما خواننده تيزبين و  با هوش ميگذارم (;

 

هر يك از بخشها برنامه شامل 3 حلقه تو در تو For-Next است. حلقه داخلي شامل دستورات خواندن اطلاعات از جداول گلايف و توليد سيگنالهاي مورد نياز جهت نمايش است. كه اين قسمت نيز خود از پنج قسمت تشكيل شده است. چهار قسمت اول براي ارسال اطلاعات مورد نياز براي لچ ها هستند و قسمت آخر وظيفه فعال كردن ستونهاي تابلو را بر غهده دارد.

پس در اينجا من به توضيح يكي از چهار قسمت اول ميپردازم.ما در اين قسمت با دو متغيير A ، S و Index سر و كار داريم. متغيير اول آدرس مكاني از جدول را كه اطلاعات آن بايد نمايش داده شود را در خود نگهداري ميكند. و همين طور كه در برنامه مشاهده ميكنيد ، در مقدار در قسمت اول برابر Index در نظر گرفته شده است و دليل آن هم اين است كه قسمت اول برنامه ماتريس 5 در 7 سمت چپ تابلو روان را كنترل ميكند و اطلاعات اين بخش از تابلو روان در ابتداي جداول گلايف قرار گرفته است.در قسمتهاي ديگر نيز چون هر يك به ترتيب كنترل پنج ستون ديگر تابلو روان را برعهده دارند لذا متغيير A به ميزان 5 تا نسبت به مقدار قسمت قبلي به آن اضافه ميشود.

 

                A = Index
                Portd = Lookup(A , Heart)
                Shift Portd , Left , S
                Portc = 1
                Portc = 0

در سطر بعدي برنامه پورت D با مقدار خوانده شده از جداول گلايف مربوط به تصوير قلب مقدار دهي مي‌شود و اين  مقدار در ورودي چهار لچ 7453 قرا ميگيرد. در سطر بعدي مقدار پورت D به اندازه S مرتبه به سمت چپ شيفت داده ميشود تا اين تصوير به سمت بالا بر روي تابلو روان حركت كند.از طرف ديگر به علت اينكه ما ميخواهيم اين اطلاعات فقط بر روي 5 ستون اول (از سمت چپ تابلو) نمايش داده شود و اين بخش از برنامه هم اين وظيه را بر عهده دارد. لذا بايستي فقط لچ اول اين اطلاعات را از ورودي خود برداشته و در خروجي خود قرار دهد. براي اين منظور من پايه هاي LE هر لچ را به يك پين از پورت C متصل كردم و لچ اول به پين صفر اين پورت متصل است پس با قرار دادن مقدار يك وسپس صفر بر روي اين پورت، لچ اول فعال شده و اطلاعات را از ورودي خود خوانده و در خروجي خود ثبت ميكند و مجدداً غير فعال ميشود تا اطلاعات خروجي آن تغيير نكند.

 

 

اين مراحل براي سه بخش بعدي نيز تكرار ميگردند با اين تفاوت كه در هر بخش فقط از طريق پورت C لچ مربوط به همان بخش كنترل ميشود. و اطلاعات مورد نياز همان بخش از جدول خوانده ميشود.

در قسمت آخر ستونهاي مورد نظر از طريق پورت B فعال ميشوند تا اطلاعات قرار گرفته توسط  چهار لچ 7453 بر روي چهار ستون نمايش داده شود.

 

                Portb = Scan
                Rotate Scan , Left , 1
                Waitus 250
                Portb = &H00

 

البته ميكروكنترولر به جهت اينكه همزمان بايد در اينجا چهار ستون مختلف را فعال كند و  تامين جريان مورد نياز براي LED هاي اين ستون‌ها از عهده ميكرو ساخته نيست لذا من در ايم مدار از آي سي ULN2803 استفاده كردم. همانطور در برنامه نيز مشاهده ميكنيد. در سطر اول برنامه ستون مورد نظر بر روي ماتريس LED توسط متغيير Scan انتخاب شده و بر روي پورت B قرار ميگيرد و سپس اين متغيير جهت استفاده بعدي به ميزان يك واحد به سمت چپ شيفت داده مي شود. حال براي اينكه اثر نور LEDها بر روي تابلو توسط چشم ديده شود به اندازه 250 ميكرو ثانيه LEDها در اين وضعيت روشن نگه داشته ميشوند و پس از آن توسط صفر كردن پورت C خاموش ميشوند.

در انيميشن زير شما ميتوانيد كل اجراي روند فوق را براي اجراي اولين بار حلقه داخلي مشاهده كنيد. به انيميشن توجه كنيد.

 

آموزش ساخت تابلو روان توسط مهندس حسين لاچيني | www.HLachini.Com

 

در انيميشن فوق من جهت درك بهتر موضوع مقادير خوانده شده از جداول گلايف در هر بار اجراي حلقه داخلي نمايش داده‌ام. البته باز هم براي درك بهتر موضوع اين مقادير را دقيقا زير لچ مربوط به مقدار خود در كادر مشكي مشخص كردم.

از آنجايي كه اين دستورات با سرعت بالايي در ميكرو اجرا ميشود در نتيجه چشم شما در عمل متوجه اين موضوع نخواهد شد و تصوير قلب را به صورت كامل همانند تصوير زير مشاهده خواهد كرد.

 

آموزش ساخت تابلو روان توسط مهندس حسين لاچيني | www.HLachini.Com

 

من در اينجا عكس واقعي اين مدار را هنگام نمايش تصوير قلب گذاشتم كه ميتوانيد آنرا در زير مشاهده كنيد.حيرت انگيز و جالب است. نه؟!

 

آموزش ساخت تابلو روان توسط مهندس حسين لاچيني | www.HLachini.Com

البته شما ميتوانيد فيلم كامل تابلو روان را از طريق كليك بر روي لينك زير مشاهده كنيد.

 

¸جهت دیدن فیلم تابلو روان اینجا کلیک کنید.

 

همانطور كه در كدهاي برنامه نيز مي‌بينيد شما جهت نمايش متن و علامات مختلف نياز به محاسبه كدهاي مربوط به جداول گلايف داريد. و اگر از قبل اين دسته از مقالات را دنبال كرده باشيد. مي‌دانيد كه من جهت راحتي شما دوستان علاقمند دو نرم افزار  زير را طراحي كردم:

- نرم افزار LTG كه جهت تبديل متن به كد هاي مورد نباز در تابلو روان است.(كليك كنيد)

- نرم افزار طراحي فونت و تصوير كه كد لازم را نيز خود توليد ميكند.(كليك كنيد)

 جهت كسب اطلاعات بيشتر در اين مورد و همچنين دريافت آنها بر روي دو لينك بالا كليك كنيد.

 

كد كامل برنامه :

 

'*********************************************
'* This Program Writing By : Hossein Lachini *
'* The LED 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 Portc = Output
Config Portd = Output

Dim Scan As Byte
Dim Refresh As Byte
Dim Index As Byte
Dim S As Byte

Dim M As Byte
Dim E As Byte
Dim A As Byte

Do

' +-------------------------------------------+
' | Scrolling "Heart" sign to Up              |
' +-------------------------------------------+

    For S = 0 To 6
        M = 15
        If S = 0 Then M = 50
        For Refresh = 1 To M
            Scan = &H01
            For Index = 0 To 4

                A = Index
                Portd = Lookup(A , Heart)
                Shift Portd , Left , S
                Portc = 1
                Portc = 0

                A = Index + 5
                Portd = Lookup(A , Heart)
                Shift Portd , Left , S
                Portc = 2
                Portc = 0

                A = Index + 10
                Portd = Lookup(A , Heart)
                Shift Portd , Left , S
                Portc = 4
                Portc = 0

                A = Index + 15
                Portd = Lookup(A , Heart)
                Shift Portd , Left , S
                Portc = 8
                Portc = 0

                Portb = Scan
                Rotate Scan , Left , 1
                Waitus 250
                Portb = &H00

            Next Index
        Next Refresh
    Next S

' +-------------------------------------------+
' | Scrolling "Lachini" text to Left          |
' +-------------------------------------------+

    For S = 0 To 79
        E = S + 4
        For Refresh = 1 To 7
            Scan = &H01
            For Index = S To E

                A = Index
                Portd = Lookup(A , Lachini)
                Portc = 1
                Portc = 0

                A = Index + 5
                Portd = Lookup(A , Lachini)
                Portc = 2
                Portc = 0

                A = Index + 10
                Portd = Lookup(A , Lachini)
                Portc = 4
                Portc = 0

                A = Index + 15
                Portd = Lookup(A , Lachini)
                Portc = 8
                Portc = 0

                Portb = Scan
                Rotate Scan , Left , 1
                Waitus 250
                Portb = &H00

            Next Index
        Next Refresh
    Next S

' +-------------------------------------------+
' | Scrolling "Smilly" sign to Downe          |
' +-------------------------------------------+

    For S = 0 To 6
        M = 15
        If S = 0 Then M = 50
        For Refresh = 1 To M
            Scan = &H01
            For Index = 0 To 4

                A = Index
                Portd = Lookup(A , Smilly)
                Shift Portd , Right , S
                Portc = 1
                Portc = 0

                A = Index + 5
                Portd = Lookup(A , Smilly)
                Shift Portd , Right , S
                Portc = 2
                Portc = 0

                A = Index + 10
                Portd = Lookup(A , Smilly)
                Shift Portd , Right , S
                Portc = 4
                Portc = 0

                A = Index + 15
                Portd = Lookup(A , Smilly)
                Shift Portd , Right , S
                Portc = 8
                Portc = 0

                Portb = Scan
                Rotate Scan , Left , 1
                Waitus 250
                Portb = &H00

            Next Index
        Next Refresh
    Next S

' +-------------------------------------------+
' | Scrolling "(--==**==--)" text to Right    |
' +-------------------------------------------+

    For S = 0 To 79
        M = 79 + S
        E = M + 4
        For Refresh = 1 To 7
            Scan = &H01
            For Index = M To E

                A = Index
                Portd = Lookup(A , Star)
                Portc = 1
                Portc = 0

                A = Index + 5
                Portd = Lookup(A , Star)
                Portc = 2
                Portc = 0

                A = Index + 10
                Portd = Lookup(A , Star)
                Portc = 4
                Portc = 0

                A = Index + 15
                Portd = Lookup(A , Star)
                Portc = 8
                Portc = 0

                Portb = Scan
                Rotate Scan , Left , 1
                Waitus 250
                Portb = &H00

            Next Index
        Next Refresh
    Next S

Loop
End 'end program

Heart:
Data &H00 , &H00 , &H00 , &H00 , &H00
Data &H30 , &H78 , &H7C , &H7C , &H3E
Data &H1F , &H3E , &H7C , &H7C , &H78
Data &H30 , &H00 , &H00 , &H00 , &H00

Lachini:
Data &H00 , &H00 , &H00 , &H00 , &H00
Data &H00 , &H00 , &H00 , &H00 , &H00
Data &H00 , &H00 , &H00 , &H00 , &H00
Data &H00 , &H00 , &H00 , &H00 , &H00
Data &H7F , &H01 , &H01 , &H01 , &H01 ' "L"
Data &H02 , &H15 , &H15 , &H15 , &H0F ' "a"
Data &H0E , &H11 , &H11 , &H11 , &H02 ' "c"
Data &H7F , &H08 , &H10 , &H10 , &H0F ' "h"
Data &H00 , &H11 , &H5F , &H01 , &H00 ' "i"
Data &H1F , &H08 , &H10 , &H10 , &H0F ' "n"
Data &H00 , &H11 , &H5F , &H01 , &H30 ' "i"
Data &H00 , &H00 , &H00 , &H00 , &H00
Data &H00 , &H00 , &H00 , &H00 , &H00
Data &H00 , &H00 , &H00 , &H00 , &H00
Data &H00 , &H00 , &H00 , &H00 , &H00

Smilly:
Data &H00 , &H00 , &H00 , &H00 , &H00
Data &H00 , &H1C , &H3E , &H77 , &H5B
Data &H7B , &H5B , &H77 , &H3E , &H1C
Data &H00 , &H00 , &H00 , &H00 , &H00

Star:
Data &H00 , &H00 , &H00 , &H00 , &H00
Data &H00 , &H00 , &H00 , &H00 , &H00
Data &H00 , &H00 , &H00 , &H00 , &H00
Data &H00 , &H00 , &H00 , &H00 , &H00
Data &H00 , &H1C , &H22 , &H41 , &H00 ' "("
Data &H08 , &H08 , &H08 , &H08 , &H08 ' "-"
Data &H08 , &H08 , &H08 , &H08 , &H08 ' "-"
Data &H14 , &H14 , &H14 , &H14 , &H14 ' "="
Data &H14 , &H14 , &H14 , &H14 , &H14 ' "="
Data &H14 , &H08 , &H3E , &H08 , &H14 ' "*"
Data &H14 , &H08 , &H3E , &H08 , &H14 ' "*"
Data &H14 , &H14 , &H14 , &H14 , &H14 ' "="
Data &H14 , &H14 , &H14 , &H14 , &H14 ' "="
Data &H08 , &H08 , &H08 , &H08 , &H08 ' "-"
Data &H08 , &H08 , &H08 , &H08 , &H08 ' "-"
Data &H00 , &H41 , &H22 , &H1C , &H00 ' ")"
Data &H00 , &H00 , &H00 , &H00 , &H00
Data &H00 , &H00 , &H00 , &H00 , &H00
Data &H00 , &H00 , &H00 , &H00 , &H00
Data &H00 , &H00 , &H00 , &H00 , &H00
 

 

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

 

Í

جهت دانلود فایلهای فوق اینجا کلیک کنید.

حجم فایل : 5.74 کیلو بایت

فرمت فایل Zip

 

 

جهت تهیه  پروگرمر ، اینجا کلیک کنید.

البته شايد برخي از دوستان از اين كه در اين برنامه از توابع جهت نوشتن برنامه استفاده نكردم و همچنين برنامه بشكل ساخت يافته نوشته نشده ايراد بگيرند كه من در اينجا بايد اين نكته را يادآوري كنم كه هدف من آموزش اصول ساخت تابلوهاي روان به همه كساني است كه حتي شايد اين اولين تجربه آنها در طراحي و برنامه نويسي مدارات الكترونيكي است. پس تا حد امكان برنامه را ساده نوشتم كه البته در عين سادگي كامل نيز هست.

 

 

در صورتي كه شما دوستان علاقمند نيز تجربياتي در اين زمينه داريد و اين مدار را چه در سخت افزار آن و چه در نرم‌افزار آن تغيير ايجاد كرده‌ايد و آن را كامل تر كرديد مي‌توانيد اطلاعات آنرا از طريق ايميل eLachini@Gmail.Com براي من ارسال كنيد تا با نام شما در اين سايت قرار بگيرد و ساير دوستان علاقمند هم بتوانند از تجربيات شما استفاده كنند.

نوشته شده در سه شنبه سوم اردیبهشت 1387ساعت 11:25 توسط : جمشید . محسن . حبیب |

مدار كامل تابلو روان - توسط ميكرومنترلر ATmega8

مدار كامل تابلو روان - توسط ميكرومنترلر ATmega8 - توضيح برنامه

 

اين برنامه هم با استفاده از نرم‌افزار BASCOM نوشته شده است.

جهت تهیه نرم افزار BASCOM-AVR ، اینجا کلیک کنید.

اين برنامه براي نمايش دو تصوير و دو متن طراحي شده است. بنابراين برنامه به چهار بخش تقسيم شده است كه هر بخش وظيفه نمايش يك مورد را دارد من جهت خواناتر شدن برنامه هريك از اين بخشها را در برنامه با قرار دادن توضيح قبل از شروع هر قسمت مشخص كردم.

در بخش اول نمايش تصوير قلب است كه ضمن نمايش اين تصوير را به سمت بالا هم شيفت ميدهد. در بخش دوم كلمه Lachini نمايش داده ميشود كه بر روي تابلو روان سمت چپ حركت ميكند. در بخش سوم تصوير آدمك خندان به سمت پايين حركت داده ميشود و در نهايت در بخش چهارم برنامه متن (--==**==--) به سمت راست حركت داده ميشود.

شما در مقالات قبلي به حركت متن و تصوير در چهار جهت اصلي آشنا شديد و من در اين مقاله فقط به توضيح چگونگي نمايش و گسترش تابلو قبلي اكتفا ميكنم، مطلبي كه شما در اين مقاله به دنبال آموختن آن هستيد.

البته من در ساير بخشهاي اين مقاله هم اشاره به اين موضوع كردم كه در اينجا بيشتر تمركز ما بر روي اعمال اين تغييرات بر روي برنامه است. و فقط به توضيح قسمت اول برنامه كه مربوط به نمايش قلب بر روي تابلو روان است مي‌پردازم. و ساير قسمتها مشابه همين بخش هستند و تحليل آن را بر عهده شما خواننده تيزبين و  با هوش ميگذارم (;

 

هر يك از بخشها برنامه شامل 3 حلقه تو در تو For-Next است. حلقه داخلي شامل دستورات خواندن اطلاعات از جداول گلايف و توليد سيگنالهاي مورد نياز جهت نمايش است. كه اين قسمت نيز خود از پنج قسمت تشكيل شده است. چهار قسمت اول براي ارسال اطلاعات مورد نياز براي لچ ها هستند و قسمت آخر وظيفه فعال كردن ستونهاي تابلو را بر غهده دارد.

پس در اينجا من به توضيح يكي از چهار قسمت اول ميپردازم.ما در اين قسمت با دو متغيير A ، S و Index سر و كار داريم. متغيير اول آدرس مكاني از جدول را كه اطلاعات آن بايد نمايش داده شود را در خود نگهداري ميكند. و همين طور كه در برنامه مشاهده ميكنيد ، در مقدار در قسمت اول برابر Index در نظر گرفته شده است و دليل آن هم اين است كه قسمت اول برنامه ماتريس 5 در 7 سمت چپ تابلو روان را كنترل ميكند و اطلاعات اين بخش از تابلو روان در ابتداي جداول گلايف قرار گرفته است.در قسمتهاي ديگر نيز چون هر يك به ترتيب كنترل پنج ستون ديگر تابلو روان را برعهده دارند لذا متغيير A به ميزان 5 تا نسبت به مقدار قسمت قبلي به آن اضافه ميشود.

 

                A = Index
                Portd = Lookup(A , Heart)
                Shift Portd , Left , S
                Portc = 1
                Portc = 0

در سطر بعدي برنامه پورت D با مقدار خوانده شده از جداول گلايف مربوط به تصوير قلب مقدار دهي مي‌شود و اين  مقدار در ورودي چهار لچ 7453 قرا ميگيرد. در سطر بعدي مقدار پورت D به اندازه S مرتبه به سمت چپ شيفت داده ميشود تا اين تصوير به سمت بالا بر روي تابلو روان حركت كند.از طرف ديگر به علت اينكه ما ميخواهيم اين اطلاعات فقط بر روي 5 ستون اول (از سمت چپ تابلو) نمايش داده شود و اين بخش از برنامه هم اين وظيه را بر عهده دارد. لذا بايستي فقط لچ اول اين اطلاعات را از ورودي خود برداشته و در خروجي خود قرار دهد. براي اين منظور من پايه هاي LE هر لچ را به يك پين از پورت C متصل كردم و لچ اول به پين صفر اين پورت متصل است پس با قرار دادن مقدار يك وسپس صفر بر روي اين پورت، لچ اول فعال شده و اطلاعات را از ورودي خود خوانده و در خروجي خود ثبت ميكند و مجدداً غير فعال ميشود تا اطلاعات خروجي آن تغيير نكند.

 

 

اين مراحل براي سه بخش بعدي نيز تكرار ميگردند با اين تفاوت كه در هر بخش فقط از طريق پورت C لچ مربوط به همان بخش كنترل ميشود. و اطلاعات مورد نياز همان بخش از جدول خوانده ميشود.

در قسمت آخر ستونهاي مورد نظر از طريق پورت B فعال ميشوند تا اطلاعات قرار گرفته توسط  چهار لچ 7453 بر روي چهار ستون نمايش داده شود.

 

                Portb = Scan
                Rotate Scan , Left , 1
                Waitus 250
                Portb = &H00

 

البته ميكروكنترولر به جهت اينكه همزمان بايد در اينجا چهار ستون مختلف را فعال كند و  تامين جريان مورد نياز براي LED هاي اين ستون‌ها از عهده ميكرو ساخته نيست لذا من در ايم مدار از آي سي ULN2803 استفاده كردم. همانطور در برنامه نيز مشاهده ميكنيد. در سطر اول برنامه ستون مورد نظر بر روي ماتريس LED توسط متغيير Scan انتخاب شده و بر روي پورت B قرار ميگيرد و سپس اين متغيير جهت استفاده بعدي به ميزان يك واحد به سمت چپ شيفت داده مي شود. حال براي اينكه اثر نور LEDها بر روي تابلو توسط چشم ديده شود به اندازه 250 ميكرو ثانيه LEDها در اين وضعيت روشن نگه داشته ميشوند و پس از آن توسط صفر كردن پورت C خاموش ميشوند.

در انيميشن زير شما ميتوانيد كل اجراي روند فوق را براي اجراي اولين بار حلقه داخلي مشاهده كنيد. به انيميشن توجه كنيد.

 

آموزش ساخت تابلو روان توسط مهندس حسين لاچيني | www.HLachini.Com

 

در انيميشن فوق من جهت درك بهتر موضوع مقادير خوانده شده از جداول گلايف در هر بار اجراي حلقه داخلي نمايش داده‌ام. البته باز هم براي درك بهتر موضوع اين مقادير را دقيقا زير لچ مربوط به مقدار خود در كادر مشكي مشخص كردم.

از آنجايي كه اين دستورات با سرعت بالايي در ميكرو اجرا ميشود در نتيجه چشم شما در عمل متوجه اين موضوع نخواهد شد و تصوير قلب را به صورت كامل همانند تصوير زير مشاهده خواهد كرد.

 

آموزش ساخت تابلو روان توسط مهندس حسين لاچيني | www.HLachini.Com

 

من در اينجا عكس واقعي اين مدار را هنگام نمايش تصوير قلب گذاشتم كه ميتوانيد آنرا در زير مشاهده كنيد.حيرت انگيز و جالب است. نه؟!

 

آموزش ساخت تابلو روان توسط مهندس حسين لاچيني | www.HLachini.Com

البته شما ميتوانيد فيلم كامل تابلو روان را از طريق كليك بر روي لينك زير مشاهده كنيد.

 

¸جهت دیدن فیلم تابلو روان اینجا کلیک کنید.

 

همانطور كه در كدهاي برنامه نيز مي‌بينيد شما جهت نمايش متن و علامات مختلف نياز به محاسبه كدهاي مربوط به جداول گلايف داريد. و اگر از قبل اين دسته از مقالات را دنبال كرده باشيد. مي‌دانيد كه من جهت راحتي شما دوستان علاقمند دو نرم افزار  زير را طراحي كردم:

- نرم افزار LTG كه جهت تبديل متن به كد هاي مورد نباز در تابلو روان است.(كليك كنيد)

- نرم افزار طراحي فونت و تصوير كه كد لازم را نيز خود توليد ميكند.(كليك كنيد)

 جهت كسب اطلاعات بيشتر در اين مورد و همچنين دريافت آنها بر روي دو لينك بالا كليك كنيد.

 

كد كامل برنامه :

 

'*********************************************
'* This Program Writing By : Hossein Lachini *
'* The LED 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 Portc = Output
Config Portd = Output

Dim Scan As Byte
Dim Refresh As Byte
Dim Index As Byte
Dim S As Byte

Dim M As Byte
Dim E As Byte
Dim A As Byte

Do

' +-------------------------------------------+
' | Scrolling "Heart" sign to Up              |
' +-------------------------------------------+

    For S = 0 To 6
        M = 15
        If S = 0 Then M = 50
        For Refresh = 1 To M
            Scan = &H01
            For Index = 0 To 4

                A = Index
                Portd = Lookup(A , Heart)
                Shift Portd , Left , S
                Portc = 1
                Portc = 0

                A = Index + 5
                Portd = Lookup(A , Heart)
                Shift Portd , Left , S
                Portc = 2
                Portc = 0

                A = Index + 10
                Portd = Lookup(A , Heart)
                Shift Portd , Left , S
                Portc = 4
                Portc = 0

                A = Index + 15
                Portd = Lookup(A , Heart)
                Shift Portd , Left , S
                Portc = 8
                Portc = 0

                Portb = Scan
                Rotate Scan , Left , 1
                Waitus 250
                Portb = &H00

            Next Index
        Next Refresh
    Next S

' +-------------------------------------------+
' | Scrolling "Lachini" text to Left          |
' +-------------------------------------------+

    For S = 0 To 79
        E = S + 4
        For Refresh = 1 To 7
            Scan = &H01
            For Index = S To E

                A = Index
                Portd = Lookup(A , Lachini)
                Portc = 1
                Portc = 0

                A = Index + 5
                Portd = Lookup(A , Lachini)
                Portc = 2
                Portc = 0

                A = Index + 10
                Portd = Lookup(A , Lachini)
                Portc = 4
                Portc = 0

                A = Index + 15
                Portd = Lookup(A , Lachini)
                Portc = 8
                Portc = 0

                Portb = Scan
                Rotate Scan , Left , 1
                Waitus 250
                Portb = &H00

            Next Index
        Next Refresh
    Next S

' +-------------------------------------------+
' | Scrolling "Smilly" sign to Downe          |
' +-------------------------------------------+

    For S = 0 To 6
        M = 15
        If S = 0 Then M = 50
        For Refresh = 1 To M
            Scan = &H01
            For Index = 0 To 4

                A = Index
                Portd = Lookup(A , Smilly)
                Shift Portd , Right , S
                Portc = 1
                Portc = 0

                A = Index + 5
                Portd = Lookup(A , Smilly)
                Shift Portd , Right , S
                Portc = 2
                Portc = 0

                A = Index + 10
                Portd = Lookup(A , Smilly)
                Shift Portd , Right , S
                Portc = 4
                Portc = 0

                A = Index + 15
                Portd = Lookup(A , Smilly)
                Shift Portd , Right , S
                Portc = 8
                Portc = 0

                Portb = Scan
                Rotate Scan , Left , 1
                Waitus 250
                Portb = &H00

            Next Index
        Next Refresh
    Next S

' +-------------------------------------------+
' | Scrolling "(--==**==--)" text to Right    |
' +-------------------------------------------+

    For S = 0 To 79
        M = 79 + S
        E = M + 4
        For Refresh = 1 To 7
            Scan = &H01
            For Index = M To E

                A = Index
                Portd = Lookup(A , Star)
                Portc = 1
                Portc = 0

                A = Index + 5
                Portd = Lookup(A , Star)
                Portc = 2
                Portc = 0

                A = Index + 10
                Portd = Lookup(A , Star)
                Portc = 4
                Portc = 0

                A = Index + 15
                Portd = Lookup(A , Star)
                Portc = 8
                Portc = 0

                Portb = Scan
                Rotate Scan , Left , 1
                Waitus 250
                Portb = &H00

            Next Index
        Next Refresh
    Next S

Loop
End 'end program

Heart:
Data &H00 , &H00 , &H00 , &H00 , &H00
Data &H30 , &H78 , &H7C , &H7C , &H3E
Data &H1F , &H3E , &H7C , &H7C , &H78
Data &H30 , &H00 , &H00 , &H00 , &H00

Lachini:
Data &H00 , &H00 , &H00 , &H00 , &H00
Data &H00 , &H00 , &H00 , &H00 , &H00
Data &H00 , &H00 , &H00 , &H00 , &H00
Data &H00 , &H00 , &H00 , &H00 , &H00
Data &H7F , &H01 , &H01 , &H01 , &H01 ' "L"
Data &H02 , &H15 , &H15 , &H15 , &H0F ' "a"
Data &H0E , &H11 , &H11 , &H11 , &H02 ' "c"
Data &H7F , &H08 , &H10 , &H10 , &H0F ' "h"
Data &H00 , &H11 , &H5F , &H01 , &H00 ' "i"
Data &H1F , &H08 , &H10 , &H10 , &H0F ' "n"
Data &H00 , &H11 , &H5F , &H01 , &H30 ' "i"
Data &H00 , &H00 , &H00 , &H00 , &H00
Data &H00 , &H00 , &H00 , &H00 , &H00
Data &H00 , &H00 , &H00 , &H00 , &H00
Data &H00 , &H00 , &H00 , &H00 , &H00

Smilly:
Data &H00 , &H00 , &H00 , &H00 , &H00
Data &H00 , &H1C , &H3E , &H77 , &H5B
Data &H7B , &H5B , &H77 , &H3E , &H1C
Data &H00 , &H00 , &H00 , &H00 , &H00

Star:
Data &H00 , &H00 , &H00 , &H00 , &H00
Data &H00 , &H00 , &H00 , &H00 , &H00
Data &H00 , &H00 , &H00 , &H00 , &H00
Data &H00 , &H00 , &H00 , &H00 , &H00
Data &H00 , &H1C , &H22 , &H41 , &H00 ' "("
Data &H08 , &H08 , &H08 , &H08 , &H08 ' "-"
Data &H08 , &H08 , &H08 , &H08 , &H08 ' "-"
Data &H14 , &H14 , &H14 , &H14 , &H14 ' "="
Data &H14 , &H14 , &H14 , &H14 , &H14 ' "="
Data &H14 , &H08 , &H3E , &H08 , &H14 ' "*"
Data &H14 , &H08 , &H3E , &H08 , &H14 ' "*"
Data &H14 , &H14 , &H14 , &H14 , &H14 ' "="
Data &H14 , &H14 , &H14 , &H14 , &H14 ' "="
Data &H08 , &H08 , &H08 , &H08 , &H08 ' "-"
Data &H08 , &H08 , &H08 , &H08 , &H08 ' "-"
Data &H00 , &H41 , &H22 , &H1C , &H00 ' ")"
Data &H00 , &H00 , &H00 , &H00 , &H00
Data &H00 , &H00 , &H00 , &H00 , &H00
Data &H00 , &H00 , &H00 , &H00 , &H00
Data &H00 , &H00 , &H00 , &H00 , &H00
 

 

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

 

Í

جهت دانلود فایلهای فوق اینجا کلیک کنید.

حجم فایل : 5.74 کیلو بایت

فرمت فایل Zip

 

 

جهت تهیه  پروگرمر ، اینجا کلیک کنید.

البته شايد برخي از دوستان از اين كه در اين برنامه از توابع جهت نوشتن برنامه استفاده نكردم و همچنين برنامه بشكل ساخت يافته نوشته نشده ايراد بگيرند كه من در اينجا بايد اين نكته را يادآوري كنم كه هدف من آموزش اصول ساخت تابلوهاي روان به همه كساني است كه حتي شايد اين اولين تجربه آنها در طراحي و برنامه نويسي مدارات الكترونيكي است. پس تا حد امكان برنامه را ساده نوشتم كه البته در عين سادگي كامل نيز هست.

 

 

در صورتي كه شما دوستان علاقمند نيز تجربياتي در اين زمينه داريد و اين مدار را چه در سخت افزار آن و چه در نرم‌افزار آن تغيير ايجاد كرده‌ايد و آن را كامل تر كرديد مي‌توانيد اطلاعات آنرا از طريق ايميل eLachini@Gmail.Com براي من ارسال كنيد تا با نام شما در اين سايت قرار بگيرد و ساير دوستان علاقمند هم بتوانند از تجربيات شما استفاده كنند.

نوشته شده در سه شنبه سوم اردیبهشت 1387ساعت 11:25 توسط : جمشید . محسن . حبیب |

مدار كامل تابلو روان - توسط ميكرومنترلر ATmega8

مدار كامل تابلو روان - توسط ميكرومنترلر ATmega8 - توضيح برنامه

 

اين برنامه هم با استفاده از نرم‌افزار BASCOM نوشته شده است.

جهت تهیه نرم افزار BASCOM-AVR ، اینجا کلیک کنید.

اين برنامه براي نمايش دو تصوير و دو متن طراحي شده است. بنابراين برنامه به چهار بخش تقسيم شده است كه هر بخش وظيفه نمايش يك مورد را دارد من جهت خواناتر شدن برنامه هريك از اين بخشها را در برنامه با قرار دادن توضيح قبل از شروع هر قسمت مشخص كردم.

در بخش اول نمايش تصوير قلب است كه ضمن نمايش اين تصوير را به سمت بالا هم شيفت ميدهد. در بخش دوم كلمه Lachini نمايش داده ميشود كه بر روي تابلو روان سمت چپ حركت ميكند. در بخش سوم تصوير آدمك خندان به سمت پايين حركت داده ميشود و در نهايت در بخش چهارم برنامه متن (--==**==--) به سمت راست حركت داده ميشود.

شما در مقالات قبلي به حركت متن و تصوير در چهار جهت اصلي آشنا شديد و من در اين مقاله فقط به توضيح چگونگي نمايش و گسترش تابلو قبلي اكتفا ميكنم، مطلبي كه شما در اين مقاله به دنبال آموختن آن هستيد.

البته من در ساير بخشهاي اين مقاله هم اشاره به اين موضوع كردم كه در اينجا بيشتر تمركز ما بر روي اعمال اين تغييرات بر روي برنامه است. و فقط به توضيح قسمت اول برنامه كه مربوط به نمايش قلب بر روي تابلو روان است مي‌پردازم. و ساير قسمتها مشابه همين بخش هستند و تحليل آن را بر عهده شما خواننده تيزبين و  با هوش ميگذارم (;

 

هر يك از بخشها برنامه شامل 3 حلقه تو در تو For-Next است. حلقه داخلي شامل دستورات خواندن اطلاعات از جداول گلايف و توليد سيگنالهاي مورد نياز جهت نمايش است. كه اين قسمت نيز خود از پنج قسمت تشكيل شده است. چهار قسمت اول براي ارسال اطلاعات مورد نياز براي لچ ها هستند و قسمت آخر وظيفه فعال كردن ستونهاي تابلو را بر غهده دارد.

پس در اينجا من به توضيح يكي از چهار قسمت اول ميپردازم.ما در اين قسمت با دو متغيير A ، S و Index سر و كار داريم. متغيير اول آدرس مكاني از جدول را كه اطلاعات آن بايد نمايش داده شود را در خود نگهداري ميكند. و همين طور كه در برنامه مشاهده ميكنيد ، در مقدار در قسمت اول برابر Index در نظر گرفته شده است و دليل آن هم اين است كه قسمت اول برنامه ماتريس 5 در 7 سمت چپ تابلو روان را كنترل ميكند و اطلاعات اين بخش از تابلو روان در ابتداي جداول گلايف قرار گرفته است.در قسمتهاي ديگر نيز چون هر يك به ترتيب كنترل پنج ستون ديگر تابلو روان را برعهده دارند لذا متغيير A به ميزان 5 تا نسبت به مقدار قسمت قبلي به آن اضافه ميشود.

 

                A = Index
                Portd = Lookup(A , Heart)
                Shift Portd , Left , S
                Portc = 1
                Portc = 0

در سطر بعدي برنامه پورت D با مقدار خوانده شده از جداول گلايف مربوط به تصوير قلب مقدار دهي مي‌شود و اين  مقدار در ورودي چهار لچ 7453 قرا ميگيرد. در سطر بعدي مقدار پورت D به اندازه S مرتبه به سمت چپ شيفت داده ميشود تا اين تصوير به سمت بالا بر روي تابلو روان حركت كند.از طرف ديگر به علت اينكه ما ميخواهيم اين اطلاعات فقط بر روي 5 ستون اول (از سمت چپ تابلو) نمايش داده شود و اين بخش از برنامه هم اين وظيه را بر عهده دارد. لذا بايستي فقط لچ اول اين اطلاعات را از ورودي خود برداشته و در خروجي خود قرار دهد. براي اين منظور من پايه هاي LE هر لچ را به يك پين از پورت C متصل كردم و لچ اول به پين صفر اين پورت متصل است پس با قرار دادن مقدار يك وسپس صفر بر روي اين پورت، لچ اول فعال شده و اطلاعات را از ورودي خود خوانده و در خروجي خود ثبت ميكند و مجدداً غير فعال ميشود تا اطلاعات خروجي آن تغيير نكند.

 

 

اين مراحل براي سه بخش بعدي نيز تكرار ميگردند با اين تفاوت كه در هر بخش فقط از طريق پورت C لچ مربوط به همان بخش كنترل ميشود. و اطلاعات مورد نياز همان بخش از جدول خوانده ميشود.

در قسمت آخر ستونهاي مورد نظر از طريق پورت B فعال ميشوند تا اطلاعات قرار گرفته توسط  چهار لچ 7453 بر روي چهار ستون نمايش داده شود.

 

                Portb = Scan
                Rotate Scan , Left , 1
                Waitus 250
                Portb = &H00

 

البته ميكروكنترولر به جهت اينكه همزمان بايد در اينجا چهار ستون مختلف را فعال كند و  تامين جريان مورد نياز براي LED هاي اين ستون‌ها از عهده ميكرو ساخته نيست لذا من در ايم مدار از آي سي ULN2803 استفاده كردم. همانطور در برنامه نيز مشاهده ميكنيد. در سطر اول برنامه ستون مورد نظر بر روي ماتريس LED توسط متغيير Scan انتخاب شده و بر روي پورت B قرار ميگيرد و سپس اين متغيير جهت استفاده بعدي به ميزان يك واحد به سمت چپ شيفت داده مي شود. حال براي اينكه اثر نور LEDها بر روي تابلو توسط چشم ديده شود به اندازه 250 ميكرو ثانيه LEDها در اين وضعيت روشن نگه داشته ميشوند و پس از آن توسط صفر كردن پورت C خاموش ميشوند.

در انيميشن زير شما ميتوانيد كل اجراي روند فوق را براي اجراي اولين بار حلقه داخلي مشاهده كنيد. به انيميشن توجه كنيد.

 

آموزش ساخت تابلو روان توسط مهندس حسين لاچيني | www.HLachini.Com

 

در انيميشن فوق من جهت درك بهتر موضوع مقادير خوانده شده از جداول گلايف در هر بار اجراي حلقه داخلي نمايش داده‌ام. البته باز هم براي درك بهتر موضوع اين مقادير را دقيقا زير لچ مربوط به مقدار خود در كادر مشكي مشخص كردم.

از آنجايي كه اين دستورات با سرعت بالايي در ميكرو اجرا ميشود در نتيجه چشم شما در عمل متوجه اين موضوع نخواهد شد و تصوير قلب را به صورت كامل همانند تصوير زير مشاهده خواهد كرد.

 

آموزش ساخت تابلو روان توسط مهندس حسين لاچيني | www.HLachini.Com

 

من در اينجا عكس واقعي اين مدار را هنگام نمايش تصوير قلب گذاشتم كه ميتوانيد آنرا در زير مشاهده كنيد.حيرت انگيز و جالب است. نه؟!

 

آموزش ساخت تابلو روان توسط مهندس حسين لاچيني | www.HLachini.Com

البته شما ميتوانيد فيلم كامل تابلو روان را از طريق كليك بر روي لينك زير مشاهده كنيد.

 

¸جهت دیدن فیلم تابلو روان اینجا کلیک کنید.

 

همانطور كه در كدهاي برنامه نيز مي‌بينيد شما جهت نمايش متن و علامات مختلف نياز به محاسبه كدهاي مربوط به جداول گلايف داريد. و اگر از قبل اين دسته از مقالات را دنبال كرده باشيد. مي‌دانيد كه من جهت راحتي شما دوستان علاقمند دو نرم افزار  زير را طراحي كردم:

- نرم افزار LTG كه جهت تبديل متن به كد هاي مورد نباز در تابلو روان است.(كليك كنيد)

- نرم افزار طراحي فونت و تصوير كه كد لازم را نيز خود توليد ميكند.(كليك كنيد)

 جهت كسب اطلاعات بيشتر در اين مورد و همچنين دريافت آنها بر روي دو لينك بالا كليك كنيد.

 

كد كامل برنامه :

 

'*********************************************
'* This Program Writing By : Hossein Lachini *
'* The LED 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 Portc = Output
Config Portd = Output

Dim Scan As Byte
Dim Refresh As Byte
Dim Index As Byte
Dim S As Byte

Dim M As Byte
Dim E As Byte
Dim A As Byte

Do

' +-------------------------------------------+
' | Scrolling "Heart" sign to Up              |
' +-------------------------------------------+

    For S = 0 To 6
        M = 15
        If S = 0 Then M = 50
        For Refresh = 1 To M
            Scan = &H01
            For Index = 0 To 4

                A = Index
                Portd = Lookup(A , Heart)
                Shift Portd , Left , S
                Portc = 1
                Portc = 0

                A = Index + 5
                Portd = Lookup(A , Heart)
                Shift Portd , Left , S
                Portc = 2
                Portc = 0

                A = Index + 10
                Portd = Lookup(A , Heart)
                Shift Portd , Left , S
                Portc = 4
                Portc = 0

                A = Index + 15
                Portd = Lookup(A , Heart)
                Shift Portd , Left , S
                Portc = 8
                Portc = 0

                Portb = Scan
                Rotate Scan , Left , 1
                Waitus 250
                Portb = &H00

            Next Index
        Next Refresh
    Next S

' +-------------------------------------------+
' | Scrolling "Lachini" text to Left          |
' +-------------------------------------------+

    For S = 0 To 79
        E = S + 4
        For Refresh = 1 To 7
            Scan = &H01
            For Index = S To E

                A = Index
                Portd = Lookup(A , Lachini)
                Portc = 1
                Portc = 0

                A = Index + 5
                Portd = Lookup(A , Lachini)
                Portc = 2
                Portc = 0

                A = Index + 10
                Portd = Lookup(A , Lachini)
                Portc = 4
                Portc = 0

                A = Index + 15
                Portd = Lookup(A , Lachini)
                Portc = 8
                Portc = 0

                Portb = Scan
                Rotate Scan , Left , 1
                Waitus 250
                Portb = &H00

            Next Index
        Next Refresh
    Next S

' +-------------------------------------------+
' | Scrolling "Smilly" sign to Downe          |
' +-------------------------------------------+

    For S = 0 To 6
        M = 15
        If S = 0 Then M = 50
        For Refresh = 1 To M
            Scan = &H01
            For Index = 0 To 4

                A = Index
                Portd = Lookup(A , Smilly)
                Shift Portd , Right , S
                Portc = 1
                Portc = 0

                A = Index + 5
                Portd = Lookup(A , Smilly)
                Shift Portd , Right , S
                Portc = 2
                Portc = 0

                A = Index + 10
                Portd = Lookup(A , Smilly)
                Shift Portd , Right , S
                Portc = 4
                Portc = 0

                A = Index + 15
                Portd = Lookup(A , Smilly)
                Shift Portd , Right , S
                Portc = 8
                Portc = 0

                Portb = Scan
                Rotate Scan , Left , 1
                Waitus 250
                Portb = &H00

            Next Index
        Next Refresh
    Next S

' +-------------------------------------------+
' | Scrolling "(--==**==--)" text to Right    |
' +-------------------------------------------+

    For S = 0 To 79
        M = 79 + S
        E = M + 4
        For Refresh = 1 To 7
            Scan = &H01
            For Index = M To E

                A = Index
                Portd = Lookup(A , Star)
                Portc = 1
                Portc = 0

                A = Index + 5
                Portd = Lookup(A , Star)
                Portc = 2
                Portc = 0

                A = Index + 10
                Portd = Lookup(A , Star)
                Portc = 4
                Portc = 0

                A = Index + 15
                Portd = Lookup(A , Star)
                Portc = 8
                Portc = 0

                Portb = Scan
                Rotate Scan , Left , 1
                Waitus 250
                Portb = &H00

            Next Index
        Next Refresh
    Next S

Loop
End 'end program

Heart:
Data &H00 , &H00 , &H00 , &H00 , &H00
Data &H30 , &H78 , &H7C , &H7C , &H3E
Data &H1F , &H3E , &H7C , &H7C , &H78
Data &H30 , &H00 , &H00 , &H00 , &H00

Lachini:
Data &H00 , &H00 , &H00 , &H00 , &H00
Data &H00 , &H00 , &H00 , &H00 , &H00
Data &H00 , &H00 , &H00 , &H00 , &H00
Data &H00 , &H00 , &H00 , &H00 , &H00
Data &H7F , &H01 , &H01 , &H01 , &H01 ' "L"
Data &H02 , &H15 , &H15 , &H15 , &H0F ' "a"
Data &H0E , &H11 , &H11 , &H11 , &H02 ' "c"
Data &H7F , &H08 , &H10 , &H10 , &H0F ' "h"
Data &H00 , &H11 , &H5F , &H01 , &H00 ' "i"
Data &H1F , &H08 , &H10 , &H10 , &H0F ' "n"
Data &H00 , &H11 , &H5F , &H01 , &H30 ' "i"
Data &H00 , &H00 , &H00 , &H00 , &H00
Data &H00 , &H00 , &H00 , &H00 , &H00
Data &H00 , &H00 , &H00 , &H00 , &H00
Data &H00 , &H00 , &H00 , &H00 , &H00

Smilly:
Data &H00 , &H00 , &H00 , &H00 , &H00
Data &H00 , &H1C , &H3E , &H77 , &H5B
Data &H7B , &H5B , &H77 , &H3E , &H1C
Data &H00 , &H00 , &H00 , &H00 , &H00

Star:
Data &H00 , &H00 , &H00 , &H00 , &H00
Data &H00 , &H00 , &H00 , &H00 , &H00
Data &H00 , &H00 , &H00 , &H00 , &H00
Data &H00 , &H00 , &H00 , &H00 , &H00
Data &H00 , &H1C , &H22 , &H41 , &H00 ' "("
Data &H08 , &H08 , &H08 , &H08 , &H08 ' "-"
Data &H08 , &H08 , &H08 , &H08 , &H08 ' "-"
Data &H14 , &H14 , &H14 , &H14 , &H14 ' "="
Data &H14 , &H14 , &H14 , &H14 , &H14 ' "="
Data &H14 , &H08 , &H3E , &H08 , &H14 ' "*"
Data &H14 , &H08 , &H3E , &H08 , &H14 ' "*"
Data &H14 , &H14 , &H14 , &H14 , &H14 ' "="
Data &H14 , &H14 , &H14 , &H14 , &H14 ' "="
Data &H08 , &H08 , &H08 , &H08 , &H08 ' "-"
Data &H08 , &H08 , &H08 , &H08 , &H08 ' "-"
Data &H00 , &H41 , &H22 , &H1C , &H00 ' ")"
Data &H00 , &H00 , &H00 , &H00 , &H00
Data &H00 , &H00 , &H00 , &H00 , &H00
Data &H00 , &H00 , &H00 , &H00 , &H00
Data &H00 , &H00 , &H00 , &H00 , &H00
 

 

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

 

Í

جهت دانلود فایلهای فوق اینجا کلیک کنید.

حجم فایل : 5.74 کیلو بایت

فرمت فایل Zip

 

 

جهت تهیه  پروگرمر ، اینجا کلیک کنید.

البته شايد برخي از دوستان از اين كه در اين برنامه از توابع جهت نوشتن برنامه استفاده نكردم و همچنين برنامه بشكل ساخت يافته نوشته نشده ايراد بگيرند كه من در اينجا بايد اين نكته را يادآوري كنم كه هدف من آموزش اصول ساخت تابلوهاي روان به همه كساني است كه حتي شايد اين اولين تجربه آنها در طراحي و برنامه نويسي مدارات الكترونيكي است. پس تا حد امكان برنامه را ساده نوشتم كه البته در عين سادگي كامل نيز هست.

 

 

در صورتي كه شما دوستان علاقمند نيز تجربياتي در اين زمينه داريد و اين مدار را چه در سخت افزار آن و چه در نرم‌افزار آن تغيير ايجاد كرده‌ايد و آن را كامل تر كرديد مي‌توانيد اطلاعات آنرا از طريق ايميل eLachini@Gmail.Com براي من ارسال كنيد تا با نام شما در اين سايت قرار بگيرد و ساير دوستان علاقمند هم بتوانند از تجربيات شما استفاده كنند.

نوشته شده در سه شنبه سوم اردیبهشت 1387ساعت 11:24 توسط : جمشید . محسن . حبیب |

مدار كامل تابلو روان - توسط ميكرومنترلر ATmega8

ارائه این مقاله مقداری طولانی شد كه اميدوارم باعث ناراحتي شما دوستان نشده باشد. در طی اين مدت خيلی از شما دوستان با من تماس داشتيد و درخواست ادامه بحث تابلو روان شده بوديد. كه اميدوارم با ارائه اين مطلب رضايت شما را جلب كرده باشم. البته همانطور كه گفتم بحث تابلوروان را تا ساخت تابلوهای رنگی من ادامه ميدهم. پس حتما همراه ما باشيد و همچنين به ساير دوستان خود كه علاقمند به ساخت تابلو روان هستند اين سايت را معرفي كنيد.

ما در مقالات قبلی با ساخت تابلو روان در ابعاد يك پانل 5 در 7 آشنا شديم. هدف من  از ساخت آن مدار اين بود كه شما را با اصول اوليه در رابطه با تابلوهای روان آشنا كنم. لذا اين مدار بايستي داراي مشخصات زير بود :

1- سادگي مدار :

 اين مدار نبايد چندان به لحاظ سخت افزاری پيچيده باشد. تا شما بتوانيد براحتي آنرا تحليل كنيد و ساخت آن كمترين هزينه و زمان را لازم داشته باشد.

2- قابليت برنامه پذيری :

 شما چون نياز به آزمايش برنامه هاي گوناگون بر روی مدار باشيد لذا مدار بايد قابليت اجراي برنامه های مختلف را داشته باشد.

3- امكان آزمايش انواع جاروب :

 اين مدار حتما بايد امكان جاروب سطری و ستونی را داشته باشد. تا شما بتوانيد هر دو روش را براحتي آشنا شده و پياده سازی كنيد.

 ولی حالا شما به يك فرد با اطلاعات مناسب در زمينه تابلو روان تبديل شديد و هم اكنون ميخواهيد نحوه كار و طراحی تابلو روانهايی با ابعاد بزرگتر را تجربه كنيد. من هم برای اين موضوع مدار ديگری طراحی‍ كردم كه امكان يادگيري اين مطلب را به شما داده و همچنين تا حد امكان مدار ساده طراحي شده باشد. البته من همين جا يادآوري ميكنم كه سادگي اين مدار دليلي بر اينكه اين مطالب در عمل كاربردي ندارد نيست بلكه تابلوهاي حرفه‌اي و بازاري هم از اين تكنيك استفاده ميكنند كه من فقط بصورت ساده و قابل فهم  براي شما آنرا توضيح ميدهم.

 

در طول اين مدت  كه من مقالات را مينوشتم بعضي از خوانندگان اين مقالات با من تماس مي گرفتن و در مورد مداراتي كه ساخته بودند صحبت ميكردند. كه البته طرحهاي جالب و زيبايي هم بود ولي همه از اين كه تعداد پورتهاي ميكرو كم هست و اجازه گسترش ابعاد مدار را نمي دهد شكايت ميكردند. من بايد عرض كنم كه ما براي گسترش ابعاد تابلو نيازي به ميكروكنترلري با تعداد پورت هاي زياد نداريم، بلكه بايد با روشي پورت ميكروكنترولر را گسترش دهيم. كه جهت اين كار ميتوان از شيفت رجيستر يا لچ استفاده نمود. من در مدار خودم از لچ استفاده كردم. اگر شما با مداري كه با شيفت رجيستر اين كار را انجام داده ميخواهيد آشنا شويد با من تماس بگيريد تا براي شما ارسال كنم.

 

¨

 

همانطور كه گفته شد، من در مدار خودم از لچ براي گسترش پايه هاي ميكروكنترلر استفاده كردم.اگر شما با اين روش آشنا نيستيد اينجا كليك كنيد.

 

اما نكته  بعدي در اين مدار اين است كه در اين مدار از جاروب ستوني استفاده شده و ماتريس LED يك ماتريس 20 در 7 است. در واقع ميتوان گفت اين مدار از 4 پانل 5 در 7 تشكيل شده كه سطرهاي هر كدام از اين پانلها به يك لچ متصل شده است و ستونهاي تمامي اين 4 پانل به هم متصل شده‌اند. لذا جهت درايو كردن(راه‌اندازي) اين ستونها ميكرو نياز به درايور دارد. شما ميتوانيد از پنج ترانزيستور NPN كه پايه‌هاي اميتر آنها زمين شده و بيس از طريق يك مقاومت 330 اهم به پين مربوطه به ميكرو متصل است و كلكتور آن نيز مستقيماً به ستون متناظر آن وصل است استفاده كنيد. جهت درك بهتر موضوع به شكل زير توجه كنيد.

 

آموزش ساخت تابلو روان توسط مهندس حسين لاچيني | www.HLachini.Com

 

در مدار فوق از آنجايي كه در ماتريس LED كاتدهاي تمامي LEDهاي يك ستون به هم متصل شده‌اند لذا براي فعال كردن هر ستون بايستي آنرا به زمين وصل كرد. در اينجا ميكرو با يك كردن بيس هر ترانزيستور آنرا روشن ميكند و سپس از طريق كلكتور-اميتر ترانزيستور ستون مورد نظر به زمين متصل ميشود. البته من در مدار خودم از IC بجاي ترانزيستورها استفاده ميكنم.

جهت كسب اطلاعات بيشتر اينجا كليك كنيد.

 

با فعال شدن هر ترانزيستور 4 ستون مختلف فعال ميشوند.و  با توجه به اينكه سطرها به لچ‌ها متصل شده‌اند ميكرو با قرار دادن اطلاعات مناسب در هر لحظه LEDهاي 4 ستون را كنترل نمايد و از آنجايي كه ما در اين مدار 20 ستون داريم لذا ميكرو در چهار مرحله مي‌تواند كل تابلو را جاروب كند.

 

¿جهت مطالعه و دانلود برنامه میکروکنترلر اینجا کلیک کنید.

 

 

¸جهت دیدن فیلم تابلو روان اینجا کلیک کنید.

 

 

 

N جهت مشاهده نقشه مدار اینجا کلیک کنید.

 

 

جهت تهیه مدار كامل و يا ميكرو پروگرم شده ، اینجا کلیک کنید.

 

دوستان گرامی اميدوارم كه مطالب ارائه شده در سايت در اين زمينه توانسته باشد نظر مثبت شما را جلب كرده باشد.من حداكثر تلاش خود را در اين زمينه نمودم تا مقالات از هر حيث كامل و مفيد باشد. كه در اين خصوص با ساخت كليپهاي فلش ،فيلم و انيميش سعي به كمك به درك كامل مطالب هر بخش نمودم.و در ادامه بحث شما را با چگونگي افزايش تعداد سطرهاي تابلو روان آشنا خواهم كرد.

لازم به ذكر است كه تماس شما با من چه از طريق ايميل eLachini@Gmail.Com و SMS و تماس با شماره تلفن 09123812060 به من كمك خواهد كرد كه مطالب را با توجه به نياز شما آماده كنم. پس با نظرات خود من را در اين راه ياري نماييد.

نوشته شده در سه شنبه سوم اردیبهشت 1387ساعت 11:18 توسط : جمشید . محسن . حبیب |

نرم افزار توليد كننده سورس برنامه تابلو روان جهت نرم افزار بسكام (BASCOM AVR

)

 

سالهاي پيش يك كارتون بسيار جالب و پرطرفدار در تلويزيون پخش ميشد به نام "پرفسور بالتازار" اين شخصيت جالب يك دستگاه شگفت انگيز داشت كه ايده‌هاي پرفسور بالتازار را تبديل به واقعيت ميكرد. من خيلي به اين كارتون علاقه داشتم و هميشه در آرزوي داشتن چنين وسيله‌اي بودم.

 

پرفسور بالتازار

حالا حتما ميپرسين اين چه ربطي به موضوع بحث ما درباره تابلو روان داره؟

در اين مقاله با يك نرم افزار كه توسط خودم تهيه شده آشنا خواهيد شد.نرم افزاري كه نياز شما را به برنامه‌نويسي مرتفع خواهد كرد. به عبارتي بهتر از اين به بعد شما كافيه به اين نرم افزار مشخصات تابلوروان و سرعت و جهت حركت متن‌هايي كه ميخواهيد نمايش داده شوند را بدهيد سپس با يك كليك بدون نياز به دردسرهاي برنامه نويسي، برنامه خودتون رو تحويل بگيرين!

مثل اون دستگاه شگفت انگيز پرفسور بالتازار.  برنامه Led Sign Board BASCOM AVR Code Wizard ايدهاي شما را به واقعيت تبديل ميكنه.

خصوصيات برنامه Led Sign Board BASCOM AVR Code Wizard عبارتند از :

  • امكان برنامه نويسي تابلوروان هايي با تعداد ستونهاي بين 5 تا 40 ستون.
  • تعداد متن دريافتي نا محدود.
  • قابليت تعريف افكتهاي حركتي به سمت چهار جهت اصلي براي هر متن بطور جداگانه.
  • امكان تعريف سرعت حركت براي هر متن بطور جداگانه بين 1 الي 9.
  • خروجي جهت استفاده در نرم افزار بسكام (BASCOM AVR).
  • قرار دادن توضيحات هر متن در برنامه.
  • توليد خودكار كدهاي مربوط به جدول گلايف.
  • برنامه توليد شده متناسب با آموزش داده شده در سايت.
  • سخت افزار مورد نياز مطابق با مقاله قبلي سايت.
  • استفاده از ميكروكنترولر ATmega8 بصورت پيش فرض در برنامه.
  • امكان تغيير نوع ميكروكنترولر به صورت دلخواه درون برنامه.(عدم وابستگي سورس توليد شده به نوع ميكروكنترولر!)
  •  مناسب جهت استفاده براي يادگيري اصول برنامه نويسي تابلوروان.(توليد بي نهايت مثال!)
  •  و ...

در مقاله قبلي كه در ارتباط با يك تابلو روان 20 در 7 بود با نحوه گسترش ابعاد تابلوروان با استفاده از آي سي لچ74573 آشنا گشتيد. و همچنين ديديم كه به جهت افزايش ابعاد تابلوروان بايد براي تامين جريان LED ها از يك درايور مناسب استفاده كرد. و در مدار تابلو روان 20 در 7 از آي سي ULN2803 استفاده شد. نرم افزاري كه در اين مقاله به آن مي‌پردازيم مطابق با طرح تابلو روان 20 در 7 است. و شما بايد مطابق همين طرح متناسب با ابعاد تابلوروان مورد نظر خود از آي سي لچ 74573 جهت گسترش و از  آي سي ULN2803 براي درايو كردن سطرها استفاده كنيد.

 

Led Sign Board BASCOM AVR Code Wizard! | نرم افزار توليد برنامه بسكام تابلو روان | طراحي شده توسط مهندس حسين لاچيني

نحوه كار با اين نرم افزار بسيار ساده و آسان است و همانطور كه در شكل بالا مشاهده ميكنيد، تمامي كارهاي لازم براي توليد يك سورس فقط با چند كليك ساده انجام ميپذيرد.

 

 

Led Sign Board BASCOM AVR Code Wizard! | نرم افزار توليد برنامه بسكام تابلو روان | طراحي شده توسط مهندس حسين لاچيني

توضيح عملكرد برنامه :

  1. در اين قسمت طول تابلوروان را بر اساس تعداد LED ها انتخاب كنيد.در تصوير فوق تابلويي با 33 LED انتخاب شده است.
  2. در اين بخش نرم افزار با توجه با طول تابلوروان كه در محل قبل مشخص گشته، تعداد  آي سي لچ 74573 مورد نياز شما در مدار تابلوروان را محاسبه كرده و نمايش ميدهد.در تصوير فوق 7 عدد محاسبه شده.
  3. در اين محل متن مورد نظر خود را تايپ كنيد.البته در ابتداي اجراي برنامه همانطور كه در تصوير اول از برنامه مشاهده ميكنيد، پيغام "Enter here your message" در اين محل وجود دارد. كه به محض كليك و يا تايپ متن حذف ميشود.
  4. در اين بخش شما ميتوانيد براي متن خود يكي از افكتهاي حركتي چپ ، راست ، بالا  يا پايين را انتخاب كنيد. در ابتداي اجراي برنامه بدليل عدم وجود متن بصورت پيش فرض اين بخش غير فعال است كه به محض تايپ متن فعال خواهند شد.
  5. در اين بخش سرعت حركت متن را تعيين ميكنيد.
  6. پس از تايپ متن، با زدن اين كليد و يا زدن كليد Enter كامپيوتر ميتوانيد متن جديد را وارد كنيد.
  7. توسط اين كليد متني كه در ليست انتخاب نموده‌ايد ميتوان پاك كرد.
  8. توسط اين كليد تمامي متنهاي موجود در ليست را پاك نماييد.
  9. متنهاي تايپ شده، در اين قسمت قابل مشاهده و انتخاب ميباشند. در صورتي كه بر روي متني كه قبلاً تايپ كرديد كليك شود. متن مورد نظر در محل شماره 3 جهت ويرايش ظاهر ميشود. علاوه بر اين تنظيمات جهت و سرعت حركت متن نيز بر روي محلهاي 4 و 5 نمايش داده ميشوند و شما امكان تغيير مجدد آنها را خواهيد داشت.
  10. در پايان با زدن اين كليد محل و نام فايل بسكام از شما پرسيده ميشود تا برنامه با نام و در محل مورد نظر شما توليد و ذخيره شود.توجه داشته باشيد كه اگر در محل انتخابي شما فايلي هم نام با فايل فعلي شما وجود دارد، حتما پاك شود.

البته همانطور كه ديديد در اين نرم افزار برخي از كليدها عمل خاصي انجام نمي دهند.كه براي نسخه هاي بالاتر نرم افزار در نظر گرفته شده است.

جهت سهولت شما دوستان گرامي من نقشه  مدار تابلوروان 7 در 40 را توسط نرم افزار پروتيوس رسم كردم.تا شما بتوانيد توسط آن برنامه ها را تست و آزمايش كنيد. البته بدليل اينكه در محيط پروتيوس ماتريس LED ها ستون‌هايشان كاتد بوده من چند گيت NOT به مدار و به ورودي  آي سي هاي لچ 74573 اضافه كرد و از طرفي بدليل آند بودن سطر ماتريس ها  آي سي ULN2803 را از مدار حذف كردم.تا برنامه بدرستي اجرا شود. ولي شما در مدار عملي حتماً ماتريس LED را همانند مدار تابلو روان 20 در 7 متصل كنيد تا سطرها به كاتد و ستونها به آند LEDها متصل شوند. و از NOT استفاده نكنيد و حتما  آي سي ULN2803 را در مدار قرار دهيد.

 

 

در صورت تمايل شما دوست گرامي امكان دريافت نسخه هاي ارتقاء يافته نرم افزار همچون :

  • امكان فارسي نويسي.
  • پشتيباني از تابلوهايي با ابعاد بزرگتر.
  • توليد سورس برنامه به زبان C.
  • پيش نمايش از كار تابلوروان.
  • و ...

وجود دارد.همچنين امكان ارسال سورس برنامه فوق به زبان VB براي علاقمندان برنامه نويسي نيز هست. ما آمادگي داريم تا مشاوره و انجام پروژهاي صنعتي و دانشگاهي شما را بر عهده بگيريم.لذا جهت كسب اطلاعات بيشتر از طريق ايميل eLachini@Gmail.Com و يا از طريق موبايل يا SMS با شماره 09123812060 تماس حاصل نماييد.

Í

جهت دانلود فایلهای برنامه و پروتيوس اینجا کلیک کنید.

حجم فایل :256 کیلو بایت

فرمت فایل exe

 

لازم به ذكر است كه تماس شما با من چه از طريق ايميل eLachini@Gmail.Com و SMS و تماس با شماره تلفن 09123812060 به من كمك خواهد كرد كه مطالب را با توجه به نياز شما آماده كنم. پس با نظرات خود من را در اين راه ياري نماييد.

 

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

نوشته شده در سه شنبه سوم اردیبهشت 1387ساعت 11:16 توسط : جمشید . محسن . حبیب |

ایجاد حرکت در تابلو روان - حرکت به پایین در تابلو روان با جاروب ستونی1

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

من در این برنامه سعی کردم با ایجاد تصویر یک فلش در جدول گلایف و نوشتن کدهای برنامه، این فلش را به سمت پایین حرکت دهم. پس شما هم با ما همراه باشید تا با یکی دیگر از افکتهای زیبا و پر کاربرد در تابلو روان آشنا گردیم.

 

 

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

 

'*********************************************
'* This Program Writing By : Hossein Lachini *
'* Scroll to Down on the LED 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
Dim Refresh As Byte
Dim Index As Byte
Dim S As Byte

Dim R As Byte
Dim Mask As Byte
Dim A As Byte

Do
    For S = 0 To 8
        A = 8 - S
        Mask = &HFF
        Shift Mask , Left , S
        For Refresh = 1 To 10
            Scan = &B00000001
            For Col = 0 To 4
                Index = S + Col
                Portb = Lookup(Index , Gelayof)
                Shift Portb , Right , A
                Portb = Portb Or Mask
                Portd = Scan
                Waitus 250
                Rotate Scan , Left
                Portd = &H00
            Next Col
        Next Refresh
    Next S

    For S = 0 To 8
        A = 8 - S
        Mask = &HFF
        Shift Mask , Right , A
        For Refresh = 1 To 10
            Scan = &B00000001
            For Col = 0 To 4
                Index = S + Col
                Portb = Lookup(Index , Gelayof)
                Shift Portb , Left , S
                Portb = Portb Or Mask
                Portd = Scan
                Waitus 250
                Rotate Scan , Left
                Portd = &H00
            Next Col
        Next Refresh
    Next S
Loop
End 'end program

Gelayof:
Data &B11110111
Data &B11101111
Data &B11000000
Data &B11101111
Data &B11110111

 

من از توضیح کامل برنامه خودداری میکنم، و توضیح آنرا بر عهده شما دوستان گرامی میگذارم.

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

 

 

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

 

Í

جهت دانلود فایلهای فوق اینجا کلیک کنید.

حجم فایل : 4.52 کیلو بایت

فرمت فایل Zip


 

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

مدار تابلو روان با جاروب ستونی - طراحی شده توسط مهندس لاچینی | www.HLachini.Com

این مدار دارای :

- ماتریسی با ابعاد 20 در 7 LED .

- میکروکنترلر ATmega8.

- برنامه کاملی جهت نمایش افکتهای حرکات چهار گانه.

- نمایش متن با طول دلخواه.

- کدهای برنامه توسط نرم افزار BASCOM نوشته شده است

نوشته شده در سه شنبه سوم اردیبهشت 1387ساعت 11:14 توسط : جمشید . محسن . حبیب |

ایجاد حرکت در تابلو روان - حرکت به پایین در تابلو روان با جاروب ستونی

 

و

نوشته شده در سه شنبه سوم اردیبهشت 1387ساعت 11:13 توسط : جمشید . محسن . حبیب |

ایجاد حرکت در تابلو روان - حرکت به بالا در تابلو روان با جاروب ستونی

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

من در این برنامه سعی کردم با ایجاد تصویر یک فلش در جدول گلایف و نوشتن کدهای برنامه، این فلش را به سمت بالا حرکت دهم. پس شما هم با ما همراه باشید تا با یکی دیگر از افکتهای زیبا و پر کاربرد در تابلو روان آشنا گردیم.

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

 

'*********************************************
'* This Program Writing By : Hossein Lachini *
'* Scroll to Up on the LED 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
Dim Refresh As Byte
Dim Index As Byte
Dim S As Byte

Dim R As Byte

Do
    For S = 0 To 8
        For Refresh = 1 To 10
            Scan = &B00000001
            For Col = 0 To 4
                Index = S + Col
                Portb = Lookup(Index , Gelayof)
                Shift Portb , Right , S
                Portd = Scan
                Waitus 250
                Rotate Scan , Left
                Portd = &H00
            Next Col
        Next Refresh
    Next S
Loop
End 'end program

Gelayof:
Data &B11110111
Data &B11111011
Data &B10000001
Data &B11111011
Data &B11110111

 

همانطور که مشاهده میکنید بعد از خواندن اطلاعات جدول گلایف و قرار گرفتن آن بر روی پورت B اطلاعات موجود در این پورت توسط دستور [Shift Portb , Right , S] به اندازه S بیت به سمت راست شیفت داده میشود که مقدار متغییر S در هر 10 بار جاروب کامل ماتریس به اندازه یک واحد افزایش می‌یابد.

به نظر میرسد که برنامه کامل شده و میتوانیم با خیال راحت آن را تست کنیم ، ولی پس از اجرای برنامه شاهد صحنه زیر خواهیم بود.

 

 

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

حالا که ایراد کار را پیدا کردیم باید این مشکل را برطرف نماییم. راه های مختلفی برای این کار وجود دارد که من از یک متغییر دیگر در برنامه کمک گرفتم. این متغییر Mask است که نام آن بی ارتباط با نقشش در برنامه نیست. من در ابتدای حلقه For-Next مربوط به متغییر S ابتدا تمامی بیت های متغییر Mask را یک کردم. سپس توسط یک دستور شیفت به چپ به میزانی بیت های این متغییر را به سمت چپ شیفت دادم که در نهایت به تعدادی در سمت چپ متغییر یک بماند که در دستور شیفت به راست مربوط به پورت B در این پورت صفر به سمت چپ وارد شده.

 

'*********************************************
'* This Program Writing By : Hossein Lachini *
'* Scroll to Up on the LED 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
Dim Refresh As Byte
Dim Index As Byte
Dim S As Byte

Dim R As Byte
Dim Mask As Byte
Dim A As Byte

Do
    For S = 0 To 8
        A = 8 - S
        Mask = &HFF
        Shift Mask , Left , A
        For Refresh = 1 To 10
            Scan = &B00000001
            For Col = 0 To 4
                Index = S + Col
                Portb = Lookup(Index , Gelayof)
                Shift Portb , Right , S
                Portb = Portb Or Mask
                Portd = Scan
                Waitus 250
                Rotate Scan , Left
                Portd = &H00
            Next Col
        Next Refresh
    Next S
Loop
End 'end program

Gelayof:
Data &B11110111
Data &B11111011
Data &B10000001
Data &B11111011
Data &B11110111

 

بعنوان مثال فرض کنید که متغییر S  مقدارش برابر با 3 باشد در نتیجه مقدار متغییر A برابر با 5 خواهد بود ودر نتیجه متغییر Mask به اندازه 5 بیت به سمت چپ شیفت پیدا میکند و مقدار آن برابر با 11100000خواهد بود. از طرفی پورت B هم در هر بار اجرای حلقه در این حالت به اندازه 3 بیت به سمت راست شیفت پیدا میکند و مقدار آن بصورت 000xxxxx در خواهد آمد. حال اگر این دو متغییر با هم Or شوند سه بیت سمت چپ پورت B یک خواهند شد و بصورت 111xxxxx در خواهند آمد بدین ترتیب مشکل صفر بودن بیت های سمت چپ پورت بر طرف میشود. البته به این عمل که ما با استفاده از عملگر های منطقی بیت های خاصی از یک متغییر را تغییر میدهیم اصطلاحاً ماسک کردن میگویند. و دلیل اتخاب نام Mask نیز برای این متغییر هم همین موضوع است.

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

 

 

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

 

'*********************************************
'* This Program Writing By : Hossein Lachini *
'* Scroll to Up on the LED 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
Dim Refresh As Byte
Dim Index As Byte
Dim S As Byte

Dim R As Byte
Dim Mask As Byte
Dim A As Byte

Do
    For S = 0 To 8
        A = 8 - S
        Mask = &HFF
        Shift Mask , Right , S
        For Refresh = 1 To 10
            Scan = &B00000001
            For Col = 0 To 4
                Index = S + Col
                Portb = Lookup(Index , Gelayof)
                Shift Portb , Left , A
                Portb = Portb Or Mask
                Portd = Scan
                Waitus 250
                Rotate Scan , Left
                Portd = &H00
            Next Col
        Next Refresh
    Next S

    For S = 0 To 8
        A = 8 - S
        Mask = &HFF
        Shift Mask , Left , A
        For Refresh = 1 To 10
            Scan = &B00000001
            For Col = 0 To 4
                Index = S + Col
                Portb = Lookup(Index , Gelayof)
                Shift Portb , Right , S
                Portb = Portb Or Mask
                Portd = Scan
                Waitus 250
                Rotate Scan , Left
                Portd = &H00
            Next Col
        Next Refresh
    Next S
Loop
End 'end program

Gelayof:
Data &B11110111
Data &B11111011
Data &B10000001
Data &B11111011
Data &B11110111

 

با اجرای کدهای بالا مشکل ظاهر شدن ناگهانی فلش بر روی تابلو برطرف شده است، که با اضافه کردن بخش انتهایی به برنامه این مسئله حل شده است. توضیح این بخش را بر عهده شما خواننده هوشمند سایت !.

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

 

 

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

 

Í

جهت دانلود فایلهای فوق اینجا کلیک کنید.

حجم فایل : 4.51 کیلو بایت

فرمت فایل Zip


در مقاله بعدی با هم به مطالعه روش ایجاد حرکت به سمت پایین در تابلو روان با جاروب ستونی خواهیم پرداخت. شما میتوانید سئوالات و نظرات خود را از طریق ایمیل eLachini@Gmail.Com و یا تلفن 09123812060 به اطلاع من برسانید.

 

نوشته شده در سه شنبه سوم اردیبهشت 1387ساعت 11:3 توسط : جمشید . محسن . حبیب |

ایجاد حرکت در تابلو روان - حرکت به راست در تابلو روان با جاروب ستونی

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

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

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

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

 

 

البته همانطور که در فیلم هم مشاهده میکنید من جهت بهتر تهیه شدن فیلم یک تکه کاغذ کالک بر روی ماتریس LED قرار دادم.

 

با توجه به توضیحات فوق متوجه شدید که این برنامه بسیار شبیه برنامه قبلی است و فقط در قسمت های کمی با آن تفاوت دارد. ما در این برنامه از یک متغییر کمکی دیگری به نام R استفاده کردیم که این متغییر بر خلاف S که از 0 تا 9 شمارش میکرد باید از 9 به 0 شمارش کند( چون ما اینبار از انتهای جدول به ابتدای آن حرکت میکنیم ) که جهت ایجاد آن متغییر S را از 9 کم کردیم. و در محاسبه متغییر Index بجای متغییر S از R استفاده شده است. به برنامه زیر دقت کنید.

 

    For S = 0 To 9
        R = 9 - S
        For Refresh = 1 To 10
            Scan = &B00000001
            For Col = 0 To 4
                Index = R + Col
                Portb = Lookup(Index , Gelayof)
                Portd = Scan
                Waitus 250
                Rotate Scan , Left
                Portd = &H00
            Next Col
        Next Refresh
    Next S

 

بدین دلیل که اینبار در محاسبه Index از متغییر R استفاده کردیم لذا ابتدا بر روی ماتریس LED اطلاعات انتهای جدول به نمایش در می‌آید و در هر بار اجرای دستورات حلقه یک مرحله به ابتدای جدول نزدیک میشویم تا در آخرین با اجرای حلقه اطلاعات ابتدای جدول به نمایش در می‌آید.

 متن کامل برنامه حرکت به سمت راست در تابلو روان با جاروب ستونی :

 

'*********************************************
'* This Program Writing By : Hossein Lachini *
'* Scroll to Right on the LED 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
Dim Refresh As Byte
Dim Index As Byte
Dim S As Byte

Dim R As Byte


Do
    For S = 0 To 9
        R = 9 - S
        For Refresh = 1 To 10
            Scan = &B00000001
            For Col = 0 To 4
                Index = R + Col
                Portb = Lookup(Index , Gelayof)
                Portd = Scan
                Waitus 250
                Rotate Scan , Left
                Portd = &H00
            Next Col
        Next Refresh
    Next S
Loop
End 'end program

Gelayof:
Data &B11111111
Data &B11111111
Data &B11111111
Data &B11111111
Data &B11111111

Data &B11110111
Data &B11110111
Data &B11010101
Data &B11100011
Data &B11110111

Data &B11111111
Data &B11111111
Data &B11111111
Data &B11111111
Data &B11111111

 

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

 

Í

جهت دانلود فایلهای فوق اینجا کلیک کنید.

حجم فایل : 4.24 کیلوبایت

فرمت فایل Zip


در مقاله بعدی با هم به مطالعه روش ایجاد حرکت به سمت بالا در تابلو روان با جاروب ستونی خواهیم پرداخت. شما میتوانید سئوالات و نظرات خود را از طریق ایمیل eLachini@Gmail.Com و یا تلفن 09123812060 به اطلاع من برسانید.

 

جهت دانلود رایگان نرم افزارهای تبدیل متن به کدهای مورد نیاز تابلو روان و همچنین نرم افزار طراحی فونت اینجا کلیک کنید.

 

نوشته شده در سه شنبه سوم اردیبهشت 1387ساعت 11:1 توسط : جمشید . محسن . حبیب |

ایجاد حرکت در تابلو روان - حرکت به چپ در تابلو روان با جاروب ستونی

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

 

sبرای ساخت مدار فوق اینجا کلیک کنید.

 

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

 

sجهت مطالعه روش جاروب ستونی اینجا کلیک کنید.

 

حالا تصور کنید که ما بجای اینکه در این روش ابتدا اطلاعات ستون اول را در محل اصلی خود یعنی همان ستون اول نمایش دهیم، در ستون دوم نمایش دهیم و همینطور سایر اطلاعات را به اندازه یک ستون جابجا نمایش دهیم، چه اتفاقی می‌افتد؟ بله، متن به نمایش در خواهد آمد ولی بصورت افقی به اندازه یک ستون جابجا شده. اساس کار حرکات افقی ( چپ و راست ) در تابلوهای روان با جاروب ستونی هم همین است. به برنامه زیر دقت کنید.

 

    For S = 0 To 4
        For Refresh = 1 To 10
            Scan = &B00000001
            For Col = 0 To 4
                Index = S + Col
                Portb = Lookup(Index , Gelayof)
                Portd = Scan
                Waitus 250
                Rotate Scan , Left
                Portd = &H00
            Next Col
        Next Refresh
    Next S

 

همانطور که می‌بینید این برنامه از سه حلقه For-Next تو در تو تشکیل شده، دو حلقه درونی صرفاً به نمایش اطلاعات می‌پردازند. حلقه داخلی یکبار تمام ستونها را جاروب میکند. حلقه وسط این کار را تا ده مرتبه تکرار میکند تا متن به اندازه کافی دیده شود و حلقه خارجی هر بار محل خواندن اطلاعات از جدول گلایف را به اندازه یک بایت (یک ستون) جابجا میکند. که باعث به حرکت درآمدن متن در تابلو میشود.

دقت کنید که ما در دستور Lookup آدرس خواندن اطلاعات را از متغییر Index میخوانیم، که این متغییر هم مقدارش توسط جمع زدن مقادیر Col و S محاسبه میشود که Col ستون در حال جاروب شدن بر روی ماتریس LED را نشان میدهد و S محل شروع خواندن مقادیر در جدول گلایف است.

خوب برنامه را اجرا کنید. تعجب کردید... یک کاراکتر عجیب غریب که مثل دنباله به کاراکتر اصلی شما چسبیده و به دنبال آن حرکت میکنه. این موجود ناشناخته از کجا پیداش شد؟! نمیتونید این مطلب به گردن میکروکنترلر بیچاره بیندازید. چون اون بجز اجرای بی چون چرای دستورات شما هیچکار دیگری نمیکنه. پس باید بکار خود شک کنیم. بله دوباره به سراغ برنامه میرویم و آنرا با دقت بیشتری بررسی میکنیم. زمانی که مقدار متغییر S یک میشود یعنی لحظه‌ای کاراکتر به اندازه یک ستون بر روی ماتریس LED جابجا میشود مقدار متغییر Index برابر با 5 خواهد شد ( البته در زمانی که مقدار متغییر Col برابر با 4 است ). و در دستور بعدی توسط فرمان Lookup میکرو به سراغ برداشتن بایت ششم ذخیر شده در جدول Gelayof میرود. در حالی که ما این جدول را تا 5 بایت تعریف کردیم و عملاً در مکان ششم هیچ متغییری توسط ما تعریف نشده و محتویات آن ناحیه نامشخص است.

 

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

 

 و باعث میگردد که شما آن موجود غریبه را مشاهده کنید. برای رفع این مشکل باید به انتهای جدول گلایف به اندازه ابعاد ماتریس اضافه کنیم و مقادیری را در آن قرار دهیم که زمان نمایش چیزی بر روی تابلو روان نمایان نشود.( در این برنامه تمامی خانه ها یک میشوند ).

 

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

Data &B11111111
Data &B11111111
Data &B11111111
Data &B11111111
Data &B11111111

 

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

برای انجام این کار بهترین کار قرار دادن یک فضای خالی در ابتدای کاراکتر در جدول گلایف است که ابعاد این فضا به اندازه ابعاد ماتریس LED تابلو روان میباشد. که در تابلوی ما این مقدار به اندازه یک کاراکتر است. پس جدول گلایف به شکل زیر تغییر میکند.

 

Gelayof:
Data &B11111111
Data &B11111111
Data &B11111111
Data &B11111111
Data &B11111111

Data &B10000011
Data &B11110101
Data &B11110110
Data &B11110101
Data &B10000011

Data &B11111111
Data &B11111111
Data &B11111111
Data &B11111111
Data &B11111111

 

البته عجله نکنید چون اگر همین الان برنامه را اجرا کنید خواهید دید که کاراکتر A به آرامی از سمت راست وارد میشود( همانطور که انتظار داشتیم ) ولی به محض اینکه بصورت کامل وارد شد یکدفعه مخفی شده و دوباره این حرکت را تکرار میکند. خوب علت این قضیه این هست که ما هنوز به برنامه جاروب این تغییر در ابعاد جدول گلایف را اطلاع ندادیم. بله باید در حلقه For-Next اول مقدار نهایی متغییر S را از 4 به 9 افزایش دهیم ( به اندازه طول اضافه شده به جدول گلایف ). و دستورات مربوط به جاروب به شکل زیر در خواهند آمد.

 

    For S = 0 To 9
        For Refresh = 1 To 10
            Scan = &B00000001
            For Col = 0 To 4
                Index = S + Col
                Portb = Lookup(Index , Gelayof)
                Portd = Scan
                Waitus 250
                Rotate Scan , Left
                Portd = &H00
            Next Col
        Next Refresh
    Next S

 

 متن کامل برنامه حرکت به سمت چپ در تابلو روان با جاروب ستونی :

 

'*********************************************
'* This Program Writing By : Hossein Lachini *
'* Scroll to Left on the LED 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
Dim Refresh As Byte
Dim Index As Byte
Dim S As Byte


Do
    For S = 0 To 9
        For Refresh = 1 To 10
            Scan = &B00000001
            For Col = 0 To 4
                Index = S + Col
                Portb = Lookup(Index , Gelayof)
                Portd = Scan
                Waitus 250
                Rotate Scan , Left
                Portd = &H00
            Next Col
        Next Refresh
    Next S
Loop
End 'end program

Gelayof:
Data &B11111111
Data &B11111111
Data &B11111111
Data &B11111111
Data &B11111111

Data &B10000011
Data &B11110101
Data &B11110110
Data &B11110101
Data &B10000011

Data &B11111111
Data &B11111111
Data &B11111111
Data &B11111111
Data &B11111111

 

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

 

Í

جهت دانلود فایلهای فوق اینجا کلیک کنید.

حجم فایل : 1،04 کیلوبایت

فرمت فایل Zip


در مقاله بعدی با هم به مطالعه روش ایجاد حرکت به سمت راست در تابلو روان با جاروب ستونی خواهیم پرداخت. شما میتوانید سئوالات و نظرات خود را از طریق ایمیل eLachini@Gmail.Com و یا تلفن 09123812060 به اطلاع من برسانید.

 

نوشته شده در سه شنبه سوم اردیبهشت 1387ساعت 10:59 توسط : جمشید . محسن . حبیب |

بررسی ساخت انیمیشن در تابلو روان - دانلود برنامه

در این بخش من فایل های برنامه انیمیشن در تابلو روان را قرار دادم. این فایلها با فرمت Zip فشرده سازی شده است.  این فایل ها عبارتند از :

 

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

جهت تهیه نرم افزار BASCOM-AVR ، اینجا کلیک کنید.

 

- فایل هگز (Hex) برنامه تابلو روان جهت پروگرم کردن میکروکنترلر ATmega8.

 

Í

جهت دانلود فایلهای فوق اینجا کلیک کنید.

حجم فایل : 1،13 کیلوبایت

فرمت فایل Zip


در اینجا بررسی برنامه نویسی انیمیشن در تابلوی روان به پایان رسید. دوستان عزیز در صورت داشتن هر گونه سئوال و پیشنهادی شما میتوانید از طریق آدرس ایمیل من eLachini@Gmail.Com و یا از طریق شماره موبایل 09123812060 با من تماس بگیرید. دوستانی که میخواهند از مطالب ارائه شده در اینجا در سایت، وبلاگ و یا نشریه خود استفاده نمایند در این مورد آزاد میباشند ولی حتما نشانی منبع را در مطلب خود ذکر نمایند.

در ادامه بحث شما با ایجاد حرکت در متن ها و تصاویر در تابلو  روان آشنا میشوید، البته منظور من انیمیشن نیست بلکه افکتهای حرکتی به چهار جهت اصلی است که بصورت استاندارد در تمامی تابلوهای روان وجود دارد. لذا از هم اکنون شما هم دست به کار شوید وسعی کنید با تغییر در کدهای برنامه قبل از ارائه مطلب توسط من، برنامه فوق را بنویسید. و در صورت تمایل تصویر مدار و کد برنامه خود را به آدرس ایمیل من ارسال کنید تا با نام خودتان در سایت درج شود.

 

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

نوشته شده در سه شنبه سوم اردیبهشت 1387ساعت 10:56 توسط : جمشید . محسن . حبیب |

انیمیشن در تابلو روان

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

 

در تابلوی روان نیز از همین روش جهت ایجاد تصاویر متحرک استفاده میشود. در واقع ما با ایجاد یک جدول گلایف که شامل اطلاعات هر تصویر می‌باشد و سپس با نمایش سریع تصاویر موجود در این جدول به نمایش یک انیمیشن می‌پردازیم.

 

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

 

حال به توضیح برنامه میرسیم. در ابتدا به توضیح هر یک از متغیرهای استفاده شده در برنامه میپردازم. در این برنامه از پنج متغییر استفاده شده. در زیر نحوه تعریف متغییر های مورد نیاز آورده شده.

 

Dim Row As Byte
Dim Scan As Byte
Dim Refresh As Byte
Dim Character As Byte
Dim C As Byte

 

Row : این متغییر شمارنده سطرهای ماتریس LED است.

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

Refresh : جهت تولید انیمیشن در این برنامه از نمایش متوالی چهار کاراکتر استفاده شده، که این متغییر تعداد دفعات نمایش یک کاراکتر ( جاروب کامل ) را قبل از نمایش کاراکتر بعدی تعیین میکند.

Character : آدرس محل شروع اطلاعات ( سطر اول ) مربوط به هر کاراکتر، در این متغییر قرار میگیرد.

C : آدرس محل اطلاعات مربوط به سطر کاراکتر مورد نمایش در جدول گلایف برنامه (Animation) در این متغییر نگهداری میشود.

 

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

 

For Character = 0 To 27 Step 7
For Refresh = 0 To 10
    Scan = &B11111110
    For Row = 0 To 6
        Portb = Scan
        C = Character + Row
        Portd = Lookup(c , Animation)
        Waitus 20
        Portd = 0
        Rotate Scan , Left
    Next Row
Next Refresh
Next Character

 

در اولین دستور به حلقه For-Next میرسیم که متغییر Character به عنوان شمارنده این حلقه در نظر گرفته شده، همانطور که قبلا نیز اشاره شد این متغییر آدرس محل شروع اطلاعات مربوط به هر کارکتر را محاسبه میکند. که مسلما برای اولین کاراکتر مقدار آن صفر است و از طرفی چون ارتفاع هر کاراکتر 7 سطر میباشد لذا میزان افزایش( گامهای) آن هفت تایی تعریف شده.

 

در حلقه مربوط به متغییر Character حلقه For-Next دیگری با متغییر Refresh قرار دارد. تعداد دفعات اجرای دستورات این حلقه ده بار می‌باشد. که تعیین کننده تعداد جاروب های کامل هر کاراکتر قبل از نمایش کاراکتر بعدی میباشد.

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

 

Scan = &B11111110

 

در ادامه به حلقه For-Next دیگری با متغییر Row میرسیم. دستورات موجود در این حلقه هفت بار اجرا میگردند که در هر بار یک سطر از ماتریس LED فعال میشود. در نتیجه با اجرای کامل این حلقه یک کاراکتر به نمایش در می‌آید. روند اینکار بدین شکل است، ابتدا توسط دستور زیر سطر مورد نظر فعال میگردد.

 

Portb = Scan

 

سپس آدرس سطر مورد نظر از کارکتر نمایشی محاسبه میشود و در متغییر C قرار میگیرد. همانطور که مشاهده میکنید این آدرس به دو پارامتر سطر نمایشی Row و کاراکتر نمایشی Character  وابسته است.

 

C = Character + Row

 

پس از مشخص شدن آدرس محل اطلاعات سطر مورد نظر جهت نمایش در ماتریس، این اطلاعات توسط دستور Lookup از جدول Animation استخراج شده در پورت D قرار میگیرد.

 

Portd = Lookup(c , Animation)

 

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

 

Waitus 20

 

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

 

Portd = 0

 

در آخرین دستور حلقه، متغییر Scan به اندازه یک بیت به سمت چپ شیفت چرخشی داده میشود تا آماده فعال نمودن سطر بعدی و غیر فعال کردن سایر سطرها شود.

 

Rotate Scan , Left

 

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

 

Animation:

'character '/'

Data &B00000
Data &B00001
Data &B00010
Data &B00100
Data &B01000
Data &B10000
Data &B00000


'character '-'

Data &B00000
Data &B00000
Data &B00000
Data &B11111
Data &B00000
Data &B00000
Data &B00000


'character '\'

Data &B00000
Data &B10000
Data &B01000
Data &B00100
Data &B00010
Data &B00001
Data &B00000


'character '|'

Data &B00100
Data &B00100
Data &B00100
Data &B00100
Data &B00100
Data &B00100
Data &B00100

 

امیدوارم که مطالب ارائه شده در این مقاله برای شما دوستان مفید واقع شده باشد. متن کامل برنامه را که با استفاده از نرم‌افزار BASCOM AVR 1.11.8.1 نوشته شده در زیر مشاهده میکنید. این نسخه از نرم افزار مشکلات نسخه های پیشین را ندارد بالاخص اینکه نسخه های موجود در بازار Demo بوده و به شما امکان نوشتن برنامه‌هایی  با حجم بیش از دو کیلو بایت را نمی‌دهند. شما جهت نوشتن برنامه تابلو روان حرفه‌ای نمی‌توانید از نسخه Demo استفاده کنید. پس

 

جهت تهیه نرم افزار BASCOM-AVR، اینجا کلیک کنید.

 

 

'*********************************************
'* This Program Writing By : Hossein Lachini *
'* Animation on the LED 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 Row As Byte
Dim Scan As Byte
Dim Refresh As Byte
Dim Character As Byte
Dim C As Byte


Do
For Character = 0 To 27 Step 7
For Refresh = 0 To 10
    Scan = &B11111110
    For Row = 0 To 6
        Portb = Scan
        C = Character + Row
        Portd = Lookup(c , Animation)
        Waitus 20
        Portd = 0
        Rotate Scan , Left
    Next Row
Next Refresh
Next Character
Loop
End 'end program

Animation:

'character '/'

Data &B00000
Data &B00001
Data &B00010
Data &B00100
Data &B01000
Data &B10000
Data &B00000


'character '-'

Data &B00000
Data &B00000
Data &B00000
Data &B11111
Data &B00000
Data &B00000
Data &B00000


'character '\'

Data &B00000
Data &B10000
Data &B01000
Data &B00100
Data &B00010
Data &B00001
Data &B00000


'character '|'

Data &B00100
Data &B00100
Data &B00100
Data &B00100
Data &B00100
Data &B00100
Data &B00100

 

نوشته شده در سه شنبه سوم اردیبهشت 1387ساعت 10:52 توسط : جمشید . محسن . حبیب |

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

در این بخش من فایل های مورد نیاز شما را جهت، ساخت تابلو روان برای دانلود قرار دادم. این فایلها به صورت یک فایل واحد با فرمت Zip فشرده سازی شده‌اند و عبارتند از :

 

- فایل شماتیک طراحی شده در نرم افزار Proteus : این شماتیک در دو برگه (Sheet) طراحی شده در برگه نخست شماتیک مربوط به مدار میکروکنترلر ATmega8 قرار دارد و در برگه دوم شماتیک ماتریس LED قرار گرفته است.

جهت تهیه نرم افزار Proteus ، اینجا کلیک کنید.

 

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

جهت تهیه نرم افزار BASCOM-AVR ، اینجا کلیک کنید.

 

- فایل هگز (Hex) برنامه تابلو روان جهت پروگرم کردن میکروکنترلر ATmega8.

 

Í

جهت دانلود فایلهای فوق اینجا کلیک کنید.

حجم فایل : 9.93 کیلوبایت

فرمت فایل Zip

 

 

›

 

آقای امین باغبانیان، یکی از دوستداران الکترونیک و دوست عزیز بنده، لطف کردن و در ایمیلی برای من یک جدول گلایف را ارسال کردند که من ضمن تشکر از ایشان، جدول ارسالی ایشان را جهت دانلود شما عزیزان در سایت قرار دادم.

متن ایمیل آقای باغبانیان :