رفتن به مطلب

تابلو روان


ارسال های توصیه شده

دانلود پروژه های تابلو روان در اندازه های مختلف با avr

 

در این جا من ۴ تا پروژه تابلوروان در اندازه های متفاوت قراردادم به راحتی میتونین دانلود کنید و با تغییر سورس برنامه از آنها استفاده کنید.

این پروژه ها به زبان بیسیک در نرم افزار بسکام نوشته شده اند و به همراه شماتیک مدار میباشد.

 

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.

  • Like 1
لینک به دیدگاه

همانطور که میدانید در سایت مدتی است که چند برنامه آنلاین جهت استفاده شما دوستان راه اندازی شده است. و بخصوص تا اکنون 11 شهریور 89 سه برنامه آنلاین برای تابلو روان در سایت نصب شده است. از استقبال از این برنامه ها بسیار خوب بود و بطوریکه حتی سایت رسمی بسکام هم اقدام به راه اندازی بخش جدیدی به عنوان MCS Electronics Tools workshop نموده که تا اکنون دو برنامه تبدیل متن به کد هگز تابلوروان و برنامه دیکد و تبدیل تصاویر GIF را در این بخش نصب نموده.

 

 

led_name_badge.jpg

 

نمونه مثالی در مورد برنامه تبدیل متن به کد هگز را برای شما قرار داده و توضیح دهم. ویژگی های این برنامه عبارت است از:

 

  • قابلیت استفاده برای تابلوهای عرض 7 ، 10 ، 12 و 13 و 16.
  • امکان تعیین طول تابلو تا 128 ستون.
  • استفاده از شیفت رجیستر بجای لچ.
  • عدم محدوددیت در طول متن.
  • پشتبانی از تمام اعداد و علائم وحروف بزرگ و کوچک انگلیسی.

این برنامه به گونه ای طراحی شده که شما براحتی میتوانید پس از تبدیل متن توسط برنامه آنلاین سایت، مشخصات آنرا در برنامه و ارد کنید و سپس با تعیین ابعاد تابلوروان آنرا براحتی استفاده کنید. که در زیر بخشهای مختلف آن توضیح داده میشود. تعیین طول متن (Width_of_text) :

برنامه مبدل متن به کد هگز مقدار طول متن را با عبارت Width در بخش کامنت یا همان توضیحات برایتان تعیین میکند. و شما مقدار آنرا باید در خط 8 برنامه، در بخش زیر مقابل متغییر Width_of_textوارد کنید.

'---- this section from Text Properties

Const Width_of_text = 270

'---- end of Text Properties

تعیین ابعاد ماتریس LED:

مقدار طول ماتریس توسط متغییر Width در برنامه تعیین میشود. و بسته به نظر خودتان است که تابلو را در چه ابعادی مخواهید بسازید. البته دقت کنید که عبارت Width در برنامه با چیزی که نرم افزار آنلاین به شما میدهد متفاوت است. که در بالا به آن اشاره شد. این مقدار را در خط 12 برنامه میتوانید تعیین کنید.

اندازه عرض تابلو بسته به نوع فونتی که انتخاب میکنید دارد. که در برنامه فعلی سایت فونت ها با عرض 7 و 10 و 12 و 13 هستند که شما باید در برنامه مقدار 8 یا 16 را وارد کنید که خود برنامه مبدل مقدار صحیح آنرا در بخش کامنت با عبارت Heightمشخص میکند. که شما این عدد را باید در جلوی عبارت Height در خط 13 وارد کنید.

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

'---- this section from LED Matrix Properties

Const Width = 64

Const Height =16

'---- end of LED Matrix Properties

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

نمونه برنامه نوشته شده برای تابلو در زیر به همراه متن در زیر آورده شده است. من همان متن پیش فرض نرم افزار را استفاده کردم که عبارت "Lachini Text to Hex Convertor!" است. همانطور که مشاهده میکنید، طول متن 270 بوده و من ابعاد ماتریس را با طول 64 و عرض 16 انتخاب کردم.

 

 

$regfile="m32def.dat"

$crystal= 8000000

$hwstack= 32

$swstack= 32

$framesize= 24

'---- this section from Text Properties

Const Width_of_text = 270

'---- end of Text Properties

'---- this section from LED Matrix Properties

