نویسنده: اوژن کی نژاد

همانطور که وعده داده شد، در این بخش در مورد فارسی نویسی روی LCD های مبتنی بر کنترل کننده T6963C و بطور خاص با دقت 240x128 توضیح داده می شود. برای نوشتن فونت های فارسی می توان به دو روش ارتباط مستقیم با T6963C و بدون استفاده از توابع بسکام و یا ساخت فونت بصورت نقطه به نقطه و با استفاده از دستور Pset عمل کرد. در این مقاله از روش دوم برای ایجاد فونت های فارسی 8x8 روی LCD استفاده شده است.

به این منظور یک روال به شکل زیر تعریف شده که با استفاده از آن می توان در مختصات دلخواه، فونت مورد نظر را نمایش داد:

Lcdfarsi (X , Y , FONT)

مقدار X در محدوده (30-1) و مقدار Y در محدوده (16-1) است و بجای فونت فهرستی از نمادها که قبلا هم در فارسی نویسی روی LCD های 128x64 معرفی شده بود، قرار می گیرد( مانند vav یا alef_chasbaan و مانند آن). برای احضار این روال باید از دستور Call استفاده شود. به عنوان مثال دستور زیر حرف "ق" را در بالا و سمت چپ صفحه نمایش می دهد:

Call  Lcdfarsi(1 , 1 , Ghaaf_bozorg)

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

اگر لازم باشد ترکیبی از حروف فارسی و لاتین نمایش داده شوند، برای حروف لاتین از ترکیب دستورات Locate و LCD استفاده می شود که این عمل هم در مثال انجام شده است. فونت فارسی از نظر شکل مشابه همان فونتی است که قبلا برای LCD های 128x64 با کنترل کننده ks108 طراحی شد.

مثال: برنامه زیر در سطر اول LCD از راست، عبارت فارسی" دانایی توانایی است" و در سطر سوم از سمت چپ عبارت"Knowledge is POWER" را نمایش می دهد:


' Written by Ozhan Keynezhad

$regfile = "m64def.dat"

$crystal = 8000000

$hwstack = 32

$swstack = 10

$framesize = 40

Const _0 = 0

Const _1 = 1

Const _2 = 2

Const _3 = 3

Const _4 = 4

Const _5 = 5

Const _6 = 6

Const _7 = 7

Const _8 = 8

Const _9 = 9

Const Virgool = 10

Const Khateh_chasban = 11

Const Alamat_soal = 12

Const A_ba_kolah = 13

Const Hamzeh_chasban = 14

Const Hamzeh_joda = 15

Const Alef = 16

Const Alef_chasbaan = 17

Const Be_bozorg = 18

Const Be_koochak = 19

Const Pe_bozorg = 20

Const Pe_koochak = 21

Const Te_bozorg = 22

Const Te_koochak = 23

Const Se_bozorg = 24

Const Se_koochak = 25

Const Jim_bozorg = 26

Const Jim_koochak = 27

Const Che_bozorg = 28

Const Che Koochak = 29

Const He_jimi_bozorg = 30

Const He_jimi_koochak = 31

Const Khe_bozorg = 32

Const Khe_koochak = 33

Const Daal = 34

Const Zaal = 35

Const Re = 36

Const Ze = 37

Const Zhe = 38

Const Sin_bozorg = 39

Const Sin_koochak = 40

Const Shin_bozorg = 41

Const Shin_koochak = 42

Const Saad_bozorg = 43

Const Saad_koochak = 44

Const Zaad_bozorg = 45

Const Zaad_koochak = 46

Const Taa = 47

Const Zaa = 48

Const Ein_bozorg = 49

Const Ein_akhar_chasban = 50

Const Ein_vasat = 51

Const Ein_koochak = 52

Const Ghein_bozorg = 53

Const Ghein_akhar_chasban = 54

Const Ghein_vasat = 55

Const Ghein_koochak = 56

Const Fe_bozorg = 57

Const Fe_koochak = 58

Const Ghaaf_bozorg = 59

Const Ghaaf_koochak = 60

Const Kaaf_bozorg = 61

Const Kaaf_koochak = 62

