HD44780 - "å" finns inte.

Lysdioder, Optiska sensorer, Fiberoptik, Displayer, Lasrar, Optiska kopplare
Användarvisningsbild
Klas-Kenny
Inlägg: 11841
Blev medlem: 17 maj 2010, 19:06:14
Ort: Växjö/Alvesta

HD44780 - "å" finns inte.

Inlägg av Klas-Kenny »

Då vi bor i det avlånga landet Sverige skulle jag väldigt gärna kunna skriva alla våra bokstäver på min LCD, men har nu uppmärksammat att å inte finns med i ASCII-tabellen HD44780 går efter, finns det något sätt att lösa detta?

Kan man på något vis t.ex. skriva in pixlar på skärmen manuellt, och på så sätt utforma ett Å? Eller är jag helt körd?

Ifall det spelar någon roll så är skärmen jag håller på med en Sån här.
Användarvisningsbild
BEEP
EF Sponsor
Inlägg: 1593
Blev medlem: 21 januari 2006, 16:57:56
Ort: Mölndal

Re: HD44780 - "å" finns inte.

Inlägg av BEEP »

sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: HD44780 - "å" finns inte.

Inlägg av sodjan »

HD44780 har 8 adresser/minnesplatser för egna tecken.
Där kan du ladda vilka tecken du vill. Det blir lite extra
kod för att "mappa" t.ex "åÅ" till dessa, men så är det
alltid med HD44780. Eller 16 adresser är det kanske.
Den PDF som det länkades till har hur som helst detaljerna...
Användarvisningsbild
Klas-Kenny
Inlägg: 11841
Blev medlem: 17 maj 2010, 19:06:14
Ort: Växjö/Alvesta

Re: HD44780 - "å" finns inte.

Inlägg av Klas-Kenny »

Tackar!

Efter lite mat skall den där pdf'en läsas på :D
Användarvisningsbild
Andy
Inlägg: 5893
Blev medlem: 26 september 2004, 18:24:52
Ort: Södern

Re: HD44780 - "å" finns inte.

Inlägg av Andy »

Den här kan vara till hjälp: http://www.darreltaylor.com/files/CustChar.htm
Användarvisningsbild
jojje
Gått bort
Inlägg: 6380
Blev medlem: 20 januari 2006, 01:53:33
Ort: Stockholms utkant
Kontakt:

Re: HD44780 - "å" finns inte.

Inlägg av jojje »

Dessa värden tycker jag ser bra ut.

Kod: Markera allt

LCDOUT  254,64,4,10,14,17,17,31,17,17    ' Cust Char #0
LCDOUT  254,72,10,0,14,17,17,31,17,17    ' Cust Char #1
LCDOUT  254,80,10,0,14,17,17,17,17,14    ' Cust Char #2
LCDOUT  254,88,4,10,4,14,17,17,17,15     ' Cust Char #3
LCDOUT  254,96,0,10,0,14,17,17,17,15     ' Cust Char #4
LCDOUT  254,104,0,10,0,14,17,17,17,14    ' Cust Char #5
<BR>
Användarvisningsbild
Klas-Kenny
Inlägg: 11841
Blev medlem: 17 maj 2010, 19:06:14
Ort: Växjö/Alvesta

Re: HD44780 - "å" finns inte. - Ny fråga

Inlägg av Klas-Kenny »

Gör ingen ny tråd, känns lite överflödigt.

Jag vill läsa data ifrån min display med hjälp av min PIC16F690 men får inte min kod till att fungera, någon som kan hjälpa?

Just nu är det meningen att funktionen ska kopiera tecknet cursorn ligger på och lägga samma tecken ett steg till höger om det, men får det inte till att fungera.

Kod: Markera allt

Read_Display
	bsf		STATUS,RP0
	movlw	0xFF
	movwf	TRISC
	bcf		STATUS,RP0
	bsf		STATUS,RP1
	clrf	ANSEL
	bcf		STATUS,RP1

	movlw	b'00000110'
	movwf	PORTA
	call	Delay
	movlw	b'00000111'
	movwf	PORTA	
	call	LongDelay

	movf	PORTC,w
	movwf	temp


	movlw	b'00000110'
	movwf	PORTA


	bsf		STATUS,RP0
	clrf	TRISC
	bcf		STATUS,RP0
	bsf		STATUS,RP1
	movlw	0xFF
	movwf	ANSEL
	bcf		STATUS,RP1
	call	CursorRight

	movf	temp,w
	movwf	PORTC
	
Return
Den kör funktionen CursorRight i alla fall, så mycket vet jag, men den skriver inte ut det som ligger i variabeln temp (Så antagligen skrivs inget dit.)

RC är 8bit-bussen mot DB0-7 och RA0 - E, RA1 - R/W samt RA2 - RS

Vad har jag missat?
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: HD44780 - "å" finns inte.

Inlägg av sodjan »

Ja, förrutsatt att man *kan* läsa testen tillbaka från en HD44780 LCD.
Jag har inte en aning, det är nog väldigt sällan man har behov av det.
Man har ju själv skrivit till displayen innan så det är ju knappast
någon överraskning vad det står där... :-)

Varför vill du läsa *från* displayen ?
Användarvisningsbild
Klas-Kenny
Inlägg: 11841
Blev medlem: 17 maj 2010, 19:06:14
Ort: Växjö/Alvesta

Re: HD44780 - "å" finns inte.

Inlägg av Klas-Kenny »

För att jag vill ha en knapp som sedan sparar ner vad som står på displayen ner i EEPROM på min pic, så jag kan få tillbaka det vid nästa uppstart.

