Pemrograman Display 7 Segmen dengan MAX7221 via komunikasi SPI.
Cara paling mudah memprogram display 7 segment adalah dgn bantuan IC MAX7221. 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.
Kaki -kaki SPI pada microcontroller AVR atmega
Pemrograman Max7221
Untuk menampilkan data kita perlu mengirimkan format dibawah ini ke ic max7221 :
Keterangan rincian kombinasi bit pada byte Address gambar diatas sbb
Langkah-langkah mengirim data SPI ke max7221 :
1. Buat pin CS menjadi Low
2. Kirim data dengan format data diatas
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)
Referensi:
- Datasheet max7221
0 komentar:
Posting Komentar