Sabtu, 04 Februari 2012

Pengujian LCD karakter 2X16 dengan Program Sederhana menggunakan Bahasa Program Assembly



Ngomong-ngomongin mikro jadi inget masa lalu nih saya. Pertama kali saya mencoba LCD 2x16 dengan program Assembly. Langsung aja deh tanpa basa basi yg terlalu panjaaaaang....panjang kaya punya saya yg banyak di sukai bidadari didunia...hehehe..(celana panjang maksudnya)..hehehe. Saya punya contoh program sederhananya nih untuk ngetes LCD berjalan dengan baik atau tidak....mudah-mudahan bermanfaat ye...??

Pengujian LCD karakter 2x16 dengan cara pembuatan perangkat lunak terlebih dahulu untuk Menampilkan Data ke LCD Karakter 2x16. Hal ini dijalankan dengan mengirimkan inisialisasi dan mengkonfigurasikan sejumlah instruksi ke LCD. Antara lain: pengaturan lebar data interface 8 bit atau 4 bit data bus, pemilihan ukuran font karakter 5x8 atau 5x11 dan lain-lain, dengan instruksi sebagai berikut.

Init_lcd:
                mov r1,#00000001b           ;Display clear
                call write_inst ;
                mov r1,#00111000b           ;Function set,
                                                                ;Data 8 bit,2 line font 5x8
                call write_inst ;
                mov r1,#00001100b           ;Display on,
                                                             ;cursor off,cursor blink off
                call write_inst
                mov r1,#00000111b           ;Entry mode, Set increment
                call write_inst
                 ret
           ;
Pada pembuatan perangkat lunak ini akan menuliskan kalimat ”GUNAWAN AMSARI ELEKTRO” yang akan ditampilkan pada layar LCD Karakter dengan menggunakan look up table dan dilakukan proses geser ke kiri atau kekanan sesuai dengan keinginan kita hanya merubah sedikit programnya aja c...dibagian : mov        R1,#geserL ;R1 = GeserLeft.

contoh hasilnya seperti ini :



Untuk melakukan pembuatan perangkat lunak ini harus melakukan beberapa langkah sebagai berikut:
1.       Pasang jumper LCD_EN, yang berfungsi untuk memberikan power supply +5V
2.       Hubungkan modul Mikrokontroler Trainer dengan power supply +5V.
3.      Hubungkan modul Mikrokontroler Trainer dengan rangkaian programmer
4.      Buka Program MCS-51, sebagai editor dan compiler program
5.      Ketik program berikut ini:

$mod52
;
;
DataLCD               equ         30h
geserL                   equ         00011011b ; 0 0 0 1 S/C R/L X X
geserR                   equ         00011111b ; 0 0 0 1 S/C R/L X X
;
org          0h
ljmp        startprogram
;;;;;;;;;;;;;;;;;;;;;;SUBROUTINES;;;;;;;;;;;;;;;;;;;;;;;;;;;
startprogram:      
                                call          init_LCD
                                call          write_char
                                call          geser
                                sjmp       startprogram
                                ret

geser:
                               mov        R6,#34         ;R6 = 34; geser sebanyak 34 karakter
lagi:                        mov        R1,#geserL ;R1 = GeserLeft
                               call          write_inst
                               call          delay
                               djnz        R6,lagi       ;R6=R6-1, jika R6 ? 0 maka lompat ke lagi
                ;
write_char:
                mov        dptr,#word1 ;DPTR = [ address word1 ]
                mov        r3,#35            ;R3=40,number character to be display
                mov        r1,#80h          ;R1=80h,address DDRAM start position
                call          write_inst

           ;
write1:clr               a ; A = 0
           movc           a,@a+dptr  ; A = [A+ DPTR]
           mov             r1,A             ; R1 = A
           inc                dptr             ; DPTR = DPTR +1
           call               write_data  ;
           djnz             r3,write1       ; R3 = R3-1,
           ret
           ;
Init_lcd:
                Mov       r1,#00000001b    ;Display clear
                call          write_inst           ;
                mov        r1,#00111000b    ;Function set,
                                                             ;Data 8 bit,2 line font 5x8
                Call         write_inst ;
                mov        r1,#00001100b    ;Display on,
                                                              ;cursor off,cursor blink off
                Call         write_inst
                Mov       r1,#00000111b    ;Entry mode, Set increment
                Call         write_inst
           ret
           ;
Write_inst:
           Clr                P3.6                 ; RS = P3.6= 0, write mode instruction
           Mov            P0,R1               ; D7 s/d D0 = P0 = R1
           Setb             P3.7                 ; EN = 1 = P3.7
           Call              delay               ; call delay time
           Clr                P3.7                 ; EN = 0 = P3.7
           ret
           ;
Write_data:
           Setb             P3.6                 ; RS = P3.6 = 1, write mode data
           Mov            P0,R1               ; D7 s/d D0 = P0 = R1
           Setb             P3.7                 ; EN = 1 = P3.7
           Call              delay               ; call delay time
           Clr                P3.7                 ; EN = 0 = P3.7
           ret
;
word1:   DB 'GUNAWAN AMSARI ELEKTRO'               
;
Delay:                    push       06h
                               push       07h
                               mov        r6,#080h
LDel:                      mov        r7,#0ffh
                               djnz         r7,$
                               djnz         r6,LDel
                               pop         07h
                               pop         06h
                               ret
                               end

Kalau mau coba silahkan tinggal copy aja. Kalau mau merubah tulisan tinggal edit bagian yang bertulisan GUNAWAN AMSARI ELEKTRO nya.

Semoga Bermanfaat...

2 komentar:

Usman mengatakan...

IC dan compiler yang digunakan apa ya mas...??

GuN mengatakan...

pake IC AT89s52 n comp software Asm51 gan...