PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Große Zeichen auf Display ausgeben



Olle_Filzlaus
27.02.2006, 20:59
Hallo,

ich will eine Uhr bauen. nur sieht man auf einem 2x16 Display nicht wirklich viel. also habe ich mir gedacht das ich einfach große Zeichen darstelle.

aber leider geht das mit deflcdchar ja nur bis zu 8 Zeichen.

ich habe es geschafft zwei zeichen auszugeben aber da ich aber pro zeichen 4 felder benötige und ich 8 darstellen will reicht das nicht ganz.

kann ich das irgendwie die begrenzung umgehen? oder einfach per datenfeld die zeichen laden?



'**********************************
'* Atmega8 mit großen Zahlen *
'**********************************

$regfile "m8def.dat"
$crystal = 1000000

'blaues display
Config Lcdpin = Pin , Db4 = Portd.2 , Db5 = Portd.3 , Db6 = Portd.4 , Db7 = Portd.5 , E = Portd.1 , Rs = Portd.0
Config Lcdbus = 4
Config Lcd = 16 * 2


'Zeichen definieren
'**** 1 ****
Deflcdchar 0 , 32 , 1 , 3 , 7 , 15 , 1 , 1 , 1 ' replace ? with number (0-7)
Deflcdchar 1 , 32 , 16 , 16 , 16 , 16 , 16 , 16 , 16 ' replace ? with number (0-7)
Deflcdchar 2 , 1 , 1 , 1 , 1 , 1 , 7 , 15 , 32 ' replace ? with number (0-7)
Deflcdchar 3 , 16 , 16 , 16 , 16 , 16 , 30 , 31 , 32 ' replace ? with number (0-7)

'**** 2 ****
Deflcdchar 4 , 32 , 7 , 15 , 32 , 32 , 32 , 7 , 15 ' replace ? with number (0-7)
Deflcdchar 5 , 32 , 28 , 30 , 6 , 6 , 6 , 30 , 28 ' replace ? with number (0-7)
Deflcdchar 6 , 12 , 12 , 12 , 12 , 12 , 15 , 7 , 32 ' replace ? with number (0-7)
Deflcdchar 7 , 32 , 32 , 32 , 32 , 32 , 28 , 30 , 32 ' replace ? with number (0-7)

Cls 'wichtig, muss hin

Do

Cls

'* 1 ********************************
Locate 1 , 1
Lcd Chr(0)

Locate 1 , 2
Lcd Chr(1)

Locate 2 , 1
Lcd Chr(2)

Locate 2 , 2
Lcd Chr(3)

Wait 1

'* 2 ********************************
Locate 1 , 3
Lcd Chr(4)

Locate 1 , 4
Lcd Chr(5)

Locate 2 , 3
Lcd Chr(6)

Locate 2 , 4
Lcd Chr(7)

Wait 1

Loop


mit dem stückchen code zeigt er die ersten beiden zahlen an.

also meine frage, kann ich irgendwie mehr eigene zeichen definieren. oder gibt es eine andere möglichkeit solche großen zeichen darzustellen?

cu arno

PS: warum kann ich keine bilder ochladen. es kommtimmer die meldung das ich eine grenze von 1MB erreicht hätte. mein bild is nur 6k groß.

