Anda di halaman 1dari 19

Menampilkan HURUF s pada dot matrik 5x7 bascom avr dan at mega

8535

Gambar skema rangkaian Menampilkan HURUF s pada dot matrik 5x7


bascom avr dan at mega 8535

Source code Menampilkan HURUF s pada dot matrik 5x7 bascom avr
dan at mega 8535

$regfile = "m8535.dat"
$crystal = 16000000
Config Portc = Output
Config Portd = Output
Dim I As Byte
Do
For I = 0 To 4
Portd = Lookup(i , Kolom)
Portc = Lookup(i , Baris)
Waitms 5
Next
Loop
End
Kolom:
Data &HFE , &HFD , &HFB , &HF7 , &HEF
Baris:
Data &B10111001,&B10110110,&B10110110,&B10110110,&B11001110
Moving Sign Sederhana
Posted on April 16, 2012 by admin

Tulisan berjalan atau moving sign dengan Delphi sudah kita coba pada artikel sebelumnya.
Ini kali kita coba moving sign yang sebenarnya, maksudnya bener bener pake hardware.
Cukup 1 biji dotmatrik saja. Apakah bisa ? Ya kita buktiin aja. Siapkan 1 dot matrik dan
ATmega8535. Buat rangkaiannya sepertini :

Selanjutnya bikin programnya pake BASCOM-AVR saja, sik gampang .


$regfile = m8535.dat
$crystal = 16000000
Config Portc = Output
Config Portd = Output

Dim I As Byte , J As Byte , B As Byte , K As Byte


Dim Geser As Byte , Tem As Byte
Geser = 1
Do

1
For I = 0 To 20
B = Geser 1
For K = 0 To 4
Portd = Lookup(k , Kolom)
Portc = Lookup(b , Baris)
Waitms 2
Incr B
Tem = Geser + 3
If B > 4 Then B = 0
If B > Tem Then B = Geser 1
Next
Next
Incr Geser
If Geser > 18 Then Geser = 1

Loop
End

Kolom:
Data &HFE , &HFD , &HFB , &HF7 , &HEF
Baris:
Data &B11111000 , &B11110111 , &B10000111 , &B11110111 , &B11111000 Y
Data &B11111111
Data &B11000001 , &B10110110 , &B10110110 , &B10110110 , &B10110110 E
Data &B11111111
Data &B10111001 , &B10110110 , &B10110110 , &B10110110 , &B11001110 S
Data &B11111111
Data &B11111000 , &B11110111 , &B10000111 , &B11110111 , &B11111000 Y
Tutorial Dot Matrix 5x7 untuk Menampilkan Teks Berjalan (Tutorial Dot Matrix 5x7 to
Display Running Text)

Dot matrix merupakan deretan led yang membentuk array dengan jumlah kolom dan baris tertentu,
sehingga titik-titik yang menyala dapat membentuk suatu karakter angka, huruf, tanda baca, dsb.
Program dot matrix 5x7 berikut menggunakan shift register 74HC595 untuk mengendalikan nyala
array led, dan input teks melalui Hyperterminal. Jika dotmatrix tidak menggunakan shift register,
maka led bisa menyala bersamaan satu kolom atau satu baris, berbeda dengan array button karena
button hanya tersambung jika ditekan, sedangkan led selalu tersambung.

Rangkaian di dalam dot matrix 5x7 untuk common anoda dan common catoda adalah sbb:

Simulasi dengan proteus:


Untuk program ini panjang karakter running text adalah 160, tapi tak masalah untuk berapapun
sampai maksimal kapasitas string karakter Bascom AVR, yang penting menambahkan jumlah array
pada variabel Text, karena maksimal karakter untuk setiap array adalah 40, kalau lebih dari 45 dot
matrix tidak akan berjalan.

Listing program dot matrix 5x7 dengan Bascom AVR:

'===============================================================
'DOTMATRIX 5x7 DISPLAY
'PROGRAMMER = WAHYU RAHMANIAR
'COMPANY = TECHNOLOGINATION
'===============================================================

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

Dim Char As Byte , C As Byte , Digit As Byte , L As Byte , I As Byte


