-
Path: news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.chmurka.net!spamtrap.chmurka.ne
t!gophi
From: g...@n...invalid (Adam Wysocki)
Newsgroups: pl.misc.elektronika
Subject: NT7603 i ustawianie adresu DDRAM
Supersedes: <g...@n...chmurka.net>
Date: Wed, 3 Jun 2009 23:08:22 +0000 (UTC)
Organization: news.chmurka.net
Lines: 109
Message-ID: <g...@n...chmurka.net>
NNTP-Posting-Host: 127.0.0.1
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-2
Content-Transfer-Encoding: 8bit
X-Complaints-To: usenet#chmurka.net
NNTP-Posting-Date: Wed, 3 Jun 2009 23:08:22 +0000 (UTC)
X-Accept-Language: pl, en-us, en
X-Face: cH9M7E&=}hx;:1xh~O-@_W%(+nYCoNx6[gzClaf{{5#M@%v@D@3#5[=yv>XO\D?39"SsA~%
:>dyB~`d?;hdxK-'g3?"Mz/4%[j@_MMe8:8B=EUYkc#nqxy<vvbc(@~@|ML,jK%C;z3)gKyR:,QBb3
9PPzM74c>y{6"X`:)D*<j-,~_L`IYzr)@RG_dn
X-Composer: nano 1.3.10
X-User-Uptime: 765547696 seconds
X-Hackerkey: v4sw5/6CHJSU$hw8ln4pr7FOPSU$ck1ma6u7FLNOw2m4l7D$i50Ee5/6t5Xb5en8$a
22Is8MSr1p0/0g8CHOV http://www.hackerkey.com/
User-Agent: tin/1.9.3-20080506 ("Dalintober") (UNIX) (Linux/2.6.26.3-avenger (i686))
Xref: news-archive.icm.edu.pl pl.misc.elektronika:564841
[ ukryj nagłówki ]Hej,
Kupiłem na Allegro takiego LCD-ka:
http://www.allegro.pl/item638225240.html
Jest tam kontroler NT7603, generalnie kompatybilny z HD44780:
http://www.densitron.com/uploadedFiles/Displays/Supp
ort/NT7603.pdf
Problem: Każde ustawienie adresu DDRAM powyżej 40 i poniżej 48 (np. 43)
ustawia go na 40, czyli znak pojawia się na początku drugiej linijki.
Powyżej 48 w ogóle się nie pojawia. Dla pierwszej linijki wszystko jest
w porządku.
Dzieje się tak tylko przy ustawianiu poleceniem 0x80. Inkrementacja
przez wyświetlacz przy zapisie do DDRAM działa ok.
Dostęp jest w trybie 4-bitowym.
Spotkaliście się z czymś takim?
Więcej info, jeżeli komuś chce się wgryzać:
Inicjalizuję wyświetlacz wysyłając bajty:
- 0x00 (dl=0: 4-bit)
- 0x08 (f=0: 5x8, n=1: 2line, dl=0: 4bit)
- 0x06 (i/d:1 increment, s=0: shift off)
- 0x14 (s/c=0: move cursor, r/l=1: right)
- 0x01 (cls)
- 0x02 (home)
- 0x0C (d=1: display on)
Co ważniejsze funkcje (przejrzałem je kilka razy, ale może coś przeoczyłem?).
void lcd_goto(uint8_t x, uint8_t y)
{
send_byte(RS_C, 0x80 + ((y == 1) ? 40 : 0) + x);
}
void lcd_printf(const char *fmt, ...)
{
char buf[17];
const char *p;
va_list ap;
va_start(ap, fmt);
vsnprintf(buf, sizeof(buf), fmt, ap);
va_end(ap);
for (p = buf; *p; ++p)
send_byte(RS_D, *p);
}
static void send_byte(bool isdata, uint8_t byte)
{
send_nibble(isdata, byte >> 4);
send_nibble(isdata, byte & 0x0F);
}
static void send_nibble(bool isdata, uint8_t nibble)
{
i2c_lcd_send(isdata, RW_W, false, nibble);
i2c_lcd_send(isdata, RW_W, true, nibble);
i2c_lcd_send(isdata, RW_W, false, nibble);
// xxx zrobic na busy flag
{
uint16_t i;
for (i = 0; i < 0x3FF; ++i)
__asm__("nop");
}
}
static void i2c_lcd_send(bool rs, bool rw, bool en, uint8_t nibble)
{
uint8_t bytes[2];
bytes[0] = _BV(7); // VDD -> bit7
bytes[0] |= (nibble & _BV(3)) >> 3; // D3 -> bit0
bytes[0] |= (nibble & _BV(2)) >> 1; // D2 -> bit1
bytes[0] |= (nibble & _BV(1)) << 1; // D1 -> bit2
bytes[0] |= (nibble & _BV(0)) << 3; // D0 -> bit3
bytes[0] |= en << 4; // EN -> bit4
bytes[0] |= rw << 5; // RW -> bit5
bytes[0] |= rs << 6; // RS -> bit6
bytes[1] = 0xFF; // unused
i2c_send(SLAVE, bytes, _countof(bytes));
}
Po wypełnieniu wyświetlacza wartościami X i uruchomieniu takiego kodu:
for (i = 0; i < 16; ++i)
{
lcd_goto(i, 0);
lcd_printf("%X", i);
lcd_goto(i, 1);
lcd_printf("%x", i);
}
Pojawia się:
0123456789ABCDEF
7XXXXXXXXXXXXXXX
--
http://www.gophi.pl/
Następne wpisy z tego wątku
- 04.06.09 06:10 adsp
- 04.06.09 12:00 Adam Wysocki
Najnowsze wątki z tej grupy
- Rejestrator temperatur - termopara, siec
- Router LTE z możliwością zmian MTU
- Fajny film widziałem...
- Jaka ładowarka sieciowa do Iphona?
- Taśma izolacyjna do prac elektrycznych
- Recenzja 3.1A ;) w 6 gniazdach...
- Re: Recenzja 3.1A ;) w 6 gniazdach...
- Re: Recenzja 3.1A ;) w 6 gniazdach...
- Re: Recenzja 3.1A ;) w 6 gniazdach...
- Wkrętarki, wiertarki...
- Zasilacz impulsowy 12V 10A, coś godnego uwagi jako zamiennik akumulatora wkrętarki
- Mouser - koszt wysyłki
- [OT] Jak wycinac ksztalt w piance lub styropianie?
- FV--> ciepła woda w kranie
- Szok
Najnowsze wątki
- 2025-07-14 Awaria VM?
- 2025-07-14 Gdańsk => Programista Kotlin <=
- 2025-07-14 Warszawa => Junior Rekruter <=
- 2025-07-14 Warszawa => Specjalista rekrutacji IT <=
- 2025-07-14 Wkłady do zniczy...
- 2025-07-14 Warszawa => Specjalista ds. Sprzętu Komputerowego <=
- 2025-07-14 Re: PO chroniło i chroni policyjnych bandziorów [zawiasy za katowanie obywatela (Poznań czerwiec 2012)]
- 2025-07-14 Warszawa => International Freight Forwarder <=
- 2025-07-14 Warszawa => Recruiter 360 <=
- 2025-07-14 Re: Rz?Âd ZAKAZUJE magazyn?Â?w energii ?!! Nowe prawo od 14 lipca to SZOK! ??Â
- 2025-07-14 Warszawa => Sales Assistant <=
- 2025-07-13 Fałszywe alerty
- 2025-07-12 dlaczego gadacie z tym debilem
- 2025-07-13 Unia Europejska przygotowuje nowy podatek
- 2025-07-13 Unia Europejska przygotowuje nowy podatek