Member baru? Bingung? Perlu bantuan? Silakan baca panduan singkat untuk ikut berdiskusi.
0 Anggota dan 1 Pengunjung sedang melihat topik ini.
ada sih.. bekas ngerjain tugas kuliah dulutapi apa ga lebih baik kalau studi dulu, baru kalo ada masalah didiskusikan masalahnyamungkin step-step nya:pin-pin yg diperlukan <==> rangkaiangimana caranya komunikasi sama lcd <==> instruksi lcdbaru ke implementasi programnyasaya juga agak lupa
Konfigurasi pin LCD dan uC nya bisa macem-macem. Saya ambil kayak gini, sbg contoh : [pin LCD] <--> [pin uC] 1 (Gnd) <--> 11 (Gnd) 2 (+5V) <--> 10 (Vcc) 4 (RS) <--> 22 (PC0) 5 (RD) <--> 23 (PC1) 6 (EN) <--> 24 (PC2) 11 (D4) <--> 26 (PC4) 12 (D5) <--> 27 (PC5) 13 (D6) <--> 28 (PC6) 14 (D7) <--> 29 (PC7)
bisa dicoba. Dengan catatan, pemasangan pinnya cocok dgn keterangan sebelumnya
...wah, segitu dulu, ada yg ngajak makan ,nanti dilanjut di postingan selanjutnya untuk implementasi tiap fungsi nya
#define LCD_DATA P2 // kita gunakan Port 2 sebagai data, sebetulnya cuma P2[0:3]#define LCD_en P2_5 // enable LCD display#define LCD_rs P2_4 // register select#define LCD_DELAY 461 // bisa disesuaikan dengan frekuensi kristal yg digunakan/* prototype fungsi dasar */void LCD_delay(unsigned char ms);void LCD_enable();void LCD_command(unsigned char command);void LCD_putc(unsigned char ascii);/* fungsi turunan */void LCD_puts(unsigned char *lcd_string);void LCD_init();/* implementasi fungsi dasar */void LCD_delay(unsigned char ms){ unsigned char n; unsigned int i; for(n=0;n<ms;n++) for(i=0;i<LCD_DELAY;i++);}void LCD_enable(){ LCD_en = 0; // memberi sinyal falling edge LCD_delay(1); LCD_en = 1;}void LCD_command(unsigned char command){ LCD_rs = 0; // menandakan perintah LCD_DATA = (LCD_DATA&0xF0)|((command>>4)&0x0F); // ambil high nibble, kirim LCD_enable(); // beritahu driver LCD bahwa data telah siap LCD_DATA = (LCD_DATA&0xF0)|(command&0x0F); // ambil low nibble, kirim LCD_enable(); LCD_delay(1);}void LCD_putc(unsigned char ascii){ EA = 0; // (optional) matikan semua interrupt LCD_rs = 1; // menandakan data untuk ditampilkan LCD_DATA = (LCD_DATA&0xF0)|((ascii>>4)&0x0F); LCD_enable(); LCD_DATA = (LCD_DATA&0xF0)|(ascii&0x0F); LCD_enable(); EA = 1; LCD_delay(1);}/* implementasi fungsi turunan */void LCD_puts(unsigned char *lcd_string){ while(*lcd_string) /* scanning array data hingga null pointer (string habis) */ LCD_putc(*lcd_string++);}void LCD_init(){ LCD_en = 1; LCD_rs = 0; LCD_command(0x33); LCD_command(0x32); LCD_command(0x28); LCD_command(0x0C); LCD_command(0x06); LCD_command(0x01); LCD_delay(256);}
...#define LCD_clear() LCD_command(0x01)#define LCD_row1() LCD_command(0x80)#define LCD_row2() LCD_command(0xC0)...
void main(){ LCD_init(); init_int(); init_baud(); baca_status_eeprom(); P1 = 0x00; kembali_ke_main: main_display(); // mode_main = mode_cari (1), mode_entry (2) while(1) { LCD_clear(); // tambahin apa aja lah... // sesuai keperluan... }}
oya sy pake AT89s51,mudah2an bisa ya,,,
bukannya CodeVision cuma untuk microcontroller jenis AVR ya,
1. ada yang punya contoh program pake bahasa C untuk LCD 2X16..2. ic-nya pake at89c52 bisa ga? 3. ditunggu jwb dari yang bisa bantu. terima kasih