, Temp(2) As Byte , Temp2 As Byte
Dim X As Word, Y As Integer
Dim Str_temp As String * 1 , Reeks(250) As Byte
Dim Str_text As String * 160 , Str_len As Byte , Col_len As Byte , R
As Byte
Dim Tempmsb As Byte , Templsb As Byte , Tempstr As String * 2
Dim Scroll_speed As Byte
Dim Text(4) As String * 40

Declare Sub Show_text


Declare Sub Set_volt
Declare Sub Set_text
Declare Sub Test_display
Declare Sub Read_volt
Declare Sub Read_temp

Config Portc = Output 'shift


register 74HC595
Config Portb = Output
'Dotmatrix 8x8

Goto Main

Sub Set_text
C = 1
For Digit = 1 To Str_len
Str_temp = Mid(str_text , Digit , 1)
Char = Asc(str_temp)
X = Char * 5
For I = 1 To 5
Reeks(c) = Lookup(x , Text_data)
X = X + 1
C = C + 1
Next I
Reeks(c) = 0
C = C + 1
Next Digit
End Sub Set_string

'show text
Sub Show_text
If Str_len > 4 Then

For L = 0 To Col_len
C = 1
For R = 1 To Scroll_speed
Set Portc.0
Toggle Portc.1
Toggle Portc.1
Toggle Portc.2
Toggle Portc.2
Char = C + L
Portb = Reeks(char)
Waitms 1
C = C + 1
Reset Portc.0
For X = 1 To 19
Toggle Portc.1
Toggle Portc.1
Toggle Portc.2
Toggle Portc.2
Char = C + L
Portb = Reeks(char)
Waitms 1
C = C + 1
Next X
C = 1
Next R
Next L

Else

For L = 0 To Col_len
C = 1
For R = 1 To Scroll_speed
Set Portc.0
Toggle Portc.1
Toggle Portc.1
Toggle Portc.2
Toggle Portc.2
Portb = Reeks(c)
Waitms 1
C = C + 1
Reset Portc.0
For X = 1 To 19
Toggle Portc.1
Toggle Portc.1
Toggle Portc.2
Toggle Portc.2
Portb = Reeks(c)
Waitms 1
C = C + 1
Next X
C = 1
Next R
Next L

End If

End Sub Show_text

Sub Test_display
Portb = 255
For X = 1 To 20
Set Portc.0
Toggle Portc.1
Toggle Portc.1
Toggle Portc.2
Toggle Portc.2
Next X
End Sub Test_display

'---------------------

Main:
Call Test_display
Waitms 100
Scroll_speed = 16
Call Set_text
Do
Input "Masukkan Text (max 50): " , Str_text
Text(1) = Mid(str_text , 1 , 40)
Text(2) = Mid(str_text , 41 , 40)
Text(3) = Mid(str_text , 81 , 40)
Text(4) = Mid(str_text , 121 , 40)

For Y = 1 To 4
Str_text = Text(y)
Str_len = Len(str_text)
Col_len = Str_len * 6
Call Set_text
Call Show_text
Next
Loop
End