Const Gaaf_bozorg = 63

Const Gaaf_koochak = 64

Const Laam_bozorg = 65

Const Laam_alef = 66

Const Laam_koochak = 67

Const Mim_bozorg = 68

Const Mim_koochak = 69

Const Noon_bozorg = 70

Const Noon_koochak = 71

Const Vav = 72

Const He_koochak = 73

Const He_vasat = 74

Const He_chasbaan_avval = 75

Const Ye_chasbaan = 76

Const Ye_bozorg = 77

Const Ye_koochak = 78

 

Config Graphlcd = 240 * 128 , Dataport = Portc , Controlport = Portd , Ce = 7 , Cd = 4 , Wr = 5 , Rd = 6 , Reset = 3 , Fs = 2 , Mode = 8

 

Declare Sub Lcdfarsi(byval X As Byte , Byval Y As Byte , Byval Font As Byte)

 

Dim X As Byte

Dim Y As Byte

Dim Font As Byte

Dim X1 As Byte

Dim Y1 As Byte

Dim X2 As Byte

Dim Y2 As Byte

Dim Y3 As Byte

Dim Mask As Byte

Dim F As Byte

Dim F1 As Byte

Dim Table As Word

Dim N As Byte

 

Cls

Cursor Off

For N = 0 To 15

X = N + 15

Font = Lookup(n , Word_table)

Call Lcdfarsi(x , 1 , Font)

Next N

Locate 3 , 1

Lcd "Knowledge is POWER"

 

Do

Loop

End

 

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

 

Sub Lcdfarsi(byval X As Byte , Byval Y As Byte , Byval Font As Byte )

If X > 30 Then X = 3

If X = 0 Then X = 1

If Y > 16 Then Y = 16

If Y = 0 Then Y = 1

If Font > Ye_koochak Then Font = Ye_koochak

X = X -1 : Y = Y -1

Table = Font * 8

X1 = X * 8

Y1 = Y * 8

For X = 0 To 7

F = Lookup(table , Font_table)

For Y = 0 To 7

Y3 = Y

Mask = 2 ^ Y3

F1 = F And Mask

X2 = X + X1

Y2 = Y + Y1

If F1 0 Then Pset X2 , Y2 , 1

Next Y

Table = Table + 1

Next X

End Sub

 

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

 

Word_table:

 

Data Te_bozorg , Sin_koochak , Alef

Data Ye_chasbaan , Ye_koochak , Alef_chasbaan , Noon_koochak , Alef , Vav , Te_koochak

Data Ye_chasbaan , Ye_koochak , Alef_chasbaan , Noon_koochak , Alef , Daal

 

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

 

Font_table:

 

Data &H00 , &H00 , &H30 , &H48 , &H30 , &H00 , &H00 , &H00

DATA &H00 , &H00 , &H00 , &HFC , &H00 , &H00 , &H00 , &H00

DATA &H00 , &H00 , &H00 , &HFC , &H10 , &H1C , &H00 , &H00

DATA &H00 , &HFC , &H10 , &H1C , &H10 , &H1C , &H00 , &H00

DATA &H00 , &HFC , &H10 , &H18 , &H14 , &H14 , &H00 , &H00

DATA &H00 , &HE0 , &H98 , &HC4 , &H98 , &HE0 , &H00 , &H00

DATA &H00 , &H80 , &HD8 , &H64 , &H24 , &H08 , &H00 , &H00

DATA &H00 , &H0C , &H70 , &HC0 , &H70 , &H0C , &H00 , &H00

DATA &H00 , &HC0 , &H38 , &H0C , &H38 , &HC0 , &H00 , &H00

DATA &H00 , &H00 , &H1C , &H14 , &HFC , &H00 , &H00 , &H00

DATA &H00 , &H00 , &H60 , &HD0 , &H40 , &H00 , &H00 , &H00

DATA &H20 , &H20 , &H20 , &H20 , &H20 , &H20 , &H20 , &H20

DATA &H00 , &H00 , &H0C , &HB2 , &H02 , &H04 , &H00 , &H00

DATA &H00 , &H08 , &H04 , &H7C , &H04 , &H02 , &H00 , &H00

