Hitachi LCD probleem

Ik heb een LCD-display gekocht van onderstaande website voor een Digtal Read Out voor de draaibank. Daar zit een hiaat in bij de adresiring van de display, deze loopt niet normaal door, maar is als twee regelig opgebouwd.

formatting link

Dit is een standaard 1 regel * 16 tekens LCD display, controller is S6A0069 (of compatible, compatible met HD44780), zonder verlichting. Let op: de character addressen zijn 0x0..0x7, 0x40..0x47, oftewel positie 8 zit waar bij meer-regelige displays regel 2 begint.

Ik krijg in mijn code de laatste 8 karakters niet te zien en de eerste 8 karakters als blokjes.

formatting link
Mijn vermoeden is dat de timing niet correct is (de blokjes ipv karakters) en dat het adres voor de tweede 8 karakters (rechts is blank) Wie kan / wil me helpen ?

--
CU, Rob

www.modelbouw.gompy.net
Skype: gompy-akm2
Reply to
Rob / gompy.net
Loading thread data ...

Helaas niet de tijd om je code helemaal te bestuderen en m'n PIC asm is ook wat roestig. ;-)

Die controllers zijn idd retetraag, dus busy flag checken, setup/hold tijden in de gaten houden. Ik neem aan dat je de datasheet van de controller hebt en je kunt ook die van de compatabile samsung KS0066U er bij pakken.

Let op juiste initialisatie in 4 of 8 bit mode. Tijdens de init moet je her en der lange pauzes inlassen omdat de busy flag dan nog niet werkt. Zet ook correcte aantal display lijnen en font (Function Set).

Houd rekening met die display gap, of schrijf desnoods even het hele RAM vol om te testen of je iets krijgt. Test eerst eens zonder die bin/ascii omzetting en schrijf vaste waarden, dan kun je evt. fouten daar uitsluiten.

Zorg ook voor de juiste bias spanning (of doet het display dat zelf?), anders zie je helemaal niets. Als ie afstelbaar is, eerst opdraaien tot alle vlakjes donker worden en dan zover terug dat de onbeschreven vlakjes weer onzichtbaar worden.

En controleer natuurlijk alle verbindingen en evt. de signalen met een scoop.

--
Stef    (remove caps, dashes and .invalid from e-mail address to reply by mail)

Whom computers would destroy, they must first drive mad.
Reply to
Stef

Aanvulling: Voor dit 16*1 display is het gezien het startadres van teken

8 t/m 16 waarschijnlijk dat dit display in feite een 2-regelig display is met 2 regels van 8 achter elkaar geplaatst. Dus stel dat eens in.
--
Stef    (remove caps, dashes and .invalid from e-mail address to reply by mail)

Do Miami a favor.  When you leave, take someone with you.
Reply to
Stef

het is maar een tip.... Bij "vandijkenelectronica " koop je voor 3,95 een 2x16 met led backlight Standaard Controller : Hitachi 44780 datasheets bijgeleverd bespaard misschien wat debug uurtjes met een exotisch display

Read

S6A0069

8
Reply to
Stendec=stardust

Ik zie dat t een bestaand ontwerp is van Peter S. . De kans is idd groot dat de timing van jouw LCD buiten de ontwerpregels van hem vallen. Het is misschien t proberen waard om wat code te schrijven die alleen wat simpele text naar de lcd stuurt en te experimenteren met het Function Set register met name : N 0=1/8 or 1/11 Duty (1line) 1=1/16 Duty (2lines) DL=0 (4bits) dus in de Init geen 20h maar 28h Ik weet wel dat die LCD's een behoorlijke init time nodig hebben,probeer dat te verhogen...

there should be no risk, but there's still Murphy.

Reply to
Stendec=stardust

"Rob / gompy.net" schreef in bericht news:geno91$2dq$ snipped-for-privacy@bozweb.net...

Beide alvast bedankt voor de sugesties. Ik heb het demo'tje geschoten van

formatting link
Dit zou zowel op een één lijnige (16x1) als twee lijnige (16x2) display moeten werken geizen de adressering (x40).

LINE2 ;by selecting DDRAM address = 0x40 in case of 16x4 line LCD, see datasheet of HD44780 MOVLW B'11001000' ; x40 = line 2 = 1100 MOVWF PORTB BCF PORTB,BIT_E MOVLW B'00001000' MOVWF PORTB BCF PORTB,BIT_E RETURN

Ik krijg HELLO WO te zien en niet HELLO WORLD!, terwijl de adressering in in bovenstaande code wel goed is.

Let op: de character addressen zijn 0x0..0x7, 0x40..0x47, oftewel positie 8 zit waar bij meer-regelige displays regel 2 begint.

Langzaam begin ik het gevoel te krijgen dat de display een probleem heeft bij de rechtse 8 karakters..... Kan iemand mij aan een stukje code helpen, bv 16 blokjes - hoeft geen txt te zijn zodat ik de display *hard* kan testen. Op het gebied van LCD-displays ben ik een *nono* en zou niet weten waar te beginnen.

--
CU, Rob

www.modelbouw.gompy.net
Skype: gompy-akm2
Reply to
Rob / gompy.net

Ik zou toch zeggen dat je de datasheet nog eens goed moet lezen en eens spelen met de instellingen (met name Function-Set reg). Kant en klaar stukje code heb ik helaas niet voor je. Laatse HD44780'achtig display dat ik gebruikt had had een SPI interface en code was in C.

Gebruik je overigens RA4 van de PIC als output? Dat is een open drain en voor hoog heb je dus een externe pull-up nodig.

--
Stef    (remove caps, dashes and .invalid from e-mail address to reply by mail)

The man who sees, on New Year's day, Mount Fuji, a hawk, and an eggplant
is forever blessed.
		-- Old Japanese proverb
Reply to
Stef

"Stef" schreef in bericht news:8682f$49108751$54f63171$ snipped-for-privacy@publishnet.news-service.com...

Het schema

formatting link

--
CU, Rob

www.modelbouw.gompy.net
Skype: gompy-akm2
Reply to
Rob / gompy.net

positie

karakters)

in

8

te

Misschien helpt dit :

formatting link

er zijn dus displays die van 00h..0Fh adresseerbaar zijn en lcd's die dit splitsen in 00h..07h en de "2e regel" op 40h..47h

die van jou doet dus kennelijk

00h..07h linkse 8 chrs 40h..47h rechtse 8 chrs denk ik... het function set krijgt iig de waarde 28h N=1 ipv 20h in jouw code (rpm) Als je hiermee wat test en je krijgt de goeie text erop weet je dat je er 40h bij moet tellen om het rechtse deel aan te spreken. Kijk ook eens naar de init time die is van die testcode al 127msec , en ik denk in de rpm veel minder zo op t eerste gezicht. 200 * xdelay100 (100microsec) is 20msec en dat is echt te weinig. uit de datasheet : wachttijd initialisatie 30ms+40ms=70ms after power on. Er valt me nog iets op en dat is dat op t moment van power up staat de display in 8 bit mode en is de busyflag niet te lezen terwijl die wel uitgelezen wordt in de Check_BF zonder dat daar een wachttijd van 5msec aanvooraf is gegaan. Dus heeft het display wel de tijd gekregen om om te schakelen naar 4 bit mode en de busyflag "actief" te maken?

MOVLW 0x20 ; Set datalength to 4, 1 line, 5x7 font CALL Send_Cmd ;

Send_Cmd MOVWF Cmd ; Put command byte in Temporary variable CALL Check_BF ; Check if LCD is ready ik weet niet of dat kritisch komt .

groeten Hein

Reply to
Stendec=stardust

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.