Pemrograman Display 7 Segment dengan SPI MAX7221 dan MAX7219

Pemrograman Display 7 Segmen dengan MAX7221 /MAX7219  via komunikasi  SPI.

Cara paling mudah memprogram display  7 segment adalah  dgn bantuan IC MAX7221 atau MAX7219.  Kita tdk perlu lagi membuat program scanning (program bergantian mengaktifkan digit ) karena semua itu dilakukan oleh ic max7221. Kita hanya mengirim sedikit perintah2 dan data ke ic tsb  via SPI dgn  format yg sudah ditentukan untuk menampilkan data  di 7 segmen. Selain itu kita bisa berhemat kaki IO  microcontroller, karena  max7221 hanya perlu 3 pin dari  microcontroller.

MAx7221 Untuk Display 7 segment dgn SPI

contoh rangkaian 7 segment dgn max7221

Kaki -kaki  SPI pada microcontroller AVR atmega

Pin isp pada Atmega AVR

Pemrograman Max7221

Untuk menampilkan data kita perlu mengirimkan format dibawah ini ke ic max7221 :

Format Data yg dikirim ke Max7221

Keterangan rincian kombinasi bit pada byte  Address gambar diatas sbb

kombinasi byte Adress untuk memilih Digit  yg aktif dan perintah

datasheetmax1

scantable

—-

testtable

Set up/inisialisasi program AVR   untuk memprogram max7221/7219

1.  mejadikan AVR sebagai master SPI, contoh pada codewizard di codevision

cvwizard_spi

2. Enable decoding mode (command 0x09)

3.  Set Limit Scan

4.  Akktifkan display (perintah 0xC)

5. Set angka tiap digit.

Adapun Langkah-langkah mengirim data(angka)  SPI ke max7221  :

1. Buat pin CS menjadi Low

2. Kirim data dengan format data diatas  ( 2 byte)

3. Buat pin CS kembali High

Contoh Code Program dengan   bahasa C AVR Studio:

#include<avr/io.h>
#define MOSI 5   //(PortB.5)  data out
#define SCK 7    //(PortB.7)
#define SS 4     //(PortB.4)

void kirimbyte(unsigned char perintah, unsigned char data)
PORTB =PORTB & ~(1<<SS)  //pin  SS dibuat LOW

//kirim byte pertama (perintah)
SPDR = perintah;
while(!(SPSR & (1<<SPIF));//tunggu transfer 1 byte sampai  selesai

//kirim byte kedua(data)
SPDR = data;
while(!(SPSR & (1<<SPIF)); //tunggu transfer 1 byte sampai  selesai

PORTB =PORTB | (1<<SS);        //pin SS dibuat  High
}

int main(void)
{
//setting SPI
DDRB = (1<<MOSI) | (1<<SCK) | (1<<SS); //set bit Mosi & sck sbg output
SPCR = (1<<SPE) | (1<<MSTR) | (1<<SPR0) //AVR sebagai master SPI

kirimbyte(0x09,0xFF);// mengaktifkan  8 digit 7segmen
//jika cuma 2 digit : kirimbyte(0x9,0x3);

kirimbyte(0x0B,0x08);   //scan (looping) 8 digit
kirimbyte(0x0C,0x07);   //aktifkan Chip

//menampilkan angka

Kirimbyte(0x01,0x8);  //menampilkan angka 8 di digit 1
Kirimbyte(0x02,0x9);  //menampilkan angka 9 di digit 2
Kirimbyte(0x04,0x7);  //menampilkan angka 7 di digit 3
Kirimbyte(0x08,0x5);  //menampilkan angka 5 di digit 4
// dan seterusnya....

while(1);

return 0;

}

Adapun cara pengiriman data melaui SPI dgn Codevision :  SPI(char data)

lebih lengkapnya Anda bisa baca disini dan   disini.

Rangkaian Cascade 

Jika kita ingin membuat dua buah baris  atau lebih display maka kita bisa membuatnya dengan menyambung ic Max7221  atau max7219 secara cascade sbb:

cascademax7221_7219

perhatikan pin chip select(load) kedua ic  disambung . karena memang  kedua ic ini bekerja  secara bersama.

cascaderegister

Referensi:

– Datasheet max7221

-microcontroller AVR C & asembly, muhammmad ali mazidi

Advertisements

About pccontrol

Berisi Tutorial Menggunakan PC untuk mengontrol Peralatan dengan cara mudah & praktis.

Posted on 15/09/2011, in Contoh-contoh Aplikasi, Pemrograman C AVR Studio. Bookmark the permalink. 2 Comments.

Komentar ,Saran atau Pertanyaan

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: