PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : آرایه در بسکام



rbm
04-03-2010, 00:32
چطور میشه تو بسکام آرایه دو بعدی یا بیشتر تعریف کرد؟
من می خوام یک برنامه تابلو روان بنویسم با جاروب سطری ، حالا برای تولید فونت نیاز به کمک دارم. لطفا راهنمایی کنید.

mehrdadgh
04-03-2010, 12:32
تو بیسکام قط آرایه یه بعدی داریم و این یکی از معایب بیسکام هستش

بیشتر برای تابلو روان های حرفه ای از کدویزن و c استفاده میکنن ! اگه میخای حرفه ای کار کنی برو به سمت c

rbm
05-03-2010, 01:26
ممنون ولى من يه مقدار وقت کم دارم و بايد اين پروژه رو درست کنم. تا بخوام به c آدت کنم طول مى کشه.
حالا بگذرىم تو جاروب سطرى وقتى مى خوان متن رو شيفت بدن چه جورى کد ها رو از روى فونت مربوط مى خونن ؟
من با استفاده از 74hc595 و ارتباط سريال ابتدا کد فعال سازى سطر و پشت سر اون بايت هاى هر سطر رو فرستادم و تونستم يک عکس رو نمايش بدم. حالا براى شيفت دادن موندم چکار کنم لطفا کمک کنید.

morteza_rk
05-03-2010, 18:36
سلام

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

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

حالا برای حرکت دادن باید به این نکته توجه کنید که مثلا اگه در ابتدا کد کنترل کننده ی سطرها 01111110 بود (یکها حالت روشن سطر فرض شوند) در حرکت به سمت راست شما باید کد سطرهارو به 00111111 تغییر بدید و از کدهای عکس مورد نظر هم یه سطر کم کنید که در دات ماتریس ظاهر نشه ، با این کار شما محتویات دات ماتریس رو حرکت دادید.

morteza_rk
05-03-2010, 19:13
فکر کنم با این عکسها بهتر بتونم منظورمو منتقل کنم ، در هر عکس اعداد نوشته شده در کنار سطر ها در واقع کد فعال سازی سطرها هستن.

You can see links before reply

You can see links before reply

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

