خوش آمديد!
12:31 شنبه 1 ارديبهشت ماه ، 1403
تغییر آدرس سایت
اطلاعیه مهم آدرس سایت از HLachini.com به آدرس HLachini.elewiz.com تغییر پیدا کرده است.
حتما لینکهای صفحات خود را به آدرس جدید تغییر دهید.
همچنین سایت جدیدی نیز بزودی به آدرس EleWiz.com راه اندازی خواهد شد.

مترجم گوگل

Google Translate

فروشگاه

نرم افزار


نرم افزار LTG
نرم افزار تولید کننده سورس بسکام تابلوروان 16 در 64
تعداد:


GIF Code Wizard
تبديل انيميشن به كد تابلوروان
تعداد:


مدارات آماده


ماژول Wav Player
Mono/Stereo 8khz-48Khz
تعداد:


پروگرامر هوشمندUSB برای AVR
پروگرامر AVR با قابلیت درج تمامی میکروکنترولرها از پین یک زیف سوکت و تامین کلاک جهت پوشش تمامی حالات فیوزبیت CKSEL
تعداد: 50


ليست محصولات
SMS خبرنامه

SMS

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

عضویت در خبرنامه

ایمیل - Email



تازه های سایت
· موتور همو پلار در 10 ثانيه[ 5 نظر - 15312 مشاهده ]
· نصب برنامه در Slax[ 9 نظر - 11668 مشاهده ]
· ورود به محيط Slax[ 16 نظر - 12106 مشاهده ]
· خواندن فایلهای MMC و SD با فرمت FAT16 , FAT32[ 33 نظر - 25936 مشاهده ]
· رله کنترل فاز Three Phase Monitor[ 35 نظر - 30023 مشاهده ]

[ موارد بیشتر در بخش اخبار و تازه ها ]
کیت نمایشگر سحرآمیز

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

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

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

 



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

'*********************************************
'* 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

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

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

  



ارسال شده در مورخه : سه شنبه، 9 مهر ماه ، 1387 توسط admin  چاپ مطلب

مرتبط با موضوع :

 مثال تابلو 16 در 128 با مبدل آنلاین  [پنجشنبه، 11 شهريور ماه ، 1389]
 تابلو روان و اندازه گیری دما با SMT160  [چهارشنبه، 3 شهريور ماه ، 1389]
 انیمیشن در تابلوروان توسط 74HC595  [پنجشنبه، 7 مرداد ماه ، 1389]
 تابلوروان با میکرو 8051  [سه شنبه، 5 مرداد ماه ، 1389]
 نرم افزار آنلاین تبدیل متن به کد هگز  [چهارشنبه، 17 تير ماه ، 1388]
 ایجاد حرکت در تابلو روان - حرکت به راست  [سه شنبه، 9 مهر ماه ، 1387]
 ایجاد حرکت در تابلو روان - حرکت به چپ  [سه شنبه، 9 مهر ماه ، 1387]
 انیمیشن در تابلو روان  [دوشنبه، 4 شهريور ماه ، 1387]
 جاروب ستوني  [يكشنبه، 3 شهريور ماه ، 1387]
 برنامه نویسی اولین تابلوروان  [يكشنبه، 3 شهريور ماه ، 1387]

نام شما: [ کاربر جدید ]

عنوان:
 
نظر:


:) ;) |) :- :( :0 :# *) ^) +)) :} |(( @: (:) :? :**

کد امنيتي : bov25raj
تايپ کد امنيتي : [ بازگشت ]

واقین (امتیاز : 0)
توسط ميهمان در مورخه : پنجشنبه، 2 آبان ماه ، 1387
چیمیگی؟


[ ارسال جوابیه ]

  • [بدون موضوع] توسط m_M_khanchi در مورخه : پنجشنبه، 19 شهريور ماه ، 1388
  • [بدون موضوع] توسط m_M_khanchi در مورخه : پنجشنبه، 19 شهريور ماه ، 1388

سوال (امتیاز : 0)
توسط ميهمان در مورخه : پنجشنبه، 1 بهمن ماه ، 1394
سلام من برنامه بالا رو خوندم همه جاش رو فهمیدم ولی نفهمیدم چرا Index = S + Col چرا s رو توی این جمله آوردین چون مثلا اگر s بشه 3 اصلا از جدول اطلاعات بیرون میره


[ ارسال جوابیه ]


سوال (امتیاز : 0)
توسط ميهمان در مورخه : پنجشنبه، 1 بهمن ماه ، 1394
این سوال رو جواب نمی دید


[ ارسال جوابیه ]

امتیاز دهی به مطلب
امتیاز متوسط : 3.5
تعداد آراء: 14


لطفا رای مورد نظرتان را در مورد این مطلب ارائه نمائید :

عالی
خیلی خوب
خوب
متوسط
بد

اشتراک گذاري مطلب
موضوعات مرتبط

تابلوروان - تابلو روان

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