نقشه اي را که ملاحظه مي فرمايد يک ظبط ديجيتال کامل است که قادر است از 20 ثانيه تا 16 دقيقه (تا امروز) صدا ظبط کند و روز به روز آي سي هاي با حافظه بيشتر از اين شرکت به بازار مي آيند. آي سي هاي مشهور به سري 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 می باشد که برای آگاهی از جزئیات بیشتر در مورد این پروگرمر می توانید PDF زیر را دانلود نمایید:
((این فایل شامل نکات جالبی در مورد فیوز بیت ها و طریقه تنظیم آنها نیز می باشد (به زبان فارسی))
لازم به ذکر است که شما می توانید این پروگرمر را به قیمت ۶۰۰۰ تومان خریداری نمایید.
نحوه سفارش: ابتدا با شماره بنده تماس حاصل فرمایید: 09329484669 ( بهنام زکی زاده، قزوین)پس از هماهنگی های لازم در ابتدا وجه پروژه درخواستی از طریق شماره حساب بانک ملت (شماره شانزده رقمی عابر بانک ملت به شماره 6104332102062774) دریافت می گردد و پروژه آماده و تست شده به همراه سی دی در مدت 3 الی 5 روز با پست پیشتاز به آدرس شما ارسال می گردد. از طرفی در صورت تمایل می توانید مدار را به صورت حضوری از بنده خریداری نمایید(در صورتی که اهل قزوین باشید)
نوشته شده در سه شنبه سوم اردیبهشت 1387ساعت 13:13 توسط : جمشید . محسن . حبیب
|
اين مدار را با استفاده از ميکروي AVR طراحي و برنامه ريزي کرده ام. پروژه مذکور يک قفل رمز ديجيتالي مي باشد که مي توانيد از آن براي درب خانه و يا روشن کردن وسايلي که نياز به مجوز شما دارند استفاده کنيد.
يکي از ويژگيهاي منحصر به فرد آن قابليت تغيير رمز به وسيله کيبرد خود دستگاه مي باشد (بدون نياز به کامپيوتر). طبق مراحلي که بعداً توضيح داده خواهد شد مي توانيد رمز عبور جديد را به دستگاه بدهيد. همچنين براي جلوگيري از ورود افراد متفرقه به بخش کنترل سيستم (کنترل پنل) يک PIN Code چهار رقمي در نظر گرفته ام که اين عدد را فقط خود شما بايد بدانيد و توسط آن وارد بخش کنترل شده و مي توانيد تمامي تنظيمات دستگاه را تغيير دهيد حتي PIN Code را.
يکي ديگر از ويژگيهاي مدار اينست که اگر 3 بار رمز عبور غلط بدهيد سيستم به طور خودکار LCD را خاموش کرده و کيبرد را هم از کار مي اندازد و تا 5 دقيقه به خواب فرو مي رود و پس از 5 دقيقه به طور خودکار روشن مي شود.
با دادن رمز در نهايت يک رله وصل مي شود که مي توانيد وصل بودن اين رله را طوري تنظيم کنيد که دائم وصل بماند يا به صورت زمان دار ( مثلاً اگر از اين قفل رمز براي F.F منزل استفاده کنيد بايد وصل بودن رله را زمان دار تعريف کرده و زمان آنرا نيز 1 ثانيه قرار دهيد تا به محض دريافت رمز عبور صحيح يک ثانيه رله را وصل کرده و دوباره قطع نمايد. رله را بايد به سيم هاي شاسي دربازکن اف اف متصل کنيد) (مثال حالت دوم: اگر از قفل رمز براي روشن کردن يک وسيله برقي مثل کامپيوتر يا TV استفاده مي کنيد بايد وصل بودن رله را دائمي تعريف کنيد که در اين صورت با وارد کردن پسورد صحيح، رله به صورت دائمي وصل بماند و در صورت نياز با فشار کليد معيني قطع شود.
در شکل زير نمونه ساخته شده را ملاحظه مي فرماييد:
نقشه شماتيک:
منوهاي دستگاه:
يک نمونه ساخته شده:
همانطوريکه مي دانيد رمز عبور در حافظه EEPROM آي سي ذخيره مي شود و با قطع برق و ريست مدار نيز قابل پاک شدن نيست. براي اين منظور يک جامپر کوچک در طرح مدار قرار داده ام که در صورت فراموشي رمز عبور، برق سيستم را قطع کرده و اين جامپر را اتصال کوتاه نماييد و سيستم را روشن کنيد. مشاهده مي کنيد که روي LCD نوشته مي شود : Memory Erased و رمز عبور و پين کد پيش فرض نيز روي صفحه نمايش داده مي شوند که رمز عبور 12345678 , پين 1234 است. سپس جامپر را قطع نماييد.
بلندگوي کوچک نيز مسئول پخش صداهاي Error و تاييد سيستم و نيز صدا های صفحه کليد است. آنرا از نوع صفحه پلاستيکي کوچک انتخاب نماييد. ---------------------------------------------------------------------------------------------------------------
نوشته شده در سه شنبه سوم اردیبهشت 1387ساعت 13:10 توسط : جمشید . محسن . حبیب
|
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:
Hier sieht man 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:
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:
Die vierpolige Klemmleiste unten rechts ist die Anschlussbuchse für das Steuerungsmodul:
Hier sieht man die Anschlüsse an der Steuerungsplatine noch mal genau:
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):
نوشته شده در سه شنبه سوم اردیبهشت 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 توسط : جمشید . محسن . حبیب
|
آيا تابحال شده که براي کنترل يک روبات يا هواپيماي مدل به يک ريموت کنترل راديويي با برد نامحدود نياز داشته باشيد؟
مداري که که در زير ملاحظه مي فرماييد توسط بنده طراحي شده است و قادر خواهد بود که با استفاده از يک گوشي موبايل (ترجيحاً دولتي!) ۵ عدد رله را قطع و وصل نمايد.
عملکرد اين مدار به اين صورت مي باشد که شما مدار را ساخته و ميکروفن آنرا نزديک به گوشي تلفن همراه نصب مي نماييد و با يک تلفن ثابت (يا همراه) ديگر به اين موبايل زنگ ميزنيد و پس از پاسخ به تماس دستگاه فعال مي شود. بدين صورت که شما هر يک از کليد هاي 0 تا 9 و * و # را که روي تلفن ثابت (يا همراه ) فشار دهيد تن صوتي به گوشي اين موبايل رسيده و توسط ميکروفن دستگاه دريافت مي شود و پس از پردازش توسط آي سي ديکدر براي تصميم گيري نهايي و راه اندازي رله ها به ميکرو ارسال مي شود.
اگر از 2 عدد موبايل براي اين کار استفاده کنيد مي توانيد يک روبات با کنترل نامحدود بسازيد خصوصاً اگر هر دو گوشي مجهزبه دوربين و سيستم ام ام اس باشند در اين صورت شما مي توانيد در خانه بنشينيد و روبات خود را به کيلومتر ها آنطرف تر بفرستيد و آنرا به صورت تصويري هدايت نماييد!
همچنين براي هواپيماهاي مدل نيز اين امر صادق است. و کاربرد ديگر آن روشن کردن کولر و سماور خانه مي باشد!
البته لازم به ذکر است در وهله اول که به اين دستگاه زنگ مي زنيد بايد به صورت دستي کليد سبز را بزنيد و اگر در راه ارتباط قطع شود قادر به ايجاد ارتباط نخواهيد بودو البته در يک مورد بنده يک راه حل جالب ابداع کردم ؛ البته نياز به دستکاري گوشي دارد. بدين صورت که هرگاه ارتباط قطع شد دوباره شماره گوشي را مي گيريد ومسلماً گوشي زنگ مي زند ، صداي زنگ توسط ميکرفن ديگري اتخاذ شده ودستگاه کوچک ديگري دو سيمي را که به پايه هاي کليد سبز موبايل لحيم شده اند را يک لحظه اتصال کوتاه مي کند ( مثل اينست که کسي گوشي را برداشته) البته اين روش نياز به باز کردن تلفن دارد و توصيه نمي شود.
جامپر کوچکي را که کنار آي سي ميکرو مشاهده مي کنيد براي تايين مد دستگاه مي باشند:
مد 1 : هر دو جامپر باز - دستگاه غير فعال است و هر کليدي را فشار دهيم اصلاً رله هاي آن عمل نمي کنند.
مد 2 : هر دو جامپر بسته - هر کليدي را فشرده نگه داريم رله مربوط به آن وصل مي ماند و همينکه دستمان را از روي کليد برداريم رله هم قطع مي شود.
مد 3 : جامپر بالا بسته - هر کليدي را بزنيم رله مربوط به آن وصل مي ماند و اگر دوباره بزنيم قطع مي شود ( فليپ فلاپ) 12 رله مستقل عمل مي کنند.
مد 4 : جامپر پايين بسته - هر کليدي را بزنيم رله مربوط به آن وصل مي ماند و کليد ديگري را بزنيم قبلي را قطع کرده و رله جديد را وصل مي کند ( حالتي شبه کليد هاي ضبط صوت هاي قديمي يا واکمن ها ) ( هميشه فقط يک رله وصل مي ماند)
جامپر ها را فقط يکبار تنظم کنيد چون پس از روشن کردن دستگاه فقط در اول برنامه وضعيت آنها چک ميشود و در طول برنامه اگر وضعيت آنها را تغيير دهيد مد عوض نمي شود مگر ميکرو را ري ست کنيد.
نوشته شده در سه شنبه سوم اردیبهشت 1387ساعت 12:37 توسط : جمشید . محسن . حبیب
|
مقاله ویژه این هفته به تشریح مدار و نحوه ساخت یک دماسنج ( ترمومتر ) دیجیتال مربوط می شود. این مدار دارای کاربرد و جذابیتهای فراوان می باشد و قابلیت ارائه به عنوان پروژه دانشجویی و یا در در کنار مجموعه ای از وسایل دیگر با کمی چاشنی ابتکار می تواند طرحی جهت ارائه به جشنواره خوارزمی باشد.این مدار با دقت قابل قبولی دمای محیط را بر روی نمایشگر کریستال مایع ( در صورت تمایل می توانید از نمایشگر ال ای دی استفاده نمایید ) نشان می دهد. برای سنسور حسگر حرارت این مدار می توانید از آی سی S8100 استفاده نمایید که قابلیت اندازه گیری دماهایی بین -40 تا +100 درجه سانتیگراد را دارد. همچنین می توانید از دیود 1S1588 استفاده نمایید که در این صورت مدار شما قابلیت اندازه گیری دما از -20 تا +150 درجه سانتیگراد را دارا خواهد بود.
کلیه تصاویر در ابعاد بزرگ و واضح بر روی سیستم شما بارگزاری شده اند. برای مشاهده هر تصویر در ابعاد بزرگتر بر روی آن کلیک کنید.
نمایشگر کریستال مایع استفاده شده در این مدار و شکل پایه های آن
در این مدار آی سی ICL7136 به کار گرفته شده است که ولتاژ رسیده از دیود حسگر حرارت را را اندازه گیری می نماید.برای نمایش اطلاعات از یک نمایشگر کریستال مایع 3/5 رقم به شماره SP521PR استفاده شده است. که با ارزش ترین رقم آن تنها امکان نمایش عدد یک را دارد. در صورت نیاز می توانید با کمی تغییر در مدار از نمایشگرهای ال ای دی و نظیر آنها نیز استفاده نمایید. انرژی مصرفی آی سی ICL7136 بسیار اندک بوده به گونه ای که دماسنج دیجیتال شما می تواند حدود 3 ماه به صورت پیوسته تنها با یک باتری 9 ولت به خوبی دمای محیط را اندازه گیری نماید. توجه داشته باشد که برای آیسی و نمایشگر مدار حتماً از سوکت استفاده مایید.
شکل PCB ( نقشه مدارچاپی ) ترمومتر دیجیتال به صورت زیر است. دقت کنید که به خاطر واضح شدن نقشه تصویر بزرگتر از اندازه واقعی برد است. برای بدست آوردن اندازه واقعی می توانید اندازه آی سی را مبنای کار خود قرار دهید.
خطوط سبز فسفری سیم های اتصال در طرف دیگر برد را نشان می دهندو سیم قرمز رنگ برای روشن کردن نقطه ( ممیز ) نمایشگر به کار رفته است.
تنظیم و راه اندازی :
پس از ساخت مدار ، هنگامی که مطمئن شدید همه چیز به درستی انجام شده است ، تغذیه مدار را متصل نمایید. دماسنج دیجیتال شما قبل از استفاده نیاز به تنظیم دارد. معمولاً این تنظیم را در دمای صفر و 100 درجه انجام داده و ملاک را مخلوط آب و یخ برای صفر درجه و آب جوش برای 100 درجه قرار می دهند. برای تنظیم ابتدا سنسور را در مخلوط آب و یخ قرار داده و توسط پتانسیومتر VR2 دما را بر روی صفر درجه تنظیم نمایید. پس از آن سنسور را در آب در حال جوشیدن قرار داده و پتانسیومتر VR1 را آنقدر بچرخانید تا دماسنج دیجیتال عدد 100 را نمایش دهد. حال دستگاه شما تنظیم شده و آماده به کار است. در زیر جدول مقایسه ای بین دماهای اندازه گیری شده توسط دماسنج الکلی و ترمومتر دیجیتال را مشاهده می کنید . همانگونه که از نمودار رسم شده نیز مشخص است ، دماسنج ساخته شده توسط شما با دقت قابل قبولی قادر به اندازه گیری دما است.
جهت استفاده شما عزیزان مقاله ای شامل عملکرد بخشهای مختلف این مدار به صورت تشریحی در دست تهیه می باشد که به محض آماده شده بر روی سایت منتشر خواهد شد.
نوشته شده در سه شنبه سوم اردیبهشت 1387ساعت 12:32 توسط : جمشید . محسن . حبیب
|
اين برنامه براي نمايش دو تصوير و دو متن طراحي شده است. بنابراين برنامه به چهار بخش تقسيم شده است كه هر بخش وظيفه نمايش يك مورد را دارد من جهت خواناتر شدن برنامه هريك از اين بخشها را در برنامه با قرار دادن توضيح قبل از شروع هر قسمت مشخص كردم.
در بخش اول نمايش تصوير قلب است كه ضمن نمايش اين تصوير را به سمت بالا هم شيفت ميدهد. در بخش دوم كلمه 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 بر روي چهار ستون نمايش داده شود.
البته ميكروكنترولر به جهت اينكه همزمان بايد در اينجا چهار ستون مختلف را فعال كند و تامين جريان مورد نياز براي LED هاي اين ستونها از عهده ميكرو ساخته نيست لذا من در ايم مدار از آي سي ULN2803 استفاده كردم. همانطور در برنامه نيز مشاهده ميكنيد. در سطر اول برنامه ستون مورد نظر بر روي ماتريس LED توسط متغيير Scan انتخاب شده و بر روي پورت B قرار ميگيرد و سپس اين متغيير جهت استفاده بعدي به ميزان يك واحد به سمت چپ شيفت داده مي شود. حال براي اينكه اثر نور LEDها بر روي تابلو توسط چشم ديده شود به اندازه 250 ميكرو ثانيه LEDها در اين وضعيت روشن نگه داشته ميشوند و پس از آن توسط صفر كردن پورت C خاموش ميشوند.
در انيميشن زير شما ميتوانيد كل اجراي روند فوق را براي اجراي اولين بار حلقه داخلي مشاهده كنيد. به انيميشن توجه كنيد.
در انيميشن فوق من جهت درك بهتر موضوع مقادير خوانده شده از جداول گلايف در هر بار اجراي حلقه داخلي نمايش دادهام. البته باز هم براي درك بهتر موضوع اين مقادير را دقيقا زير لچ مربوط به مقدار خود در كادر مشكي مشخص كردم.
از آنجايي كه اين دستورات با سرعت بالايي در ميكرو اجرا ميشود در نتيجه چشم شما در عمل متوجه اين موضوع نخواهد شد و تصوير قلب را به صورت كامل همانند تصوير زير مشاهده خواهد كرد.
من در اينجا عكس واقعي اين مدار را هنگام نمايش تصوير قلب گذاشتم كه ميتوانيد آنرا در زير مشاهده كنيد.حيرت انگيز و جالب است. نه؟!
البته شما ميتوانيد فيلم كامل تابلو روان را از طريق كليك بر روي لينك زير مشاهده كنيد.
همانطور كه در كدهاي برنامه نيز ميبينيد شما جهت نمايش متن و علامات مختلف نياز به محاسبه كدهاي مربوط به جداول گلايف داريد. و اگر از قبل اين دسته از مقالات را دنبال كرده باشيد. ميدانيد كه من جهت راحتي شما دوستان علاقمند دو نرم افزار زير را طراحي كردم:
جهت كسب اطلاعات بيشتر در اين مورد و همچنين دريافت آنها بر روي دو لينك بالا كليك كنيد.
كد كامل برنامه :
'********************************************* '* This Program Writing By : Hossein Lachini * '* The LED Signe Board* '* For toget more details visit : * '* www.HLachini.com* '* Contact to me by : eLachini@Gmail.com* '********************************************* $regfile = "m8def.dat" $crystal = 8000000
البته شايد برخي از دوستان از اين كه در اين برنامه از توابع جهت نوشتن برنامه استفاده نكردم و همچنين برنامه بشكل ساخت يافته نوشته نشده ايراد بگيرند كه من در اينجا بايد اين نكته را يادآوري كنم كه هدف من آموزش اصول ساخت تابلوهاي روان به همه كساني است كه حتي شايد اين اولين تجربه آنها در طراحي و برنامه نويسي مدارات الكترونيكي است. پس تا حد امكان برنامه را ساده نوشتم كه البته در عين سادگي كامل نيز هست.
در صورتي كه شما دوستان علاقمند نيز تجربياتي در اين زمينه داريد و اين مدار را چه در سخت افزار آن و چه در نرمافزار آن تغيير ايجاد كردهايد و آن را كامل تر كرديد ميتوانيد اطلاعات آنرا از طريق ايميل eLachini@Gmail.Com براي من ارسال كنيد تا با نام شما در اين سايت قرار بگيرد و ساير دوستان علاقمند هم بتوانند از تجربيات شما استفاده كنند.
نوشته شده در سه شنبه سوم اردیبهشت 1387ساعت 11:25 توسط : جمشید . محسن . حبیب
|
اين برنامه براي نمايش دو تصوير و دو متن طراحي شده است. بنابراين برنامه به چهار بخش تقسيم شده است كه هر بخش وظيفه نمايش يك مورد را دارد من جهت خواناتر شدن برنامه هريك از اين بخشها را در برنامه با قرار دادن توضيح قبل از شروع هر قسمت مشخص كردم.
در بخش اول نمايش تصوير قلب است كه ضمن نمايش اين تصوير را به سمت بالا هم شيفت ميدهد. در بخش دوم كلمه 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 بر روي چهار ستون نمايش داده شود.
البته ميكروكنترولر به جهت اينكه همزمان بايد در اينجا چهار ستون مختلف را فعال كند و تامين جريان مورد نياز براي LED هاي اين ستونها از عهده ميكرو ساخته نيست لذا من در ايم مدار از آي سي ULN2803 استفاده كردم. همانطور در برنامه نيز مشاهده ميكنيد. در سطر اول برنامه ستون مورد نظر بر روي ماتريس LED توسط متغيير Scan انتخاب شده و بر روي پورت B قرار ميگيرد و سپس اين متغيير جهت استفاده بعدي به ميزان يك واحد به سمت چپ شيفت داده مي شود. حال براي اينكه اثر نور LEDها بر روي تابلو توسط چشم ديده شود به اندازه 250 ميكرو ثانيه LEDها در اين وضعيت روشن نگه داشته ميشوند و پس از آن توسط صفر كردن پورت C خاموش ميشوند.
در انيميشن زير شما ميتوانيد كل اجراي روند فوق را براي اجراي اولين بار حلقه داخلي مشاهده كنيد. به انيميشن توجه كنيد.
در انيميشن فوق من جهت درك بهتر موضوع مقادير خوانده شده از جداول گلايف در هر بار اجراي حلقه داخلي نمايش دادهام. البته باز هم براي درك بهتر موضوع اين مقادير را دقيقا زير لچ مربوط به مقدار خود در كادر مشكي مشخص كردم.
از آنجايي كه اين دستورات با سرعت بالايي در ميكرو اجرا ميشود در نتيجه چشم شما در عمل متوجه اين موضوع نخواهد شد و تصوير قلب را به صورت كامل همانند تصوير زير مشاهده خواهد كرد.
من در اينجا عكس واقعي اين مدار را هنگام نمايش تصوير قلب گذاشتم كه ميتوانيد آنرا در زير مشاهده كنيد.حيرت انگيز و جالب است. نه؟!
البته شما ميتوانيد فيلم كامل تابلو روان را از طريق كليك بر روي لينك زير مشاهده كنيد.
همانطور كه در كدهاي برنامه نيز ميبينيد شما جهت نمايش متن و علامات مختلف نياز به محاسبه كدهاي مربوط به جداول گلايف داريد. و اگر از قبل اين دسته از مقالات را دنبال كرده باشيد. ميدانيد كه من جهت راحتي شما دوستان علاقمند دو نرم افزار زير را طراحي كردم:
جهت كسب اطلاعات بيشتر در اين مورد و همچنين دريافت آنها بر روي دو لينك بالا كليك كنيد.
كد كامل برنامه :
'********************************************* '* This Program Writing By : Hossein Lachini * '* The LED Signe Board* '* For toget more details visit : * '* www.HLachini.com* '* Contact to me by : eLachini@Gmail.com* '********************************************* $regfile = "m8def.dat" $crystal = 8000000
البته شايد برخي از دوستان از اين كه در اين برنامه از توابع جهت نوشتن برنامه استفاده نكردم و همچنين برنامه بشكل ساخت يافته نوشته نشده ايراد بگيرند كه من در اينجا بايد اين نكته را يادآوري كنم كه هدف من آموزش اصول ساخت تابلوهاي روان به همه كساني است كه حتي شايد اين اولين تجربه آنها در طراحي و برنامه نويسي مدارات الكترونيكي است. پس تا حد امكان برنامه را ساده نوشتم كه البته در عين سادگي كامل نيز هست.
در صورتي كه شما دوستان علاقمند نيز تجربياتي در اين زمينه داريد و اين مدار را چه در سخت افزار آن و چه در نرمافزار آن تغيير ايجاد كردهايد و آن را كامل تر كرديد ميتوانيد اطلاعات آنرا از طريق ايميل eLachini@Gmail.Com براي من ارسال كنيد تا با نام شما در اين سايت قرار بگيرد و ساير دوستان علاقمند هم بتوانند از تجربيات شما استفاده كنند.
نوشته شده در سه شنبه سوم اردیبهشت 1387ساعت 11:25 توسط : جمشید . محسن . حبیب
|
اين برنامه براي نمايش دو تصوير و دو متن طراحي شده است. بنابراين برنامه به چهار بخش تقسيم شده است كه هر بخش وظيفه نمايش يك مورد را دارد من جهت خواناتر شدن برنامه هريك از اين بخشها را در برنامه با قرار دادن توضيح قبل از شروع هر قسمت مشخص كردم.
در بخش اول نمايش تصوير قلب است كه ضمن نمايش اين تصوير را به سمت بالا هم شيفت ميدهد. در بخش دوم كلمه 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 بر روي چهار ستون نمايش داده شود.
البته ميكروكنترولر به جهت اينكه همزمان بايد در اينجا چهار ستون مختلف را فعال كند و تامين جريان مورد نياز براي LED هاي اين ستونها از عهده ميكرو ساخته نيست لذا من در ايم مدار از آي سي ULN2803 استفاده كردم. همانطور در برنامه نيز مشاهده ميكنيد. در سطر اول برنامه ستون مورد نظر بر روي ماتريس LED توسط متغيير Scan انتخاب شده و بر روي پورت B قرار ميگيرد و سپس اين متغيير جهت استفاده بعدي به ميزان يك واحد به سمت چپ شيفت داده مي شود. حال براي اينكه اثر نور LEDها بر روي تابلو توسط چشم ديده شود به اندازه 250 ميكرو ثانيه LEDها در اين وضعيت روشن نگه داشته ميشوند و پس از آن توسط صفر كردن پورت C خاموش ميشوند.
در انيميشن زير شما ميتوانيد كل اجراي روند فوق را براي اجراي اولين بار حلقه داخلي مشاهده كنيد. به انيميشن توجه كنيد.
در انيميشن فوق من جهت درك بهتر موضوع مقادير خوانده شده از جداول گلايف در هر بار اجراي حلقه داخلي نمايش دادهام. البته باز هم براي درك بهتر موضوع اين مقادير را دقيقا زير لچ مربوط به مقدار خود در كادر مشكي مشخص كردم.
از آنجايي كه اين دستورات با سرعت بالايي در ميكرو اجرا ميشود در نتيجه چشم شما در عمل متوجه اين موضوع نخواهد شد و تصوير قلب را به صورت كامل همانند تصوير زير مشاهده خواهد كرد.
من در اينجا عكس واقعي اين مدار را هنگام نمايش تصوير قلب گذاشتم كه ميتوانيد آنرا در زير مشاهده كنيد.حيرت انگيز و جالب است. نه؟!
البته شما ميتوانيد فيلم كامل تابلو روان را از طريق كليك بر روي لينك زير مشاهده كنيد.
همانطور كه در كدهاي برنامه نيز ميبينيد شما جهت نمايش متن و علامات مختلف نياز به محاسبه كدهاي مربوط به جداول گلايف داريد. و اگر از قبل اين دسته از مقالات را دنبال كرده باشيد. ميدانيد كه من جهت راحتي شما دوستان علاقمند دو نرم افزار زير را طراحي كردم:
جهت كسب اطلاعات بيشتر در اين مورد و همچنين دريافت آنها بر روي دو لينك بالا كليك كنيد.
كد كامل برنامه :
'********************************************* '* This Program Writing By : Hossein Lachini * '* The LED Signe Board* '* For toget more details visit : * '* www.HLachini.com* '* Contact to me by : eLachini@Gmail.com* '********************************************* $regfile = "m8def.dat" $crystal = 8000000
البته شايد برخي از دوستان از اين كه در اين برنامه از توابع جهت نوشتن برنامه استفاده نكردم و همچنين برنامه بشكل ساخت يافته نوشته نشده ايراد بگيرند كه من در اينجا بايد اين نكته را يادآوري كنم كه هدف من آموزش اصول ساخت تابلوهاي روان به همه كساني است كه حتي شايد اين اولين تجربه آنها در طراحي و برنامه نويسي مدارات الكترونيكي است. پس تا حد امكان برنامه را ساده نوشتم كه البته در عين سادگي كامل نيز هست.
در صورتي كه شما دوستان علاقمند نيز تجربياتي در اين زمينه داريد و اين مدار را چه در سخت افزار آن و چه در نرمافزار آن تغيير ايجاد كردهايد و آن را كامل تر كرديد ميتوانيد اطلاعات آنرا از طريق ايميل eLachini@Gmail.Com براي من ارسال كنيد تا با نام شما در اين سايت قرار بگيرد و ساير دوستان علاقمند هم بتوانند از تجربيات شما استفاده كنند.
نوشته شده در سه شنبه سوم اردیبهشت 1387ساعت 11:25 توسط : جمشید . محسن . حبیب
|
اين برنامه براي نمايش دو تصوير و دو متن طراحي شده است. بنابراين برنامه به چهار بخش تقسيم شده است كه هر بخش وظيفه نمايش يك مورد را دارد من جهت خواناتر شدن برنامه هريك از اين بخشها را در برنامه با قرار دادن توضيح قبل از شروع هر قسمت مشخص كردم.
در بخش اول نمايش تصوير قلب است كه ضمن نمايش اين تصوير را به سمت بالا هم شيفت ميدهد. در بخش دوم كلمه 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 بر روي چهار ستون نمايش داده شود.
البته ميكروكنترولر به جهت اينكه همزمان بايد در اينجا چهار ستون مختلف را فعال كند و تامين جريان مورد نياز براي LED هاي اين ستونها از عهده ميكرو ساخته نيست لذا من در ايم مدار از آي سي ULN2803 استفاده كردم. همانطور در برنامه نيز مشاهده ميكنيد. در سطر اول برنامه ستون مورد نظر بر روي ماتريس LED توسط متغيير Scan انتخاب شده و بر روي پورت B قرار ميگيرد و سپس اين متغيير جهت استفاده بعدي به ميزان يك واحد به سمت چپ شيفت داده مي شود. حال براي اينكه اثر نور LEDها بر روي تابلو توسط چشم ديده شود به اندازه 250 ميكرو ثانيه LEDها در اين وضعيت روشن نگه داشته ميشوند و پس از آن توسط صفر كردن پورت C خاموش ميشوند.
در انيميشن زير شما ميتوانيد كل اجراي روند فوق را براي اجراي اولين بار حلقه داخلي مشاهده كنيد. به انيميشن توجه كنيد.
در انيميشن فوق من جهت درك بهتر موضوع مقادير خوانده شده از جداول گلايف در هر بار اجراي حلقه داخلي نمايش دادهام. البته باز هم براي درك بهتر موضوع اين مقادير را دقيقا زير لچ مربوط به مقدار خود در كادر مشكي مشخص كردم.
از آنجايي كه اين دستورات با سرعت بالايي در ميكرو اجرا ميشود در نتيجه چشم شما در عمل متوجه اين موضوع نخواهد شد و تصوير قلب را به صورت كامل همانند تصوير زير مشاهده خواهد كرد.
من در اينجا عكس واقعي اين مدار را هنگام نمايش تصوير قلب گذاشتم كه ميتوانيد آنرا در زير مشاهده كنيد.حيرت انگيز و جالب است. نه؟!
البته شما ميتوانيد فيلم كامل تابلو روان را از طريق كليك بر روي لينك زير مشاهده كنيد.
همانطور كه در كدهاي برنامه نيز ميبينيد شما جهت نمايش متن و علامات مختلف نياز به محاسبه كدهاي مربوط به جداول گلايف داريد. و اگر از قبل اين دسته از مقالات را دنبال كرده باشيد. ميدانيد كه من جهت راحتي شما دوستان علاقمند دو نرم افزار زير را طراحي كردم:
جهت كسب اطلاعات بيشتر در اين مورد و همچنين دريافت آنها بر روي دو لينك بالا كليك كنيد.
كد كامل برنامه :
'********************************************* '* This Program Writing By : Hossein Lachini * '* The LED Signe Board* '* For toget more details visit : * '* www.HLachini.com* '* Contact to me by : eLachini@Gmail.com* '********************************************* $regfile = "m8def.dat" $crystal = 8000000
البته شايد برخي از دوستان از اين كه در اين برنامه از توابع جهت نوشتن برنامه استفاده نكردم و همچنين برنامه بشكل ساخت يافته نوشته نشده ايراد بگيرند كه من در اينجا بايد اين نكته را يادآوري كنم كه هدف من آموزش اصول ساخت تابلوهاي روان به همه كساني است كه حتي شايد اين اولين تجربه آنها در طراحي و برنامه نويسي مدارات الكترونيكي است. پس تا حد امكان برنامه را ساده نوشتم كه البته در عين سادگي كامل نيز هست.
در صورتي كه شما دوستان علاقمند نيز تجربياتي در اين زمينه داريد و اين مدار را چه در سخت افزار آن و چه در نرمافزار آن تغيير ايجاد كردهايد و آن را كامل تر كرديد ميتوانيد اطلاعات آنرا از طريق ايميل eLachini@Gmail.Com براي من ارسال كنيد تا با نام شما در اين سايت قرار بگيرد و ساير دوستان علاقمند هم بتوانند از تجربيات شما استفاده كنند.
نوشته شده در سه شنبه سوم اردیبهشت 1387ساعت 11:24 توسط : جمشید . محسن . حبیب
|
ارائه این مقاله مقداری طولانی شد كه اميدوارم باعث ناراحتي شما دوستان نشده باشد. در طی اين مدت خيلی از شما دوستان با من تماس داشتيد و درخواست ادامه بحث تابلو روان شده بوديد. كه اميدوارم با ارائه اين مطلب رضايت شما را جلب كرده باشم. البته همانطور كه گفتم بحث تابلوروان را تا ساخت تابلوهای رنگی من ادامه ميدهم. پس حتما همراه ما باشيد و همچنين به ساير دوستان خود كه علاقمند به ساخت تابلو روان هستند اين سايت را معرفي كنيد.
ما در مقالات قبلی با ساخت تابلو روان در ابعاد يك پانل 5 در 7 آشنا شديم. هدف من از ساخت آن مدار اين بود كه شما را با اصول اوليه در رابطه با تابلوهای روان آشنا كنم. لذا اين مدار بايستي داراي مشخصات زير بود :
1- سادگي مدار :
اين مدار نبايد چندان به لحاظ سخت افزاری پيچيده باشد. تا شما بتوانيد براحتي آنرا تحليل كنيد و ساخت آن كمترين هزينه و زمان را لازم داشته باشد.
2- قابليت برنامه پذيری :
شما چون نياز به آزمايش برنامه هاي گوناگون بر روی مدار باشيد لذا مدار بايد قابليت اجراي برنامه های مختلف را داشته باشد.
3- امكان آزمايش انواع جاروب :
اين مدار حتما بايد امكان جاروب سطری و ستونی را داشته باشد. تا شما بتوانيد هر دو روش را براحتي آشنا شده و پياده سازی كنيد.
ولی حالا شما به يك فرد با اطلاعات مناسب در زمينه تابلو روان تبديل شديد و هم اكنون ميخواهيد نحوه كار و طراحی تابلو روانهايی با ابعاد بزرگتر را تجربه كنيد. من هم برای اين موضوع مدار ديگری طراحی كردم كه امكان يادگيري اين مطلب را به شما داده و همچنين تا حد امكان مدار ساده طراحي شده باشد. البته من همين جا يادآوري ميكنم كه سادگي اين مدار دليلي بر اينكه اين مطالب در عمل كاربردي ندارد نيست بلكه تابلوهاي حرفهاي و بازاري هم از اين تكنيك استفاده ميكنند كه من فقط بصورت ساده و قابل فهم براي شما آنرا توضيح ميدهم.
در طول اين مدت كه من مقالات را مينوشتم بعضي از خوانندگان اين مقالات با من تماس مي گرفتن و در مورد مداراتي كه ساخته بودند صحبت ميكردند. كه البته طرحهاي جالب و زيبايي هم بود ولي همه از اين كه تعداد پورتهاي ميكرو كم هست و اجازه گسترش ابعاد مدار را نمي دهد شكايت ميكردند. من بايد عرض كنم كه ما براي گسترش ابعاد تابلو نيازي به ميكروكنترلري با تعداد پورت هاي زياد نداريم، بلكه بايد با روشي پورت ميكروكنترولر را گسترش دهيم. كه جهت اين كار ميتوان از شيفت رجيستر يا لچ استفاده نمود. من در مدار خودم از لچ استفاده كردم. اگر شما با مداري كه با شيفت رجيستر اين كار را انجام داده ميخواهيد آشنا شويد با من تماس بگيريد تا براي شما ارسال كنم.
¨
همانطور كه گفته شد، من در مدار خودم از لچ براي گسترش پايه هاي ميكروكنترلر استفاده كردم.اگر شما با اين روش آشنا نيستيد اينجا كليك كنيد.
اما نكته بعدي در اين مدار اين است كه در اين مدار از جاروب ستوني استفاده شده و ماتريس LED يك ماتريس 20 در 7 است. در واقع ميتوان گفت اين مدار از 4 پانل 5 در 7 تشكيل شده كه سطرهاي هر كدام از اين پانلها به يك لچ متصل شده است و ستونهاي تمامي اين 4 پانل به هم متصل شدهاند. لذا جهت درايو كردن(راهاندازي) اين ستونها ميكرو نياز به درايور دارد. شما ميتوانيد از پنج ترانزيستور NPN كه پايههاي اميتر آنها زمين شده و بيس از طريق يك مقاومت 330 اهم به پين مربوطه به ميكرو متصل است و كلكتور آن نيز مستقيماً به ستون متناظر آن وصل است استفاده كنيد. جهت درك بهتر موضوع به شكل زير توجه كنيد.
در مدار فوق از آنجايي كه در ماتريس LED كاتدهاي تمامي LEDهاي يك ستون به هم متصل شدهاند لذا براي فعال كردن هر ستون بايستي آنرا به زمين وصل كرد. در اينجا ميكرو با يك كردن بيس هر ترانزيستور آنرا روشن ميكند و سپس از طريق كلكتور-اميتر ترانزيستور ستون مورد نظر به زمين متصل ميشود. البته من در مدار خودم از IC بجاي ترانزيستورها استفاده ميكنم.
جهت كسب اطلاعات بيشتر اينجا كليك كنيد.
با فعال شدن هر ترانزيستور 4 ستون مختلف فعال ميشوند.و با توجه به اينكه سطرها به لچها متصل شدهاند ميكرو با قرار دادن اطلاعات مناسب در هر لحظه LEDهاي 4 ستون را كنترل نمايد و از آنجايي كه ما در اين مدار 20 ستون داريم لذا ميكرو در چهار مرحله ميتواند كل تابلو را جاروب كند.
دوستان گرامی اميدوارم كه مطالب ارائه شده در سايت در اين زمينه توانسته باشد نظر مثبت شما را جلب كرده باشد.من حداكثر تلاش خود را در اين زمينه نمودم تا مقالات از هر حيث كامل و مفيد باشد. كه در اين خصوص با ساخت كليپهاي فلش ،فيلم و انيميش سعي به كمك به درك كامل مطالب هر بخش نمودم.و در ادامه بحث شما را با چگونگي افزايش تعداد سطرهاي تابلو روان آشنا خواهم كرد.
لازم به ذكر است كه تماس شما با من چه از طريق ايميل eLachini@Gmail.Com و SMS و تماس با شماره تلفن 09123812060 به من كمك خواهد كرد كه مطالب را با توجه به نياز شما آماده كنم. پس با نظرات خود من را در اين راه ياري نماييد.
نوشته شده در سه شنبه سوم اردیبهشت 1387ساعت 11:18 توسط : جمشید . محسن . حبیب
|
سالهاي پيش يك كارتون بسيار جالب و پرطرفدار در تلويزيون پخش ميشد به نام "پرفسور بالتازار" اين شخصيت جالب يك دستگاه شگفت انگيز داشت كه ايدههاي پرفسور بالتازار را تبديل به واقعيت ميكرد. من خيلي به اين كارتون علاقه داشتم و هميشه در آرزوي داشتن چنين وسيلهاي بودم.
حالا حتما ميپرسين اين چه ربطي به موضوع بحث ما درباره تابلو روان داره؟
در اين مقاله با يك نرم افزار كه توسط خودم تهيه شده آشنا خواهيد شد.نرم افزاري كه نياز شما را به برنامهنويسي مرتفع خواهد كرد. به عبارتي بهتر از اين به بعد شما كافيه به اين نرم افزار مشخصات تابلوروان و سرعت و جهت حركت متنهايي كه ميخواهيد نمايش داده شوند را بدهيد سپس با يك كليك بدون نياز به دردسرهاي برنامه نويسي، برنامه خودتون رو تحويل بگيرين!
مثل اون دستگاه شگفت انگيز پرفسور بالتازار. برنامه Led Sign Board BASCOM AVRCode Wizard ايدهاي شما را به واقعيت تبديل ميكنه.
خصوصيات برنامه Led Sign Board BASCOM AVRCode Wizard عبارتند از :
امكان برنامه نويسي تابلوروان هايي با تعداد ستونهاي بين 5 تا 40 ستون.
تعداد متن دريافتي نا محدود.
قابليت تعريف افكتهاي حركتي به سمت چهار جهت اصلي براي هر متن بطور جداگانه.
امكان تعريف سرعت حركت براي هر متن بطور جداگانه بين 1 الي 9.
خروجي جهت استفاده در نرم افزار بسكام (BASCOM AVR).
برنامه توليد شده متناسب با آموزش داده شده در سايت.
سخت افزار مورد نياز مطابق با مقاله قبلي سايت.
استفاده از ميكروكنترولر ATmega8 بصورت پيش فرض در برنامه.
امكان تغيير نوع ميكروكنترولر به صورت دلخواه درون برنامه.(عدم وابستگي سورس توليد شده به نوع ميكروكنترولر!)
مناسب جهت استفاده براي يادگيري اصول برنامه نويسي تابلوروان.(توليد بي نهايت مثال!)
و ...
در مقاله قبلي كه در ارتباط با يك تابلو روان 20 در 7 بود با نحوه گسترش ابعاد تابلوروان با استفاده از آي سي لچ74573 آشنا گشتيد. و همچنين ديديم كه به جهت افزايش ابعاد تابلوروان بايد براي تامين جريان LED ها از يك درايور مناسب استفاده كرد. و در مدار تابلو روان 20 در 7 از آي سي ULN2803 استفاده شد. نرم افزاري كه در اين مقاله به آن ميپردازيم مطابق با طرح تابلو روان 20 در 7 است. و شما بايد مطابق همين طرح متناسب با ابعاد تابلوروان مورد نظر خود از آي سي لچ 74573 جهت گسترش و از آي سي ULN2803 براي درايو كردن سطرها استفاده كنيد.
نحوه كار با اين نرم افزار بسيار ساده و آسان است و همانطور كه در شكل بالا مشاهده ميكنيد، تمامي كارهاي لازم براي توليد يك سورس فقط با چند كليك ساده انجام ميپذيرد.
توضيح عملكرد برنامه :
در اين قسمت طول تابلوروان را بر اساس تعداد LED ها انتخاب كنيد.در تصوير فوق تابلويي با 33 LED انتخاب شده است.
در اين بخش نرم افزار با توجه با طول تابلوروان كه در محل قبل مشخص گشته، تعداد آي سي لچ 74573 مورد نياز شما در مدار تابلوروان را محاسبه كرده و نمايش ميدهد.در تصوير فوق 7 عدد محاسبه شده.
در اين محل متن مورد نظر خود را تايپ كنيد.البته در ابتداي اجراي برنامه همانطور كه در تصوير اول از برنامه مشاهده ميكنيد، پيغام "Enter here your message" در اين محل وجود دارد. كه به محض كليك و يا تايپ متن حذف ميشود.
در اين بخش شما ميتوانيد براي متن خود يكي از افكتهاي حركتي چپ ، راست ، بالا يا پايين را انتخاب كنيد. در ابتداي اجراي برنامه بدليل عدم وجود متن بصورت پيش فرض اين بخش غير فعال است كه به محض تايپ متن فعال خواهند شد.
در اين بخش سرعت حركت متن را تعيين ميكنيد.
پس از تايپ متن، با زدن اين كليد و يا زدن كليد Enter كامپيوتر ميتوانيد متن جديد را وارد كنيد.
توسط اين كليد متني كه در ليست انتخاب نمودهايد ميتوان پاك كرد.
توسط اين كليد تمامي متنهاي موجود در ليست را پاك نماييد.
متنهاي تايپ شده، در اين قسمت قابل مشاهده و انتخاب ميباشند. در صورتي كه بر روي متني كه قبلاً تايپ كرديد كليك شود. متن مورد نظر در محل شماره 3 جهت ويرايش ظاهر ميشود. علاوه بر اين تنظيمات جهت و سرعت حركت متن نيز بر روي محلهاي 4 و 5 نمايش داده ميشوند و شما امكان تغيير مجدد آنها را خواهيد داشت.
در پايان با زدن اين كليد محل و نام فايل بسكام از شما پرسيده ميشود تا برنامه با نام و در محل مورد نظر شما توليد و ذخيره شود.توجه داشته باشيد كه اگر در محل انتخابي شما فايلي هم نام با فايل فعلي شما وجود دارد، حتما پاك شود.
البته همانطور كه ديديد در اين نرم افزار برخي از كليدها عمل خاصي انجام نمي دهند.كه براي نسخه هاي بالاتر نرم افزار در نظر گرفته شده است.
جهت سهولت شما دوستان گرامي من نقشه مدار تابلوروان 7 در 40 را توسط نرم افزار پروتيوس رسم كردم.تا شما بتوانيد توسط آن برنامه ها را تست و آزمايش كنيد. البته بدليل اينكه در محيط پروتيوس ماتريس LED ها ستونهايشان كاتد بوده من چند گيت NOT به مدار و به ورودي آي سي هاي لچ 74573 اضافه كرد و از طرفي بدليل آند بودن سطر ماتريس ها آي سي ULN2803 را از مدار حذف كردم.تا برنامه بدرستي اجرا شود. ولي شما در مدار عملي حتماً ماتريس LED را همانند مدار تابلو روان 20 در 7 متصل كنيد تا سطرها به كاتد و ستونها به آند LEDها متصل شوند. و از NOT استفاده نكنيد و حتما آي سي ULN2803 را در مدار قرار دهيد.
در صورت تمايل شما دوست گرامي امكان دريافت نسخه هاي ارتقاء يافته نرم افزار همچون :
وجود دارد.همچنين امكان ارسال سورس برنامه فوق به زبان VB براي علاقمندان برنامه نويسي نيز هست. ما آمادگي داريم تا مشاوره و انجام پروژهاي صنعتي و دانشگاهي شما را بر عهده بگيريم.لذا جهت كسب اطلاعات بيشتر از طريق ايميل eLachini@Gmail.Com و يا از طريق موبايل يا SMS با شماره 09123812060 تماس حاصل نماييد.
لازم به ذكر است كه تماس شما با من چه از طريق ايميل eLachini@Gmail.Com و SMS و تماس با شماره تلفن 09123812060 به من كمك خواهد كرد كه مطالب را با توجه به نياز شما آماده كنم. پس با نظرات خود من را در اين راه ياري نماييد.
در این مقاله با نحوه ایجاد یکی دیگر از مهم ترین افکتهای موجود بر روی تابلو روان آشنا خواهیم شد. افکت حرکت به سمت پایین در تابلو روان با جاروب ستونی.
من در این برنامه سعی کردم با ایجاد تصویر یک فلش در جدول گلایف و نوشتن کدهای برنامه، این فلش را به سمت پایین حرکت دهم. پس شما هم با ما همراه باشید تا با یکی دیگر از افکتهای زیبا و پر کاربرد در تابلو روان آشنا گردیم.
در مقاله قبلی با ایجاد حرکت به سمت بالا به خوبی آشنا شدیم و از آنجایی که در این مبحث حرکت را در جهت خلاف آن یعنی به سمت پایین میخواهیم انجام دهیم، لذا کدهای برنامه بسیار مشابه حالت پیشین است و در مواردی بسیار کوچک تفاوت خواهد داشت. در حرکت به پایین شیفت اطلاعات به سمت راست باعث ایجاد حرکت به سمت بالا میگشت و در اینجا شیفت به سمت چپ باعث حرکت به پایین خواهد شد. جهت درک موضوع به برنامه زیر توجه کنید.
'********************************************* '* This Program Writing By : Hossein Lachini * '* Scroll to Down on the LED Signe Board* '* For toget 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 ForS = 0 To8 A = 8 - S Mask = &HFF Shift Mask , Left , S ForRefresh = 1To10 Scan = &B00000001 ForCol = 0 To4 Index =S + Col Portb = Lookup(Index , Gelayof) Shift Portb , Right , A Portb = Portb Or Mask Portd = Scan Waitus 250 Rotate Scan , Left Portd =&H00 NextCol NextRefresh NextS
ForS = 0 To8 A = 8 - S Mask = &HFF Shift Mask , Right , A ForRefresh = 1To10 Scan = &B00000001 ForCol = 0 To4 Index =S + Col Portb = Lookup(Index , Gelayof) Shift Portb , Left , S Portb = Portb Or Mask Portd = Scan Waitus 250 Rotate Scan , Left Portd =&H00 NextCol NextRefresh NextS Loop End 'end program
Gelayof: Data &B11110111 Data &B11101111 Data &B11000000 Data &B11101111 Data &B11110111
من از توضیح کامل برنامه خودداری میکنم، و توضیح آنرا بر عهده شما دوستان گرامی میگذارم.
در زیر فیلم تابلو روان پس از اجرای برنامه فوق مشاهده میکنید.
من جهت سهولت کار شما کدهای فوق به همراه فایل Hex برنامه را جهت دانلود در سایت قرار دادم.
دوستان گرامی تا اینجا ما با ایجاد حرکت و افکت در تابلو روان با جاروب ستونی آشنا شدیم، حال نوبت به آن رسیده تا این مدار را توسعه داده و ابعاد آنرا گسترش دهیم. لذا در مقاله بعدی به بررسی این موضوع میپردازیم. و یک نمونه ساخته شده را بهمراه نقشه و برنامه کامل بررسی میکنیم. تصویری از مدار فوق الذکر در اینجا آورده شده است.
این مدار دارای :
- ماتریسی با ابعاد 20 در 7 LED .
- میکروکنترلر ATmega8.
- برنامه کاملی جهت نمایش افکتهای حرکات چهار گانه.
- نمایش متن با طول دلخواه.
- کدهای برنامه توسط نرم افزار BASCOM نوشته شده است
نوشته شده در سه شنبه سوم اردیبهشت 1387ساعت 11:14 توسط : جمشید . محسن . حبیب
|
در این مقاله با نحوه ایجاد یکی دیگر از مهم ترین افکتهای موجود بر روی تابلو روان آشنا خواهیم شد. افکت حرکت به سمت پایین در تابلو روان با جاروب ستونی.
من در این برنامه سعی کردم با ایجاد تصویر یک فلش در جدول گلایف و نوشتن کدهای برنامه، این فلش را به سمت بالا حرکت دهم. پس شما هم با ما همراه باشید تا با یکی دیگر از افکتهای زیبا و پر کاربرد در تابلو روان آشنا گردیم.
ما اگر در نمایش اطلاعات جدول گلایف هر بار به اندازه یک بیت این اطلاعات را به سمت راست شیفت دهیم و سپس به نمایش آن بپردازیم خواهیم دید که متن و یا تصویر به نمایش در آمده در هر بار اجرای دستور شیفت به اندازه یک سطر به سمت بالا حرکت خواهد نمود. به برنامه زیر دقت کنید.
'********************************************* '* This Program Writing By : Hossein Lachini * '* Scroll to Up on the LED Signe Board* '* For toget 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 ForS = 0 To8 ForRefresh = 1To10 Scan = &B00000001 ForCol = 0 To4 Index =S + Col Portb = Lookup(Index , Gelayof) Shift Portb , Right , S Portd = Scan Waitus 250 Rotate Scan , Left Portd =&H00 NextCol NextRefresh NextS 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 toget 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 ForS = 0 To8 A = 8 - S Mask = &HFF Shift Mask , Left , A ForRefresh = 1To10 Scan = &B00000001 ForCol = 0 To4 Index =S + Col Portb = Lookup(Index , Gelayof) Shift Portb , Right , S Portb = Portb OrMask Portd = Scan Waitus 250 Rotate Scan , Left Portd =&H00 NextCol NextRefresh NextS 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 toget 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 ForS = 0 To8 A = 8 - S Mask = &HFF Shift Mask , Right , S ForRefresh = 1To10 Scan = &B00000001 ForCol = 0 To4 Index =S + Col Portb = Lookup(Index , Gelayof) Shift Portb , Left , A Portb = Portb Or Mask Portd = Scan Waitus 250 Rotate Scan , Left Portd =&H00 NextCol NextRefresh NextS
ForS = 0 To8 A = 8 - S Mask = &HFF Shift Mask , Left , A ForRefresh = 1To10 Scan = &B00000001 ForCol = 0 To4 Index =S + Col Portb = Lookup(Index , Gelayof) Shift Portb , Right , S Portb = Portb Or Mask Portd = Scan Waitus 250 Rotate Scan , Left Portd =&H00 NextCol NextRefresh NextS Loop End 'end program
Gelayof: Data &B11110111 Data &B11111011 Data &B10000001 Data &B11111011 Data &B11110111
با اجرای کدهای بالا مشکل ظاهر شدن ناگهانی فلش بر روی تابلو برطرف شده است، که با اضافه کردن بخش انتهایی به برنامه این مسئله حل شده است. توضیح این بخش را بر عهده شما خواننده هوشمند سایت !.
در زیر فیلم تابلو روان پس از اجرای برنامه فوق مشاهده میکنید.
من جهت سهولت کار شما کدهای فوق به همراه فایل Hex برنامه را جهت دانلود در سایت قرار دادم.
در مقاله بعدی با هم به مطالعه روش ایجاد حرکت به سمت پایین در تابلو روان با جاروب ستونی خواهیم پرداخت. شما میتوانید سئوالات و نظرات خود را از طریق ایمیل eLachini@Gmail.Com و یا تلفن 09123812060 به اطلاع من برسانید.
نوشته شده در سه شنبه سوم اردیبهشت 1387ساعت 11:3 توسط : جمشید . محسن . حبیب
|
در این مقاله با نحوه ایجاد یکی دیگر از مهم ترین افکتهای موجود بر روی تابلو روان آشنا خواهیم شد. افکت حرکت به سمت راست در تابلو روان.
شما در مقاله قبل با حرکت به سمت چپ آشنا شدید و دیدید که چگونه با خواندن اطلاعات از یک سمت جدول گلایف و ادامه دادن این خواندن پلهای توانستیم بر روی تابلو حرکت ایجاد کنیم. حال برای ایجاد حرکت به سمت راست بجای خواندن اطلاعات از ابتدای جدول، این بار اطلاعات را از انتها به سمت ابتدای جدول خوانده و نمایش میدهیم. در نتیجه در تابلو اینگونه بنظر میرسد که متن و یا شکل ما به سمت راست حرکت میکند. زیرا در این حالت ابتدا ما بخش های انتهایی متن و یا تصویر موجود در جدول را میبینیم و سپس به آهستگی باقی قسمت ها تا اینکه به ابتدای متن و یا تصویر میرسیم.
برای توضیح بیشتر فرض کنید شما یک قاب کوچک در دست دارید و یک تصویر ثابت هم زیر این قاب قرار دارد. حال برای نمایش این تصویر به شکلی که تصویر از سمت چپ وارد شود و از سمت راست خارج شود، بدون اینکه تصویر را حرکت دهید و فقط با حرکت قاب به طرفین چه میکنید؟ مسلماً خواهید گفت که قاب را بر روی تصویر از سمت راست به چپ حرکت میدهیم. بله حق با شماست، در این برنامه هم ما دقیقا اینکار را انجام میدهیم ولی در اینجا بجای آن تصویر جدول گلایف را داریم، قاب ما همان ماتریس LED است و حرکت قاب بر روی تصویر همان نحوه خواندن اطلاعات و نمایش بر بروی ماتریس LED است.
من در این برنامه در جدول گلایف تصویر یک فلش به سمت راست را درست کردم که بعد از اجرای برنامه این فلش از سمت چپ وارد شده و از سمت راست خارج میشود. به فیلم زیر نگاه کنید.
البته همانطور که در فیلم هم مشاهده میکنید من جهت بهتر تهیه شدن فیلم یک تکه کاغذ کالک بر روی ماتریس LED قرار دادم.
با توجه به توضیحات فوق متوجه شدید که این برنامه بسیار شبیه برنامه قبلی است و فقط در قسمت های کمی با آن تفاوت دارد. ما در این برنامه از یک متغییر کمکی دیگری به نام R استفاده کردیم که این متغییر بر خلاف S که از 0 تا 9 شمارش میکرد باید از 9 به 0 شمارش کند( چون ما اینبار از انتهای جدول به ابتدای آن حرکت میکنیم ) که جهت ایجاد آن متغییر S را از 9 کم کردیم. و در محاسبه متغییر Index بجای متغییر S از R استفاده شده است. به برنامه زیر دقت کنید.
ForS = 0 To 9 R =9 - S ForRefresh = 1To10 Scan = &B00000001 ForCol = 0 To4 Index =R + Col Portb = Lookup(Index , Gelayof) Portd = Scan Waitus 250 Rotate Scan , Left Portd =&H00 NextCol NextRefresh NextS
بدین دلیل که اینبار در محاسبه Index از متغییر R استفاده کردیم لذا ابتدا بر روی ماتریس LED اطلاعات انتهای جدول به نمایش در میآید و در هر بار اجرای دستورات حلقه یک مرحله به ابتدای جدول نزدیک میشویم تا در آخرین با اجرای حلقه اطلاعات ابتدای جدول به نمایش در میآید.
متن کامل برنامه حرکت به سمت راست در تابلو روان با جاروب ستونی :
'********************************************* '* This Program Writing By : Hossein Lachini * '* Scroll to Right on the LED Signe Board* '* For toget 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 ForS = 0 To 9 R =9 - S ForRefresh = 1To10 Scan = &B00000001 ForCol = 0 To4 Index =R + Col Portb = Lookup(Index , Gelayof) Portd = Scan Waitus 250 Rotate Scan , Left Portd =&H00 NextCol NextRefresh NextS 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 برنامه را جهت دانلود در سایت قرار دادم.
در مقاله بعدی با هم به مطالعه روش ایجاد حرکت به سمت بالا در تابلو روان با جاروب ستونی خواهیم پرداخت. شما میتوانید سئوالات و نظرات خود را از طریق ایمیل eLachini@Gmail.Com و یا تلفن 09123812060 به اطلاع من برسانید.
جهت دانلود رایگان نرم افزارهای تبدیل متن به کدهای مورد نیاز تابلو روان و همچنین نرم افزار طراحی فونت اینجا کلیک کنید.
نوشته شده در سه شنبه سوم اردیبهشت 1387ساعت 11:1 توسط : جمشید . محسن . حبیب
|
در این جلسه چگونگی ایجاد حرکت دادن متون و تصاویر را در تابلو روان میآموزیم، البته برنامه تابلو روان بسته به اینکه شما در سخت افزار خود از چه روشی جهت جاروب ماتریس LED استفاده کرده باشید فرق خواهد کرد. معمولاً اگر از جاروب ستونی استفاده کنید نوشتن برنامه برای حرکت متن بصورت افقی ساده تر است و در جاروب سطری نوشتن برنامه برای حرکت عمودی ساده تر خواهد بود. البته شما فرد خوش شانسی هستید چون مداری که در ابتدای این بحث به شما برای تست عملی معرفی شد، قابلیت اجرای جاروب سطری و ستونی را با توجه به ساختار حقیقتاً ساده خود دارد.
من برای شروع بحث، برنامه حرکت متن را در مدارات تابلو روان با جاروب سطری آغاز میکنم. همانطور که میدانید در این روش در جدول گلایف اطلاعات هر کاراکتر بصورت ستونی ذخیره شده و ما در هر لحظه فقط یک ستون را فعال میکنیم و سایر ستون ها غیر فعال هستند.
حالا تصور کنید که ما بجای اینکه در این روش ابتدا اطلاعات ستون اول را در محل اصلی خود یعنی همان ستون اول نمایش دهیم، در ستون دوم نمایش دهیم و همینطور سایر اطلاعات را به اندازه یک ستون جابجا نمایش دهیم، چه اتفاقی میافتد؟ بله، متن به نمایش در خواهد آمد ولی بصورت افقی به اندازه یک ستون جابجا شده. اساس کار حرکات افقی ( چپ و راست ) در تابلوهای روان با جاروب ستونی هم همین است. به برنامه زیر دقت کنید.
ForS = 0 To4 ForRefresh = 1To10 Scan = &B00000001 ForCol = 0 To4 Index =S + Col Portb = Lookup(Index , Gelayof) Portd = Scan Waitus 250 Rotate Scan , Left Portd =&H00 NextCol NextRefresh NextS
همانطور که میبینید این برنامه از سه حلقه 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 افزایش دهیم ( به اندازه طول اضافه شده به جدول گلایف ). و دستورات مربوط به جاروب به شکل زیر در خواهند آمد.
ForS = 0 To 9 ForRefresh = 1To10 Scan = &B00000001 ForCol = 0 To4 Index =S + Col Portb = Lookup(Index , Gelayof) Portd = Scan Waitus 250 Rotate Scan , Left Portd =&H00 NextCol NextRefresh NextS
متن کامل برنامه حرکت به سمت چپ در تابلو روان با جاروب ستونی :
'********************************************* '* This Program Writing By : Hossein Lachini * '* Scroll to Left on the LED Signe Board* '* For toget 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 ForS = 0 To 9 ForRefresh = 1To10 Scan = &B00000001 ForCol = 0 To4 Index =S + Col Portb = Lookup(Index , Gelayof) Portd = Scan Waitus 250 Rotate Scan , Left Portd =&H00 NextCol NextRefresh NextS 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 برنامه را جهت دانلود در سایت قرار دادم.
در مقاله بعدی با هم به مطالعه روش ایجاد حرکت به سمت راست در تابلو روان با جاروب ستونی خواهیم پرداخت. شما میتوانید سئوالات و نظرات خود را از طریق ایمیل eLachini@Gmail.Com و یا تلفن 09123812060 به اطلاع من برسانید.
نوشته شده در سه شنبه سوم اردیبهشت 1387ساعت 10:59 توسط : جمشید . محسن . حبیب
|
در اینجا بررسی برنامه نویسی انیمیشن در تابلوی روان به پایان رسید. دوستان عزیز در صورت داشتن هر گونه سئوال و پیشنهادی شما میتوانید از طریق آدرس ایمیل من eLachini@Gmail.Com و یا از طریق شماره موبایل 09123812060 با من تماس بگیرید. دوستانی که میخواهند از مطالب ارائه شده در اینجا در سایت، وبلاگ و یا نشریه خود استفاده نمایند در این مورد آزاد میباشند ولی حتما نشانی منبع را در مطلب خود ذکر نمایند.
در ادامه بحث شما با ایجاد حرکت در متن ها و تصاویر در تابلو روان آشنا میشوید، البته منظور من انیمیشن نیست بلکه افکتهای حرکتی به چهار جهت اصلی است که بصورت استاندارد در تمامی تابلوهای روان وجود دارد. لذا از هم اکنون شما هم دست به کار شوید وسعی کنید با تغییر در کدهای برنامه قبل از ارائه مطلب توسط من، برنامه فوق را بنویسید. و در صورت تمایل تصویر مدار و کد برنامه خود را به آدرس ایمیل من ارسال کنید تا با نام خودتان در سایت درج شود.
انیمیشن یا متحرک سازی، فنی است که با استفاده از تعدادی تصویر ثابت به ایجاد یک تصویر متحرک میپردازند. در این روش تصاویر بصورت متوالی و با فاصله زمانی معین به نمایش در میآیند. هر تصویر با تصویر قبل و بعد خود اندکی اختلاف دارد، از طرفی بدلیل تاخیر چشم انسان در ثبت تصاویر، با نمایش هر تصویر جدید اثر آن تا نمایش تصویر بعدی در چشم باقی میماند در نتیجه چشم متوجه ثابت بودن تصاویر نشده و آنها را به صورت متحرک احساس میکند.
در تابلوی روان نیز از همین روش جهت ایجاد تصاویر متحرک استفاده میشود. در واقع ما با ایجاد یک جدول گلایف که شامل اطلاعات هر تصویر میباشد و سپس با نمایش سریع تصاویر موجود در این جدول به نمایش یک انیمیشن میپردازیم.
من در این برنامه تصمیم به ایجاد انیمیشنی ساده دارم که شما با مطالعه و بررسی این مقاله با اصول اولیه ساخت تصاویر متحرک در تابلو روان آشنا خواهید شد. در این برنامه با نمایش متوالی کاراکترهای |،/،-،\ یک انیمیشن ساده درست کردهام، که پس از نمایش به صورت حرکت دورانی یک خط حول مرکز خود دیده خواهد شد( همانگونه که قبلا در فیلم موجود در سایت از تابلو روان مشاهده نمودید).
حال به توضیح برنامه میرسیم. در ابتدا به توضیح هر یک از متغیرهای استفاده شده در برنامه میپردازم. در این برنامه از پنج متغییر استفاده شده. در زیر نحوه تعریف متغییر های مورد نیاز آورده شده.
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 استفاده کنید. پس
'********************************************* '* This Program Writing By : Hossein Lachini * '* Animation on the LED Signe Board* '* For toget 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 قرار گرفته است.
آقای امین باغبانیان، یکی از دوستداران الکترونیک و دوست عزیز بنده، لطف کردن و در ایمیلی برای من یک جدول گلایف را ارسال کردند که من ضمن تشکر از ایشان، جدول ارسالی ایشان را جهت دانلود شما عزیزان در سایت قرار دادم.