hallo,
ik heb een nieuw LCD scherm besteld bij farnell en wil deze aansturen met een atmega 16.
Ik heb de LCD aangesloten volgens de datasheet (sheet)
en dit is de interface die ik voor de lcd gebruik.
En met dit programa stuur ik het aan in bascom:
$regfile = "m16def.dat" ' specify the used micro
$crystal = 12000000 ' used crystal frequency
'$baud = 19200 ' use baud rate
$hwstack = 32 ' default use 32 for the hardware stack
$swstack = 10 ' default use 10 for the SW stack
$framesize = 40 ' default use 40 for the frame space
Config Lcdpin = Pin , Db4 = Porta.4 , Db5 = Porta.3 , Db6 = Porta.2 , Db7 = Porta.1 , E = Porta.5 , Rs = Porta.7
Config Lcd = 20 * 4
Porta = 255 'configure lcd screen
Do
Cls 'clear the LCD display
Lcd "Hello World"
Waitms 1000 'display this at the top line
Lowerline 'select the lower line
Lcd "Hij Doet het!!"
Waitms 1000
LoopDe reden dat ik porta=255 erin heb staan is dat anders het backlight niet aan wil gaan.
Dit programma heb ik uit de bascom sample index.
Het probleem is nu dat er ene keer wel tekst komt en de andere keer niet. en als er tekst komt zijn dit allemaal vage tekens en lopen van links naar rechts.
nu zit ik wel met iets wat ik niet zeker weet. ik stuur het lcd aan met 4 bits. en dat zijn bits 4t/m7 bit 0t/m3 gebruik ik ergens anders voor. maar dit moet toch goed zijn als ik de hoogste bits (4t/m7) aanstuur?
heb een 2 regel lcd liggen en die doet het wel gewoon.
als er nog info mist hoor ik dat graag.
had de search al gebruikt maar kon dit specifieke probleem niet zo vinden.
wie kan mij verder helpen?
Ik zou eens beginnen met ipv die PORTA=255 enkel de backlight bit aan te zetten.
Ik weet niet of die lcd library daarop let, maar mogelijk zet je nu de read bit aan, en zet die lcd lib die niet uit.
Dus dan wordt het voor de backlight
PortA= $B00000001
De read/write is pootje 5 en deze hang aan de GND. dus als ik hem hoog maak ( 5V) dan maak ik een soort van sluiting erop toch ?
Kan het momenteel niet testen ( lcd ligt ergens anders) maar zal dit morgen eerst proberen. zijn er verder nog dingen die ik kan aanpassen ?
[Bericht gewijzigd door gforse op (25%)]
Wouter van Ooijen
Wouter van Ooijen: VOTI webwinkel, docent HvU (Technische Informatica); C++ on mictrocontrollers blog
Op 8 december 2010 17:23:08 schreef gforse:
Ik heb de LCD aangesloten volgens de datasheet (sheet)
Ik zou die weerstand van 1M maar weghalen (instelpot direct aan +5V).
Waitms 500
Voor je Cls zetten, het display heeft even tijd voor initialisatie nodig.
Hou R/W aan de Gnd, sommige displays kunnen slecht tegen een hoge R/W terwijl er naar het display wordt geschreven.
Op 8 december 2010 19:38:43 schreef gforse:
is die dan nog wel fijn instelbaar ? zie niet in de datasheet wat de backlight mag hebben maar neem aan 5V toch ? en dan instelbaar van 0-5v kan ik de sterkte instellen ?
Dat gaat prima tussen 0-5V.
[Bericht gewijzigd door Henry S. op (40%)]
R/W zit aan de ground. ( pen 5) denk dat het ook een probleem gaf omdat ik Porta= 255 maakte. daardoor kwam er dus een GND of 5v op pen 5 te staan. zal morgen is testen.
Wat betreft die weerstand weglaten is die zozeer nodig? het contrast kan ik nu goed instellen, dat werkt gewoon. ( moet de potmeter wel bijna voluit zetten)
heb nu de volgende code gebruikt maar nog steeds geen resultaat.
$regfile = "m16def.dat" ' specify the used micro
$crystal = 12000000 ' used crystal frequency
'$baud = 19200 ' use baud rate
$hwstack = 32 ' default use 32 for the hardware stack
$swstack = 10 ' default use 10 for the SW stack
$framesize = 40 ' default use 40 for the frame space
Config Lcdpin = Pin , Db4 = Porta.4 , Db5 = Porta.3 , Db6 = Porta.2 , Db7 = Porta.1 , E = Porta.5 , Rs = Porta.7
Config Lcd = 20 * 4
Porta = $b00000001 'configure lcd screen
Do
Waitms 500
Cls 'clear the LCD display
Lcd "Hello World"
Waitms 1000 'display this at the top line
Lowerline 'select the lower line
Lcd "Hij Doet het!!"
Waitms 1000
LoopIk zie dat je poort A gebruikt, heb je de ADC wel correct geconfigureerd zodat deze geen roet in het eten gooit?
En moet je niet ergens aangeven dat je die pinnen als uitgang wilt gebruiken? DDR register of zo?
Red-E
Gr. Red-E || There are only 10 types of people in the world. Those who understand binary, and those who don't ||
Nee hoeft niet... als het LCD in 4 bit modus staat negeert hij de data op de overige 4 pinnen...
dus als die zweven is er niets aan de hand...
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
als het LCD in 4 bit modus staat negeert hij de data op de overige 4 pinnen...
Dat geldt zeker niet voor alle displays. Bij sommigen moeten ze echt aan Gnd. (Init gebeurt in 8 bit mode)
bedankt voor de reactie's!
vandaag gemeten met de scoop en alle signalen komen binnen. wat me wel was opgevallen met een ander lcd ( ander type/merk) is dat deze de 4bits die niet gebruikt worden (1ste 4) dan pult upt naar de 5v. verder was er geen verschil te zien.
wat betreft ADC, deze moet ik apart instellen om ze te gebruiken standaard zijn ze niet actief. dus is het een simpele I/O poort.
en de pinnen worden al geconfigureerd bij ConfigLCD, dus dat staat goed.
kan nog proberen de pinnen aan de GND te hangen morgen en hopen dat dat helpt.
verder nog suggestie's ?
na nogmaals alles te controleren zowel met de scoop als multimeter, en nog is verschillende test programma's kom ik er nog steeds niet uit. alles werkt naar behoren, nergens sluiting en alle signalen komen netjes aan. ook heb ik 2 andere LCD schermen dr aan gehad die het wel deden, dit waren een 16x2 en 20x4 display met blauwe backlight en witte letters. het schermpje wat ik nu heb is 20x4 en zwarte letters en groenen achtergrond.
Maar goed, uit de hardware check blijkt dus dat alles oke zit. alles is aangesloten volgens het hierboven schema en datasheet. ook ik bascom is de pinout goed genummerd.
is er iets wat ik over het hoofd zie? of heeft dit lcd scherm nog een extra aansturing nodig ? ik kom niet echt verder meer en Google en de search word ik niet veel wijzer van...
zal nog iets duidelijker maken
ik krijg wel tekst te zien maar dat zijn alleen maar rare symbolen die door blijven lopen. wat me ook opvalt is dat het alleen de 1ste en 3de regel is die dan word weer gegeven.
het contrast kan ik wel goed instellen.
rew
four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/
Op 9 december 2010 13:16:00 schreef Arco:
[...]
Dat geldt zeker niet voor alle displays. Bij sommigen moeten ze echt aan Gnd. (Init gebeurt in 8 bit mode)
Ja, zoiets. Da's een foutje van dat chipje wat iedereen namaakt. 
Maar wat ze dan wel weer goed hebben gedaan is dat je op de WEL aangesloten pinnetjes gewoon een "ga naar vier-bits-mode" commando kan geven op een manier dat als ie in 8-bit mode stond, hij toch ook in vier-bit mode terechtkomt. Dat staat overal als "initializing sequence". Als je je daar aan houdt, komt het goed. Voor de omschakeling naar 4bit mode zijn die andere bitjes don't care.
EricP
mét CE
Heb je dit LCD wel eens aan iets gehangen waarvan je weet dat het goed aanstuurt? Als anderen het wel doen, zit je of ergens met timing (of signaal niveau's) te rommelen waardoor de ene het net wel en de andere het net niet doet. Verder zou het natuurlijk gewoon kunnen dat je LCD stuk is...
Wouter van Ooijen
Wouter van Ooijen: VOTI webwinkel, docent HvU (Technische Informatica); C++ on mictrocontrollers blog
Op 9 december 2010 13:16:00 schreef Arco:
[...]
Dat geldt zeker niet voor alle displays. Bij sommigen moeten ze echt aan Gnd. (Init gebeurt in 8 bit mode)
Waar heb je dat vandaan? De standaard 4-bit init procedure (HD44780 datasheet) werkt ongeacht of het display op dat moment in 4 of 8 bit mode staat. En electrisch heeft de HD44780 pull-up's op de datalijnen.
De overige 4 bits zijn hangen aan de 5v als ze niet gebruikt worden.
heb al een ander LCD getest van het zelfde type maar ook niks. ( heb er 5 van.) verder kan ik niks in de hardware vinden wat verkeerd zit of kapot is. ik denk dat dit scherm misschien extra start bit of iets nodigt heeft?
Turbokeu
Golden Member
I love watching conspiracy theorists use the airtight logic of the argument from incredulity: "Well I don't understand how it works so it can't be real!!!"
@gforse;
Ik herken dit probleem.
Jaren geleden heb ik kwasi hetzelfde fenomeen voorgehad met LCD's uitgerust met een 'Chinese' KS0066-controller (die zogezegd 100% HW/SW compatibel is met 'de enige echte' Toshiba HD44780-controller).
10-20% van de gedisplayde karakters was correct, de rest was random 'garbage'.
Dezelfde HW/SW werkte perfect met al mijn 'echte' HD44780-LCD's (alsook alle Noritake HD44780-compatibele VFD displays), echter alle met KS0066 uitgeruste LCD's gingen gewoon de mist in (inclusief twee mooie 20x2 PLED displays en een aantal andere 'made in China' LCD's die nu nog steeds stof liggen te happen).
Gezien het gebruik van de LCD's/VFD's voor mij enkel een tussenstap was in het ontwikkelen van de software voor mijn DCF77 LEDklok heb ik nooit echt verder gezocht naar de reële oorzaak (mijn 4-bits LCD-routines respecteren ruim de voorgeschreven HD44780-delays en maken tevens gebruik van 'busy bit' polling, ongebruikte databits hangen los).
Ook andere CO-leden hadden toendertijd last van het zelfde euvel (zie http://www.circuitsonline.net/forum/view/15777/7).
F_E draagt hier misschien een mogelijke oorzaak/oplossing aan.
bedankt voor je uitleg! het kan dus maar zo dat ik zo'n **** ding heb... maar naar aanleiding van je verwijzing naar het andere topic ben ik verder gaan zoeken maar weet nog niet echt wat ie er precies mee bedoelt. ( hoe en wat ik moet interfacen)
Op 1 maart 2006 16:30:10 schreef free_electron:
crystalfontz maakt NIKS !!! ze verpatsen goedkope modules voor vele geld aan de naiveling die er zijn case wil mee modden.der zijn mensen die ene probleme hebben met dubbele karakters.
waarschijnlijk zit daar een KS066 controller op en gene 44780
pas uw communicatie eens aan.
als je bit 7 niet test ( fixed delay timing ) ( speelt geen rol of je 4 of 8 bit gebruikt )
WR en CS sturen , RD hard aan voeding.
je moet bij die ks dinges zowel de CS als de WR sturen. die dingen zijn timing gevoelig.als je bit 7 wel test : de RD pin ook sturen