Text_data:
Data 0 , 0 , 0 , 0 , 0 '
Data 0 , 0 , 0 , 0 , 0 '
Data 0 , 0 , 0 , 0 , 0 '
Data 0 , 0 , 0 , 0 , 0 '
Data 0 , 0 , 0 , 0 , 0 '
Data 0 , 0 , 0 , 0 , 0 '
Data 0 , 0 , 0 , 0 , 0 '
Data 0 , 0 , 0 , 0 , 0 '
Data 0 , 0 , 0 , 0 , 0 '
Data 0 , 0 , 0 , 0 , 0 '
Data 0 , 0 , 0 , 0 , 0 '
Data 0 , 0 , 0 , 0 , 0 '
Data 0 , 0 , 0 , 0 , 0 '
Data 0 , 0 , 0 , 0 , 0 '
Data 0 , 0 , 0 , 0 , 0 '
Data 0 , 0 , 0 , 0 , 0 '
Data 0 , 0 , 0 , 0 , 0 '
Data 0 , 0 , 0 , 0 , 0 '
Data 0 , 0 , 0 , 0 , 0 '
Data 0 , 0 , 0 , 0 , 0 '
Data 0 , 0 , 0 , 0 , 0 '
Data 0 , 0 , 0 , 0 , 0 '
Data 0 , 0 , 0 , 0 , 0 '
Data 0 , 0 , 0 , 0 , 0 '
Data 0 , 0 , 0 , 0 , 0 '
Data 0 , 0 , 0 , 0 , 0 '
Data 0 , 0 , 0 , 0 , 0 '
Data 0 , 0 , 0 , 0 , 0 '
Data 0 , 0 , 0 , 0 , 0 '
Data 0 , 0 , 0 , 0 , 0 '
Data 0 , 0 , 0 , 0 , 0 '
Data 0 , 0 , 0 , 0 , 0 '
Data 0 , 0 , 0 , 0 , 0 'space
Data 0 , 0 , 95 , 0 , 0 '!
Data 0 , 7 , 0 , 7 , 0 ''
Data 20 , 127 , 20 , 127 , 20 '#
Data 36 , 42 , 127 , 42 , 18 '$
Data 39 , 21 , 107 , 84 , 114 '%
Data 54 , 73 , 86 , 32 , 80 '&
Data 0 , 0 , 11 , 7 , 0 ''
Data 0 , 28 , 34 , 65 , 0 ' (
Data 0 , 65 , 34 , 28 , 0 ')
Data 42 , 28 , 127 , 28 , 42 '*
Data 8 , 8 , 62 , 8 , 8 '+
Data 0 , 88 , 56 , 0 , 0 ',
Data 8 , 8 , 8 , 8 , 8 '-
Data 0 , 96 , 96 , 0 , 0 '.
Data 32 , 16 , 8 , 4 , 2 '/
Data 62 , 81 , 73 , 69 , 62 '0
Data 0 , 66 , 127 , 64 , 0 '1
Data 114 , 73 , 73 , 73 , 70 '2
Data 34 , 65 , 73 , 73 , 54 '3
Data 24 , 20 , 18 , 127 , 16 '4
Data 39 , 69 , 69 , 69 , 57 '5
Data 60 , 74 , 73 , 73 , 48 '6
Data 1 , 113 , 9 , 5 , 3 '7
Data 54 , 73 , 73 , 73 , 54 '8
Data 6 , 73 , 73 , 41 , 30 '9
Data 0 , 54 , 54 , 0 , 0 ':
Data 0 , 91 , 59 , 0 , 0 ';
Data 8 , 20 , 34 , 65 , 0 '<
Data 20 , 20 , 20 , 20 , 20 '=
Data 0 , 65 , 34 , 20 , 8 '>
Data 2 , 1 , 81 , 9 , 6 '?
Data 50 , 73 , 121 , 65 , 62 '@
Data 124 , 18 , 17 , 18 , 124 'A
Data 65 , 127 , 73 , 73 , 62 'B
Data 62 , 65 , 65 , 65 , 34 'C
Data 65 , 127 , 65 , 65 , 62 'D
Data 127 , 73 , 73 , 65 , 65 'E
Data 127 , 9 , 9 , 1 , 1 'F
Data 62 , 65 , 73 , 73 , 58 'G
Data 127 , 8 , 8 , 8 , 127 'H
Data 0 , 65 , 127 , 65 , 0 'I
Data 32 , 64 , 65 , 63 , 1 'J
Data 127 , 8 , 20 , 34 , 65 'K
Data 127 , 64 , 64 , 64 , 64 'L
Data 127 , 2 , 12 , 2 , 127 'M
Data 127 , 2 , 4 , 8 , 127 'N
Data 62 , 65 , 65 , 65 , 62 'O
Data 127 , 9 , 9 , 9 , 6 'P
Data 62 , 65 , 65 , 33 , 94 'Q
Data 127 , 9 , 25 , 41 , 70 'R
Data 38 , 73 , 73 , 73 , 50 'S
Data 1 , 1 , 127 , 1 , 1 'T
Data 63 , 64 , 64 , 64 , 63 'U
Data 7 , 24 , 96 , 24 , 7 'V
Data 127 , 32 , 24 , 32 , 127 'W
Data 99 , 20 , 8 , 20 , 99 'X
Data 3 , 4 , 120 , 4 , 3 'Y
Data 97 , 81 , 73 , 69 , 67 'Z
Data 0 , 127 , 65 , 65 , 0 '[
Data 2 , 4 , 8 , 16 , 32 '\
Data 0 , 65 , 65 , 127 , 0 ']
Data 4 , 2 , 1 , 2 , 4 '^
Data 64 , 64 , 64 , 64 , 64 '_
Data 0 , 0 , 7 , 11 , 0 ''
Data 32 , 84 , 84 , 84 , 56 'a
Data 127 , 40 , 68 , 68 , 56 'b
Data 0 , 56 , 68 , 68 , 68 'c
Data 56 , 68 , 68 , 40 , 127 'd
Data 56 , 84 , 84 , 84 , 24 'e
Data 8 , 126 , 9 , 9 , 2 'f
Data 8 , 84 , 84 , 84 , 60 'g
Data 127 , 16 , 8 , 8 , 112 'h
Data 0 , 68 , 125 , 0 , 0 'i
Data 32 , 64 , 68 , 61 , 0 'j
Data 0 , 127 , 16 , 40 , 68 'k
Data 0 , 65 , 127 , 64 , 0 'l
Data 124 , 4 , 120 , 4 , 120 'm
Data 124 , 8 , 4 , 4 , 120 'n
Data 56 , 68 , 68 , 68 , 56 'o
Data 124 , 20 , 20 , 20 , 8 'p
Data 8 , 20 , 20 , 20 , 124 'q
Data 124 , 8 , 4 , 4 , 8 'r
Data 72 , 84 , 84 , 84 , 36 's
Data 0 , 4 , 63 , 68 , 68 't
Data 60 , 64 , 64 , 32 , 124 'u
Data 28 , 32 , 64 , 32 , 28 'v
Data 60 , 64 , 60 , 64 , 60 'w
Data 68 , 40 , 16 , 40 , 68 'x
Data 12 , 80 , 80 , 80 , 60 'y
Data 68 , 100 , 84 , 76 , 68 'z
Data 0 , 8 , 54 , 65 , 0 '{
Data 0 , 0 , 119 , 0 , 0 '|
Data 0 , 65 , 54 , 8 , 0 '}
Data 2 , 1 , 2 , 4 , 2 '~
Data 42 , 85 , 42 , 85 , 42 '
Membuat Peraga Sederhana Dengan LED Matriks

