برق و الكترونيك

چند کلمه در شرح محتوای وب‌سایت...

سرتیتر پست جدید

 

 

برای اینکه بتوانیم برنامه ای بنویسیم که فونتها را بر روی dotmatrix LED  نمایش داده و به حرکت در آوریم ، بدون توجه به سخت افزار ابتدا باید با اصول نمایش یک کاراکتر (یک حرف ) آشنا شویم .

 

جدول زیر را در نظر بگیرید ،(شکل 1 ) یک جدول 8*8 که در کل دارای 64 خا نه میباشد .

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

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

در نتیجه برای نمایش یک کاراکتر در یک ماتریس 8*8 به 8 بایت داده نیاز داریم .

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

    

 00000000(0x00)       

00010000(0x10)       

00101000(0x28)       

01000100(0x44)       

10000010(0x82)       

11111110(0xFE)       

10000010(0x82)       

10000010(0x82)                                                          


                                                  شکل 1 

 

 

 

تا اینجای کار را داشته باشید، حالا باید برویم سراغ dotmatrix LED  همان چیزی که برای نمایش فونت به آن نیاز داریم .(شکل 2 )

این قطعه از 64 LED تشکیل شده است ، متناظر با 64 خانه ای که توصیف آن رفت .

  

                                                                  

                                             شکل  2

 

روش اتصال الکتریکی LED ها در شکل 2 نشان داده شده است .با توجه به شکل  میتوان دریافت که داده های هر سطر را میتوان روی 8 خط عمودی که به آند دیودها وصل هستند قرار داد و خط متناظر با آن سطر را صفر کرد . بسته به داده یک با یتی ،برخی از LED ها روشن خواهند شد. توجه داشته باشید که 8 خط افقی که به کاتد دیودها وصل هستند حتما باید حالت اولیه 1 منطقی را دارا باشند(+5V=High ) ، به عنوان مثال اگر بخواهیم A را نمایش دهیم :

1-           8 خط افقی را یک می کنیم ، یعنی مقدار هگزادسیما ل FF را روی Row0 تا Row7 قرار میدهیم .

2-           داده سطر اول 0x00 هگزادسیما ل (0b00000000 باینری ) را روی Data0 تا Data7 میریزیم .

3-           سطر اول Row0 را صفر کرده ، 100 میکرو ثانیه تاخیر ایجاد کرده ودوباره آن را یک میکنیم .

4-           داده سطر دوم 0x100 هگزادسیما ل (0b00010000 باینری ) را روی Data0 تا Data7 میریزیم .

5-           سطر دوم Row1 را صفر کرده ، 100 میکرو ثانیه تاخیر ایجاد کرده ودوباره آن را یک میکنیم . 

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

با این عمل فونت A  به وضوح نمایش داده خواهد شد.

ممکن است این سوال پیش آید که چه لزومی دارد که سطر به سطر داده ها را نمایش دهیم ؟

آیا بهتر نیست LED  هائی که در کل باید روشن شوند، روشن کنیم و فونت را نمایش دهیم ؟

آری میشود ، اما با چه هزینه ای ؟ برای اینکه بتوانیم این کار را انجام دهیم باید هر یک از LED ها جداگانه به منبع تغذیه یا سخت افزاری که ماتریس را راه اندازی میکند وصل شود.

در نتیجه برای نمایش فونت روی  یک ماتریس 8*8 که از 64 LED  تشکیل شده ودر کاتد مشترک باشند به 65 سیم (65 نقطه اتصا ل ) نیاز داریم واگر بخواهیم یک کلمه 5 حرفی را روی 5 عدد ماتریس نشان بدهیم ، حداقل به 321 نقطه اتصا ل نیاز داریم . در این صورت سخت افزار مورد نیاز بسیار پیچیده و پر هزینه خواهد شد. اما با روش اسکن سطر به سطر (روشی که گفته شد) برای نمایش یک فونت ما فقط به 8 خط سطرها و 8خط ستونها نیاز داریم ، و برای نمایش یک کلمه 5 حرفی فقط 8 خط برای سطرها ( خطوط افقی ماتریسها به صورت موازی به یکدیگر وصل میشوند) و 40 خط برای ستونها ، جمعا 48 خط نیاز خواهیم داشت . که این 40 خط ستونها  نیز با استفاده از Data latch به 13 خط  کاهش   می یابد. روش فوق که شرح داده شد برای نمایش فونت درما نیتورها درحالت text (سیستم عامل dos ) بکار می رود. با این تفاوت که در آنجا pixel ها به جای led ها عمل میکنند .

در اینجا من از ماتریس 8*8 استفاده کرده ام ، اما چنانچه سطرها به 12 ، 14 و یا 16 افزایش یابند فونتها زیباتر و خواناتر خواهند شد .

 

چگونه میتوان فونت را به حرکت درآورد؟

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

00000000(0x00)       

01000001(0x41)       

10000001(0x44)       

11111111(0xFF)       

01111110(0x7E)       

00000000(0x00)       

00001000(0x82)                                                          

00000000(0x00)       


                                                  شکل3   

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

 

$regfile = "M32def.dat"

$crystal = 8000000

Dim Char1 As Byte

Dim Char2 As Byte

Dim Lsh As Byte

Dim J As Byte

Dim R As Byte

Dim N As Byte

Config Porta = Output

Config Portb = Output

Porta = 0

Portb = 255

Do

Lsh = 8

 For R = 0 To 7

   For N = 1 To 200

    For J = 0 To 7

    ( Char1 = Lookup(J , Data1

    ( Char2 = Lookup(J , Data1

     Shift Char1 , Right , R

     Shift Char2 , Left , Lsh

     Porta = Char1 Or Char2

     Portb.j = 0

     Waitus 100

     Portb.j = 1

    Next

   Next

   Decr Lsh

 Next

Loop

End

Data1:

Data &H00 , &H00 , &H41 , &H81 , &HFF , &H7E , &H00 , &H08

 

این برنامه با استفاده از bascom  نوشته شده ،پس از کمپایل کردن برنامه فایل با پسوند HEX را میتوان در شبیه ساز پروتئوس در AVR  بارگذاری کرد و نتیجه را مشاهده نمود. شماتیک مدار پرتوس در شکل 4 نشان داده شده است .

                    

                                               شکل 4