Reading Actuele LCD's cursorpositie

S

saeed_pk

Guest
Hi all,
Ik ben bezig met 20x4 LCD met PIC18F452 en Hi-Tech PICC-18 Compiler
Ik gebruik LCD-module gegeven in monsters directory.

Mijn Project Continu updates een teller op LCD en wanneer RCIF gaat hoog (Serial receptie Interrupt) Ik heb een pauze Sign show op de rechterbovenhoek.

Wanneer een interrupt optreden doet het weer te geven, maar na ISR mijn teller gegevens die moet worden weergegeven in het midden beginnen met het weergeven in de derde regel ik dacht dat het probleem is de cursor wanneer ik terug van ISR LCD-cursor niet terug naar de vorige locatie waar was.

Ik heb een routine / methode hoe de huidige locatie van de cursor te lezen en dus kan ik ontdoen van dit probleem advies please.
 
U kunt zich te ontdoen van dit probleem met behulp van volgende methoden

1.Donot toegang LCD uit onderbreken, in de plaats daarvan een vlag in te onderbreken en actualisering van het LCD-scherm in de belangrijkste lus.

2.Voordat u alle gegevens van LCD-, zet de cursor.Zorg ervoor dat de interrupt doet zich niet tot de volledige gegevens wordt verzonden naar de LCD.

3.Controleer de huidige cursorpositie, en stel het als fout wordt gevonden.(Hoewel codering is bijna hetzelfde, het zal sneller is dan 2.) Kunt u de cursor te krijgen door het lezen van het commando register bij gebruik van Hitachi 44780 controller.Andere controller ook soortgelijke functionaliteit.

Ik verkies optie 1 hierboven besproken.

 
Ik heb gedaan tweede methode,
Wat gebeurt er met mij zijn voor seriële onderbreken opsporen van een karakter 'A' wat er gebeurt als schakel ik onderbreken dat karakter ontvangt komt binnen dit en ik missen.

uw eerste optie lijkt te zijn nuttig, maar het laat me te herontwerpen soort dingen.

derde manier waarop u verteld van het lezenals ik selecteer Control Register (RS) en Selecteer Lezen (R / W) en ik lees een byte zal het mij cursorpositie of wat u mij advies
 
De tekst LCD's die gebouwd zijn op 44.780 controller geeft je de huidige Display RAM-locatie (cursor) wanneer je leest het commando register.(MSB bezig is met vlag en cursor locatie is in 7 LSBs, dus je moet tot en het resultaat met 0x7F)

Als uw tekst LCD-scherm niet is gebouwd over 44.780, dan moet u de documentatie te lezen om te zien hoe u de cursor kunt lezen.

 
Ik ben ook geconfronteerd met soortgelijke problemen in 16x2 LCD
Dus veranderde ik mijn code tot 2 registers te gebruiken voor elke regel

Ik ben het bijwerken van de tweede regel in UART ISR en de eerste lijn door toetsenbord
dus wanneer ik terugkwam van de ISR Ik was cursor positie te verliezen
dus ik gebruikte registers op te slaan de locatie van de cursor
In de ISR

Eerste lading van de tweede rij register waarde en verplaats de cursor naar die plaats increament het register
Vervolgens wordt de data
belasting dan de eerste rij register waarde en verplaats de cursor naar die waarde

dus ik ben niet te verliezen mijn cursor standpunten en handhaving hetzelfde voor elk type display

U kunt ook proberen deze methode en te ontdoen van een display probleem

 
gebruik van verschillende variabele voor het lokaliseren van de cursor in de verschillende routes.

geen gebruik van ingebouwde routering voor het lokaliseren van de cursor voor 16 * 4 LCD-module.

 
Ik gebruik de volgende methode.

Ik heb een buffer1 te buffer20.Schakel ik de cursor.Wat ik ooit wil schrijven, schrijf ik de buffer en breng de hele partij in een keer op de LCD-module.

Als ik wil schrijven naar de 12e plaats, schrijf ik buffer12 en bijwerking van de LCD.

Ik gebruik dezelfde buffers voor alle lijnen.

Ik initialiseren de cursor naar huis positie, selecteert u de lijn begin van de lijn en vervolgens 20 bytes schrijven naar het LCD-scherm.

Hope this helps

Sante

Ravi

 
Ik gebruikte buffers ook en ik voelde me veiliger om op deze manier te volgen.
______________________________________________________
goedkope 1/4W weerstand kit:
http://cgi.ebay.com/ws/eBayISAPI.dll?ViewItem&item=300320789926

 

Welcome to EDABoard.com

Sponsor

Back
Top