Blogroll

TIMER



[Back to Home]







DAFTAR ISI
1. Tujuan
2. Alat dan Bahan
3. Dasar Teori
4. Rangkaian
5. Flowchart
6. Program
7.    Video
8. Unduh

TIMER


1. Tujuan [kembali]
Mempelajari bagaimana cara merangkai suatu rangkaian yang menggunakan mikrokontroler dan dihubungkan dengan Dotmatrix dengan programnya.


2. Alat dan Bahan [kembali]
  1. PIC 16F887
  2. Button
  3. Crystal
  4. Seven Segment
  5. Resistor
  6. Switch
  7. Jumper
  8. Kapasitor
  9. dll.
3. Dasar Teori [kembali]
3.1. Pengertian Mikrokontroler PIC 16F887
PIC yang merupakan produk dari Microchip Technology, merupakan kepanjangan dari Peripheral Interface Controller memiliki arsitektur Harvard dan merupakan jenis RISC (Reduced Instruction Set Computing). Salah satu jenis mikrokontroler ini adalah PIC16F887.
3.1.1 Fitur-Fitur PIC16F887.
a. Memiliki Instruksi sebanyak 35 buah.
b. Masing-masing instruksi dieksekusi dalam satu siklus mesin kecuali untuk instruksi percabangan yaitu dua siklus.
c. Kecepatan operasi masukan clock dari DC hingga 20MHz.
d. Kapasitas memori program berukuran 8k x 14 words.
e. Kapasitas RAM 268 byte.
f. Kapasitas memory EEPROM berukuran 256 byte.
3.1.2 Pin Out PIC16F887.






-Memiliki 5 PORT I/O (PORTA 6 pin, PORTB 8 pin, PORTC 8 pin, PORTD 8 pin, PORTE 3 pin).
-Memiliki 3 buat timer
-Memiliki 2 buah keluaran PWM.
-Komunikasi serial singkron menggunakan SPI dan I2C.
-Komunikasi USART.
3.1.3 Pemograman PIC16F887
Pemograman PIC ini diprogram menggunakan bahasa C dan dapat menggunakan kompiler MikroC for PIC yang dapat didownload di situs resminya. 




3.1.4 Rangkaian Dasar Sistem Mikrokontroler PIC16F887.


Di gambar dapat dilihat bahwa rangkaian dasar dari sistim mikrokontroler biasanya menggunakan rangkaian crystal sebagai clock atau oscilator ecternal sehingga dapat menambah kecepatan eksekusi dari mikrokontroler tersebut. Pada gambar juga terdapat rangkaian reset yang digunakan untuk memulai dari awal kembali program yang kita jalankan pada mikrokontroler ini.



Aplikasi

Komputer & Periferal Komputer, Industri, Otomotif

Peringatan

Perangkat sensitif ESD, lakukan tindakan pencegahan yang tepat saat menangani perangkat.

2.       Kapasitor
                Kapasitor adalah suatu komponen elektronika yang berfungsi untuk menyimpan arus listrik sementara  dalam bentuk muatan, selain itu kapasitor juga dapat digunakan sebagai penyaring frekuensi.
                Kapasitas untuk menyimpan kemampuan kapasitor dalam muatan listrik disebut Farad (F) sedangkan simbol dari kapasitor adalah C (kapasitor). 
                sebuah kapasitor pada dasarnya terbuat dari dua buah lempengan logam yang saling sejajar satu sama lain dan diantara kedua logam tersebut terdapat bahan isolator yang sering disebut dielektrik.

3.       Crystal
                Kristal digunakan pada rangkaian elektronika yang berhubungan dengan pembangkitan frekuensi baik itu frekuensi  tinggi, frekuensi suara, maupun frekuensi rendah.


4.       button
Push Button adalah saklar tekan yang berfungsi sebagai pemutus atau penyambung arus listrik dari sumber arus ke beban listrik. Suatu sistem saklar tekan push button terdiri dari saklar tekan start, stop reset dan saklar tekan untuk emergency.

Pada rangkaian ini kami mengunakan timer TMR0 pada PIC. adapun fitur-fitur Timer0 ini adalah; 

1. Memiliki Lebar data sebesar 8bit.
2. Dapat digunakan sebagai counter
3. Bersifat dibaca dan ditulis.
4. Dapat menggunakan clock internal maupun eksternal.
5. Interupsi terjadi ketika terjadi overflow dari FFh ke 00h.

Untuk Mengakses timer0, maka harus melibatkan register lainnya yaitu Register OPTION_REG 9 bit 0 hingga bit 5) dengan kegunaan masing masing dapat dilihat pada tabel dibawah ini.



