SELAMAT DATANG di ekatron
Belajar mikrokontroller AVR mulai dari proyek sederhana dengan CodeVision. GRATIS BIMBINGAN UNTUK UMUM SETIAP HARI SENIN DI LAB. FIN FMIPA USU dari jam 10.00 s/d 12.00 WIB atau
Hubungi kami di:
kbram @ ekatron . com
( )
 
BELAJAR
Moving Text Mode Scanning 595
[ Kurnia Brahmana ] [ 11-09-2013 ]
 

Running text dengan mode scanning lebih banyak digunakan untuk tujuan komersil dibanding dengan mode static, tetapi masing-masing ada kelemahan dan kelebihannya.
 
Foto-foto berikut ini dengan keterangan singkat disekitarnya saya kjira lebih cukup menjelaskan bagaimana cara membuat running text mode scan.
 
berikut ini adalah gambar rangkaian atau skema dari running text mode scan dengan menggunakan IC TTL 74HC595, untuk driver kolom juga untuk driver baris yang dibantu oleh ULN2803
 
 
 
 
Salah satu kelebihan dari rangkaian ini adalah jumlah kabel hanya 5
 
1 . Vcc
 
2. GND
 
3. DATA
 
4. Clock
 
5. Latch
 
 
 
Sama seperti rangkaian membuat sendiri running text dengan menggunakan IC 4094 yang dijelaskan pada bagian lain di website ini.
 
 
 
 
 
Prinsip pemrograman adalah sebagai berikut, kirim baris dan kirim kolom secara serentak sebanyak jumlah kolom  atau kirim kolom dan kirim baris secara serentak sebanyak jumlah baris. 
 
 
 
 
 
Diagram block rangkaian dapat dilihat seperti pada gambar dibawah ini
 
 
 
 
 
 
Kalau eeprom bawaan dari atmega32 masih terasa kurang, dapat ditambahkan memory eeprom external seperti 24c64, demikian juga jika RTC bawaan atmega32 kurang memuaskan, dapat ditambahkan DS1307 sebagai RTC external.
 
 
 
Untuk jelasnya perhatikan diagram block berikut ini:
 
 
 
 
Display dapat juga disusun dengan led sehingga berbentuk matriks
 
 
IC 74 595 dipasang pada bagian belakang PCB untuk menghemat PCB sbb:
 
 
 
Atau menggunakan MATRIX LED 8X8 yang sudah jadi, sbb:
 
 
 
Selanjutnya kita menguji kolom dan baris, dengan ATmega32 dev board (trainer) sbb:
 
 
Untuk pengujian baris dan kolom, cukup dengan program berikut ini, dimana semua kolom disambung ke PORTC dan semua baris disambungkan ke PORTA
 
 
/*******************************************************
This program was created by the
CodeWizardAVR V3.08 Standard
Automatic Program Generator
© Copyright 1998-2013 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com
 
Project : 
Version : 
Date    : 12/27/2013
Author  : 
Company : 
Comments: 
 
 
Chip type               : ATmega32A
Program type            : Application
AVR Core Clock frequency: 16.000000 MHz
Memory model            : Small
External RAM size       : 0
Data Stack size         : 512
*******************************************************/
 
#include <mega32a.h>
#include <delay.h>
 
#define kolom PORTC
#define baris PORTA
 
// Declare your global variables here
 