rbm
06-03-2010, 03:12
خيلى متشکر از پاسختون
مدار مورد نظر من به اىن صورته که ىک تابلوى ۴۸*۱۲ دارم و توسط ۸ تا 74hc595 که شىفت رجيستر هست مدار رو راه اندازى مى کنم. ۶ تا براى ستون ها و ۲ تاسطر ها. تمام اىن شىفت رجيستر ها بصورت سرى قرار دارن .حالا ابتدا دو باىت جاروب سطر ها و سپس ۶ باىت براى ستون ها رو با spi مىفرستم و بعد از اون هم ىک کلاک براى شيفت دادن اطلاعات به خروجى . يعنى کلا با سه تا پايه ميکرو)ديتا و شيفت کلاک و فعال ساز( تابلو رو کنترل مى کنم.
من تا اىنجا تونستم ىک عکس رو تبديل به hex کنم و روى تابلو نشون بدم )تست هم کردم( حالا اگه بخوام اىن عکس رو ىک بىت ىک بىت شىفت بدم و پشت سرش ىه عکس دىگه بىاد چکار کنم؟
همچنىن اگه بخوام فونت طراحى کنم و شىفت بدم چى؟
منظورم اينه که چطور اطلاعات‌ يک بايت رو شىفت بدم طورى که اطلاعات باىت بعدى بياد داخل اين باىت؟ اصلا اىن روش رو توصیه مى کنيد؟

morteza_rk
06-03-2010, 20:57
دوست من با توضیحاتی که شما دادید من فکر می کنم که توانایی های شما بیشتر از منه!:wink:

پروژه ی بسیار بسیار جالبی دارید ، پیشنهاد می کنم که اگه تمایل دارید بذاریدش توی انجمن تا بقیه هم بتونن استفاده کنن.

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

در رابطه با این آی.سی 74HC595 هم باید بگم که من طرز کار باهاشو بلد نیستم؟! توی پرتیوس تستش کردم چیز جالبیه ولی نمی تونم خوب باهاش کار کنم.

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

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

منم یه کد براتون قرار میدم که تقریبا 3 سال پیش با الگو برداری از کد مهندس لاچینی نوشتم و شکل سخت افزارشم توی کدش هست! البته این کد خیلی سادست و فقط یه دات ماتریس داره اما می تونه منظور منو در حرکت دادن یک بایت روی دات ماتریس توضیح بده.
اگه دقت کنید در این برنامه قبل و بعد از کد حرف A یک کد مشابه و تکراری وجود داره ، که باعث میشه قبل از نمایش حرف A دات ماتریسها خاموش باشن و همینطور وقتی که حرف A در حال حرکت بر روی دات ماتریس هست (و نیز در حال خارج شدن).


'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~
' In The Name Of GOD

'Name : Morteza Rahimi Kordmahalle
'Topic : Motion In Dot_Matrix (RightMotion)
'Micro : ATMega32

'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~

$regfile = "m32def.dat"
$crystal = 8000000

'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~

Config Portc = Output
Config Portd = Output

'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~

Dim Column As Byte , Scan As Byte
Dim Replace As Byte , A As Byte
Dim Index As Byte , Refresh As Byte

'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~

Do

'This Command For,Result In Move "A" On The Dot_Matrix
For Replace = 0 To 15
A = 15 - Replace
'This Command For,Show 10 Times "A" Codes ,Until Own Eyes Can See "A" On The Dot_Matrix
For Refresh = 0 To 10
Scan = &B10000000
'This Command For, Put Only One Code From "A" On Portd (Data15),Since Show It In The Complete Scan
'Since Put Only Two Code From "A" On Portd (First Data15 , Second Data14),And Show Them In The Complete Scan
'This Process Continue Until All Of "A" Codes Put On The Portd
For Column = 0 To 7
Index = A + Column
Portc = Scan
Rotate Scan , Right 'Rotete Portc Evry 1.8ms
Portd = Lookup(index , Glayof)
Waitus 1800
Next Column

Next Refresh

Next Replace

Loop

End 'End Program

Glayof:
'Design Of "A" Character In Vertical Position
Data &B11111111
Data &B11111111
Data &B11111111
Data &B11111111
Data &B11111111
Data &B11111111
Data &B11111111
Data &B11111111

Data &B11111111
Data &B11100000
Data &B11010111
Data &B10110111
Data &B10110111
Data &B11010111
Data &B11100000
Data &B11111111

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

' 470 Ohm
'Portc.0 <----------------^^^^------------------------,
'Portc.1 <----------------^^^^----------------------, '
'Portc.2 <----------------^^^^--------------------, ' '
'Portc.3 <----------------^^^^------------------, ' ' '
'Portc.4 <----------------^^^^----------------, ' ' ' '
'Portc.5 <----------------^^^^--------------, ' ' ' ' '
'Portc.6 <----------------^^^^------------, ' ' ' ' ' '
'Portc.7 <----------------^^^^----------, ' ' ' ' ' ' '
' ' ' ' ' ' ' '
' ^ ^ ^ ^ ^ ^ ^ ^
' # # # @ @ # # #
' # # @ # # @ # #
' # @ # # # # @ #
' # @ @ @ @ @ @ #
' # @ # # # # @ #
' # @ # # # # @ #
' # @ # # # # @ #

'Portd.0 <------------------------------^ ^ ^ ^ ^ ^ ^ ^
'Portd.1 <--------------------------------' ' ' ' ' ' '
'Portd.2 <----------------------------------' ' ' ' ' '
'Portd.3 <------------------------------------' ' ' ' '
'Portd.4 <--------------------------------------' ' ' '
'Portd.5 <----------------------------------------' ' '
'Portd.6 <------------------------------------------' '
'Portd.7 <--------------------------------------------'

rbm
07-03-2010, 02:34
خیلی منون
نه بابا من هنوز تازه کارم و این اطلاعات و هم از توی سایتای مختلف بدست آوردم.
تو ان کدی که نوشتید فقط یک بایت رو شیف میده(rotate) ولی مشکل این جاست که من در هر سطر 6 بایت دارم و در spi هم یک بایت یک بایت میفرسته . کدی که نوشتم بصورت زیر هست:

$regfile = "m16def.dat "
$crystal = 12000000
'Config Lcd = 16 * 2
'Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 _
' , Db7 = Portc.7 , E = Portc.2 , Rs = Portc.3
Config Spi = Hard , Interrupt = Off , Data Order = Msb , Master = Yes , _
Polarity = Low , Phase = 0 , Clockrate = 4 , Noss = 1

Config Portb.0 = Output
'Config Portb.7 = Output


Dim R As Byte , Ref As Byte
Dim C As Byte , Cb As Byte
Dim Dr As Word
Dim Dc As Byte , Anim As Byte , T As Byte
Dim Table As String * 3 , Font As Byte
Dim Matn(500) As Eram Byte , Shift_r As Byte
Cls
Spiinit
Anim = 0

Do
Select Case Anim
Case 0
For T = 0 To 100
For R = 0 To 11
Dr = Lookup(r , Jarob)
Spiout Dr , 2
For Cb = 0 To 4
C = R * 5
C = C + Cb
Dc = Lookup(c ,rahman)
Spiout Dc , 1
Next Cb
Set Portb.0
Reset Portb.0

Next R
Next T
End Select
Loop
End




و بعدش هم جدول اطلاعات عکس هست که اسمم رو مینویسه.
مدارش بزرگه و جا نمیشه (A3) عکس بگیرم
portb.0 کلاک فعال کننده خروجی هست.
حالا اگه بخوام شیفت بدم چکار کنم ؟
من برای این عکس باید 72 بایت رو بفرستم

rbm
07-03-2010, 03:28
ببخشید من ارسال قبلى عجله داشتم خوب ننوشتم. تو توضیحات شما اىن طور گفتيد که مثلاْ براى شيفت يک متن یا عکس بايد کد چند فريم از اونو داشته باشيم و پشت سر هم نماىش بديم. ولى من ميخوام يک فونت طراحى کنم و فقط اطلاعات هر کاراکتر از اونو ذخیره کنم . بعد براي هر کلمه اى که بخوام بنويسم فقط بجاى هر حرف يک عدد مربوط به اونو ذخیره کنم و از روى اونا کلمه رو نمايش بدم. حالا اطلاعات اين کلمه رو چجورى روى صفحه شيفت بدم ؟
مشکلى که هست اينه که اطلاعات سطر هارو هم بايد از همين مسير بفزستم و نميشه جداگانه شيفت داد.

شاید بهتر باشه اسم اين پست رو به يه اسم مرتبط تغير بدم البته نميدونم چجورى اگه مديران سايت راهنمائی کنن يا اين کارو انجام بدن ممنون مىشم.

morteza_rk
07-03-2010, 15:40
دوست عزیز من بیشتر از اینا چیزی نمی دونم و برنامه ی شما رو هم نگاه کردم یه چیزایی دستگیرم شده ولی خوب نفهمیدم!

اگه نقشه ی شماتیک رو بذاری بهتر متوجه میشم ، ولی در کل فکر نکنم بتونم کمک زیادی بکنم! چون با روشی که شما استفاده کردی کاملا بیگانه هستم! اولین باره که می بینم.

rbm
07-03-2010, 16:05
خیلی ممنون تا اينجا هم خيلى کمک کرديد. ولى اگر دوستان ديگر هم که با اين روش کار کردن نظرشونو بنويسن تا استفاده کنيم خيلى بهتر ميشه.

morteza_rk
07-03-2010, 16:15
خواهش می کنم. حق با شماست ، ولی نمی دونم چرا یه چند وقتیه که سایت خلوت شده!؟

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

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

موفق باشید.

rbm
08-03-2010, 09:27
سلام یک روش پیدا کردم برای شیفت دادن
اینطوری که هر بایتی رو که با دستور shift شیفت میدم بایت کناریشو برعکس به تعداد s-8 بار شیفت بدم و با هم or کنم بنابراین بایت اول رو شیفت دادم بطوری که بایت بغلیش بیاد تو این بایت .
ولی هنوز تست نکردم.

masoodhashemy
08-03-2010, 13:02
امیدوارم در کارت موفق بشی واقعا ایده جالبیه :wink:
من الان چند روزه دارم پیگیری میکنم که این پست آخرش به کجا میرسه.

morteza_rk
08-03-2010, 19:53
منم برات آرزوی موفقیت دارم ، ایده جالبیه ، هرچند که من تمام و کمال نفهمیدمش! :0013:

rbm
09-03-2010, 01:19
ممنون.
احتنالاً تا پنجشنبه نتيجه رو ميزارم.
ولى هنوز نفهمیدم تو تابلو هاى حرفه اى از چه روشى استفاده مىشه؟
اگر از دوستان کسى اطلاعاتى داره حتى در حد اشاره خيلى کمک مى کنه. بالاخره در بين اين همه اساتید حرفه اى کسى هست از اين مورد اطلاع داشته باشه!!!

rbm
11-03-2010, 22:56
اینجاها مشخص میشه بسکام ضعیفه دیگه .:x خیلی شلوغ می شد .
من که رفتم سراغ c دوباره برنام رو بنوسم .

siamakb
12-03-2010, 00:01
سلام خسته نباشی.
بهتره از روش فریم استفاده کنی چون ساخت فونت وقت گیره.

mehrdadgh
12-03-2010, 19:41
روش فریم چه جوریه ؟
یه توضیحی می دین

rbm
12-03-2010, 22:03
سلام خسته نباشی.
بهتره از روش فریم استفاده کنی چون ساخت فونت وقت گیره.

سلام . درسته ولی میخوام بعداً بشه کیبرد وصل کرد و جملات رو تغییر داد.
حالا من یک فریم هم درست کردم ولی نمیشه شیفت داد؟

siamakb
13-03-2010, 03:06
سلام دل انگیز.
می تونی اطلاعات رو از طریق کامپیوتر به mmc انتقال بدی و از کیبرد استفاده نکنی.
در روش فریمی شما فقط اطلاعات جدول look up رو نمایش میدی و حرکت در خود جدول و لحاظ شده.

rbm
14-03-2010, 02:13
:o بالا خره تونستم اطلاعات رو شیفت بدم.:o
با همون روشی که گفتم ولی با این تفاوت که سه تا ارایه دو بعدی درست کردم که یکی برای نمایش و یکی برای شیفت به راست ارایه اول و سومی برای شیفت به چپ ارایه اول . البته ارایه اول یک ستون به عنوان ذخیره داره.
اطلاعات تمام ستونهای اول متن رو در ستون اول ارایه اصلی ریختم و سپس 8 بار اطلاعات کل این ارایه رو یکی به راست شیفت دادم و تو ارایه شیفت به راست ریختم و در همین هشت بار اطلاعات ستون قبلی رو هفت بار به سمت چپ شیفت داده و تو ارایه شیفت چپ ریختم از آخر هم ارایه چپ و راست رو با هم OR بیتی کردم و تو ارایه اصلی ریخته و نمایش دادم. به همین راحتی . فقط 30 با میکرو رو پرگرام کردم و اشکالاتشو گرفتم با رو سخت افزار جواب داد. آخه تو پروتئوس کریستال خارجی رو نشناخته و کند اجرا می کنه.(یه مشکل دیگه)
خودمم نفهمیدم چی نوشتم.