IC timer 555 adalah sirkuit terpadu (chip) yang digunakan dalam berbagai pembangkit timer, pulsa dan aplikasi osilator. Komponen ini digunakan secara luas, berkat kemudahan dalam penggunaan, harga rendah dan stabilitas yang baik
Kami bantu anda untuk memahami lebih jelas mengenai migrasi tv digital, apa sebabnya dan bagaimana efek terhadap kehidupan. Jasa teknisi juga tersedia dan siap membantu instalasi - setting perangkat - pengaturan antena dan distribusi televisi digital ke kamar kos / hotel
Project Sederhana dengan Dot Matrix dan Attiny2313. Bisa menjadi hadiah buat teman atau pacarmu yang ulang tahun dengan tulisan dan animasi yang dapat dibuat sendiri.
Jika anda pencinta IC TTL datau CMOS maka project jam digital ini akan menunjukkan bahwa tidak ada salahnya balik kembali ke dasar elektronika digital , sebab semuanya BISA dibuat dengan teknologi jadul
Setelah hanya bermain dengan HSYNC ( horizontal scanline) saja pada posting sebelumnya, maka pertanyaan akan muncul gimana jika pengen menampilkan gambar ditengah layar TV.
standar TV analog PAL memiliki teknik scanning line sebanyak 625 line, dengan teknik penggabungan penembakan elektron garis ganjil dulu dilanjutkan dengan line genap. seperti gambar dibawah ini :
untuk memberikan pembeda antara awal scan genap dan ganjil , dilakukan dengan memberikan pulsa yg berbentuk 0 - 0,3v dan dengan durasi 'short' selama 2us dan 'long' yang artinya 32 us. Agak ribet memang , tp lama-lama juga bakalan ngerti. kalo dilihat secara osciloscop seperti ini :
*)keterangan : us = micro second
Jadi untuk VSYNC ganjil, aturannya seperti ini :
- Dimulai dari baris ke 623, pulsa sebanyak 6x (0v selama 2us , 0,3v selama 32us ) selajutnya dinamakan LONG SYNC - Setelah itu penanda start vsync 5x (0v selama 32us , 2us untuk level 0,3v) selanjutnya dinamakan SHORT SYNC - Diakhiri dengan long sync sebanyak 5x - Tidak semua baris tampil di tabung TV, umumnya tabung kelihatan mulai baris ke 50
Sedangkan untuk VSYNC GENAP, sebagai berikut:
- Dimulai dari baris ke 311, dengan LONG SYNC 5x - Short Sync 5x - Diakhiri dengan LONG SYNC 4x - Beda antara baris yg berdempetan (Ganjil & Genap) adalah 312
nah sekarang kita ingin membuat garis vertikal ....seperti gambar :
programmingnya seperti berikut :
#define F_CPU 16000000UL
#include <avr/io.h>
#include <util/delay.h>
#define SYNC PORTB=0
#define ABU PORTB=0b10
#define ITEM PORTB=0b01
#define PUTIH PORTB=0b11
int line;
void hsync(void)
{
//sync
SYNC;
_delay_us(4);
ITEM
_delay_us(8);
if(line == 50 || line == 100 || line == 150|| line == 200 || line == 250) ITEM
else ABU;
_delay_us(50);
line++;
}
void vsync(uint8_t ganjilgenap)
{
uint8_t a,b;
if(ganjilgenap == 0) b=6;
else b=5;
for(a=0; a<b ; a++) //6x atau 5x long sync
{
SYNC;
_delay_us(2);
PORTB=1;
_delay_us(30);
}
for(a=0; a<5 ; a++) //5x short sync
{
SYNC;
_delay_us(30);
PORTB=1;
_delay_us(2);
}
if(ganjilgenap == 0) b=5;
else b=4;
for(a=0; a<b ; a++) //5x atau 4x long sync
{
SYNC;
_delay_us(2);
PORTB=1;
_delay_us(30);
}
if(ganjilgenap == 0) line=5;
else line=317;
}
int main(void)
{
line=622;
//Inisialisasi port input
DDRB =0b11;
while(1)
{
if(line == 622) vsync(0); //genap
else if(line == 310) vsync(1); //ganjil
else hsync();
}
}
selanjutnya dengan penggabungan antara VSYNC dan HSYNC kita bisa menggambar diatas TV, tentunya dengan keterbatasan timing dari AVR, susah juga kadang menemukan timing yg pas. dengan menggunakan delay.h tidak bisa dijamin delay yg bener sebab tiap perintah /syntax dari GCC memerlukan waktu eksekusi yg memakan waktu juga . begitu pula dengan menggunakan counter interrupt, timing nya terbatas untuk interupt yg pas digunakan, sebab jika CTC 1us maka hampir semua program didominasi oleh interupt timer.
kalo yg kayak gini mau ?
kalo mau...contact aja aku ... atau mau lanjut ke part ke 3
nah...ternyata tidak segampang yg ku kira, banyak teory analog yg mesti dikuasai. Salut deh buat yg pertama ngerancang TV ..trus yg pertama bikin VIDEO GAME otaknya pasti tokcer banget .
sebelum ke skematik dan listing, kita perhatikan dulu bagaimana gambar TV (PAL) itu terbentuk. Gambarannya seperti berikut :
gambar di scan oleh electron secara bergantian per baris, ganjil dulu baru baris genap ( kelembaman mata membuat terlihat sebagai gambar) dengan total scanline 625 untuk PAL.
Dari sebuah raster sebesar 64us, 4 us pertama sinyal berupa 0v, 8 us kemudian ada jeda (biasanya untuk colorbust) sinyal 0,3v (black blank level). selanjutnya sisanya 58us merupakan data gambar. beruntung sekali level dari sinyal composite maksimal 1 V (warna putih), sehingga dengan pembagian resistor sederhana dapat di peroleh level hitam dan putih hanya dengan menggunakan 2 buah resistor
dan...percobaan pertama adalah membuat gambar seperti ini :
jadi dikiri bikin kotak abu2, ditengah garis item, di kanan kotak putih
Kita rangkai AVR ATTINY 2313 dengan PORT B0 disambung ke R 1K dan PORT B1 menuju resistor 470ohm , seperti gambar diatas. Ujung kedia resistor menuju ke port composite / AVin dari tv. Clock yg digunakan xtal 16MHz - 20MHz
klik untuk lebih jelas
SCRIPT :
#define F_CPU 16000000UL //clock xtal
#include <avr/io.h>
#include <util/delay.h>
#define SYNC PORTB=0
#define ABU PORTB=0b10
#define ITEM PORTB=0b01
#define PUTIH PORTB=0b11
int main(void)
{
//Inisialisasi port yg digunakan
DDRB =0b11;
while(1)
{
//sync horiz
SYNC;
_delay_us(4);
// blanking
ITEM;
_delay_us(8);
ITEM;
_delay_us(5);
ABU;
_delay_us(20);
ITEM;
_delay_us(1);
PUTIH;
_delay_us(20);
ITEM;
_delay_us(7);
}
}
Dengan merubah dikit..dikit, terutama di susunan delay dari raster kita dapat membikin gambar seperti ini :
Kali ini kita akan membahas tentang LCD matrix Umumnya LCD matrix yg beredar berbasis chipset HD44780 buatan hitachi
Lcd berbasis HD44780 mempunyai 2 mode interface 4 bit ato 8 bit kali ini kita akan membahas yg 4bit karena kita pake attiny yg pin nya dikit menulis ke LCD gampang-gampang susah, ada tricknya tersendiri asal sesuai datasheet
tapi kali ini kita akan bikin paling gampang, dengan memanfaatkan library yg paling banyak dipake buatan si PETER FLEURY linknya disini
dari gambar, potensio/trimpot fungsinya untuk mengatur kontras LCD, jika tidak perlu diatur, bisa diganti dengan R 100 ohm
selanjutnya buat project di AVR studio, jangan lupa mengekstrak librarynya si fleury yaitu file lcd.h dan lcd.c
karena file lcd.h nya default, kita bahas bagian2 yg dapat disesuaikan sesuai desain yang kamu bikin. Edit file lcd.h dengan notepad
Quote:
#define XTAL 1000000 sesuaikan nilai dengan frek clock, default attiny2313 adalah 1Mhz
#define LCD_LINES 2 jumlah line LCD #define LCD_DISP_LENGTH 16 jumlah karakter per line
#define LCD_IO_MODE 1 mode 0=8bit, 1=4 bit
selanjutnya adalah definisi pin yang dipake, berikut ini hasil edit yang sesuai skematik diatas
#define LCD_PORT PORTB /**< port for the LCD lines */
#define LCD_DATA0_PORT LCD_PORT /**< port for 4bit data bit 0 */
#define LCD_DATA1_PORT LCD_PORT /**< port for 4bit data bit 1 */
#define LCD_DATA2_PORT LCD_PORT /**< port for 4bit data bit 2 */
#define LCD_DATA3_PORT LCD_PORT /**< port for 4bit data bit 3 */
#define LCD_DATA0_PIN 0 /**< pin for 4bit data bit 0 */
#define LCD_DATA1_PIN 1 /**< pin for 4bit data bit 1 */
#define LCD_DATA2_PIN 2 /**< pin for 4bit data bit 2 */
#define LCD_DATA3_PIN 3 /**< pin for 4bit data bit 3 */
#define LCD_RS_PORT PORTD /**< port for RS line */
#define LCD_RS_PIN 4 /**< pin for RS line */
#define LCD_RW_PORT PORTD /**< port for RW line */
#define LCD_RW_PIN 5 /**< pin for RW line */
#define LCD_E_PORT PORTD /**< port for Enable line */
#define LCD_E_PIN 6 /**< pin for Enable line */
selanjutnya jangan lupa untuk menambahkan source lcd.c , seperti pada gambar berikut:
selanjutnya adalah routine/function yg dipake oleh library peter fleury
void lcd_init ( uint8_t dispAttr )
inisialisasi display
Parameter yang dipake untuk dispAttr : LCD_DISP_OFF display offLCD_DISP_ON display on, cursor offLCD_DISP_ON_CURSOR display on, cursor onLCD_DISP_ON_CURSOR_BLINK display on, cursor on flashing
void lcd_clrscr ( void )
Clear display LCD
void lcd_home ( void )
Set cursor ke posisi home
void lcd_gotoxy ( uint8_t x, uint8_t y )
Set cursor ke posisi tertentu
Parameters: x posisi horizontal , 0 paling kiri y posisi vertikal, 0 baris paling atas
void lcd_putc ( char c )
menampilkan sebuah karakter di LCD
void lcd_puts ( const char * s )
menampilkan String di LCD
void lcd_puts_p ( const char * progmem_s )
Display string jika memakai Progmem
void lcd_command ( uint8_t cmd )
Jika mengirim command/perintah setting
sekarang kita lanjut ke sciptnya yukkk... kali ini kita akan menulis sesuatu ke LCD : #include <stdlib.h> #include <avr/io.h> #include <avr/pgmspace.h> #include "lcd.h"
int main(void) {
DDRD |= (1<<PD4)|(1<<PD5)|(1<<PD6); //Port RS, R/W, En DDRB |= (1<<PB0)|(1<<PB1)|(1<<PB2)|(1<<PB3); //DATA port 4 bit
Attiny 2313
Led matrix 7x5
R 10K
Diode 4148
PCB lobang
Header 2x5 buat ISP programmer (optional - Bisa diprogram di Breadboard)
Socket 20 untuk ATtiny, dan soket 14 ( dibelah dua ) buat tempat Led matrix
rangkaiannya seperti ini :
Kemudian komponen dirangkai diatas PCB lobang, ato bisa juga memakai bahan lain( disesuaikan dengan tempat yg mau di pake, misale kotak hadiah , papan tripleks dan lain sebagainya)
letakkan LED MATRIX sesuai dengan SOCKET IC yg dibelah tadi
karena ga ada baterai ( punya tempatnya doang) jadi pake adaptor 3 Volt aja
Untuk kreasi text dalam Led Matrix 7 x 5 , bisa gunakan panduan excel di link ini.
Script code dalam Bahasa C /WinAvr seperti berikut:
Script code diatas dibuat dalam mode FLASH, RAM, dan EEPROM, jadi ketika download program ke IC harus memprogram FLASH dulu kemudian dilanjutkan dengan EEPROM.
FLASH extensinya .hex sedangkan isi EEPROM extensinya .eep
Kali ini kita akan menggunakan 4 buah 7 segment untuk membuat jam sederhana
"wahhh..kalo banyak 7 segmentnya, ngabisin banyak port dong ?"
Jangan khawatir, kita pake teknik " SCANNING", artinya kita hidupin segment satu persatu, tiap segment diparalel saja...tp kita hidupin dengan memberikan switch/saklar ke common port 7segment yg dikontrol oleh port micro ..dan scanningnya cepetttt...sehingga mata kita melihatnya seperti nyala biasa aja.
jadi untuk bikin 7-segment 4 buah, diperlukan 7 port display(diparalel) + 4 port control
rangkaiannya seperti berikut :
klik untuk memperbesar gambar
Biasanya untuk display yg agak besar, kita perlu transistor untuk mengatur scanning, tp karena contoh kali ini memakai segment yg kecil maka tidak memerlukan kontrol memakai transistor ( coba pake transistor dijamin nyalanya redup !!)
Prinsip jam kali ini menggunakan prinsip DELAY, jadi tidak terlalu akurat.
Sebenernya mau seh membagi ilmu untuk jam yg super akurat, tapi ntar aja yahh..soalnya memerlukan pengetahuan mengenai "Timer/Counter" dari microcontroller