خوش آمديد!
05:10 پنج شنبه 18 شهريور ماه ، 1389
مترجم گوگل

Google Translate

SMS خبرنامه

SMS

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

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

ایمیل - Email



تبلیغات


فروشگاه

نرم افزار


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


ليست محصولات

تابلوروان: انیمیشن در تابلوروان توسط 74HC595

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

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

تصویر 1

اتصال شیفت رجیستر 74595 به میکروکنترولر

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

تصویر2

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



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

تصوبر 3

دیاگرام شیفت رجیستر 74595

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

تصویر4

دیاگرام پایه های شیفت رجیستر 74595

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

تصویر 5

 نقشه تابلوروان 24 در 24 با شیفت رجیستر 74595

برنامه و نقشه طوری طراحی شده اند که شما براحتی بتوانید نقشه را گسترش داده و یا حتی کوچکتر کنید و برنامه نیز با تغییر پارامترهایی که شامل 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

Declare Sub Readframe(byval Frame_number As Word)
Declare Sub Framedelay(byval Frame_number As Word)
' Port A for COL refresh
Config Porta = Output
' Port D for 74595 register
Config Portd = Output
'Clock value: 15.625 kHz
Config Timer0 = Timer , Prescale = 64  
On Ovf0 Refresh
Enable Timer0 ' enable the timer interrupt
Enable Interrupts
Sh_cp Alias Portd.3
Ds Alias Portd.4
St_cp Alias Portd.5
Mr Alias Portd.6
Oe Alias Portd.7
Col_port Alias Porta
Dim Col As Byte
Dim Buf(frame_size) As Byte
Dim I As Byte
Dim Matrix_counter As Word
Dim Buf_idx As Word
Dim Col_number_in_buf As Byte
Dim Frame_count As Word

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 As Word)
 Local Idx As Word
 Local Lookup_idx As Word
 Disable Timer0
 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
 Enable Timer0
End Sub

Sub Framedelay(byval Frame_number As Word)
 Local D As Word
 D = Lookup(frame_number , Dly )
 Waitms D
End Sub

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 < 7 Then
 Incr Col
Else
 Col = 0
End If
Return



- HERE INSERT DATA

 

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

نمونه کد تولید شده برای تصویر گربه شیطون(تصویر 6) را در زیر آوردم که شما با مراجعه به آدرس http://www.hlachini.com/gifanimation2hex.wiz هر تصویر دیگر و یا نمونه های موجود در برنامه را در تابلوی خود استفاده کنید.

تصویر 6

انیمیشن گربه شیطون

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

'**************************************************** 
'* This Code Generate By : Hossein Lachini          * 
'* The GIF Animation to Hex Code for LED Sign Board * 
'* For to get more details visit :                  * 
'*                           www.HLachini.com       * 
'* 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%

 

امیدوارم این آموزش توانسه باشد به شما کمک کرده باشد تا بهتر بتوانید از این ابزار مفید که سایت بسکام نیز آنرا در اپلیکیشن نوت 204(AN #204) خود معرفی کرده و به آدرس زیر در سایت خود معرفی و نصب کرده است:

http://tools.mcselec.com/GIFdecode/index.php

ما را با نظرات خود در توسعه و قرار دادن مباحث و نرم افزارهای مفید راهنمایی نمائید.

 



کلمات کليدي : Schematic Circuit Code LED Sign Board 74HC595 GIF Animation BASCOM AVR ATmega32 میکرو کنترولر تابلوروان بسکام انیمیشن نرم افزار آنلاین سورس نقشه شماتیک ماتریس
ارسال شده در مورخه : پنجشنبه، 7 مرداد ماه ، 1389 توسط lachini  چاپ مطلب

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

 مثال تابلو 16 در 128 با مبدل آنلاین  [پنجشنبه، 11 شهريور ماه ، 1389]
 تابلو روان و اندازه گیری دما با SMT160  [چهارشنبه، 3 شهريور ماه ، 1389]
 تابلوروان با میکرو 8051  [سه شنبه، 5 مرداد ماه ، 1389]
 نرم افزار آنلاین تبدیل متن به کد هگز  [چهارشنبه، 17 تير ماه ، 1388]
 تابلوروان توسط کیبورد و LCD  [پنجشنبه، 8 اسفند ماه ، 1387]
 تابلوروان قابل اتصال به پورت سریال  [سه شنبه، 17 دي ماه ، 1387]
 تابلوروان 8 در 128 فارسی  [چهارشنبه، 27 آذر ماه ، 1387]

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

عنوان:
 
نظر:


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

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

ali doremami (امتیاز : 0)
توسط ميهمان در مورخه : چهارشنبه، 27 مرداد ماه ، 1389
باسلام وتشکرازمهندس لاچینی عزیز. واقعا شما زکات علمتون رو با مطالبتون میپردازید. اما خواهش میکنم مطالب را ساده تر بنویسید. چون من با اینکه دانشجوی الکترونیک هستم اما بعضی از قسمت ها برایم گنگ وسوال دار است وجواب سوالهایم را هم که میخواهم از اینترنت بگیرم مطلب به درد بخوری پیدا نمیکنم. بهتر است کار بعضی از قطعات که استفاده میکنید توضیح دهید به صورت تئوری عملی وکاربردی. مثل لچ و شیفت رجیستر و... ممنون


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


توضیح در مورد شیفت رجیستر (امتیاز : 1)
توسط amir_r در مورخه : شنبه، 30 مرداد ماه ، 1389
(مشخصات کاربر | ارسال پیغام شخصی)
سلام مهندس خسته نباشید ممنون از زحمتتاتون اگه ممکنه لطف کنید در مورد نحوه فعال کردن شیفت رجیستر ها بیشتر توضیح بدید ممنون


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


سلام (امتیاز : 0)
توسط ميهمان در مورخه : پنجشنبه، 11 شهريور ماه ، 1389
واقعا ممنون در مورد توضيحات مفيدتون مي خواستم در مورد افزايش تعداد ستونها در تابلو روان و همچنين اگه اطلاعاتي در مورد نحوه استفاده از كارت گرافيكي كامپيوتر در تابلو روان درين برام توضيح بدين www.soorena_nsh@yahoo.com


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

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


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

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

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

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