hallo,
wij zijn voor school bezig met een onderzoek hoe een lcd display aangestuurd word.
wij hebben een LCD HD44780 die wij aansturen met een ATmega8515 atmel processor.
wij hebben de aansluiting al kunnen vinden maar zitten met het probleem dat er in de initialisatie iets fout gaat.
en wij kunnen dit probleem niet vinden.
wij gebruiken het software pakket avr studio.
als er iemand is die weet hoe wij dit op kunnen lossen en uitijdenlijk iets op het scherm kunnen weergeven horen wij het graag.
onze leraren weten het namelijk ook niet:S:S
MVG 2 hopelose studenten.
HBontekoe
iets zonder duidelijke functie is vaak meer waard als iets nuttigs...
post de code is tussen [code ] [/code ] tags.. dat kijkt al makkelijker..
is het een error van avr studio zo ja.. geef even aan waar die staat..
is het een ander probleem probeer het is te omschrijven.
beetje meer input is nodig om het hele zootje aan de gang te krijgen hoor
in de datasheet staat iets zoals :
Initializing by Instruction
kijk daar eens bij. Dan moet je wel oplettel wat voor interface je gebruikt (4 of 8 bit datalijnen).
Ik heb eventueeel een heeeeeel erg simpel voorbeeld, maar dan voor een PIC. lijkt veel op elkaar, alleen moet je i.p.v. TRIS PORT gebruiken....
edit:
en kijk goed bij de timing diagrammen. Meestal moet je de enable hoog maken, data op de poort zetten, en vervolgens de enable laag maken.
[Bericht gewijzigd door Mitchell S op ]
Roland van Leusden
It's the rule that you live by and die for It's the one thing you can't deny Even though you don't know what the price is. It is justified.
Google stuk ?
2 sec, zoektermen: LCD HD44780 ATmega8515, 3de hit:
Op 22 mei 2007 11:11:26 schreef Roland van Leusden:
Google stuk ?2 sec, zoektermen: LCD HD44780 ATmega8515, 3de hit:
tis idd zo dat er heel veel info te vinden is over de HD44780 driver gestuurde displays...
ja er is inderdaat veel over te vinden.
we krijgen ook wel iets op het display maar dat is maar voor heel kort.
we gebruiken de 8 bits mode
we hebben al een beetje gevonden over de initialisatie maar het lukt niet op iets op het scherm te krijgen het ligt aan het programma er zit geen fout in maar we krijgen gewoon niets op het display
Glazen bol is stuk.
Post eens wat je aan code hebt (zo is het lastig schieten) en hoe je LCD aan je AVR hangt (dat kan soms ook nog verhelderend werken). Wat voor een LCD is het? 1x8? Zo is het redelijk hopeloos met hopeloze studenten.
'Niets op het scherm' duidt op een hardware probleem. Bij een ongeinitialiseerde 44780 heb je blokjes op de bovenste regel.
heb je je contrast potmeter wel eens gedraaid. Dit is namelijk redelijk gevoelig. Dus draai eens aan de potmeter en kijk wat er gebeurd....
ik ben dan toch niet helemaal duidelijk geweest:S:S
het is een 1 regel display van 40 tekens.
maar ik heb wel beeld de standaard blokjes als ik aan de contrast draai.
maar zodra ik mijn programma start gebeurd er niets de zwarte blokken blijfen.
het lcd hangt rechtstreeks op de atmel op poort B voor de data bus (8 bit) en poort C voor de stuur sygnalen.
als initialisatie heb ik het volgende
init_lcd:
rcall delay
ldi temp,$FF ; temp :=00 hex
out portC,temp ; stuur temp naar poort C
ldi temp,$CF ; temp :=30 hex
out portB,temp ; stuur temp naar poort B
rcall delay
ldi temp,$FF ; temp :=00 hex
out portC,temp ; stuur temp naar poort C
ldi temp,$CF ; temp :=30 hex
out portB,temp ; stuur temp naar poort B
rcall delay
ldi temp,$FF ; temp :=00 hex
out portC,temp ; stuur temp naar poort C
ldi temp,$CF ; temp :=30 hex
out portB,temp ; stuur temp naar poort B
ldi temp,$FF ; temp :=00 hex
out portC,temp ; stuur temp naar poort C
ldi temp,$CF ; temp :=30 hex
out portB,temp ; stuur temp naar poort B
ldi temp,$FF ; temp :=00 hex
out portC,temp ; stuur temp naar poort C
ldi temp, $F7 ; temp :=08 hex
out portB,temp ; stuur temp naar poort B
ldi temp,$FF ; temp :=00 hex
out portC,temp ; stuur temp naar poort C
ldi temp,$FE ; temp :=00 hex
out portB,temp ; stuur temp naar poort B
ldi temp,$FF ; temp :=00 hex
out portC,temp ; stuur temp naar poort C
ldi temp,$F8 ; temp :=07 hex
out portB,temp ; stuur temp naar poort B
ik hoop dat het zo iets duidelijker te begrijpen is.
maar toch al vast bedankt voor de hulp:D:D
HBontekoe
iets zonder duidelijke functie is vaak meer waard als iets nuttigs...
tering... wat een zooi..
[code ] tags gebruiken [/code ]
Post ook de rest van de code want dit is niet alles..
en hebben jullie nooit geleerd om bit benamingen te gebruiken.
.equ E = PB4 ;LCD Enable
.equ RW = PB6 ;LCD Read Write
.equ RS = PB5 ;LCD Register Select
.equ PWM = PB7 ;LCD Contrast adjust using PWM
.equ BF = PC7 ;LCD Busy Flag
;button quicklinks
.equ btn_menu = PA0
.equ btn_right = PA1
.equ btn_left = PA2
.equ btn_up = PA3
.equ btn_down = PA4
;button port quicklinks
.equ btn = PinA
.equ DDRbtn = DDRA
.equ btnPort = PortA
;data port quicklinks
.equ dispdata = PortC
.equ DDRdata = DDRC
.equ Pindata = PinC
;control port quicklinks
.equ dispcont = PortB
.equ DDRcont = DDRB
.equ Pincont = PinB
;register quicklinks
.def charactar = r0
.def buffer = r16
.def counter = r17
.def temp = r18
.def move = r19 ;Move register to store data of line to write r20
.def move2 = r20 ;Move register to store data of line to wirte r19
zoiets..
[Bericht gewijzigd door HBontekoe op ]
big bang
Niets is zo eerlijk verdeeld als verstand: iedereen denkt er genoeg van te bezitten
Hela zeg, ik zie alleen Load immediates (ldi) en Out instructies. Zoek en lees eens een datasheet van een display dat op die Hitachi HD44780 gebaseerd is.
Het eerste wat dan opvalt is dat ALVORENS er iets gestuurd mag worden de BUSYBIT moet afgevraagd worden om te checken dat de displaycontroller wel op dat moment in staat is gegevens te ontvangen en verwerken.
Maar gewoon data blijven inproppen haalt niks uit.
En u houden aan de beschreven initialisatieroutines.
- - big bang - -
Jasper
Ik weet niet of je er nog mee bezig bent, maar ik vond deze link.
Je moet het een beetje aanpassen ivm de processor, maar in grote lijnen is het bruikbaar.
http://www.avrbeginners.net/interfacing/44780_lcd/m8_lcd_4bit.asm
Gr. Ernst