Const Width = 64

Const Height = 16

'---- end of LED Matrix Properties

Const End_of_text = Width_of_text - Width

Const Number_of_matrix_in_row = Width / 8

Const Byte_in_col = Height / 8

Const Frame_size = Width * Byte_in_col

Const Number_of_byte_in_8_col = Byte_in_col * 8

Const Waitc = 30

DeclareSub Readframe(byval Idx_ofst AsWord)

DeclareSub Waitr

' Port A for COL refresh

ConfigPorta=Output

' Port D for 74595 register

ConfigPortd=Output

ConfigTimer0=Timer, Prescale = 64 'Clock value: 15.625 kHz

On Ovf0 Refresh

EnableTimer0' enable the timer interrupt

EnableInterrupts

Sh_cp AliasPortd.3

Ds AliasPortd.4

St_cp AliasPortd.5

Mr AliasPortd.6

Oe AliasPortd.7

Col_port AliasPorta

Dim R AsByte

Dim Col AsByte

Dim Buf(frame_size)AsByte

Dim I AsByte

Dim Matrix_counter AsWord

Dim Buf_idx AsWord

Dim Col_number_in_buf AsByte

Dim Ofset AsWord

Reset Mr

Set Mr

Reset Oe

Do

For Ofset = 0 To End_of_text

Readframe Ofset

Waitr

Next Frame_count

Loop

End'end program

Sub Readframe(byval Idx_ofst AsWord)

Local Idx AsWord

Local Lookup_idx AsWord

DisableTimer0

'Start of Frame in lookup table

Lookup_idx = Idx_ofst * Byte_in_col

For Idx = 1 To Frame_size

Buf(idx)=Lookup(lookup_idx , Text )

Incr Lookup_idx

Next Idx

EnableTimer0

EndSub

Sub Waitr

Do

LoopUntil Col = 0

R = 0

Do

Do

LoopUntil Col = 0

LoopUntil R > Waitc

EndSub

Refresh:

Reset Mr

Set Mr

Set Oe

Col_port = 2 ^ Col

For Matrix_counter = 1 To Number_of_matrix_in_row

Col_number_in_buf = Number_of_matrix_in_row - Matrix_counter

Col_number_in_buf = Col_number_in_buf * Number_of_byte_in_8_col

Buf_idx = Col * Byte_in_col

Buf_idx = Buf_idx + Col_number_in_buf

Incr Buf_idx

For I = 1 To Byte_in_col

Shiftout Ds , Sh_cp , Buf(buf_idx), 1 , 8

Incr Buf_idx

Next I

Next Matrix_counter

Reset St_cp

Set St_cp

Reset Oe

Incr Col

If Col > 7 Then

Col = 0

Incr R

EndIf

Return

'*********************************************

'* This Code Generate By : Hossein Lachini *

'* The Text to Hex Code for LED Sign Board *

'* For to get more details visit : *

'*

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.
*

'* Contact to me by : eLachini@Gmail.com *

'* Mobile/SMS : +98 912 381 2060 *

'*********************************************

' Your Text is : Lachini Text to Hex Convertor!

' Width for each character : 9

' Width : 270

' Height : 16

Text:

Data&H1F,&HF8 '...@@@@@@@@@@...

Data&H1F,&HF8 '...@@@@@@@@@@...

Data&H10,&H00 '...@............

Data&H10,&H00 '...@............

Data&H10,&H00 '...@............

Data&H10,&H00 '...@............

Data&H10,&H00 '...@............

Data&H00,&H00 '................

Data&H00,&H00 '................

Data&H0C,&H00 '....@@..........

Data&H1E,&H80 '...@@@@.@.......

Data&H12,&HC0 '...@..@.@@......

Data&H12,&H40 '...@..@..@......

Data&H12,&H40 '...@..@..@......

Data&H0A,&H40 '....@.@..@......

Data&H1F,&HC0 '...@@@@@@@......

Data&H1F,&H80 '...@@@@@@.......

Data&H00,&H00 '................

Data&H07,&H00 '.....@@@........

Data&H0F,&H80 '....@@@@@.......

Data&H18,&HC0 '...@@...@@......

Data&H10,&H40 '...@.....@......

Data&H10,&H40 '...@.....@......

