چطور میشه تو بسکام آرایه دو بعدی یا بیشتر تعریف کرد؟
من می خوام یک برنامه تابلو روان بنویسم با جاروب سطری ، حالا برای تولید فونت نیاز به کمک دارم. لطفا راهنمایی کنید.
چطور میشه تو بسکام آرایه دو بعدی یا بیشتر تعریف کرد؟
من می خوام یک برنامه تابلو روان بنویسم با جاروب سطری ، حالا برای تولید فونت نیاز به کمک دارم. لطفا راهنمایی کنید.
تو بیسکام قط آرایه یه بعدی داریم و این یکی از معایب بیسکام هستش
بیشتر برای تابلو روان های حرفه ای از کدویزن و c استفاده میکنن ! اگه میخای حرفه ای کار کنی برو به سمت c
ممنون ولى من يه مقدار وقت کم دارم و بايد اين پروژه رو درست کنم. تا بخوام به c آدت کنم طول مى کشه.
حالا بگذرىم تو جاروب سطرى وقتى مى خوان متن رو شيفت بدن چه جورى کد ها رو از روى فونت مربوط مى خونن ؟
من با استفاده از 74hc595 و ارتباط سريال ابتدا کد فعال سازى سطر و پشت سر اون بايت هاى هر سطر رو فرستادم و تونستم يک عکس رو نمايش بدم. حالا براى شيفت دادن موندم چکار کنم لطفا کمک کنید.
سلام
در مد جاروب سطری شما باید با استفاده از دستوری مثل Rotate در بسکام مقدار پورتی رو که کنترل کننده ی سطرهاتون هست در جهت دلخواه حرکت بدین. اگه شماتیک مدارتون رو قرار بدید بهتر میشه نظر داد.
در کل برای حرکت دادن محتویات روی دات ماتریس از اثر فلیکر (خطای چشم) استفاده میشه. یعنی شما در وهله ی اول کل عکس رو به مدت تقریبا 20 میلی ثانیه روی دات ماتریس نشون می دید ، بعد محتویات رو یک مرتبه در جلوتر نشون میدید و باز هم 20 میلی ثانیه صبر می کنید و این کار رو متناوبا تکرار می کنید.
حالا برای حرکت دادن باید به این نکته توجه کنید که مثلا اگه در ابتدا کد کنترل کننده ی سطرها 01111110 بود (یکها حالت روشن سطر فرض شوند) در حرکت به سمت راست شما باید کد سطرهارو به 00111111 تغییر بدید و از کدهای عکس مورد نظر هم یه سطر کم کنید که در دات ماتریس ظاهر نشه ، با این کار شما محتویات دات ماتریس رو حرکت دادید.
.
فکر کنم با این عکسها بهتر بتونم منظورمو منتقل کنم ، در هر عکس اعداد نوشته شده در کنار سطر ها در واقع کد فعال سازی سطرها هستن.
همونطوریکه می بینید در این عکسها اعدادی که سطرهارو فعال می کنن جابجا شدن اما در عکس دوم با اینکه سطر آخر روشن هست ولی کدی وجود نداره که بخواد نشون داده بشه ، بعبارت دیگه همراه با جابجایی اعداد سطرها کدهای مربوط به عکس هم یک سطر کمتر میشن بنابراین سطر آخر هم خاموش می مونه.
.
خيلى متشکر از پاسختون
مدار مورد نظر من به اىن صورته که ىک تابلوى ۴۸*۱۲ دارم و توسط ۸ تا 74hc595 که شىفت رجيستر هست مدار رو راه اندازى مى کنم. ۶ تا براى ستون ها و ۲ تاسطر ها. تمام اىن شىفت رجيستر ها بصورت سرى قرار دارن .حالا ابتدا دو باىت جاروب سطر ها و سپس ۶ باىت براى ستون ها رو با spi مىفرستم و بعد از اون هم ىک کلاک براى شيفت دادن اطلاعات به خروجى . يعنى کلا با سه تا پايه ميکرو)ديتا و شيفت کلاک و فعال ساز( تابلو رو کنترل مى کنم.
من تا اىنجا تونستم ىک عکس رو تبديل به hex کنم و روى تابلو نشون بدم )تست هم کردم( حالا اگه بخوام اىن عکس رو ىک بىت ىک بىت شىفت بدم و پشت سرش ىه عکس دىگه بىاد چکار کنم؟
همچنىن اگه بخوام فونت طراحى کنم و شىفت بدم چى؟
منظورم اينه که چطور اطلاعات يک بايت رو شىفت بدم طورى که اطلاعات باىت بعدى بياد داخل اين باىت؟ اصلا اىن روش رو توصیه مى کنيد؟
دوست من با توضیحاتی که شما دادید من فکر می کنم که توانایی های شما بیشتر از منه!
پروژه ی بسیار بسیار جالبی دارید ، پیشنهاد می کنم که اگه تمایل دارید بذاریدش توی انجمن تا بقیه هم بتونن استفاده کنن.
برای کنترل حرکت تصویر و اومدن تصویر بعدی شما باید هر کدوم از این تصویرها رو جداگانه فراخوانی کنید و با یک فاصله پشت سر هم نشون بدید ، این فاصله رو باید توسط کدی ایجاد کنید که از طریق اون یکی دو سطر (یا ستون) از دات ماتریس خاموش باشه. بطور کلی این کد در انتهای هر تصویر باید فراخوانی بشه و بعداز اون تصویر بعدی فراخوانی بشه.
در رابطه با این آی.سی 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 <--------------------------------------------'
.
خیلی منون
نه بابا من هنوز تازه کارم و این اطلاعات و هم از توی سایتای مختلف بدست آوردم.
تو ان کدی که نوشتید فقط یک بایت رو شیف میده(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 بایت رو بفرستم
ببخشید من ارسال قبلى عجله داشتم خوب ننوشتم. تو توضیحات شما اىن طور گفتيد که مثلاْ براى شيفت يک متن یا عکس بايد کد چند فريم از اونو داشته باشيم و پشت سر هم نماىش بديم. ولى من ميخوام يک فونت طراحى کنم و فقط اطلاعات هر کاراکتر از اونو ذخیره کنم . بعد براي هر کلمه اى که بخوام بنويسم فقط بجاى هر حرف يک عدد مربوط به اونو ذخیره کنم و از روى اونا کلمه رو نمايش بدم. حالا اطلاعات اين کلمه رو چجورى روى صفحه شيفت بدم ؟
مشکلى که هست اينه که اطلاعات سطر هارو هم بايد از همين مسير بفزستم و نميشه جداگانه شيفت داد.
شاید بهتر باشه اسم اين پست رو به يه اسم مرتبط تغير بدم البته نميدونم چجورى اگه مديران سايت راهنمائی کنن يا اين کارو انجام بدن ممنون مىشم.
دوست عزیز من بیشتر از اینا چیزی نمی دونم و برنامه ی شما رو هم نگاه کردم یه چیزایی دستگیرم شده ولی خوب نفهمیدم!
اگه نقشه ی شماتیک رو بذاری بهتر متوجه میشم ، ولی در کل فکر نکنم بتونم کمک زیادی بکنم! چون با روشی که شما استفاده کردی کاملا بیگانه هستم! اولین باره که می بینم.
.
خیلی ممنون تا اينجا هم خيلى کمک کرديد. ولى اگر دوستان ديگر هم که با اين روش کار کردن نظرشونو بنويسن تا استفاده کنيم خيلى بهتر ميشه.
خواهش می کنم. حق با شماست ، ولی نمی دونم چرا یه چند وقتیه که سایت خلوت شده!؟
اکثر کاربرا فقط سوال می پرسن و به سوالات بقیه جواب نمیدن.
منم در همین حد در توانم بود. ولی شما در صورت تمایل می تونید کل روژه رو zip کنید و اینجا قرار بدید تا دیگران هم بتونن استفاده کنن ، چون واقعا جالبه که با این تعداد کم از پایه های میکرو بشه یه تابلو روان ساخت.
موفق باشید.
.
سلام یک روش پیدا کردم برای شیفت دادن
اینطوری که هر بایتی رو که با دستور shift شیفت میدم بایت کناریشو برعکس به تعداد s-8 بار شیفت بدم و با هم or کنم بنابراین بایت اول رو شیفت دادم بطوری که بایت بغلیش بیاد تو این بایت .
ولی هنوز تست نکردم.
امیدوارم در کارت موفق بشی واقعا ایده جالبیه
من الان چند روزه دارم پیگیری میکنم که این پست آخرش به کجا میرسه.
خنده بر لب میزنم تا کس نداند راز من.........ورنه این دنیا که ما دیدیم خندیدن نداشت
وبلاگ شخصی
منم برات آرزوی موفقیت دارم ، ایده جالبیه ، هرچند که من تمام و کمال نفهمیدمش!
.
ممنون.
احتنالاً تا پنجشنبه نتيجه رو ميزارم.
ولى هنوز نفهمیدم تو تابلو هاى حرفه اى از چه روشى استفاده مىشه؟
اگر از دوستان کسى اطلاعاتى داره حتى در حد اشاره خيلى کمک مى کنه. بالاخره در بين اين همه اساتید حرفه اى کسى هست از اين مورد اطلاع داشته باشه!!!
اینجاها مشخص میشه بسکام ضعیفه دیگه . خیلی شلوغ می شد .
من که رفتم سراغ c دوباره برنام رو بنوسم .
سلام خسته نباشی.
بهتره از روش فریم استفاده کنی چون ساخت فونت وقت گیره.
روش فریم چه جوریه ؟
یه توضیحی می دین