void main(void)
{
// Declare your local variables here
unsigned char kol, xkar;
 
// Input/Output Ports initialization
// Port A initialization
// Function: Bit7=Out Bit6=Out Bit5=Out Bit4=Out Bit3=Out Bit2=Out Bit1=Out Bit0=Out 
DDRA=(1<<DDA7) | (1<<DDA6) | (1<<DDA5) | (1<<DDA4) | (1<<DDA3) | (1<<DDA2) | (1<<DDA1) | (1<<DDA0);
// State: Bit7=0 Bit6=0 Bit5=0 Bit4=0 Bit3=0 Bit2=0 Bit1=0 Bit0=0 
PORTA=(0<<PORTA7) | (0<<PORTA6) | (0<<PORTA5) | (0<<PORTA4) | (0<<PORTA3) | (0<<PORTA2) | (0<<PORTA1) | (0<<PORTA0);
 
// Port B initialization
// Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In 
DDRB=(0<<DDB7) | (0<<DDB6) | (0<<DDB5) | (0<<DDB4) | (0<<DDB3) | (0<<DDB2) | (0<<DDB1) | (0<<DDB0);
// State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T 
PORTB=(0<<PORTB7) | (0<<PORTB6) | (0<<PORTB5) | (0<<PORTB4) | (0<<PORTB3) | (0<<PORTB2) | (0<<PORTB1) | (0<<PORTB0);
 
// Port C initialization
// Function: Bit7=Out Bit6=Out Bit5=Out Bit4=Out Bit3=Out Bit2=Out Bit1=Out Bit0=Out 
DDRC=(1<<DDC7) | (1<<DDC6) | (1<<DDC5) | (1<<DDC4) | (1<<DDC3) | (1<<DDC2) | (1<<DDC1) | (1<<DDC0);
// State: Bit7=0 Bit6=0 Bit5=0 Bit4=0 Bit3=0 Bit2=0 Bit1=0 Bit0=0 
PORTC=(0<<PORTC7) | (0<<PORTC6) | (0<<PORTC5) | (0<<PORTC4) | (0<<PORTC3) | (0<<PORTC2) | (0<<PORTC1) | (0<<PORTC0);
 
// Port D initialization
// Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In 
DDRD=(0<<DDD7) | (0<<DDD6) | (0<<DDD5) | (0<<DDD4) | (0<<DDD3) | (0<<DDD2) | (0<<DDD1) | (0<<DDD0);
// State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T 
PORTD=(0<<PORTD7) | (0<<PORTD6) | (0<<PORTD5) | (0<<PORTD4) | (0<<PORTD3) | (0<<PORTD2) | (0<<PORTD1) | (0<<PORTD0);
 
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=0xFF
// OC0 output: Disconnected
TCCR0=(0<<WGM00) | (0<<COM01) | (0<<COM00) | (0<<WGM01) | (0<<CS02) | (0<<CS01) | (0<<CS00);
TCNT0=0x00;
OCR0=0x00;
 
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer1 Stopped
// Mode: Normal top=0xFFFF
// OC1A output: Disconnected
// OC1B output: Disconnected
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=(0<<COM1A1) | (0<<COM1A0) | (0<<COM1B1) | (0<<COM1B0) | (0<<WGM11) | (0<<WGM10);
TCCR1B=(0<<ICNC1) | (0<<ICES1) | (0<<WGM13) | (0<<WGM12) | (0<<CS12) | (0<<CS11) | (0<<CS10);
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
 
// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer2 Stopped
// Mode: Normal top=0xFF
// OC2 output: Disconnected
ASSR=0<<AS2;
TCCR2=(0<<PWM2) | (0<<COM21) | (0<<COM20) | (0<<CTC2) | (0<<CS22) | (0<<CS21) | (0<<CS20);
TCNT2=0x00;
OCR2=0x00;
 
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=(0<<OCIE2) | (0<<TOIE2) | (0<<TICIE1) | (0<<OCIE1A) | (0<<OCIE1B) | (0<<TOIE1) | (0<<OCIE0) | (0<<TOIE0);
 
// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// INT2: Off
MCUCR=(0<<ISC11) | (0<<ISC10) | (0<<ISC01) | (0<<ISC00);
MCUCSR=(0<<ISC2);
 
// USART initialization
// USART disabled
UCSRB=(0<<RXCIE) | (0<<TXCIE) | (0<<UDRIE) | (0<<RXEN) | (0<<TXEN) | (0<<UCSZ2) | (0<<RXB8) | (0<<TXB8);
 
// Analog Comparator initialization
// Analog Comparator: Off
// The Analog Comparator's positive input is
// connected to the AIN0 pin
// The Analog Comparator's negative input is
// connected to the AIN1 pin
ACSR=(1<<ACD) | (0<<ACBG) | (0<<ACO) | (0<<ACI) | (0<<ACIE) | (0<<ACIC) | (0<<ACIS1) | (0<<ACIS0);
SFIOR=(0<<ACME);
 
// ADC initialization
// ADC disabled
ADCSRA=(0<<ADEN) | (0<<ADSC) | (0<<ADATE) | (0<<ADIF) | (0<<ADIE) | (0<<ADPS2) | (0<<ADPS1) | (0<<ADPS0);
 
// SPI initialization
// SPI disabled
SPCR=(0<<SPIE) | (0<<SPE) | (0<<DORD) | (0<<MSTR) | (0<<CPOL) | (0<<CPHA) | (0<<SPR1) | (0<<SPR0);
 
// TWI initialization
// TWI disabled
TWCR=(0<<TWEA) | (0<<TWSTA) | (0<<TWSTO) | (0<<TWEN) | (0<<TWIE);
 
kol = 0x01;
xkar = 0x55;
 
while (1)
      {
      // Place your code here
           baris = xkar;
           while(1)
           {
                kolom = kol;
                delay_ms(2);
                kol = kol << 1;
                if (kol == 0) kol = 0x01;
           }
      }
}
 
 
Untuk lebih menyederhanakan rangkaian dapat dikerjakan dengan cara sebagai berikut:
 
 
foto pada rangkaian block pertama
 
untuk rangkaian berikutnya
 
 
Dari sis PCB dapat kita lihat sbb:
 
Komponen diletakkan pada bagian belakang PCB sehingga hemat tempat.
 
 
 
Selanjutnya kita akan mulai mengirim data baris dan posisi kolom ke rangkaian running text yang menggunakan mode scanning dengan IC 74595
 
Display dengan matrix yang disusun dengan LED atau menggunakan LED matrix 8x8 yang sudah jadi, sama saja.
 
Perbedaannya cuma pada saat perakitan, pembuatan display dengan menyusun LED lebih repot.
 
 
Pada bagian lain akan ditampilkan matrix8x8 dalam jumlah yang lebih banyak, berikut ini foto untuk 6 block matrix 8x8 untuk membentuk jam digital dengan display angka yang lebih baik daripada display 7 segment.
 
IC 74595 yang digunakan adalah type smd, sehingga hemat tempat, pada bagian depan untuk tempat matrix diletakkan, dan bagian belakang tempat komponen, sementara PCB yang digunakan adalah type single layer.
Ada sekitar 15 jumper pada setiap matrik, untuk menghubungkan pin IC dengan PIN matrix 8x8
 
 
 
 
Moving Text Mode Scanning 595
45