Jika Sobat sedang berjalan, entah itu di jalan raya, pusat perdagangan atau gedung bahkan pada
angkutan taksi, sering kita jumpai sebuah papan peraga yang menampilkan tulisan dan kebanyakan
berupa teks berjalan. Dari ukuran yang kecil sampai yang besar, seukuran papan reklame. Peraga
yang dimaksud tidak lain dan tidak bukan adalah bentuk dari sebuah LED matriks. Beberapa peraga
tersebut kadang ada juga memiliki beberapa warna sehingga mampu menampilkan karakter atau
gambar yang berwarna-warni.

Pada artikel ini, penulis tidak bermaksud membuat peraga LED Matriks yang rumit tapi sekedar
mencoba membuat peraga sederhana yang dapat menampilkan karakter. Setidaknya, kita bisa
menampilkan beragam karakter sesuai yang diinginkan.

Di pasaran, dapat dengan mudah kita peroleh beberapa jenis LED matriks dari ukuran yang kecil
hingga besar, dari satu warna dan biasanya merah sampai yang lebih dari satu warna. Ada yang
memiliki jumlah LED 5x7, 5x8 atau yang akan kita peragakan pada tulisan ini adalah LED matriks 8x8.
Berikut adalah sebuah contoh dari LED matriks 8x8.

Seperti kita kita ketahui, pena yang terdapat pada sebuah LED matriks adalah terdiri dari kolom dan
baris. Jadi pada sebuah papan LED matriks berukuran 8x8 berarti memiliki 8 kolom dan 8 baris
sehingga total terdiri dari 64 LED. Jika digambarkan dengan sebuah rangkaian maka sebuah LED
matriks 8x8 dapat dilihat berikut ini.
Beberapa buah blok LED matriks dapat kita gabungkan dengan cara berjejer baik menurut kolom,
baris atau kedua-duanya. Sebagai contoh 4 buah LED matriks 8x8 dapat kita perbesar ukurannya
dalam kolom dan baris menjadi 32x8, 16x16 atau 8x16.

Nah, melalui artikel ini, penulis akan sedikit narsis karena akan menampilkan nama sendiri dengan
pola seperti berikut ini:

