Anda di halaman 1dari 7

3/5/2018 Display 7Segment dengan IC Max7219 | Blog Ulindev

NOW TRENDING: CARA MEMBUAT WEBSITE MON... DISPLAY 7SEGMENT DENGAN ... SIM800L GPRS MODE

NOTIFIKASI EMAIL PADA AR...

BLOG ULINDEV
EMBEDDED ▼ PEMROGRAMAN ▼ IOT ELEKTRONIKA

DISPLAY 7SEGMENT DENGAN Search the site 

IC MAX7219
M. Alfiyan Ulinnuha | February 7, 2017 | AVR, Elektronika, Embedded, RECENT POSTS
Pemrograman | No Comments Cara Membuat Website
Monitoring IOT Sederhana
Display 7segment biasa digunakan untuk menampilkan sebuah karakter
Display 7Segment dengan IC
dengan menggunakan 7 segment led. Cara mengaksesnya pun sangat
Max7219
mudah hanya dengan memberikan tegangan high atau low pada 1 pin
segment maka led pada segment tersebut akan menyala. Dengan Sim800L GPRS Mode

menggunakan beberapa kombinasi, maka led akan membentuk sebuah Notifikasi email pada arduino
character atau angka seperti apa yang diinginkan. dengan domain sendiri
Internet of Things dengan
Sebelumnya, perlu kita ketahui cara kerja 7segment, 7segment memiliki Arduino
dua tipe common yaitu common katoda dan common anoda. Common
adalah pin yang tersambung pada setiap segment. Pada common katoda,
ARCHIVES
pin common tersambung pada GND, sehingga kita dapat menyalakan led
dengan memberikan nilai positive atau aktif High. Sedangkan pada October 2017 (1)

common anoda, pin common tersambung dengan VCC, sehingga kita February 2017 (1)
dapat menyalakan led dengan memberikan nilai negative atau aktif Low. November 2016 (2)

Untuk mempermudah mengingat bagaimana katoda dan anoda bekerja, October 2016 (1)

maka bisa dilakukan dengan mengingat kata ” Ka.P.A.N ” yaitu Katoda September 2016 (15)
Positive Anoda Negative, maksudnya pada common katoda 7segment
akan menyala apabila kita memberikan nilai positive dan apabila CATEGORIES
7segment menggunakan common anoda maka kita dapat menyalakan
Arduino
segment dengan memberikan nilai negative.
AVR
Berikut ini adalah perbedaan rangkaian common katoda dan common Elektronika
anoda :
Embedded
IoT
Pemrograman

http://blog.ulindev.com/display-7segmen-dengan-ic-max7219/ 1/7
3/5/2018 Display 7Segment dengan IC Max7219 | Blog Ulindev

Pemrograman WEB
RaspberryPi

Perbedaan Common Katoda dan Common Anoda

Lanjut ke topik pembahasan, kita akan membuat simulasi menggunakan


proteus dan CodeVision AVR untuk mengakses 7segment yang
ditambahkan ic max7219. Tujuan menggunakan ic max7219 adalah untuk
meringkas penggunaan pin, apabila kita tidak menggunakan ic max7219
dalam artian kita hanya menggunakan pin I/O pada mikro saja, mungkin
kita hanya dapat mengakses 4 buah 7segment saja (nb : menggunakan
atmega16 yang tergolong memiliki pin I/O yang banyak). Dengan
menggunakan ic max7219, kita dapat mengakses lebih dari 24 7segment
(saya terakhir menggunakan sebanyak 32 7segment). Ic max7219 diakses
dengan menggunakan pin SPI pada mikrokontroller, kita akan
menggunakan mosi, ss, dan sck untuk mengakses ic max7219. Datasheet
max7219 dapat dibaca disini.

Apa saja yang perlu kita persiapkan? Berikut ini list untuk membuat
project kita kali ini :

1. Proteus (versi 7 keatas)


2. CodeVision AVR
3. Do’a dengan menyebut nama Allah, semoga ilmunya barokah. Amiin

Jika alat tempur sudah siap dan do’a sudah dilakukan, kita lanjut ke
pembahasan :

1. Membuat Desain pada Proteus

http://blog.ulindev.com/display-7segmen-dengan-ic-max7219/ 2/7
3/5/2018 Display 7Segment dengan IC Max7219 | Blog Ulindev

Silahkan buka proteus dan buat desain seperti gambar berikut.

Desain Proteus

Komponen :

a. ATMEGA8 (1 Buah)
b. MAX7219 (2 Buah)
c. 7SEG-MPX8-CC-BLUE (2 Buah)
d. RES 10K (2 Buah)
e. BUTTON (1 Buah)
f. GROUND (1 Buah)
g. POWER (2 Buah)

2. Membuat Program di CodeVision AVR

Pada sesi ini kita akan membuat program untuk mengakses MAX7219
menggunakan SPI dan menyalakan 7segment, berikut ini source codenya :

#include "mega8.h"
#include "delay.h"

#define PIN_SCK PORTB5


#define PIN_MOSI PORTB3
#define PIN_SS PORTB2

#define PIN_SS1 PORTB1

#define ON 1
#define OFF 0

#define cs_lo PORTB |= (1<<PIN_SS)


#define cs_hi PORTB &= ~(1<<PIN_SS)

#define cs1_lo PORTB |= (1<<PIN_SS1)


#define cs1_hi PORTB &= ~(1<<PIN_SS1)
http://blog.ulindev.com/display-7segmen-dengan-ic-max7219/ 3/7
3/5/2018 Display 7Segment dengan IC Max7219 | Blog Ulindev

#define MAX7219_MODE_DECODE 0x00