DATA &H20 , &H20 , &H34 , &H2A , &H2A , &H20 , &H20 , &H18

DATA &H00 , &H00 , &H20 , &H54 , &H2A , &H0A , &H00 , &H00

DATA &H00 , &H00 , &H00 , &H00 , &H7E , &H00 , &H00 , &H00

DATA &H00 , &H00 , &H00 , &H00 , &H1E , &H20 , &H20 , &H20

DATA &H00 , &H18 , &H20 , &H20 , &HA0 , &H20 , &H20 , &H18

DATA &H20 , &H20 , &H20 , &H20 , &HA0 , &H20 , &H20 , &H18

DATA &H00 , &H18 , &H20 , &H60 , &HA0 , &H60 , &H20 , &H18

DATA &H20 , &H20 , &H20 , &H60 , &HA0 , &H60 , &H20 , &H18

DATA &H00 , &H18 , &H20 , &H24 , &H20 , &H24 , &H20 , &H18

DATA &H20 , &H20 , &H20 , &H24 , &H20 , &H24 , &H20 , &H18

DATA &H00 , &H18 , &H20 , &H24 , &H22 , &H24 , &H20 , &H18

DATA &H20 , &H20 , &H20 , &H24 , &H22 , &H24 , &H20 , &H18

DATA &H00 , &H00 , &H70 , &H98 , &H8A , &HAA , &H8C , &H18

DATA &H20 , &H20 , &H20 , &H28 , &HA4 , &H14 , &H18 , &H30

DATA &H00 , &H00 , &H70 , &H98 , &HAA , &HCA , &HAC , &H18

DATA &H20 , &H20 , &H20 , &H68 , &HA4 , &H54 , &H18 , &H30

DATA &H00 , &H00 , &H70 , &H98 , &H8A , &H8A , &H8C , &H18

DATA &H20 , &H20 , &H20 , &H28 , &H24 , &H14 , &H18 , &H30

DATA &H00 , &H00 , &H00 , &H60 , &H94 , &H95 , &H98 , &H10

DATA &H20 , &H20 , &H20 , &H28 , &H25 , &H14 , &H18 , &H30

DATA &H00 , &H00 , &H00 , &H00 , &H20 , &H44 , &H48 , &H30

DATA &H00 , &H00 , &H00 , &H00 , &H20 , &H40 , &H4A , &H30

DATA &H00 , &H00 , &H00 , &H00 , &H80 , &H80 , &H40 , &H38

DATA &H00 , &H00 , &H00 , &H00 , &H80 , &H80 , &H40 , &H3A

DATA &H00 , &H00 , &H00 , &H00 , &H80 , &H84 , &H42 , &H34

DATA &H00 , &H60 , &H80 , &H70 , &H20 , &H30 , &H20 , &H18

DATA &H20 , &H20 , &H20 , &H30 , &H20 , &H30 , &H20 , &H18

DATA &H00 , &H60 , &H80 , &H70 , &H24 , &H32 , &H24 , &H18

DATA &H20 , &H20 , &H20 , &H30 , &H24 , &H32 , &H24 , &H18

DATA &H00 , &H60 , &H80 , &H60 , &H30 , &H28 , &H28 , &H18

DATA &H20 , &H20 , &H30 , &H20 , &H30 , &H28 , &H28 , &H18

DATA &H00 , &H60 , &H80 , &H60 , &H30 , &H28 , &H2A , &H18

DATA &H20 , &H20 , &H30 , &H20 , &H30 , &H28 , &H2A , &H18

DATA &H00 , &H20 , &H20 , &H3E , &H30 , &H28 , &H28 , &H18

DATA &H20 , &H20 , &H20 , &H3E , &H30 , &H28 , &H2A , &H18

DATA &H00 , &H00 , &H00 , &H00 , &H40 , &HB0 , &HA8 , &HA8

DATA &H00 , &H00 , &H00 , &H00 , &H60 , &HAC , &H94 , &HAC

DATA &H20 , &H20 , &H20 , &H2C , &H14 , &H2C , &H20 , &H20