(Meningsfullt? Nej. Det är bara för att lära mig :lol: )

Och att spara det som skrivs i variabler direkt blir ganska jobbigt med tanke på hur resten av min kod ser ut, så jag vill göra på detta viset.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: HD44780 - "å" finns inte.

Inlägg av sodjan »

Då har du "fel" i koden... :-)
Lägg upp ett par areor som motsvarar LCD'n.
Alla skrivningar från applikationskoden går mot dessa areor.
Sedan har du en central rutin som kopierar allt från bufferten
till själva LCD'n. Antingen på begäran eller timerstyrt.
Bufferten kan du sedan spara om du vill i EEPROM.
Användarvisningsbild
vfr
EF Sponsor
Inlägg: 3515
Blev medlem: 31 mars 2005, 17:55:45
Ort: Kungsbacka

Re: HD44780 - "å" finns inte.

Inlägg av vfr »

Håller helt med Sodjan!

Men ja, det går utmärkt att läsa tillbaka skrivna tecken. Om du har kopplat med R/W-signalen. Den behövs egentligen bara till att läsa tillbaka tecken eller läsa busyflaggan, och båda grejorna går att klara sig utan om man vill.
Användarvisningsbild
Klas-Kenny
Inlägg: 11841
Blev medlem: 17 maj 2010, 19:06:14
Ort: Växjö/Alvesta

Re: HD44780 - "å" finns inte.

Inlägg av Klas-Kenny »

Sodjan: Att jag har fel någonstans i koden har jag redan räknat ut, det är därför jag undrar, då jag redan lagt någon timme nu på att testa lite, och läsa igenom några olika datablad osv. och jag tycker att det känns som att jag gjort rätt, men någonstans är det antagligen något litet fel.

Och det är läsa från displayen som gäller, för jag skriver genom att bläddra mellan bokstäver och sedan flytta cursorn för att göra ny bokstav på annan plats på displayen, och ifall jag skulle på något sätt lagra bokstäverna direkt skulle det bli väldigt konstigt.

I så fall skulle jag få ha en knapp dedikerad bara till att spara bokstäver, och det tycker inte jag är fint.


Dessutom så ska det gå göra på detta viset, då vill jag lyckas med, för att sedan kunna det.


vfr: Ifall du läser mitt inlägg så ser du att jag skrivit vad som är inkopplat vart, alla olika data-signaler är inkopplade, inkl. R/W.
Annars hade det inte varit så konstigt att det inte fungerar :roll:
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 46974
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: HD44780 - "å" finns inte.

Inlägg av TomasL »

Visst kan du läsa av CG-ramet, det är inga problem, men det är fortfarande en snyggare lösning att skriva till buffert och ladda den.
Lagra bokstäverna gör du i en strängmatris lika stor som displayen, där varje enskild adress motsvarar en position på displayen.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: HD44780 - "å" finns inte.

Inlägg av sodjan »

> Att jag har fel någonstans i koden har jag redan räknat ut,

Men jag sa att du har "fel" i koden. "Felet" är alltså att du
försöker läsa från LCD'n alls... :-) :-)

När någon frågar om något som först inte låter riktigt vettigt,
så kollar jag aldrig koden utan försöker istället förstå varför
man har valt att göra som man gör alls.

> I så fall skulle jag få ha en knapp dedikerad bara till att spara bokstäver,

Inte alls.
Din kod vet vilken bokstav som senast blev vald när du "bläddrar".
Och den vet var på displayen du "bläddrar". Den vet också att du flyttar cursorn.
Så du behöver ingen extra knapp, bara lite extra kod när du flyttar cursurn för
att spara den senast "bläddrade" tecknet på samma plats i en LCD-buffert.

Men men... :-)

Jag vet inte vad du har använt för dokumentation, men här är en i alla fall :
http://jescab2.dyndns.org/pub_docs/lcd_ ... manual.pdf.
Sidan 17 verkar vara rellevant...
Användarvisningsbild
Marta
EF Sponsor
Inlägg: 7475
Blev medlem: 30 mars 2005, 01:19:59
Ort: Landskrona
Kontakt:

Re: HD44780 - "å" finns inte.

Inlägg av Marta »

Det ser ut att finnas en del avigheter i Din kod.

För att skriva ett tecken:
- Sätt R/W till noll
- Sätt RS för att välja kontrollregister eller tecken
- Sätt dataportens TRIS till nollor
- Lägg ut tecknet på dataporten
- Sätt E till 1
- Exekvera ett par NOP
- Sätt E till 0

För att läsa från displayen:
- Sätt R/W till 1
- Sätt RS för att välja kontrollregister eller tecken
- Sätt dataportens TRIS till ettor
- Sätt E till 1
- Exekvera ett par NOP
- Läs tecknet från dataporten
- Sätt E till 0
- Sätt R/W till 0
- Sätt dataportens TRIS till nollor

När inget görs så skall E vara 0.

Det Du använder som dataport skall i "tomgång" vara satt som utångar. CMOS-ingångar som "flyter" kan orsaka att något drar mycket störm. Alternativt sätta motstånd på t.ex. 10k mellan datapinnarna och GND eller +5V så att dessa dras till en definierad nivå (en tydlig 0 eller 1) när varken processor eller display driver dem.

Du sätter ANSEL till ettor, detta är fel, det skall vara nollor om Du inte vill använda de analoga funktionerna. Du måste sätta TRIS för kontrollpinnarna till nollor så att dessa är utgångar. Dessa moment behöver endast göras i initieringen av programmet.
Senast redigerad av Marta 6 juli 2010, 12:21:48, redigerad totalt 4 gånger.
Skriv svar