Data&H10,&H40 '...@.....@......

Data&H18,&HC0 '...@@...@@......

Data&H08,&H80 '....@...@.......

Data&H00,&H00 '................

Data&H1F,&HF8 '...@@@@@@@@@@...

Data&H1F,&HF8 '...@@@@@@@@@@...

Data&H00,&H80 '........@.......

Data&H00,&H40 '.........@......

Data&H00,&H40 '.........@......

Data&H00,&HC0 '........@@......

Data&H1F,&H80 '...@@@@@@.......

Data&H1F,&H00 '...@@@@@........

Data&H00,&H00 '................

Data&H00,&H00 '................

Data&H10,&H00 '...@............

Data&H10,&H40 '...@.....@......

Data&H1F,&HD8 '...@@@@@@@.@@...

Data&H1F,&HD8 '...@@@@@@@.@@...

Data&H10,&H00 '...@............

Data&H10,&H00 '...@............

Data&H00,&H00 '................

Data&H00,&H00 '................

Data&H1F,&HC0 '...@@@@@@@......

Data&H1F,&HC0 '...@@@@@@@......

Data&H00,&H80 '........@.......

Data&H00,&H40 '.........@......

Data&H00,&H40 '.........@......

Data&H00,&HC0 '........@@......

Data&H1F,&H80 '...@@@@@@.......

Data&H1F,&H00 '...@@@@@........

Data&H00,&H00 '................

Data&H00,&H00 '................

Data&H10,&H00 '...@............

Data&H10,&H40 '...@.....@......

Data&H1F,&HD8 '...@@@@@@@.@@...

Data&H1F,&HD8 '...@@@@@@@.@@...

Data&H10,&H00 '...@............

Data&H10,&H00 '...@............

Data&H00,&H00 '................

Data&H00,&H00 '................

...

 

برای دانلود نقشه میتوانید از لینک زیر استفاده کنید:

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.

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

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

  • Like 1
لینک به دیدگاه

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

  • نیاز به 8 خط دیتا.
  • نیاز به یک خط به ازای هر لچ.

در نتیجه شما بدون در نظر گرفتن سایر پایه های کنترلی و همچنین خطوط متصل به ستون ها ، برای یک تابلوی 16 در 64 که از 8 عدد لچ تشکیل شده باید 8 خط برای دیتا و 8 خط نیز برای LE در نظر بگیرید، که تا همین جا 16 خط یا دو پورت 8 بیتی میکروی شما مشغول میشود و این دست شما را در طراحی ها خواهد بست. از طرفی سیم بندی مدار نیز بسیار شلوغ میشود.

 

 

تصویر 1

Shifregister.gif

 

 

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

 

تصویر2

74595.png

 

در این مقاله شما با ساخت و گسترش تابلوروان 24 در 24 از طریق شیفت رجیستر 74595 آشنا میشوید و همچنین با استفاده از این تابلو به نمایش انیمیشن واقعی با کمک از نرم افزار آنلاین تبدیل انیمیشن به کد هگز تابلوروان خواهیم پرداخت. در این شیفت رجیستر 5 پایه کنترلی داریم و در حالی که امکان راه اندازی ان فقط با 3 پایه بود من هر 5 پایه را به میکرو وصل کردم تا در توسعه های بعدی مدار و برنامه دستمان باز باشد.(تصویر شماره 1)

شیفت رجیستر 74595 دارای 16 پایه است(تصویر 2). این قطعه از دو بخش تشکیل شده است، بخش ورودی شامل یک شیفت رجیستر معمولی است که اطلاعات را بصورت سریال از پایه 14 دریافت کرده و بصورت 8 خط موازی به قسمت بعدی منتقل میکند. بخش اول دارای دو ورودی و یک خروجی دیگر نیز میباشد. پایه شماره 11 پایه ورودی کلاک است و پایه 10 پایه ریست است. همچنین پایه 9 خروجی سریال شیفت رجیستر است که برای اتصال به شیفترجیستر بعدی مورد نیاز خواهد بود.(تصویر 3)

 

تصوبر 3

74595.gif

 

 

