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.
Kaki -kaki SPI pada microcontroller AVR atmega
Pemrograman Max7221
Untuk menampilkan sebuah Rangkaian data kita perlu mengirimkan format dibawah ini ke ic max7221 :
Keterangan rincian kombinasi bit pada byte Address gambar diatas sbb
…
—-
Set up/inisialisasi program AVR untuk memprogram max7221/7219
1. mejadikan AVR sebagai master SPI, contoh pada codewizard di codevision
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)
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:
perhatikan pin chip select(load) kedua ic disambung . karena memang kedua ic ini bekerja secara bersama.
Referensi:
– Datasheet max7221
Tidak ada komentar:
Posting Komentar