Untuk dapat menampilkan tulisan di atas pada papan LED matriks setidaknya kita membutuhkan 7
buah LED matriks 8x8 sehingga mejadi 56x8. Jika dihitung dari gambaran di atas maka jumlah titik
kolomnya adalah 54 dot termasuk spasi antar karakter tentunya, sementara tinggi karakter adalah 8
dot.

Secara logika, untuk menampilkan tulisan di atas secara penuh maka dalam hitungan byte
disesuaikan menurut jumlah kolom atau 54 byte. Untuk menampilkan karakter S saja setidaknya
membutuhkan 5 byte, jika ditambah spasi antar huruf maka bisa menjadi 6. Dimulai dari kolom
pertama maka ke-5 byte data yang diperlukan adalah 01000110, 01001001, 01001001, 01001001
dan 00110001 atau dalam heksadesimal 56h, 59h, 59h, 59h dan 31h. Sementara karakter i terdiri
dari 00000100 dan 01111101 atau 04h dan 7dh. Dan seterusnya untuk masing-masing karakter.

Catatan:
Kadang pada keadaan tertentu, lebar kolom dari semua karakter ada yang disama ratakan yaitu 5
kolom tanpa kecuali. Tetapi tidak sedikit yang menampilkan karakter secara proporsional, termasuk
tulisan di atas dibuat secara proporsional.

Penulis tidak akan menggunakan 7 buah LED matriks 8x8, pada artikel ini hanya akan menggunakan 4
buah saja yang dibentuk menjadi 32x8. Dengan demikian, tulisan tersebut di atas tidak dapat
ditampilkan keseluruhan secara bersamaan. Agar dapat dibaca maka tulisan di atas akan dibuat
berjalan dengan menggesernya ke kiri. Sebagai mikrokontrolernya akan digunakan AT89C51 yang
memiliki 4 gerbang masing-masing 8 bit.

Penulis akan membagi ke-4 matriks menjadi 2 bagian dengan masing-masing terdiri dari 16 kolom
untuk keperluan scanning. Dari sini maka setidaknya akan memerlukan 2 buah gerbang untuk
menampilkan data yang digeser.

Sebelum semakin jauh, mari kita lihat gambar rangkaiannya terlebih dahulu seperti tertuang di
bawah ini.

Pada gambar, gerbang-gerbang dari mikrokontroler AT89C51 dikonfigurasikan dengan P 0 dan P2


digunakan untuk menggerakkan setiap katoda LED matriks. Gerbang P 1 dan P3 akan digunakan untuk
proses scanning kolom dan masing-masing pinnya dihubungkan ke penggerak transistor. Penulis
menggunakan transistor PNP C9012 yang mudah didapat di pasaran.

Sekarang kita tengok aplikasi pada mikrokontrolernya. Pada awal penulisan program, pertama
ditetapkan konfigurasi meliputi gerbang yang akan digunakan untuk menampilkan data kolom yaitu
P0 dan P2 dengan LEDGrup1 dan LEDGrup2. Konfigurasi juga menetapkan penampung untuk tampilan
yang terbagi menjadi 2 bagian yaitu BuffData1 dan BuffData2 yang masing-masing menempati
alamat RAM 10H dan 20H dengan masing-masing sebanyak 16 byte.
$mod51

LEDGrup1 data p0
LEDGrup2 data p2

BuffData1 data 10h


BuffData2 data 20h
RegSTack data 30h

org 0

Pertama aplikasi dijalankan adalah menetapkan batas akhir dari data tulisan yang akan ditampilkan.
Karena kita juga akan menampilkan layar kosong maka karakter tulisan yang berjumlah 56 byte perlu
ditambahkan dengan 32 byte data blank. Kemudian kita mulai membaca data tampilan
menggunakan register DPTR.

App_Mulai:
mov sp, #RegStack-1
mov r2, #56+32
mov dptr, #Tulisan

Selanjutnya kita akan memindahkan data karakter pada lokasi Tulisan ke penampung BuffData1.
Total karakter yang akan dipindahkan adalah 32 byte. Jika register DPTR berisi lokasi Tulisan. Jika
diperhatikan pada bagian terakhir aplikasi maka ke-32 byte pertama adalah data blank di mana nilai
informasi adalah 0. Pada program berikut dapat dilihat saat proses pemindahan data, isi register
DPTR diamankan dengan perintah PUSH dan POP sehingga tidak mengubah nilainya.

Tampilan:
push dph
push dpl
mov r0, #BuffData1
mov r3, #32
djnz r2, IsiBuffer
ajmp App_Mulai

IsiBuffer:
clr a
movc a, @a+dptr
inc dptr
mov @r0, a
inc r0
djnz r3, IsiBuffer
pop dpl
pop dph
inc dptr
mov r4, #64

Setelah proses pemindahan data selesai dan nilai DPTR juga ditambahkan untuk tujuan penggeseran
penampilan nantinya maka selanjutnya kita akan menampilkan isi penampung ke peraga LED matriks
seperti berikut ini. Proses scan yang dilakukan adalah untuk menampilkan secara geser dari data
sebanyak 16 byte dari penampung menggunakan gerbang P 1 dan P3.

Peragaan:
mov r0, #BuffData1
mov r1, #BuffData2
acall BacaData
mov p1, #11111110b
acall BacaData
mov p1, #11111101b
acall BacaData
mov p1, #11111011b
acall BacaData
mov p1, #11110111b
acall BacaData
mov p1, #11101111b
acall BacaData
mov p1, #11011111b
acall BacaData
mov p1, #10111111b
acall BacaData
mov p1, #01111111b
acall BacaData
mov p3, #11111110b
acall BacaData
mov p3, #11111101b
acall BacaData
mov p3, #11111011b
acall BacaData
mov p3, #11110111b
acall BacaData
mov p3, #11101111b
acall BacaData
mov p3, #11011111b
acall BacaData
mov p3, #10111111b
acall BacaData
mov p3, #01111111b
djnz r4, Peragaan
ajmp Tampilan

Proses menampilkan isi penampung ke LED matriks di atas, diakhiri dengan memeriksa isi register R 4
yang digunakan untuk mengatur kecepatan pergeseran tampilan karakter. Sobat bisa mengubah nilai
tersebut sesuai kecepatan yang diinginkan.

Berikut adalah subrutin yang diperlukan untuk menetapkan data kolom dari penampung selama
proses scanning. Lama dari data yang ditampilkan adalah sesuai penundaan dengan register R 7
sekitar 550 us. Dengan total pergeseran 16 bit maka setidaknya total waktu kedipan dari masing-
masing LED adalah sekitar 9 ms atau 111 Hertz. Dari nilai tersebut maka dapat diperkirakan secara
kasar bahwa kecepatan pergeseran adalah 0,6 detik perbit.

BacaData:
mov r7, #255
djnz r7, $
mov p1, #255
mov p3, #255
mov a, @r0
inc r0
mov LedGrup1, a
mov a, @r1
inc r1
mov LedGrup2, a
ret

Pada bagian akhir dari aplikasi adalah data karakter yang ditampilkan. Data dimulai dengan karakter
kosong bernilai nol sebanyak 32 byte sesuai lebar penampil LED matriks yang digunakan. Data
sesungguhnya dimulai pada baris ke-3 yang menampilkan tulisan nama penulis sebanyak 54 byte
ditambah 2 byte kosong. Barisan data akhirnya ditutupkan dengan karakter kosong sebanyak 32 byte
juga.

Tulisan:
db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0

Karakter nama penulis dimulai di sini.

db 01000110b, 01001001b, 01001001b, 01001001b, 00110001b, 0


db 00000100b, 01111101b, 0
db 10011000b, 10100100b, 10100100b, 10100100b, 01111100b, 0
db 00000100b, 01111101b, 0
db 00001000b, 00111110b, 01001000b, 01000000b, 0, 0, 0, 0
db 00111111b, 01000000b, 00111000b, 01000000b, 00111111b, 0
db 00000100b, 01111101b, 0
db 00110000b, 01001000b, 01001000b, 01111111b, 0
db 00111000b, 01000100b, 01000100b, 00111000b, 0
db 00110000b, 01001000b, 01001000b, 01111111b, 0
db 00111000b, 01000100b, 01000100b, 00111000b, 0, 0

Dan berakhir di sini setelah 56 byte.

db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0

end