بخش دوم این آی سی ، در واقع یک لچ 8 بیتی است. که خطوط ورودی آن از طبقه قبل(شیفت رجیستر) می آیند، این طبقه به خروجی شیفت رجیستر نیز متصل است که 8 خط خروجی 74595 از طریق لچ آن تهیه میشود. قاعدتا یک لچ باید پایه ای جهت عمل لچ کردن داشته باشد که این پایه ورودی شماره 12 است و تا زمانی که بر روی این پایه لبه پایین رونده ای اعمال نشود لچ اطلاعات را در خود ذخیره (لچ) نمیکند. از طرفی به جهت اینکه بتوان خروجی را نیز کنترل نمود و در صورت لزوم خروجی قطع و یا وصل نمود پایه شماره 13 که به لچ متصل است در نظر گرفته شده است.(تصویر 4)

تصویر4

74595_pin_diagram.png

 

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

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.
.

 

تصویر 5

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.

 

برنامه و نقشه طوری طراحی شده اند که شما براحتی بتوانید نقشه را گسترش داده و یا حتی کوچکتر کنید و برنامه نیز با تغییر پارامترهایی که شاملTotal_frame تعداد فریمها و Widthطول تابلو و Height ارتفاع تابلو است در ابتدای برنامه خود بخود پیکربندی شده و نیازی به تغییرات دیگری از سوی شما نیست!

برنامه از دو سابروتین تشکیل شده و یک روتین وقفه. در روتین وقفه هر بار یکی دسته از ستونها در ماتریس ها فعال میشود و اطلاعات همان ستون نیز در شیفت رجیستر ها قرار میگیرد. مثلا در یک لحظه ستون اول تمامی ماتریس ها و بعد ستون 2 و در اجرای بعدی ستون 3 و ... اطلاعات هر فریم توسط سابروتین Readframe خوانده میشود و درون آرایه Bufقرار میگیرد. این سابروتین با گرفتن شماره فریم مورد نظر شما، اطلاعات را از جدولAni خوانده و در آرایه Buf ذخیره میکند و اطلاعات این آرایه توسط روتین وقفه تایمر یک Refreshکه وظیفه رفرش کردن ماتریس ها را برعهده دارد خوانده میشود. به عبارت دیگر هر چیزی که در Buf قرار گیرد برروی تابلو نمایش داده میشود.

از طرفی برای هر فریم باید مقداری تاخیر نیز تا نمایش فریم بعدی ایجاد کرد. و از آنجایی که مقدار تاخیر فوق در انیمشن GIFتعریف شده است این اطلاعات در جدول Dly قرار داده شده است و واحد آن میلی ثانیه است و وظیفه تابع framedelay نیز خواندن این تاخیر و ایجاد آن میباشد. که شما با دادن شماره فریم به آن ، تاخیر مورد نیاز همان فریم را خواهید داشت.

سورس برنامه :

$regfile ="m32def.dat"

$crystal= 8000000

$hwstack= 32

$swstack= 32

$framesize= 24

'---- this section from Gif Properties

Const Total_frame = 2

Const Width = 24

Const Height = 24

'---- end of Gif Properties

 

Const Number_of_matrix_in_row = Width / 8

Const Byte_in_col = Height / 8

Const Frame_size = Width * Byte_in_col

Const Number_of_byte_in_8_col = Byte_in_col * 8

DeclareSub Readframe(byval Frame_number AsWord)

DeclareSub Framedelay(byval Frame_number AsWord)

' Port A for COL refresh

ConfigPorta=Output

' Port D for 74595 register

ConfigPortd=Output

'Clock value: 15.625 kHz

ConfigTimer0=Timer, Prescale = 64

On Ovf0 Refresh

EnableTimer0 ' enable the timer interrupt

EnableInterrupts

Sh_cp AliasPortd.3

Ds AliasPortd.4

St_cp AliasPortd.5

Mr AliasPortd.6

Oe AliasPortd.7

Col_port AliasPorta

Dim Col AsByte

Dim Buf(frame_size)AsByte

Dim I AsByte

Dim Matrix_counter AsWord

Dim Buf_idx AsWord

Dim Col_number_in_buf AsByte

Dim Frame_count AsWord

Reset Mr

Set Mr

Reset Oe

Do

For Frame_count = 1 To Total_frame

Readframe Frame_count

Framedelay Frame_count

Next Frame_count

Loop

End'end program