izaseba
27.02.2006, 21:05
Hallo, schau mal hier (http://www.jalcds.de/features.php) ganz unten...
Dort ist ja solch eine Große Uhr, ich denke bei Dieser Lösung kommst Du mit 8 selbst Definierten Zeichen aus...

Gruß Sebastian

Olle_Filzlaus
27.02.2006, 21:14
ja, sowas habe ich schon für 4x20 displays gesehen. aber bei 2x16 geht das leider nicht auf die art. da muss was anderes her.

thx arno

izaseba
27.02.2006, 21:31
#-o o weh, richtig, Du hast 2x16, sorry, dann kommt diese Lösung nicht in
Frage ...
Du kannst aber nur 8 Zeichen selber definieren....
Ich weiß nicht wie es dann aussehen wird, aber was ist wenn Du Ecken definierst, z.B.


***** * *****
* *
* *
* *
* *
* *
* *
* ***** *****

usw.
Wenn man die dann gekonnt im raster 2x2 Zeichen setzt, könnte man schon bald alle Zeichen 0-9 abdecken, oder?

Gruß Sebastian

ManniMammut
27.02.2006, 21:44
Wie wär's denn mit ner Binäruhr :mrgreen: ?

zB.:
5 Bit für die Stunden: 10101 = 21 Uhr (in der ersten Zeile)
7 Bit für die Minuten: 0110000 = 48 Minuten (in der zweiten Zeile)

izaseba
27.02.2006, 22:00
Wie wär's denn mit ner Binäruhr

Geanau, Da ich zur Zeit sowieso mit einem Display dran bin habe ich es versucht mit den Ecken..... Für die 1 und 0 hat es noch gereicht, bei 2 hab ich leider festgestellt, daß mir die 8 Zeichen doch nicht reichen.....

Gruß Sebastian

Olle_Filzlaus
27.02.2006, 22:26
@izaseba

ja, die idee mit den ecken ist gut, nur leider benötigt man mehr zeichen als man definieren kann.
die binäruhr wäre ne idee, aber da muss man ja bei abelesen rechnen, ausserdem kann man de ganz leicht mit LEDs bauen, kann man sich also das display sparen.

kann man eventuell per assembler da noch paar zeichen laden. als speicher kann man ja den eeprom nutzten.


cu arno

izaseba
27.02.2006, 22:37
Ich befürchte, da hilft kein Assembler, ind kein Weihwasser,
die Beschränkung liegt bei HD44780 der kann nur 8 benutzerdefinierte Zeichen :frown:

Gruß Sebastian

Andree-HB
27.02.2006, 23:17
...bastel Dir doch `ne Sub, die bei jedem Aufuf die Zeichen nach Deinen Wünschen neu definiert und darstellt und per locate positioniert. Wenn man die Zeilen dann schnell genug refresht, dann müsste es doch gehen.

svenulm31
28.02.2006, 13:15
Hast du schon mal im Datenblatt des LCD nach Sonderzeichen gesucht ?
Ich kann mir vorstellen das da einige dabei sind die Du mit einbauen könntest.
Gruß Sven

Olle_Filzlaus
28.02.2006, 19:01
Hallo,

so habe es hinbekommen. lade einfach die zeichen aus dem unterprogramm.

leider füllt alleine das kleine programm schon 26% des speichers aus, werde es denke ich mal aus dem speicher des eeproms laden.



'**********************************
'* Atmega8 mit großen Zahlen *
'**********************************

$regfile "m8def.dat"
$crystal = 1000000

'blaues display
Config Lcdpin = Pin , Db4 = Portd.2 , Db5 = Portd.3 , Db6 = Portd.4 , Db7 = Portd.5 , E = Portd.1 , Rs = Portd.0
Config Lcdbus = 4
Config Lcd = 16 * 2

Declare Sub 1()
Declare Sub 2()
Declare Sub 3()
Declare Sub 4()
Declare Sub 5()
Declare Sub 6()
Declare Sub 7()
Declare Sub 8()
Declare Sub 9()
Declare Sub 0()

Do

Call 1()

Wait 1

Call 2()

Wait 1

Call 3()

Wait 1

Call 4()

Wait 1

Call 5()

Wait 1

Call 6()

Wait 1

Call 7()

Wait 1

Call 8()

Wait 1

Call 9()

Wait 1

Call 0()

Wait 1

Loop

'************************************************* *****************************

Sub 1

'Zeichen definieren
'**** 1 ****
Deflcdchar 0 , 32 , 1 , 3 , 7 , 15 , 1 , 1 , 1 ' replace ? with number (0-7)
Deflcdchar 1 , 32 , 16 , 16 , 16 , 16 , 16 , 16 , 16 ' replace ? with number (0-7)
Deflcdchar 2 , 1 , 1 , 1 , 1 , 1 , 7 , 15 , 32 ' replace ? with number (0-7)
Deflcdchar 3 , 16 , 16 , 16 , 16 , 16 , 30 , 31 , 32 ' replace ? with number (0-7)

Cls

Locate 1 , 1
Lcd Chr(0)

Locate 1 , 2
Lcd Chr(1)

Locate 2 , 1
Lcd Chr(2)

Locate 2 , 2
Lcd Chr(3)


End Sub

'***********************

Sub 2

'**** 2 ****
Deflcdchar 0 , 32 , 7 , 15 , 32 , 32 , 32 , 7 , 15 ' replace ? with number (0-7)
Deflcdchar 1 , 32 , 28 , 30 , 6 , 6 , 6 , 30 , 28 ' replace ? with number (0-7)
Deflcdchar 2 , 12 , 12 , 12 , 12 , 12 , 15 , 7 , 32 ' replace ? with number (0-7)
Deflcdchar 3 , 32 , 32 , 32 , 32 , 32 , 28 , 30 , 32 ' replace ? with number (0-7)

Cls

Locate 1 , 1
Lcd Chr(0)

Locate 1 , 2
Lcd Chr(1)

Locate 2 , 1
Lcd Chr(2)

Locate 2 , 2
Lcd Chr(3)


End Sub


Sub 3

'**** 3 ****
Deflcdchar 0 , 32 , 7 , 15 , 32 , 32 , 32 , 32 , 3 ' replace ? with number (0-7)
Deflcdchar 1 , 32 , 28 , 30 , 6 , 6 , 6 , 6 , 28 ' replace ? with number (0-7)
Deflcdchar 2 , 3 , 32 , 32 , 32 , 32 , 15 , 7 , 32 ' replace ? with number (0-7)
Deflcdchar 3 , 28 , 6 , 6 , 6 , 6 , 30 , 28 , 32 ' replace ? with number (0-7)

Cls

Locate 1 , 1
Lcd Chr(0)

Locate 1 , 2
Lcd Chr(1)

Locate 2 , 1
Lcd Chr(2)

Locate 2 , 2
Lcd Chr(3)

End Sub


Sub 4

'**** 4 ****
Deflcdchar 0 , 32 , 12 , 12 , 12 , 12 , 12 , 12 , 15 ' replace ? with number (0-7)
Deflcdchar 1 , 32 , 6 , 6 , 6 , 6 , 6 , 6 , 30 ' replace ? with number (0-7)
Deflcdchar 2 , 15 , 32 , 32 , 32 , 32 , 32 , 32 , 32 ' replace ? with number (0-7)
Deflcdchar 3 , 30 , 6 , 6 , 6 , 6 , 6 , 6 , 32 ' replace ? with number (0-7)

Cls

Locate 1 , 1
Lcd Chr(0)

Locate 1 , 2
Lcd Chr(1)

Locate 2 , 1
Lcd Chr(2)

Locate 2 , 2
Lcd Chr(3)

End Sub


Sub 5

'**** 5 ****
Deflcdchar 0 , 32 , 7 , 15 , 12 , 12 , 12 , 12 , 15 ' replace ? with number (0-7)
Deflcdchar 1 , 32 , 28 , 30 , 32 , 32 , 32 , 32 , 28 ' replace ? with number (0-7)
Deflcdchar 2 , 7 , 32 , 32 , 32 , 32 , 15 , 7 , 32 ' replace ? with number (0-7)
Deflcdchar 3 , 30 , 6 , 6 , 6 , 6 , 30 , 28 , 32 ' replace ? with number (0-7)

Cls

Locate 1 , 1
Lcd Chr(0)

Locate 1 , 2
Lcd Chr(1)

Locate 2 , 1
Lcd Chr(2)

Locate 2 , 2
Lcd Chr(3)

End Sub


Sub 6

'**** 6 ****
Deflcdchar 0 , 32 , 7 , 15 , 12 , 12 , 12 , 12 , 15 ' replace ? with number (0-7)
Deflcdchar 1 , 32 , 28 , 30 , 32 , 32 , 32 , 32 , 28 ' replace ? with number (0-7)
Deflcdchar 2 , 15 , 12 , 12 , 12 , 12 , 15 , 7 , 32 ' replace ? with number (0-7)
Deflcdchar 3 , 30 , 6 , 6 , 6 , 6 , 30 , 28 , 32 ' replace ? with number (0-7)

Cls

Locate 1 , 1
Lcd Chr(0)

Locate 1 , 2
Lcd Chr(1)

Locate 2 , 1
Lcd Chr(2)

Locate 2 , 2
Lcd Chr(3)

End Sub


Sub 7

'**** 7 ****
Deflcdchar 0 , 32 , 15 , 15 , 32 , 32 , 32 , 32 , 32 ' replace ? with number (0-7)
Deflcdchar 1 , 32 , 30 , 30 , 6 , 6 , 12 , 12 , 24 ' replace ? with number (0-7)
Deflcdchar 2 , 32 , 1 , 1 , 1 , 1 , 1 , 1 , 32 ' replace ? with number (0-7)
Deflcdchar 3 , 24 , 16 , 16 , 16 , 16 , 16 , 16 , 32 ' replace ? with number (0-7)

Cls

Locate 1 , 1
Lcd Chr(0)

Locate 1 , 2
Lcd Chr(1)

Locate 2 , 1
Lcd Chr(2)

Locate 2 , 2
Lcd Chr(3)

End Sub


Sub 8

'**** 8 ****
Deflcdchar 0 , 32 , 7 , 15 , 12 , 12 , 12 , 12 , 15 ' replace ? with number (0-7)
Deflcdchar 1 , 32 , 28 , 30 , 6 , 6 , 6 , 6 , 30 ' replace ? with number (0-7)
Deflcdchar 2 , 7 , 12 , 12 , 12 , 12 , 15 , 7 , 32 ' replace ? with number (0-7)
Deflcdchar 3 , 28 , 6 , 6 , 6 , 6 , 30 , 28 , 32 ' replace ? with number (0-7)

Cls

Locate 1 , 1
Lcd Chr(0)

Locate 1 , 2
Lcd Chr(1)

Locate 2 , 1
Lcd Chr(2)

Locate 2 , 2
Lcd Chr(3)

End Sub


Sub 9

'**** 9 ****
Deflcdchar 0 , 32 , 7 , 15 , 12 , 12 , 12 , 12 , 15 ' replace ? with number (0-7)
Deflcdchar 1 , 32 , 28 , 30 , 6 , 6 , 6 , 6 , 30 ' replace ? with number (0-7)
Deflcdchar 2 , 7 , 32 , 32 , 32 , 32 , 15 , 7 , 32 ' replace ? with number (0-7)
Deflcdchar 3 , 30 , 6 , 6 , 6 , 6 , 30 , 28 , 32 ' replace ? with number (0-7)

Cls

Locate 1 , 1
Lcd Chr(0)

Locate 1 , 2
Lcd Chr(1)

Locate 2 , 1
Lcd Chr(2)

Locate 2 , 2
Lcd Chr(3)

End Sub


Sub 0

'**** 0 ****
Deflcdchar 0 , 32 , 7 , 15 , 12 , 12 , 12 , 12 , 12 ' replace ? with number (0-7)
Deflcdchar 1 , 32 , 28 , 30 , 6 , 6 , 6 , 6 , 6 ' replace ? with number (0-7)
Deflcdchar 2 , 12 , 12 , 12 , 12 , 12 , 15 , 7 , 32 ' replace ? with number (0-7)
Deflcdchar 3 , 6 , 6 , 6 , 6 , 6 , 30 , 28 , 32 ' replace ? with number (0-7)

Cls

Locate 1 , 1
Lcd Chr(0)

Locate 1 , 2
Lcd Chr(1)

Locate 2 , 1
Lcd Chr(2)

Locate 2 , 2
Lcd Chr(3)

End Sub


das programm zählt von 1 - 0.

cu arno

Andree-HB
28.02.2006, 21:57
....der Font sieht optisch wirklich sehr gut aus !