#define MAX7219_MODE_INTENSITY 0x0A
#define MAX7219_MODE_SCAN_LIMIT 0x0B
#define MAX7219_MODE_POWER 0x0C
#define MAX7219_MODE_TEST 0x0F
#define MAX7219_MODE_NOOP 0x00

#define MAX7219_DIGIT0 0x01


#define MAX7219_DIGIT1 0x02
#define MAX7219_DIGIT2 0x03
#define MAX7219_DIGIT3 0x04
#define MAX7219_DIGIT4 0x05
#define MAX7219_DIGIT5 0x06
#define MAX7219_DIGIT6 0x07
#define MAX7219_DIGIT7 0x08

#define MAX7219_CHAR_BLANK 0xF


#define MAX7219_CHAR_NEGATIVE 0xA

char jumlah_digit = 8;

void spiSendByte (char databyte)


{
SPDR = databyte;
while (!(SPSR & (1 << SPIF)));
}

void MAX7219_writeData(char data_register, char data,unsign


{
cs_hi;
if(chip==0)
{
spiSendByte(MAX7219_MODE_NOOP);
spiSendByte(MAX7219_MODE_NOOP);
spiSendByte(data_register);
spiSendByte(data);
}
if(chip==1)
{
spiSendByte(data_register);
spiSendByte(data);
spiSendByte(MAX7219_MODE_NOOP);
spiSendByte(MAX7219_MODE_NOOP);
}
cs_lo;
}

void displaySegment()
{
//display 0
MAX7219_writeData(MAX7219_DIGIT0, 0b01001110,0);
MAX7219_writeData(MAX7219_DIGIT1, 0b01111110,0);
MAX7219_writeData(MAX7219_DIGIT2, 0b00011111,0);
http://blog.ulindev.com/display-7segmen-dengan-ic-max7219/ 4/7
3/5/2018 Display 7Segment dengan IC Max7219 | Blog Ulindev

MAX7219_writeData(MAX7219_DIGIT3, 0b01110111,0);

//display 1
MAX7219_writeData(MAX7219_DIGIT0, 0b01111110,1);
MAX7219_writeData(MAX7219_DIGIT1, 0b00110000,1);
MAX7219_writeData(MAX7219_DIGIT2, 0b01101101,1);
MAX7219_writeData(MAX7219_DIGIT3, 0b01111001,1);
MAX7219_writeData(MAX7219_DIGIT4, 0b00110011,1);
MAX7219_writeData(MAX7219_DIGIT5, 0b01011011,1);
MAX7219_writeData(MAX7219_DIGIT6, 0b01011111,1);
MAX7219_writeData(MAX7219_DIGIT7, 0b01110000,1);
}

void main(void)
{
unsigned int j;

DDRB |= (1 << PIN_SCK) | (1 << PIN_MOSI) | (1 << PIN_SS)| (


SPCR |= (1 << SPE) | (1 << MSTR)| (1<<SPR1);

for(j=0;j<2;j++)
{
MAX7219_writeData(MAX7219_MODE_DECODE, 0xFF,j);
MAX7219_writeData(MAX7219_MODE_SCAN_LIMIT, jumlah_digit-1,j
MAX7219_writeData(MAX7219_MODE_INTENSITY, 8,j);
MAX7219_writeData(MAX7219_MODE_POWER, ON,j);
}

while(1)
{
displaySegment();
delay_ms(1000);
}
}

Program untuk mengganti tampilan pada segment berada pada fungsi


displaySegment(). Untuk menampilkan karakter pada 7segment
digunakan bilangan biner 1 dan 0, 1 untuk menyalakan led dan 0 untuk
mematikan led (common catode).

3. Running Test Program

Buka desain proteus kembali, kemudian masukkan program dengan


format .hex yang telah di build oleh codevisionAVR, kemudian running
simulasi berada pada pojok kiri bawah. Jika semua langkah berjalan
dengan baik, maka didapatkan hasil seperti pada gambar uji coba berikut
ini :

http://blog.ulindev.com/display-7segmen-dengan-ic-max7219/ 5/7
3/5/2018 Display 7Segment dengan IC Max7219 | Blog Ulindev

Hasil Running Test

Banyak sekali pengaplikasian dari 7segment, kita bisa membuat sistem


papan skor, jam digital, running text dan masih banyak lagi sesuai
kebutuhan. Jika berminat belajar lebih lanjut atau ada yang perlu
didiskusikan, silahkan berkomentar dibawah ya. Terimakasih.

share this : 2 0 0

RELATED POSTS
PEMBACAAN NILAI SIM800L GPRS MODE
ADC ARDUINO 31 Comments |
Nov 23, 2016
No Comments | Sep 4, 2016

MENYALAKAN DAN CARA MEMBUAT


MEMATIKAN LED WEBSITE MONITORING
MENGGUNAKAN IOT SEDERHANA
ARDUINO 4 Comments | Oct 8, 2017
No Comments | Sep 4, 2016

ABOUT THE AUTHOR

M. Alfiyan Ulinnuha
CEO Ulindev. Seorang ambievert yang tertarik
dengan dunia embedded system dan robotika.

ADD A COMMENT
http://blog.ulindev.com/display-7segmen-dengan-ic-max7219/ 6/7
3/5/2018 Display 7Segment dengan IC Max7219 | Blog Ulindev

Your email address will not be published. Required fields are


marked *

Comment:*

Name:*

Email Address:*

Website:

ADD COMMENT

COPYRIGHT © 2018 BLOG ULINDEV.

http://blog.ulindev.com/display-7segmen-dengan-ic-max7219/ 7/7

Anda mungkin juga menyukai