Senin, 11 Mei 2015

Rangkaian Display 7 Segment dengan MAX72221 /MAX7219 Via SPI

| Senin, 11 Mei 2015
Pemrograman Display 7 Segmen dengan MAX7221 /MAX7219  via komunikasi  SPI.
Cara  mudah memprogram display  7 segment adalah  dengan 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 perlu mengirim sedikit perintah - perintah 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 sebuah Rangkaian 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

Related Posts

Tidak ada komentar: