Pada artikel ini saya ingin berbagi pengalaman saya bagaimana pusingnya menampilkan gambar di LCD 320x240 yang tidak dilengkapi dengan datasheet yang cukup jelas.
Berawal dari adanya proyek yang memerlukan tampilan LCD bewarna / TFT. Setelah mencari dibeberapa toko online, akhirnya saya dan rekan saya memutuskan untuk membeli LCD jenis ini (Tipe LCD tidak saya jelaskan lebih detil). Berdasarkan dari datasheet yang kami dapatkan setelah cari-cari diinternet, dikatakan bahwa LCD ini menggunakan controller LCD standar, yaitu SSD1963 dari Salomon.
Setelah mencari dengan di Google, akhirnya saya menemukan dua versi datasheet dari SSD1963. Setelah baca, eh, tetap bingung juga...Pada datasheet dari SSD1963 tidak dijelaskan urutan perintah apa saja yang harus dikirimkan untuk melakukan inisialisasi LCD.
Setelah mencari di internet lagi, ketemu contoh perintah yang harus dikirimkan jika dengan menggunakan SSD1963.
Berikut ini beberapa link yang membantu :
Memang jenis LCD dan kontroler yang mereka gunakan berbeda dengan yang saya gunakan. Kontroler yang saya gunakan adalah NUC120RE3DN dari Nuvoton. Mikrokontroler ini menggunakan prosesor ARM Corxtex-M0 yang memang hadir untuk bekerja pada aplikasi mikrokontroler.
Setelah mencoba menganti urutan perintah dan menambah beberapa delay, akhirnya muncul juga warna inisialisasi di LCD...(karena foto inisialisasi awal terhapus, jadi ga bisa saya tampilkan).
![]() |
Logo Rattonics di LCD 320x240 |
![]() |
Pemilihan Menu Record |
![]() |
Pemilihan Menu View Record |
![]() |
Tampilan Grafik Baris dan Tabel Informasi |
![]() |
Tampilan Grafik Baris dan Tabel sewaktu recording |
Yup, menyenangkan melihat hasil dari kerja keras tersebut. Akan tetapi jika melihat lagi proses pembuatannya yang membuat kepala pusing selama beberapa hari...fiuh...melelahkan...
Bagi rekan-rekan yang perlu info mengenai urutan inisialisasi awal, berikut ini sedikit contekannya :
void SSD1963InitCommand (unsigned char command) { uint32_t cmd = 0xFFFFFFFF; DC_LCD = 0; // D/C=0 delay(); cmd = (uint32_t)command; cmd<<=8; GPIO_SET_OUT_DATA(PB,cmd); delay(); CS_LCD = 0; // /CS=0 WR_LCD = 0; // /WR=0 delay(); WR_LCD = 1; // /WR=1 CS_LCD = 1; // /CS=1 } void SSD1963InitData (unsigned char data1) { uint32_t cmd = 0xFFFFFFFF; DC_LCD = 1; // D/C=1 delay(); cmd = (uint32_t)data1; cmd<<=8; GPIO_SET_OUT_DATA(PB,cmd); delay(); CS_LCD = 0; // /CS=0 WR_LCD = 0; // /WR=0 delay(); WR_LCD = 1; // /WR=1 CS_LCD = 1; // /CS=1 } void initLCD(void){ DC_LCD = 1; WR_LCD = 1; CS_LCD = 1; RD_LCD = 1; RST_LCD = 0; delay_ms(1); RST_LCD = 1; delay_ms(1); delay_ms(100); SSD1963InitCommand(0x01); SSD1963InitCommand(0x01); SSD1963InitCommand(0x01); delay_ms(10); SSD1963InitCommand(0xB0); SSD1963InitData(0x0C); SSD1963InitData(0x80); SSD1963InitData(0x01); SSD1963InitData(0x3F); SSD1963InitData(0x00); SSD1963InitData(0xEF); SSD1963InitData(0x00); SSD1963InitCommand(0x36); SSD1963InitData(0x40); SSD1963InitCommand(0xF0); SSD1963InitData(0x00); SSD1963InitCommand(0xE2); SSD1963InitData(0x3B); SSD1963InitData(0x02); SSD1963InitData(0x04); SSD1963InitCommand(0xe6); SSD1963InitData(0x00); SSD1963InitData(0xe7); SSD1963InitData(0x4f); SSD1963InitCommand(0xE0); SSD1963InitData(0x01); delay_ms(1); SSD1963InitCommand(0xE0); SSD1963InitData(0x03); SSD1963InitCommand(0xB4); SSD1963InitData(0x02); SSD1963InitData(0xF8); SSD1963InitData(0x00); SSD1963InitData(0x44); SSD1963InitData(0x0F); SSD1963InitData(0x00); SSD1963InitData(0x00); SSD1963InitData(0x00); SSD1963InitCommand(0xB6); SSD1963InitData(0x01); SSD1963InitData(0x08); SSD1963InitData(0x00); SSD1963InitData(0x13); SSD1963InitData(0x07); SSD1963InitData(0x00); SSD1963InitData(0x00); SSD1963InitCommand(0x2a); SSD1963InitData(0x00); SSD1963InitData(0x00); SSD1963InitData(0x01); SSD1963InitData(0x3f); //Sets column address to 0. SSD1963InitCommand(0x2B); SSD1963InitData(0x00); SSD1963InitData(0x00); SSD1963InitData(0x00); SSD1963InitData(0xeF); SSD1963InitCommand(0x13); SSD1963InitCommand(0x29); delay_ms(5); }
Kode program ini memang tidak sempurna, masih perlu adanya penyesuaian dan optimalisasi lagi.
Tapi mungkin bagi rekan-rekan yang memerlukan referensi awal, semoga bisa membantu.
Atau mungkin ada rekan-rekan mau juga berbagi kode yang lebih optimal, silahkan...
Tapi mungkin bagi rekan-rekan yang memerlukan referensi awal, semoga bisa membantu.
Atau mungkin ada rekan-rekan mau juga berbagi kode yang lebih optimal, silahkan...
0 comments:
Post a Comment