Sub Readframe(byval Frame_number AsWord)

Local Idx AsWord

Local Lookup_idx AsWord

DisableTimer0

Decr Frame_number

'Start of Frame in lookup table

Lookup_idx = Frame_number * Frame_size

For Idx = 0 To Frame_size

Buf(idx)=Lookup(lookup_idx , Ani )

Incr Lookup_idx

Next Idx

EnableTimer0

EndSub

Sub Framedelay(byval Frame_number AsWord)

Local D AsWord

D =Lookup(frame_number , Dly )

Waitms D

EndSub

Refresh:

Reset Mr

Set Mr

Col_port =&H00

Set Oe

Col_port = 2 ^ Col

For Matrix_counter = 1 To Number_of_matrix_in_row

Col_number_in_buf = Number_of_matrix_in_row -

Matrix_counter

Col_number_in_buf = Col_number_in_buf *

Number_of_byte_in_8_col

Buf_idx = Col * Byte_in_col

Buf_idx = Buf_idx + Col_number_in_buf

For I = 1 To Byte_in_col

Shiftout Ds , Sh_cp , Buf(buf_idx), 1 , 8

Incr Buf_idx

Next I

Next Matrix_counter

Reset St_cp

Set St_cp

Reset Oe

If Col

Incr Col

Else

Col = 0

EndIf

Return

 

 

- HERE INSERT DATA

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

نمونه کد تولید شده برای تصویر گربه شیطون(تصویر 6) را در زیر آوردم که شما با مراجعه به آدرس

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.
هر تصویر دیگر و یا نمونه های موجود در برنامه را در تابلوی خود استفاده کنید.

تصویر 6

cat.gif

کدهای برنامه :

'****************************************************

'* This Code Generate By : Hossein Lachini *

'* The GIF Animation to Hex Code for LED Sign Board *

'* For to get more details visit : *

'*

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.
*

'* Contact to me by : eLachini@Gmail.com *

'* Mobile/SMS : +98 912 381 2060 *

'****************************************************

' Width : 24

' Height : 24

' Toltal Frame : 2

Ani:

 

' Frame 1

' Delay : 500ms

Data&H00,&H00,&H00 '........................

Data&H03,&H80,&H00 '......###...............

Data&H05,&H00,&H00 '.....#.#................

Data&H0A,&H00,&H00 '....#.#.................

Data&H12,&H00,&H00 '...#..#.................

Data&H13,&H9F,&H80 '...#..###..######.......

Data&H20,&HE0,&H60 '..#.....###......##.....

Data&H20,&H00,&H18 '..#................##...

Data&H20,&H00,&H04 '..#..................#..

Data&H40,&H41,&H08 '.#.......#.....#....#...

Data&H43,&H40,&H10 '.#....##.#.........#....

Data&H42,&H48,&H20 '.#....#..#..#.....#.....

Data&H43,&H90,&H20 '.#....###..#......#.....

Data&H40,&H10,&H20 '.#.........#......#.....

Data&H40,&H08,&H20 '.#..........#.....#.....

Data&H40,&H10,&H20 '.#.........#......#.....

Data&H40,&H10,&H20 '.#.........#......#.....

Data&H20,&H08,&H10 '..#.........#......#....

Data&H20,&H00,&H08 '..#.................#...

Data&H10,&H01,&H04 '...#...........#.....#..

Data&H0B,&H40,&H18 '....#.##.#.........##...

Data&H06,&H60,&H60 '.....##..##......##.....

Data&H03,&H9F,&H80 '......###..######.......

Data&H00,&H00,&H00 '........................

 

' Frame 2

' Delay : 500ms

Data&H00,&H00,&H00 '........................

Data&H1C,&H00,&H00 '...###..................

Data&H0A,&H00,&H00 '....#.#.................

Data&H05,&H00,&H00 '.....#.#................

Data&H09,&H00,&H00 '....#..#................

Data&H09,&HCF,&HC0 '....#..###..######......

Data&H10,&H70,&H30 '...#.....###......##....

Data&H10,&H00,&H0C '...#................##..

Data&H10,&H00,&H02 '...#..................#.

Data&H20,&H20,&H84 '..#.......#.....#....#..

Data&H21,&HA0,&H08 '..#....##.#.........#...

