Home » » JAM DIGITAL

JAM DIGITAL

Posted by Belajar elektro on Saturday 12 November 2011

JAM DIGITAL

1. Penampil LCD Matriks.
Aplikasi berikut ini adalah antar muka AT89C51 dengan LCD Matriks 2x16. Potensio 10K yang tampak pada gambar I.1.1. berfungsi untuk mengatur tegangan pada kaki VLCD. Besarnya tegangan pada kaki tersebut akan mempengaruhi ketajaman karakter yang tampak pada LCD.


Antarmuka ini menggunakan mode antarmuka 4 bit. Mode ini selain lebih menghemat I/O juga mempermudah proses pembuatan PCB yang lebih ringkas.
Listing I.1.2. berfungsi untuk menampilkan pesan yang tersimpan di alamat yang ditunjuk oleh label PesanLCD, yaitu ‘AT89C51’, LCD Matriks ini mempunyai sistem Bus intel padahal jalur bus LCD ini hendak dihubungkan ke jalur bus development system yang juga berhubungan dengan komponen – komponen yang lain yang memakai sistem bus intel. Berikut beberapa hal yang perlu diperhatikan :
§ LCD selalu berada pada kondisi tulis (write) dengan menghubungkan kaki R/W ke ground. Hal ini dimaksudkan agar, LCD tersebut tidak pernah mengeluarkan data (kondisi baca) yang mana data tersebut akan bertabrakan dengan data komponen – komponen lain di jalur bus.
§ Akses ke LCD dilakukan dengan menggunakan mode bus walaupun LCD terhubung ke jalur bus. Hal ini disebabkan adanya perbedaan antara timing dari bus Motorola dan timing dari bus intel.
§ Akses pada Port 0 maupun Port 2 dengan menggunakan mode I/O biasa pada sebuah development system akan menimbulkan tabrakan data antara port – port tersebut dengan memory eksternal. Pembacaan program di memory eksternal dilakukan dengan menggunakan port 0 dan port 2. Dengan demikian, jika terjadi perubahan kondisi pada port – port itu program yang ada sedang dibaca pada memory eksternal kan kehilangan arah. Untuk mengatasi hak itu, subroutine –subroutine yang mengakses I/O ini diletakkan didalam FlashPEROM AT89C51. Misalkan pada listing I.1.2., subroutine-subroutine tersebut disimpan pada alamat 276H, 280H, dan 295H dan dipanggil dari memory eksternal menggunakan instruksi LCALL.
;Listing I.1.2.;
$MOD51
ROM EQU 2000H
Kirim_Data_LCD EQU 280H
Kirim_Perintah EQU 0276H
Kirim_Karakter EQU 0295H
Org ROM ;reset vector
Ajmp Start
Org ROM+2H ;eksternal interupt 0 vector
Reti
Org ROM+0BH ;timer 0 interrupt vector
Reti
Org ROM+13H ;eksternal interrupt 1 vector
Reti
Org ROM+1BH ;timer 1 interrupt vector
Reti
Org ROM+23H ;serial interrupt vector
Reti
Start:
Acall Init_LCD
Mov DPTR,#PesanLCD
Acall KirimPesan_LCD
Berhenti:
Ajmp Berhenti
Init_LCD:
Mov A,#30H ;kirim 30H
Lcall Kirim_Perintah
Acall Delay_LCD
Mov A,#30H ;kirim 30H
Lcall Kirim_Perintah
Lcall Delay_LCD
Mov A,#30H ;kirim 30H
Lcall Kirim_Perintah
Lcall Delay_LCD
Mov A,#20H ;set mode 4 bit interface
Lcall Kirim_Perintah
Lcall Delay_LCD
Mov A,#28H ;8x5 2lines
Lcall Kirim_Perintah
Lcall Delay_LCD
Mov A,#08H
Lcall Kirim_Perintah
Lcall Delay_LCD
Mov A,#01H
Lcall Kirim_Perintah
Lcall Delay_LCD
Mov A,#0EH ;display on
Lcall Kirim_Perintah
Lcall Delay_LCD
Mov A,#06H ;mode increment addres
Lcall Kirim_Perintah
Lcall Delay_LCD
Ret
KirimPesan_LCD:
LoopKirimPesan_LCD:
Mov A,#00H ;ambil data dari memory yang ditunjuk
Movc A,@A+DPtr
Cjne A,#0FH,Kirim_LCD ;kirim ke LCD selama belum
Ret ; ditemukan 0FH
Kirim_LCD:
Lcall Kirim_Karakter
Inc Dptr ;tunjuk ke memory selanjutnya
Ajmp LoopKirimPesan_LCD
Delay_LCD:
Push B
Mov B,#06H
Delay_LCD_Loop:
Push B
Acall Delay_LCD2
Pop B
Djnz B,Delay_LCD_Loop
Pop B
Ret
Delay_LCD2:
Mov B,#0FFH
Loop2_DelayLCD:
Djnz B,Loop2_DelayLCD
Ret
PesanLCD:
DB 'AT89C51',0FH
END
Alur program pada listing di atas diawali dengan inisialisasiLCD yaitu dengan mengirimkan data inisialisasi ke register perintah. Setiap jenis LCD mempunyai data inisialisasi tersendiri. Hal ini dapat dilihat pada datasheet pada masing-masing LCD dan proses pengambilan data dari lokssi tersebut dilakukan. Data yang diambil dikirimkan ke register data LCD dengan subroutine Kirim_Karakter hingga ditemukan data 0FH sebagai akhiran data dan program berhenti di label berhenti.
Listing I.1.3. adalah subroutine-subroutine yang sudah harus disediakan di FlashPEROM AT89C51 dari development System.
;Listing I.1.3.
Kirim_Perintah:
Mov P2,#00H ;mode interface 4 bit, kirim data
Lcall Kirim_DataLCD ;4 bit sebanyak 2x
Lcall Kirim_DataLCD
Acall Delay_LCD ;delay LCD
Ret
Kirim_Karakter:
Mov P2,#02H ;mode interface 4bit,kirim data
Lcall Kirim_DataLCD ;ke LCD 2x
Lcall Kirim_DataLCD
Acall Delay_LCD` ;delay LCD
Kirim_DataLCD:
Swap A ;tukar highnibble dan low nibble
Mov P0,A ;kirim ke Port 0
Nop
Acall PulseE_Clock
Ret
PulseE_Clock:
Push ACC
Mov A,#0A0H
Orl A,P2
Mov P2,A
Anl A,#0FH
Mov P2,A
Pop ACC
Ret
END
2. Jam Digital Menggunakan Real Time Clock.

Aplikasi berikut ini adalah antarmuka dengan sebuah IC DS1287 yang merupakan rangakaian jam dan kalender dalam sebuah IC lengkap dengan battery backup-nya, bahkan rangkaian jam dalam IC tersebut dapat tetap bekerja walaupun power supply sudah dimatikan.
Untuk melakukan pengaturan ataupun pembacaan waktu, mikrokontroler hanya perlu menulis ataupun membaca ke register-register yang ada pada IC RTC ini. Kaki CS dari DS187 pada gambar I.2.1. terhubung dengan CS3 sehingga RTC ini menempati lokasi di alamat 600x dari development system. X merupakan register RTC yang akan diakses.
Seperti halnya dengan mengakses memory eksternal, akses ke RTC ini dilakukan dengan melakukan penulisan atau pembacaan lokasi tersebut dengan menggunakan instruksi MOVX.
Listing I.2.2. berfungsi untuk mengambil data jam yang ada pada register-register DS1287 dan menampilkannya pada LCD.
;Listing I.2.2.
$MOD51
alamat_rtc equ 600h
reg_a equ 0ah
reg_b equ 0bh
reg_c equ 0ch
reg_d equ 0dh
detik equ 00h
detik_alarm equ 01h
menit equ 02h
menit_alarm equ 03h
jam equ 04h
jam_alarm equ 05h
tanggal equ 07h
bulan equ 08h
tahun equ 09h
org 2000h ;reset vector
ajmp start
org 2003h ;eksternal interrupt 0 vector
reti
org 200bh ;timer 0 interrupt vector
reti
org 2013h ;eksternal interrupt 1 vector
reti
org 201bh ;timer 1 interrupt vector
reti
org 2023h ;serial interupt vector
start:
Lcall Init_LCD
mov dptr,#alamat_rtc+rega ;aktifkan oscillator
mov a,#20h
movx @dptr,a
inc dptr ;update interrup taktif,
;mode 24 jam
mov a,#12h ;output bcd data
movx @dptr,a
loop:
mov dptr,#alamat_rtc+regc ;periksa flag IRQ
movx a,@dptr
anl a,#080h
jnb ACC7,loop ;tidak ada flag,loop
clr ACC7 ;ada flag,clear flag
movx @dptr,a
mov dptr,alamat_rtc
Lcall display_waktu
ajmp loop
display_waktu:
acall posisiawalLCD
Lcall ambil_jam
Lcall kirimASCII_LCD
mov a,#':'
Lcall kirim_karakter
Lcall ambil_menit
Lcall kirimASCII_LCD
mov a,#':'
Lcall kirim_karakter
Lcall ambil_detik
Lcall kirimASCII_LCD
ret
posisiawalLCD:
mov a,#20h
Lcall kirim_perintah
acall delay_LCD
ret
ambil_jam:
mov dpl,#jam
mov a,#00h
movc a,@a+dptr
ret
ambil_detik:
mov dpl,#detik
mov a,#00h
movc a,@a+dptr
ret
ambil_menit:
mov dpl,#menit
mov a,#00h
movc a,@a+dptr
ret
kirimASCII_LCD:
Lcall HexASCII2
Lcall kirim_karakter
mov a,b
Lcall kirim_karakter
ret
delay_LCD:
push b
mov b,#06h
delay_LCD_loop:
push b
acall delay_LCD2
Pop b
djnz b,delay_LCD_loop
Pop b
ret
delay_LCD2:
mov b,#0ffh
tunggudelay:
djnz b,tunggudelay
ret
END


Skematik Rangkaian Jam Digital Dengan Menggunakan AT89C51 dan Real Time Clock (RTC)


0 comments:

Post a Comment

Total Pageviews

AdF.ly

var popunder = true;

SYSTEM MONITORING INTERFACE

SYSTEM MONITORING INTERFACE
DISPAY CONTROLLER

Recent Comments

Introduction

Recent Posts

Blogger Tricks

RSSMicro FeedRankĀ® Results

IKLAN

Recent Post

page range

Poll

Powered by Blogger.

Followers

Blog Archive

Visual Pagerank
.comment-content a {display: none;}