Kombinasi bit pengaturan Nilai Prescalar dapat dilihat pada tabel berikut,
Setelah reset, register OPTION_REG akan berisi FFH. Register lain yang berhubungan dengan TIMER0 adalah register INTCON yaitu untuk pengaturan interupsi.
Adapun fungsi masing-masing bit pada register ini adalah,




4. Rangkaian [kembali]



5. Flowchart  
[kembali]




6. Program [kembali]




// LCD module connections
sbit LCD_RS at RB4_bit;
sbit LCD_EN at RB5_bit;
sbit LCD_D4 at RB0_bit;
sbit LCD_D5 at RB1_bit;
sbit LCD_D6 at RB2_bit;
sbit LCD_D7 at RB3_bit;

sbit LCD_RS_Direction at TRISB4_bit;
sbit LCD_EN_Direction at TRISB5_bit;
sbit LCD_D4_Direction at TRISB0_bit;
sbit LCD_D5_Direction at TRISB1_bit;
sbit LCD_D6_Direction at TRISB2_bit;
sbit LCD_D7_Direction at TRISB3_bit;
// End LCD module connections

char a=0, jam=0, menit=0, detik=0;         // deklarasi dan isi variabel
char detikpul, detiksat, menitpul, menitsat, jampul, jamsat;     // deklarasi variabel
void PrintToDisplay(){                     // fungsi mencetak ke layar

jampul=jam/10;                             // mendapatkan nilai puluhan jam
jamsat=jam%10;                             // mendapatkan nilai satuan jam
menitpul=menit/10;                         // mendapatkan nilai puluhan menit
menitsat=menit%10;                         // mendapatkan nilai satuan menit
detikpul=detik/10;                         // mendapatkan nilai puluhan detik
detiksat=detik%10;                         // mendapatkan nilai satuan menit
Lcd_out(1,1,"Waktu: : : ");                // cetak ke layar
Lcd_Chr(1,7,jampul+48);                    // cetak nilai puluhan jam ke LCD
Lcd_Chr_Cp(jamsat+48);                     // cetak nilai satuan jam ke LCD
Lcd_Chr_Cp(':');                           // cetak ke LCD
Lcd_Chr_Cp(menitpul+48);                   // cetak nilai puluhan menit ke LCD
Lcd_Chr_Cp(menitsat+48);                   // cetak nilai satuan menit ke LCD
Lcd_Chr_Cp(':');                           // cetak ke LCD
Lcd_Chr_Cp(detikpul+48);                   // cetak nilai puluhan detik ke LCD
Lcd_Chr_Cp(detiksat+48);                   // cetak nilai satuan detik ke LCD
delay_ms(10);                              // delay 10 ms
}

void interrupt(){                             // aktifkan interrupt
if(a<125){                                    // jika a<125, maka
a++;INTCON=0xa0;TMR0=131;}                    //  tambah a, aktifkan TMR0, isi TMR0
else{                                         // jika tidak, maka
a=0;                                          // a diisi 0
if(detik<59){                                 // jika detik<59, maka
detik++;INTCON=0xa0;TMR0=131;}                // detik+1, aktifkan TMR0, isi TMR0

else {detik=0;                                // jika detik = 0, maka
if(menit<59)                                  // jika menit<59, maka
{menit++; INTCON=0xa0; TMR0=131;}             // menit+1, aktifkan TMR0, isi TMR0
else{menit=0;                                 // jika jika tidak,menit=0

if (jam<11){                                  // jika jam<59, maka
jam++; INTCON=0xa0; TMR0=131;}                // jam+1, aktifkan TMR0, isi TMR0

else{                                         // jika tidak
jam=0; INTCON=0xa0; TMR0=131;}                // jam=0 , aktifkan TMR0, isi TMR0
}
}
}
}

void main(){
Lcd_init();                                   // Inisialisasi LCD
Lcd_Cmd(_LCD_CLEAR);                          // bersihkan layar LCD
Lcd_Cmd(_LCD_CURSOR_OFF);                     // matikan cursor LCD
TRISB=0x00;                                   // PORTB sebagai output
OPTION_REG=0x86;                              // Input clock internal 8Mhz, Prescalar 1:128
TMR0=131;                                     // isi nilai TMR0
INTCON=0xa0;                                  // aktifkan TMR0;
do{
PrintToDisplay();                             // panggil fungsi
}
while(1);                                     // loop

}
7. Video [kembali]


8. Unduh [kembali]

               
File rangkaian, HTML, Program download disini

Tidak ada komentar:

Posting Komentar