RES
RES
Als ik een 1x16 LCD heb geinitialiseerd, zou ik dan meteen een cursor moeten zien aan de linker kant? (ik zie 8 blokken tot op heden, doet verder niks)
ldi temp, 0b00001110 ;display ON, cursor ON
Klopt dit ? Deze function set doe ik als laatste na init, je zou verwachten dat je een cursor te zien krijgt ?
R
Maledicantur thylie iuxta viam posite
Om zeker te zijn kunt ge beter álle instructies doorsturen (8 of 4 bit interface, display shift...)
(1) Display Clear
(2) Function Set
DL = 1 : 8-bit interface data
N = 0 : 1-line display
F = 0 : 5x7-dot character font
(3) Display On/Off Control
D = 0 : Display Off
C = 0 : Cursor Off
B = 0 : Blink Off
(4) Entry Mode Set
I/D = 1 : +1 (Increment)
S = 0 : No Shift
Ik neem even aan dat je een hd44780 compatbile display hebt.
Het is normaal dat de eerste regel voorzien wordt van blokjes als je hem aanzet zonder het schermpje te initialiseren. Op het moment dat je opdrachten gaat geven zonder dat het scherm (goed) is geinitialiseerd gaat het schermpje inderdaad rare dingen doen, rare tekens, cursor schiet alle kanten op behalve de goede enz.
Het is dus zaak eerste het schermpje goed te initialiseren, dit doe je als volgt: (ik doe dit in 4-bit modus, scheelt je weer een paar datalijnen)
In 4 bit's mode moet je de hoogste nibbel aansturen(dus db4, db5, db6 en db7)
1. Het eerste dat je doet is drie maal 0011(db4=1, db5=1, db6=0 db7=0) op de datalijnen zetten. Tussen elke 0011 die je verstuurt moet zo'n 5ms pauze zitten.
2. Als je dit gedaan hebt zet je het schermpje in vier bits mode. Dit doe je door het comande 0010 te sturen.
3. Nu kun je aan de gang met je instellingen, bijvoorbeeld 0b00001110 enz.
Nu is je schermpje geinitialiseerd. Je kunt nu heel gemakkelijk tekens op het scherm zetten. Gewoon de ascii code doorsturen, er zijn ook wat speciale tekens.(die zul je moeten opzoeken in een datasheet van de hd44780)
Nog even een opmerking omtrent het sturen van de data, je moet het enable signaal van laag naar hoog zetten op het moment dat je een nibble verstuurt naar het schermpje. Je moet twee nibble's versturen om een byte te versturen.(logisch natuurlijk) Je stuurt eerst de hoge nibble en dan de lage nibble.
(Nog een dingetje, als je een opdracht verstuurt moet het r/s signaal laag zijn, verstuur je data(letters die op het scherm moeten komen) dan moet je r/s signaal hoog zijn.)
Ik hoop dat het zo wat duidelijker is geworden. 
edit: Ik heb het gevoel dat ik altijd nét te laat ben 
R
Maledicantur thylie iuxta viam posite