Data&H21,&H22,&H10 '..#....#..#...#....#....

Data&H21,&HCC,&H10 '..#....###..##.....#....

Data&H20,&H14,&H10 '..#........#.#.....#....

Data&H20,&H12,&H10 '..#........#..#....#....

Data&H20,&H14,&H10 '..#........#.#.....#....

Data&H20,&H0C,&H10 '..#.........##.....#....

Data&H10,&H02,&H08 '...#..........#.....#...

Data&H10,&H00,&H04 '...#.................#..

Data&H08,&H00,&H82 '....#...........#.....#.

Data&H05,&HA0,&H0C '.....#.##.#.........##..

Data&H03,&H30,&H30 '......##..##......##....

Data&H01,&HCF,&HC0 '.......###..######......

Data&H00,&H00,&H00 '........................

 

Dly:

Data 500%, 500%

لینک به دیدگاه

Currency%20Panel.gif

 

 

این مدار دارای ویژگیهای زیر است:

 

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

برای اینکه مدار تا حد امکان ساده و ارزان طراحی شود من حتی برای میکروکنترلر این مدار از ATmega8 استفاده کردم. در این مدار هر سون سگمنت از طریق یک ULN2803 درایو میشود و آی سی ULN2803 نیز فرامین خود را از آی سی شیفت رجیستر 74HC595 دریافت میکند. به دلیل استفاده از شیفت رجیستر در مدار امکان استفاده از میکرو کوچکتر فراهم شده و در عین حال سیم بندی مدار بسیار ساده خواهد شد و از طرفی باعث گسترش ساده مدار شده است.این مدار امکان دریافت اطلاعات از طریق کی پد 3 در 4 نیز دارد که بنده نیز برای شما آنرا توضیح میدهم و شما میتوانید در فایل پرتیوس آنرا تست کنید. ابتدا که مدار روشن میشود روتین تست اجرا میشود و توسط این روتین باچهار الگوریتم مختلف اعداد 0 تا 9 بر روی سگمنت ها نمایش داده میشود که شما میتوانید سالم بودن مدار و صحت سگمنت ها و همچنین چیدمان درست آنها مطمئن شوید.

 

 

Currency%20Panel%20Test1.png

تصویر تست دوم

Currency%20Panel%20Test2.png

تصویر تست سوم

Currency%20Panel%20Test3.png

تصویر تست چهارم

 

پس از راه اندازی مدار شروع به نمایش نرخ ذخیره شده از قبل می نماید. برای ورود به منوی تنظیم نرخ باید عدد 5 را وارد کنید. با وارد شدن به منو نقطه های اعشار زیر یکی از نرخ ها روشن میشود که نمایانگر نرخی است که برای ویرایش انتخاب شده است. شما بازدن هر بار عدد 1 میتوانید نرخ دیگر را انتخاب کنید.

 

Currency%20Panel%20Seting1.png

روشن شدن نقطه های اعشار در زیر نرخ اول

 

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

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

 

Currency%20Panel%20Seting2.png

روشن ماندن فقط یک نقطه اعشار و صفر شدن ارقام جهت ورود عدد جدید

 

برای ذخیره عدد و خروج از ویرایش عدد باید علامت [#] را وارد کنید. در این حالت دوباره تمامی نقطه های نرخ انتخاب شده روشن میشود و دوباره با زدن عدد 1 میتوانید نرخهای بعدی را انتخاب کنید. برای خروج از منو و شروع به کار عادی تابلو عدد صفر را وارد کنید.

برنامه این تابلو توسط کدویژن نوشته شده و براحتی میتوان در ابتدای برنامه بدون نیاز داشتن دانش خاصی از برنامه نویسی پارامترهای زیر را تنظیم کرد :

 

  • تعداد ارقام برای هر نرخ.(در تصویر بالا 5 رقم برای هر نرخ)
  • تعیین تعداد نرخ های نمایش داده شده. (در تصویر بالا 6 ردیف نرخ)
  • نحوه اتصال پایه سون سگمنت ها به شیفت رجیستر.
  • تغییر کلید های تعریف شده در منو ویرایش نرخ.
  • تعیین نوع سون سگمنت آند مشترک یا کاتد مشترک.

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

لینک به دیدگاه
×
×
  • اضافه کردن...