hallo iedereen,
Ik heb een programma geschreven voor 2x16 Char LCD aantesturen via een PIC16F872 met 4 MHz kristal.
Maar het werkt niet! Ik krijg wel dingen te zien op de display maar niet wat er op zou moeten komen!
Heeft iemand ervaring met het HD44780 protocol en ASM ?
Zoja zou je eventueel naar mijn code kunnen kijken om eventueele fouten eruit te halen ?
Informatie:
PORTA,0 --> Enable
PORTA,1 --> R/W
PORTA,2 --> RS
PORTC,0 --> DB0
...
PORTC,7 --> DB7
XTAL=4Mhz
http://www.modfx.be/koengilissen/wekker/wekker.asm
alvast bedankt !
Jeroen Boere
IF you can't convince them, then confuse them!
die code is niet van je eigen ....
hint: werk modulair, probeer eerst eens je lcd iets te laten tonen, en dan je wekker in orde maken, vervolgens de tijd op de lcd toveren...
[Bericht gewijzigd door Jeroen Boere op ]
de Code is wel door mij geschreven!
en dit is enkel de LCD sturing, nog geen andere functies zijn geimplementeerd.
De enige functie die het programma vervult is: KOEN op regel 1 weer geven.
De blok init (line 17 t.e.m. 402) is gewoon initializatie van de PIC. Dit gewoon om er voor te zorgen dat alle sfr's juist staan.
Waarom denk je da ik deze code niet heb geschreven ?
download full in MPLAB 7.50 project: www.modfx.be/koengilissen/wekker/
zal een beetje concreter zijn:
ik denk dat het probleem is: initializatie en Enable
in de datasheet van de HD44780 controller stellen ze dat:
"If the power supply conditions for correctly operating the internal reset circuit are not met, initialization by
instructions becomes necessary."
dus ik heb een stuk initialisation toegevoegd (zie source code) is dit de correcte manier van werken ?
hoe werkt die enable?
mijn manier:
ik clear enable bit (dus LCD zal niet kijken naar data)
ik zet het juist value op PORTA ( controlle bits RS en R/W)
ik zet de juist data op PORTC (DB0...DB7)
dan enable ik de LCD met bsf PORTA,E
deze enable blijft hoog tot de volgende instructie call
Is dit correct ?
http://www.modfx.be/koengilissen/wekker/
mvg Gilissen Koen
kan iemand AUB eens naar mijn code kijken?
ik heb de volledige HD44780 datasheet gelezen en volledig geïmplementeerd.
Alles werkt perfect in MPLAB sim, ik heb ook zitten zoeken naar deadlocks etc... . ik gebruik timer 1 + portB + led (toggle op +/- 0,5 s) om te kijken of mijn pic (eens op breadboard) werkt. Ik ben jammer genoeg niet in het bezit van een ICD2.
Iemand enig idee ?
www.modfx.be/koengilissen/wekker/
alvast bedankt
pros
Prosper, yop la boum, c'est le roi du macadam (aldus Maurice Chevalier)
Op 28 april 2007 17:24:31 schreef Rudebwoy:
ik clear enable bit (dus LCD zal niet kijken naar data)
ik zet het juist value op PORTA ( controlle bits RS en R/W)
ik zet de juist data op PORTC (DB0...DB7)
dan enable ik de LCD met bsf PORTA,Edeze enable blijft hoog tot de volgende instructie call
Is dit correct ?
Koen, van PIC's weet ik geen donder, maar ik kan je wel zeggen dat de LCD-module z'n data inklokt op een neergaande flank van de E-ingang.
Dus:
E hoog
RS en RW juist zetten
Data klaarzetten
E laag
enz...
Koen, van PIC's weet ik geen donder, maar ik kan je wel zeggen dat de LCD-module z'n data inklokt op een neergaande flank van de E-ingang.
Dus:
E hoog
RS en RW juist zetten
Data klaarzetten
E laag
enz...
oké dank je 
Dit is al een 1 probleem van de baan, ik vond dit slecht omschreven in de datasheet. Ik dacht dat het enable signaal meer een CS (chip select) was.
Geldt dit in klokken op de dalende flank van het Enable signaal ook voor andere instructies of enkel voor read en write ?
met andere instructies bedoel ik :
Clear Display
Return Home
entry mode set
Display on/off control
Function set
enz... ?
Is de enable wel nodig bij deze signalen ?
MVG Koen
pros
Prosper, yop la boum, c'est le roi du macadam (aldus Maurice Chevalier)
Op 30 april 2007 19:25:24 schreef Rudebwoy:
Geldt dit in klokken op de dalende flank van het Enable signaal ook voor andere instructies of enkel voor read en write ?met andere instructies bedoel ik :
Clear Display
Return Home
entry mode set
Display on/off control
Function set
enz... ?Is de enable wel nodig bij deze signalen ?
Voor RS en R/W kijkt de HD44780 enkel naar het niveau (laag of hoog). Die moeten bijgevolg stabiel zijn, voor E van hoog naar laag gaat.
Verder worden instructies net zo verwerkt als het doorgeven van data, met 1 verschil: "Clear Display" en "Return Home" nemen 1.64mS in beslag, terwijl de rest niet meer dan 40µS in beslag neemt. Als je de Busy-flag pollt, hoef je daar geen rekening mee te houden. Het wordt echter belangrijk, als je R/W permanent met GND verbindt en zelf vertragingen inbouwt - dat is wat ik meestal doe, het spaart je een signaallijn.
Op http://www.eio.com/datashet.htm kan je een redelijk uitgebreide datasheet van de HD44780 inkijken. Beslist de moeite waard!