Sobat bisa mengganti karakter tulisan di atas. Namun untuk aplikasi di atas maka maksimal jumlah
byte datanya tidak boleh melebihi 224 byte karena nilai register R 2 maksimal 255 dikurangi dengan
32.

Nah, penampil LED matriks sederhana kita sudah selesai. Dari dasar rangkaian dan aplikasi di atas
dapat dikembangkan untuk jumlah penampil yang lebih panjang, tetapi tentu harus mengubah
gerbangnya dan tentu memerlukan tambahan komponen. Jika ada kesempatan akan penulis
sampaikan yang lebih besar lagi.

Sudah ya, terima kasih sudah membaca artikel ini. Semoga apa yang penulis sampaikan bermanfaat
dan bisa diterapkan oleh sobat semua.

Salam....
Sekarang LCD lebih dipilih daripada dot matriks, seven-segment LED
atau Multisegment LED untuk tampilan, disebabkan oleh selain harganya
murah, LCD sudah mampu menampilkan huruf, angka bahkan grafik
sekalipun serta dalam memprogramnya lebih mudah.

Berikut tabel deskripsi pin pada LCD :


Pin Simbol I/O Deskripsi
1 VSS -- Ground
2 VCC -- + 5 V power suplay
3 VEE -- Power suplay source to control contrast
4 RS I Register select: RS = 0 to select instruksi.
Command register; RS =1 to selsct data reg.
5 R/W I Read/Write: R/W =0 for write, R/W= 1 for
read
6 E I Enable
7 DB0 I/O The 8-bit data bus
8 DB1 I/O The 8-bit data bus
9 DB2 I/O The 8-bit data bus
10 DB3 I/O The 8-bit data bus
11 DB4 I/O The 8-bit data bus
12 DB5 I/O The 8-bit data bus
13 DB6 I/O The 8-bit data bus
14 DB7 I/O The 8-bit data bus

Sekarang kita akan membuat Program Menampilkan kata Pengenalan


Pemograman ATMEGA32 Dengan BASCOM-AVR dimana kata kata
tersebut tampil satu persatu pada LCD dengan delay 1 detik dan
kemudian digeser kesebelah kiri sebanyak 40 kali dan kemudian disusul
dengan tampilnya kata BY Meri Wardana berikut programnya :

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

Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 ,
E = Portc.2 , Rs = Portc.0

Config Lcd = 20 * 4
Dim X As Byte

Do
Cls
Locate 1 , 1
Lcd "Pengenalan"
Waitms 100
Locate 2 , 1
Lcd "Pemograman"
Waitms 100
Locate 3 , 1
Lcd "ATMEGA8535"
Waitms 100
Locate 4 , 1
Lcd "Dengan BASCOM-AVR"
Waitms 100
For X = 1 To 40
Shiftlcd Left
Waitms 50
Next
Cls
Locate 1 , 1
Lcd "BY"
Locate 2 , 1
Lcd "Meri"
Locate 3, 1
Lcd "Wardana"
Waitms 100
Loop

Pembahasan Program :

$regfile = "m32def.dat" library yang menyatakan bahwa mikrokontroller


yang kita pakai adalah atmega32,
$crystal = 8000000 meyatakan bahwa clock oscillator yang kita pakai
sebesar 8Mhz,
Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7
= Portc.7 , E = Portc.2 , Rs = Portc.0 inisialisasi pin-pin pada LCD
sendiri,
Config Lcd = 20 * 4 LCD yang kita pakai adalah LCD berukuran 20*4,
Dim X As Byte = pendeklarasian bahwa variable X adalah tipe byte
dimana rangenya adalah 0-255,
Do-loop = perintah perulangan,
Cls = LCD dibersihkan terlebih dahulu
Locate 1 , 1 = menyatakan huruf atau angka yang akan ditampilkan
pertama kali akan keluar pada kolom 1 baris 1,
Lcd "Pengenalan" = kata yang akan ditampilkan pada LCD adalah
pengenalan
Waitms 100 = delay waktu 100 milisecond
Begitu seterusnya hingga For X = 1 To 40-Next = yang menyatakan
perulangan 40 kali,
Shiftlcd Left = menggeser kata-kata yang kita tampilkan tadi ke kiri
Waitms 50 = delay waktu 50 milisecond
Selamat mencoba!

Anda mungkin juga menyukai