DATA &H20 , &H20 , &H20 , &H20 , &H20 , &H30 , &H28 , &H28

DATA &H00 , &H00 , &H00 , &H00 , &H40 , &HB0 , &HAA , &HA8

DATA &H00 , &H00 , &H00 , &H00 , &H60 , &HAC , &H96 , &HAC

DATA &H20 , &H20 , &H20 , &H2C , &H15 , &H2C , &H20 , &H20

DATA &H20 , &H20 , &H20 , &H20 , &H20 , &H30 , &H2A , &H28

DATA &H00 , &H10 , &H20 , &H20 , &H20 , &H38 , &H2A , &H38

DATA &H20 , &H20 , &H20 , &H20 , &H20 , &H38 , &H2A , &H38

DATA &H00 , &H00 , &H70 , &H80 , &HBA , &HA8 , &HBA , &H70

DATA &H20 , &H20 , &H20 , &H20 , &H20 , &H3A , &H28 , &H3A

DATA &H00 , &H30 , &H20 , &H20 , &H20 , &H28 , &H34 , &H32

DATA &H20 , &H20 , &H20 , &H20 , &H20 , &H28 , &H34 , &H32

DATA &H00 , &H30 , &H20 , &H20 , &H24 , &H2A , &H34 , &H32

DATA &H20 , &H20 , &H20 , &H20 , &H24 , &H2A , &H34 , &H32

DATA &H00 , &H00 , &H60 , &H80 , &H80 , &H80 , &H80 , &H7E

DATA &H00 , &H00 , &H00 , &H00 , &H3E , &H20 , &H20 , &H1E

DATA &H20 , &H20 , &H20 , &H20 , &H20 , &H20 , &H20 , &H1E

DATA &H00 , &H00 , &HE0 , &H10 , &H30 , &H48 , &H48 , &H30

DATA &H20 , &H20 , &H20 , &H20 , &H20 , &H50 , &H48 , &H30

DATA &H00 , &H00 , &H00 , &H70 , &H80 , &H84 , &H80 , &H70

DATA &H20 , &H20 , &H20 , &H20 , &H24 , &H20 , &H20 , &H18

DATA &H00 , &H00 , &H00 , &H00 , &H00 , &HB8 , &HA4 , &H7C

DATA &H00 , &H00 , &H00 , &H00 , &H00 , &H18 , &H24 , &H38

DATA &H20 , &H20 , &H30 , &H4C , &H78 , &H48 , &H30 , &H20

DATA &H20 , &H20 , &H20 , &H30 , &H4C , &H78 , &H48 , &H30

DATA &H00 , &H60 , &H80 , &H80 , &HA0 , &H50 , &H10 , &H20

DATA &H00 , &H60 , &H80 , &H80 , &H98 , &HA4 , &H64 , &H04

DATA &H20 , &H20 , &H20 , &HA0 , &H20 , &HA0 , &H20 , &H18

نظر
افزودن جدید جستجو
احسان  - گرافيكي   |2011-02-10 13:51:11
خودتونوخسته نكنيد واسه يه جمله اين همه كد
اصلا لازم نيست font editor بيسكام هستش فقط يكم
خلاقيت ميخواد
رسول سربازنژاد  - ممنون   |2011-02-26 13:35:00
خيلي خوب بود
زحمت كشيده ايد - خيلي
داود شهباز  - سلام   |2011-11-24 14:27:53
با عرض سلام وآرزوي موفقيت براي همه
اگرلطف
كنيد درمورد 3تا دستور حافظه استك توضيحات
دندون گيري رو واسم ايميل كنيد ممنون ميشم.
سامان  - تشکر   |2012-03-23 20:48:53
سلام
از آموزش خوبتون یک دنیا متشکرم
واقعا
لطف کردید مجانی قرار دادید
خدا خیرتون بده
نوشتن نظر
نام:
ایمیل:
 
آدرس سایت:
عنوان:
 

کامپوننت نظرات بر مطالب، جوملا فارسی توسعه و پشتیبانی توسط گروه نرم افزاری جوملا - http://www.joomla.ir"

با کلیک روی 1+ نوین تراشه را محبوب کنید!

| + -