R
roy_mm
Guest
i have a Nokia 6610/6100 lcd Philips dengan kontrol.i am interfacing dengan atmega32 di 16mhz kristal dan jtag dinonaktifkan.i am winavr menggunakan WinAVR 20080430.
ini adalah kode untuk membuat kotak warnawarni di pusat lcd.
please help me benar dan kode ini saya tulis (atau berkata dimodifikasi dari kode yang tersedia di internet) ----
Kode:# include <avr/io.h>
# include <util/delay.h># define F_CPU 16000000UL# define SPIPORT PORTB
# define SPIDDR DDRB
# define CS 2
# define 3 SDA
# define RESET 4
# define CLK 5# define CBI (reg, sedikit) (reg & = ~ (1 <<bit))
# define SBI (reg, sedikit) (reg | = (1 <<bit))# define CS0 CBI (SPIPORT, CS);
# define CS1 SBI (SPIPORT, CS);
# define CLK0 CBI (SPIPORT, CLK);
# define CLK1 SBI (SPIPORT, CLK);
# define SDA0 CBI (SPIPORT, SDA);
# define SDA1 SBI (SPIPORT, SDA);
# define RESET0 CBI (SPIPORT, RESET);
# define RESET1 SBI (SPIPORT, RESET);# define byte unsigned char
byte n = 0;
byte s1, S2;
byte r, g, b;void sendCMD (byte cmd);
void sendData (byte cmd);
void shiftBits (byte b);
void setPixel (byte r, byte g, byte b);void waitms (int ms)
(
int j;
for (j = 0; j <ms; j )
(
_delay_ms (1);
)
)int main (void)
(
int i;DDRB = 0xFF;SPIDDR = (1 <<SDA) | (1 <<CLK) | (1 <<CS) | (1 <<RESET); / / Port-Arah Setup/ / hardware ulangCS0
SDA0
CLK1RESET1
RESET0waitms (10);RESET1CLK0
SDA1
CLK1waitms (10);/ / Software RESET
sendCMD (0x01);/ / Sleep Out
sendCMD (0x11);/ / Set Constrast
sendCMD (0x25);
sendData (0x3F);/ / Booster ON
sendCMD (0x03);waitms (10);/ / Tampilan inversi pada
sendCMD (0x21);/ / Normal Mode tampilan
sendCMD (0x13);/ / Data pesanan
sendCMD (0xBA);/ / Data Memori akses kontrol
sendCMD (0x36);/ / 8 bit warna
sendCMD (0x3A);
sendData (2);/ / Setup warna tabel
sendCMD (0x2D);sendData (0); / / merah 000 nilai
sendData (2); / / merah 001 nilai
sendData (5); / / merah 010 nilai
sendData (7); / / merah 011 nilai
sendData (9); / / merah 100 nilai
sendData (11); / / merah 101 nilai
sendData (14); / / merah 110 nilai
sendData (16); / / merah 111 nilai
sendData (0); / / hijau 000 nilai
sendData (2); / / hijau 001 nilai
sendData (5); / / hijau 010 nilai
sendData (7); / / hijau 011 nilai
sendData (9); / / hijau 100 nilai
sendData (11); / / hijau 101 nilai
sendData (14); / / hijau 110 nilai
sendData (16); / / hijau 111 nilai
sendData (0); / / biru 000 nilai
sendData (6); / / biru 001 nilai
sendData (11); / / biru 010 nilai
sendData (15); / / biru 011 nilai/ / Nop
sendCMD (0x00);/ / Tampilkan Aktif
sendCMD (0x29);/ / Atur Kolom Alamat
sendCMD (0x2A);
sendData (0);
sendData (131);/ / Halaman Alamat Set
sendCMD (0x2B);
sendData (0);
sendData (131);/ / Menulis beberapa hal (latar belakang)
sendCMD (0x2c);
for (i = 0; i <18000; i )
(
sendData (28); / / 28 adalah hijau
)waitms (200);/ / Mengambil multi-colored persegi di tengah layar
for (i = 0; i <4096; i ) (
setPixel (i, (i% 64) 32, (i / 64) 32);
)sementara (1 == 1)
(
/ / Sekarang menambahkan kode di sini))void shiftBits (byte b) (CLK0
if ((b & 128) = 0) SDA1 lain SDA0
CLK1CLK0
if ((b & 64) = 0) SDA1 lain SDA0
CLK1CLK0
if ((b & 32) = 0) SDA1 lain SDA0
CLK1CLK0
if ((b & 16) = 0) SDA1 lain SDA0
CLK1CLK0
if ((b & 8) = 0) SDA1 lain SDA0
CLK1CLK0
if ((b & 4) = 0) SDA1 lain SDA0
CLK1CLK0
if ((b & 2) = 0) SDA1 lain SDA0
CLK1CLK0
if ((b & 1) = 0) SDA1 lain SDA0
CLK1)void setPixel (warna unsigned char, unsigned char x, unsigned char y)
(
x = 2; / / untuk beberapa alasan dimulai pada 2
sendCMD (0x2B); / / halaman mulai / akhir ram
sendData (x);
sendData (132);
sendCMD (0x2A); / / kolom mulai / akhir ram
sendData ; / / untuk beberapa alasan dimulai pada 2
sendData (131);
sendCMD (0x2C); / / menulis beberapa crat
sendData (warna);
)/ / mengirim data
void sendData (byte data) (CLK0
SDA1 / / 1 untuk param
CLK1shiftBits (data);
)/ / mengirim cmd
void sendCMD (byte data) (CLK0
SDA0 / / 1 untuk cmd
CLK1shiftBits (data);
)
ini adalah kode untuk membuat kotak warnawarni di pusat lcd.
please help me benar dan kode ini saya tulis (atau berkata dimodifikasi dari kode yang tersedia di internet) ----
Kode:# include <avr/io.h>
# include <util/delay.h># define F_CPU 16000000UL# define SPIPORT PORTB
# define SPIDDR DDRB
# define CS 2
# define 3 SDA
# define RESET 4
# define CLK 5# define CBI (reg, sedikit) (reg & = ~ (1 <<bit))
# define SBI (reg, sedikit) (reg | = (1 <<bit))# define CS0 CBI (SPIPORT, CS);
# define CS1 SBI (SPIPORT, CS);
# define CLK0 CBI (SPIPORT, CLK);
# define CLK1 SBI (SPIPORT, CLK);
# define SDA0 CBI (SPIPORT, SDA);
# define SDA1 SBI (SPIPORT, SDA);
# define RESET0 CBI (SPIPORT, RESET);
# define RESET1 SBI (SPIPORT, RESET);# define byte unsigned char
byte n = 0;
byte s1, S2;
byte r, g, b;void sendCMD (byte cmd);
void sendData (byte cmd);
void shiftBits (byte b);
void setPixel (byte r, byte g, byte b);void waitms (int ms)
(
int j;
for (j = 0; j <ms; j )
(
_delay_ms (1);
)
)int main (void)
(
int i;DDRB = 0xFF;SPIDDR = (1 <<SDA) | (1 <<CLK) | (1 <<CS) | (1 <<RESET); / / Port-Arah Setup/ / hardware ulangCS0
SDA0
CLK1RESET1
RESET0waitms (10);RESET1CLK0
SDA1
CLK1waitms (10);/ / Software RESET
sendCMD (0x01);/ / Sleep Out
sendCMD (0x11);/ / Set Constrast
sendCMD (0x25);
sendData (0x3F);/ / Booster ON
sendCMD (0x03);waitms (10);/ / Tampilan inversi pada
sendCMD (0x21);/ / Normal Mode tampilan
sendCMD (0x13);/ / Data pesanan
sendCMD (0xBA);/ / Data Memori akses kontrol
sendCMD (0x36);/ / 8 bit warna
sendCMD (0x3A);
sendData (2);/ / Setup warna tabel
sendCMD (0x2D);sendData (0); / / merah 000 nilai
sendData (2); / / merah 001 nilai
sendData (5); / / merah 010 nilai
sendData (7); / / merah 011 nilai
sendData (9); / / merah 100 nilai
sendData (11); / / merah 101 nilai
sendData (14); / / merah 110 nilai
sendData (16); / / merah 111 nilai
sendData (0); / / hijau 000 nilai
sendData (2); / / hijau 001 nilai
sendData (5); / / hijau 010 nilai
sendData (7); / / hijau 011 nilai
sendData (9); / / hijau 100 nilai
sendData (11); / / hijau 101 nilai
sendData (14); / / hijau 110 nilai
sendData (16); / / hijau 111 nilai
sendData (0); / / biru 000 nilai
sendData (6); / / biru 001 nilai
sendData (11); / / biru 010 nilai
sendData (15); / / biru 011 nilai/ / Nop
sendCMD (0x00);/ / Tampilkan Aktif
sendCMD (0x29);/ / Atur Kolom Alamat
sendCMD (0x2A);
sendData (0);
sendData (131);/ / Halaman Alamat Set
sendCMD (0x2B);
sendData (0);
sendData (131);/ / Menulis beberapa hal (latar belakang)
sendCMD (0x2c);
for (i = 0; i <18000; i )
(
sendData (28); / / 28 adalah hijau
)waitms (200);/ / Mengambil multi-colored persegi di tengah layar
for (i = 0; i <4096; i ) (
setPixel (i, (i% 64) 32, (i / 64) 32);
)sementara (1 == 1)
(
/ / Sekarang menambahkan kode di sini))void shiftBits (byte b) (CLK0
if ((b & 128) = 0) SDA1 lain SDA0
CLK1CLK0
if ((b & 64) = 0) SDA1 lain SDA0
CLK1CLK0
if ((b & 32) = 0) SDA1 lain SDA0
CLK1CLK0
if ((b & 16) = 0) SDA1 lain SDA0
CLK1CLK0
if ((b & 8) = 0) SDA1 lain SDA0
CLK1CLK0
if ((b & 4) = 0) SDA1 lain SDA0
CLK1CLK0
if ((b & 2) = 0) SDA1 lain SDA0
CLK1CLK0
if ((b & 1) = 0) SDA1 lain SDA0
CLK1)void setPixel (warna unsigned char, unsigned char x, unsigned char y)
(
x = 2; / / untuk beberapa alasan dimulai pada 2
sendCMD (0x2B); / / halaman mulai / akhir ram
sendData (x);
sendData (132);
sendCMD (0x2A); / / kolom mulai / akhir ram
sendData ; / / untuk beberapa alasan dimulai pada 2
sendData (131);
sendCMD (0x2C); / / menulis beberapa crat
sendData (warna);
)/ / mengirim data
void sendData (byte data) (CLK0
SDA1 / / 1 untuk param
CLK1shiftBits (data);
)/ / mengirim cmd
void sendCMD (byte data) (CLK0
SDA0 / / 1 untuk cmd
CLK1shiftBits (data);
)