Om alle instructies en mogelijkheden onder de knie te krijgen zou ik iedereen aanbevelen om een LCD aan te sturen via de printerpoort en VB ofzo.
Men heeft dan zelfs geen voeding nodig, de stroom is zó klein dat het ding via een hoge lijn aangestuurd kan worden.
Op 18 mei 2004 09:22:33 schreef R:
Om alle instructies en mogelijkheden onder de knie te krijgen zou ik iedereen aanbevelen om een LCD aan te sturen via de printerpoort en VB ofzo.
Men heeft dan zelfs geen voeding nodig, de stroom is zó klein dat het ding via een hoge lijn aangestuurd kan worden.
Het is toch wel aan te raden een voeding aan te sluiten. Je krijgt namelijk niet echt contrast rijk beeld. Bovendien vraag ik me af of het wel goed is voor zo'n schermpje om voeding te krijgen via zijn datalijnen(die zijn bedoelt voor data niet voor voeding, toch?)
Wat je zegt over die printerpoort, helemaal mee eens. Ik heb een zaterdagje in pascal zitten klieren. Toen had ik hem door.(Het schermpje) 
Hoe kun je de LCD dan het best aansluiten op een LPT poort data lijnen zijn geen probleem rest wel ? Aanstuuring zal wel lukken , ben aardig bedreven in het schijven in pascal, basic en c++ en een beetje assembler kan ik ook wel.
PS. Voeding heb trek ik gewoon uit m'n pc (rode en zwarte draad op de display = 5v ).
[Bericht gewijzigd door Dominic op ]
RES
RES
Dit zie ik nu:
Ik zit dus op 8-bit interface (raadde men mij aan hier op CO, 4-bit komt nog wel es) Ben nog een newbie hierin, maar ik leer snel. Het begint al wat te werken, er is hoop.
Alleen die cursor staat nog verkeerd. Ok ik zal alle dingen erheen sturen, es kijken....
Hm, als ik blink cursor erbij doe (bit=1) dan gaat er een blok knipperen en die cursor op twee verschillende plekken. in het eerste blok (links een blok dat knippert), in twee blok (rechts) een cursor die gelijktijdijg mee knippert.
RES
RES
Ik heb de cursor nu Home (dus helemaal links), probeer ik vervolgens een 0 ervan te maken lukt dat niet (met RS=1)
Ik blijf die cursor zien.
Bastiaan
Bachelor of Engineering -- Microcontrollers AVR, PIC (asm, C), PC applicaties (C, C++), Webpages (HTML, CSS, PHP, SQL), Rail-infra engineer
Op 18 mei 2004 11:48:41 schreef RES:
Ik heb de cursor nu Home (dus helemaal links), probeer ik vervolgens een 0 ervan te maken lukt dat niet (met RS=1)
Ik blijf die cursor zien.
Een nul op je lcd sturen doe je door idd RS 1 te maken. En als data 0x30 te sturen, want 0x30 is de hex waarde van een ASCII 0.
Op 18 mei 2004 09:13:13 schreef Simon Koudijs:
Nog even een opmerking omtrent het sturen van de data, je moet het enable signaal van laag naar hoog zetten op het moment dat je een nibble verstuurt naar het schermpje.
Ehm, volgens mij geeft de datasheet aan dat het een high-to-low flank is en niet andersom.
[Bericht gewijzigd door Bastiaan op ]
R
Maledicantur thylie iuxta viam posite
Op 18 mei 2004 09:55:53 schreef Simon Koudijs:
[...]Het is toch wel aan te raden een voeding aan te sluiten. Je krijgt namelijk niet echt contrast rijk beeld. Bovendien vraag ik me af of het wel goed is voor zo'n schermpje om voeding te krijgen via zijn datalijnen(die zijn bedoelt voor data niet voor voeding, toch?)
Maakt toch niet uit, LPT kan 10mA leveren, en daar komt ge NOOIT aan (tenzij ge achtergrondverlichting gebruikt natuurlijk).
Ge kunt dan gewoon een van de 4 bidirectionele lijnen gebruiken (hoog zzetten). Dan hoeft ge uw datalijnen niet meer te "masken", die zijn dan vrij te gebruiken.
RES
RES
Wat is het verschil tussen Entry mode en Cursor or Display shift ? Want hoe krijg ik die cursor op een andere plek ?
Assign cursor moving direction and
enable the shift of entire display
Set cursor moving and display shift
control bit, and the direction, without
changing of DDRAM data
Verwarrend. Alleen krijg ik geen ASCII afgebeeld.
0x30 erheen en ik blijf die cursor zien.
R
Maledicantur thylie iuxta viam posite
Op 18 mei 2004 13:00:16 schreef RES:
Wat is het verschil tussen Entry mode en Cursor or Display shift ? Want hoe krijg ik die cursor op een andere plek ?Assign cursor moving direction and
enable the shift of entire displaySet cursor moving and display shift
control bit, and the direction, without
changing of DDRAM dataVerwarrend. Alleen krijg ik geen ASCII afgebeeld.
0x30 erheen en ik blijf die cursor zien.
Moet ge u niks van aantrekken. Gewoon het lijstje afgaan zoals in de datasheets staat.
Shift is wanneer uw karakters over het scherm schuiven, omdat het zichtbaar gedeelte kleiner is dan het geheugen en men zodoende het bereik van het zichtbaar gedeelte (16 karakters) over het geheugen kan schuiven.
DDRAM is het geheugen waarin uw data (dus karakters) staat.
Weet ge zeker of uw timing correct is? Is uw aansturing niet te snél? (Check uw busy vlag!!!!)
Wanneer ge een karakter wilt doorsturen is uw RS dan wel HOOG?
R/W kunt ge vast aan de massa leggen, tenzij ge uit uw LCD wilt lezen.
RES
RES
Moet ik niet als eerste de Function set uitvoeren ? (dat doe ik nu)
Om een karakter op beeld te toveren, heb ik daarbij een van bovenstaande instructies nodig ? En moet de cursor uit staan om een karakter af te beelden ?
Dus het kan zijn dat het karakter ophalen wel werkt, alleen staat het uit beeld. (ik check de BusyFlag ook)
Wat ook vreemd is is een knipperende cursor, de cursor knippert helemaal niet, maar er knippert een blok, de cursor blijft gewoon in beeld staan (Home, links)
[edit]
Ik heb nu de DDRAM adres op 0 gezet vervolgens een 0 (0x30), ik zie nu een 0 (met rechts ernaast de knipperende cursor) Alleen moet ik veel resets geven om die 0 in beeld te krijgen, er klopt nog iets niet.
[Bericht gewijzigd door RES op ]
Meet eens met een multimeter op ohm-stand of alle datalijnen wel goed aangesloten zitten, anders kun je ook rare problemen krijgen!
Gerwin
An amplifier is just a modulator for a power supply |Toffe Gebruiker
in welke taal is het en welk type PIC? dan kan ik een test programma maken in basic
(ook handig: op welke pinnen zitten alle aansluitingen)
Op 18 mei 2004 12:43:45 schreef Bastiaan:
[...]
Ehm, volgens mij geeft de datasheet aan dat het een high-to-low flank is en niet andersom.
Je hebt helemaal gelijk, ik was er niet helemaal bij denk ik. 
Bastiaan
Bachelor of Engineering -- Microcontrollers AVR, PIC (asm, C), PC applicaties (C, C++), Webpages (HTML, CSS, PHP, SQL), Rail-infra engineer
Op 18 mei 2004 16:10:38 schreef Simon Koudijs:
[...]
Je hebt helemaal gelijk, ik was er niet helemaal bij denk ik.
Geeft niks, alleen het is wel een belangrijk detail, heel belangrijk 
RES
RES
Weer een stomme fout gemaakt
vergeten RW hoog te maken terwijl ik BF wilde lezen. Nu werkt het perfect.
Ja, is een Atmelletje (AT90S2313)
Nu maar weer verder puzzelen..... hartelijk dank.
Even een vraagje tussendoor. Klopt het dat ik de LCD zoals aangeven in de onderste tabel kan aansluiten op de LPT poort. LCD heeft een HD44780.
--- LCD ----------- LPT
1 GND ------18 t/m25 GND
2 +VCC ------ +5 UIT PC ZELF
3 Vco ------ met 10k pot aan GND
4 RS ------ 16 INITIALIZE
5 R/W ------ 1 STROBE
6 CE ------ 17 SELECT INPUT
7 D0 ------ 2 DATA 0
8 D1 ------ 3 DATA 1
9 D2 ------ 4 DATA 2
10 D3 ------ 5 DATA 3
11 D4 ------ 6 DATA 4
12 D5 ------7 DATA 5
13 D6 ------ 8 DATA 6
14 D7 ------ 9 DATA 7
edit : bijgewerkt
[Bericht gewijzigd door Dominic op ]
RES
RES
--- LCD ----------- LPT
1 GND ------18 t/m25 GND
2 +VCC ------ +5 UIT PC ZELF
3 RS ------ 16 INITIALIZE
4 R/W ------ 1 STROBE
5 CE ------ 17 SELECT INPUT
6 D0 ------ 2 DATA 0
7 D1 ------ 3 DATA 1
8 D2 ------ 4 DATA 2
9 D3 ------ 5 DATA 3
10 D4 ------ 6 DATA 4
11 D5 ------7 DATA 5
12 D6 ------ 8 DATA 6
13 D7 ------ 9 DATA 7
Dit klopt niet.
Want 3 is Vco, daarop moet een 10k pot. (contrast)
Dus het schuift op t/m 14. (14 is D7 - 9 data 7)
Ik weet niet wat initialize, strobe en select input is van een LPTx poort.
RES
RES
Over de LCD, ik ben eruit. Ik moet als ik een karakter op de rechterhelft wil afbeelden de cursor op 0x40 zetten.
1x16 is 8+8.