www.mikrocontroller.net

Forum: Projekte & Code Displaymenue für normal LCD


Autor: mathias giacomuzzi (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo hier mal ein Codebeispiel für normale LCD-Displays in verwendung
mit der Lib von Peter Fleury!!

Was meint ihr dazu??
Was ist schlecht, was ist gut!! ==> und wie kann ichs besser machen!!

mfg mathias

Autor: mathias giacomuzzi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ach ja ich habe noch vergessen: Controller AVR natürlich !! - bei mir
ATmega8535 bzw ATmega32!

Und ja es ist noch nicht ganz fertig! momentan nur Hauptmenü und pro
Eintrag 1 Submenü! wobei man beim Submenü noch nicht scrollen und auch
nocht keine Funktion ausführen kann! ==> das kommt aber noch!!

also dann viel spass

mfg mathias

Autor: mathias giacomuzzi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also ich bin noch fleissig dran an der Version V16 und ja bis jetzt 43
Download und kein kommentar??

ist es wirklich so schlecht was ich da gemacht habe??

mfg mathias

Autor: Sven (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Könntest du evtl. die Dateien nochmal als *.zip gepackt hier anhängen
?

Es gibt bei mir immer Probleme unter Linux "neuere" *.rar Dateien zu
entpacken.


Gruß Sven

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"bis jetzt 43 Download und kein kommentar??"

Vermutlich achten die meisten nicht darauf, das es ein rar ist und
drücken daher versehentlich auf Donwload.

Und ohne den Inhalt zu kennen, kann man ja nichts dazu sagen.


Peter

Autor: mathias giacomuzzi (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
ja wiso ist das schlecht ein rar?? hier mal ein zip davon!!

Und ohne den Inhalt zu kennen, kann man ja nichts dazu sagen. ??? da
komm ich jetzt nicht mit!!

aber egal

@peter ==> vielleicht könntest du es ja mal ansehen und schauen ob ich
das mit dem ins Flash speichern und wider holen richtig mache?? ==>
könnte ja sein das es nur aus zufall funktioniert!!

mfg mathias

Autor: mathias giacomuzzi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
natürlich nur wenn du zeit hast!! wäre echt supper!

mfg mathias

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich benutze kein Linux, deshalb müßte ich für RAR ein extra Tool
installieren (ZIPs werden von Windows XP automatisch geöffnet). Und das
würde ich erst machen, wenn es mich wirklich brennend interessiert.

Zum Programm, das ist nicht mein Programmierstil, allen Tod und Teufel
im Interrupt zu machen. Dadurch werden mir die Programme zu unflexibel
(schlecht erweiterbar) und zu unsicher (schlechte CPU-Zeitausnutzung,
schwierige Zeitabschätzung).
Und (fast) alle Kunden wollen später noch Erweiterungen.


Peter

Autor: mathias giacomuzzi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja okay dass ist aber auch nicht das Menue System, das ist ja
eingentlich nur das TestMain indem ich die diversen Funktionen aufrufe
um das ganze eben zu Testen !!

==> ja und wie macht man dann sowas besser??

==> wenn ich zum Beispiel eine Spannung alle 250ms (für eine Regelung)
Messen will dann muss ich doch sowas im Interrupt machen oder nicht??

Ich bin Student (Elektrotechnik) und ich programmiere noch nicht lange
mit uC ==> deshalb wenig erfahrung usw. aber wenn das so schlecht ist
dann will ich das auch besser machen also bitte um hilfe!!

Übrigens das menu habe ich nur angefang weil ich mit einem Kollege ein
Laderegler für eine Solaranlage mache! ==> und diese menue ist einfach
zu erweitern und zu ändern denke ich zumindestens!!

Also die Fragen die sich dann Stellen sind:
Tasten einlesen wo?,-> und ich weis das das mit den Tastenentprellen
schrott ist aber ich hatte bis jetzt noch nicht zeit deinen Code
anzuschauen, mach ich aber noch!
Wie mache ich das dann mit den menue funktionen, von wo rufe ich die
dann auf?? usw...

wäre echt supper wenn mir das mal einer sagt wie man sowas richtig
aufbaut usw. ==> ders drauf hat!!

also danke schonmal

mfg mathias

Autor: mathias giacomuzzi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ach ja zu dem rar noch, also ich kann dir WinRAR nur Empfehlen den damit
kannst du fast alles öffnen!! natürlich auch zip!!

mfg mathias

Autor: peter dannegger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hier mal ein Beispiel, wie ich sowas mache:

http://home.tiscali.de/peterd/appl/soft/c51/thcloc...


Peter

Autor: mathias giacomuzzi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja gut also das Menue mit switch case aufzubauen finde ich aber nicht
sehr portabel aber egal! Denn beim ändern der Menue Daten und
Funktionen bin ich mit meinem code sicher schneller wenn ich was ändern
will und du kannst das auch nicht mit meinem menue vergleichen, denn ich
will ein Hauptmenue bei dem ich mit up & down Durchblättern kann, und
dann bei Enter in das jeweilige Untermenu springe und so weiter.. aber
das ist ja auch nicht das was du angesprochen hast!

Das was eingentlich für mich sehr wichtig ist, ist zu wissen wie man so
ein main richtig aufbaut! und das weis ich jetzt immer noch nicht bzw.
nicht mehr. Bis jezt dacht ich immer das ich das so richtig mache!

Ich habe es ja jetzt mal so gemacht das ich ein 100us Tick erzeuge und
mit diesem alles mache ==> wird aber dann noch auf 10ms geändert!

fakt ist ich sehe immer noch keine Lösung wie isch das besser aufbau!!

Und ja wenn man neu in dem ganze uC zeugs ist, dann ist das so glaube
ich das schwierigste, nämlich einen sauberen strukturierten aufbaut zu
machen der den uC nicht abwürgt!!

Vielleich sollt man dazu mal einen neuen Thread aufmachen denn das
Problem ja so glaube ich fas jeder der noch keine Erfahrung hat!!

Aber wo soll ich denn am besten Beginnen??

Wie gesagt: Ich muss ja was Programmieren das folgende sachen macht,
auf eine ATMEGA 32.

alle 8 Kanale vom ADC einlesen! => natürlich zeitgesteuert denn damit
sollten dan 3 PWM Kanale dementsprechend geregelt werden.

Display Anzeige mit Benutzermenue um diverse Daten Anzuschauen usw. ==>
das heist ja ich weis auch nicht genau ich dachte bis jetzt zum Beispiel
jede sekunde ein update vom Display zu machen .

Tempertauren  der Solarakkus lesen über I2C!

später dann noch eventuell eine DCF77 um die Uhr zu machen usw.

und wie mache ich das jetzt alles?? ich meine nicht das lesen der ADC,
Temperatur usw... ich meine den aufruf im Main!!!

als ich glaub ich mach das mal mit ein Thread, denn ich möchte mehrere
Meinungen hören wenns geht!

mfg mathias

Autor: mathias giacomuzzi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also jetzt schon 110 Download ==> und erst 1 hat was dazu gesagt ???

na ja egal ==> in dem fall ist das alles so richtig wie ich das anderer
mache, oder alle sind zu faul um zu schreiben g

mfg mathias


V16 mit submenue scroll und so weiter gibt bald !!

Autor: mathias giacomuzzi (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Falls es jemand noch brauchen kann ist hier eine neue Version.

Jetzt kann man zu jedem Eintrag ein Submenue dazufügen und dieses
natürlich auch mit up und down durchscrollen usw. ==> bei drücken von
Enter auf dem ESC String wird das Menue verlassen. 3 Tasten für die
Bedienung reichen aus ==> damit kann man das ganze auch mit einem
Drehencoder realisieren!

==>Ach ja das main ist schlecht ich weis aber da gehe ich jetzt
dahinter, ich wollte zuerst mal mein Menue so fertig machen. Also so
besser nicht verwenden!!


mfg mathias

Autor: Andreas Siebel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
//Hier muss die Laenge der einzelnen Submenues angegeben
//werden ==> ich weis nicht wie man die Laenge von dem
//jeweiligen SubMenue sonst herrausbekommt!
int sublength[]={0,4,3,8}; //achtung reihenfolge beachten
                           //siehe Beispiel!!

LÖSUNG:

unsigned char x = sizeof(mySUBM0)/sizeof(menueObject);

so bekommst du z.B. die Länge deines ersten arrays raus. In x steht
jetzt z.B. 4

Autor: mathias giacomuzzi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ach ja danke für den Tipp.


mfg mathias

Autor: thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
dies ist ein test

Autor: thomas (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
hallo mathias, ich löse das mit den menues mit zwei struckt´s.
ev kann mann das auch nur in einem strucht hinterlassen.
1. lcd_rom_ins_data enhält die text nummer in "struckt
lcd_rom_text"
   einnen zeiger auf eine variable die angezeigt werden kann
   die länge der ascci zeichen
   an welche stelle im lcd display
   neue lcd_rom_ins_datanummer bei taste auf
   neue lcd_rom_ins_datanummer bei taste ab
   ob die variable geändert werden darf
   min grösse der variable
   max grösse der variable
1. lcd_rom_text enhält den text der in lcd_rom_ins_data angegeben ist.

die taste return will ich noch zufügen um eine neue lcd_rom_ins_data
nummer aufzurufen

übrigens binn ich auch unsicher ob meine c-programierung konfirm ist...
aber egal

Autor: Andi (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Passt vielleicht nicht so ganz hier rein da in AVR-ASM aber hier meine
Gedankliche, und auch funktionierende, Version eines Menü-System in
ASM.
Es mag vielleicht ein bißchen komplex und wirr aussehen aber durch eine
passende Baumstruktur wo jeder Menüpunkt innerhalb einer Ebene auf den
nächsten zeigt (0 bedeutet natürlich Ende) kann man das einfach durch
hinzufügen eines neuen Menü-Eintrages erweitern.
Die Anzahl der Ebenen ist rein durch die 8 Bit-Zahlen begrentzt und die
Anzahl der Menüs und Submenüs ebenfalls (also max. 255) aber das sollte
eigentlich reichen.
In dem Programmcode sind momentan 4 Menüebenen möglich, läßt sich aber
leicht erhöhen.
Möchte jetzt nicht allzu viel darüber erzählen da eigentlich
einigermaßen Dokumentiert wodurch eine Umsetzung in anderer Sprache
möglich sein sollte.

MfG
Andi

Autor: kay (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich bin immer noch in der Denkphase, was die Programmierung eines
Menüsystems angeht. Da ich in asm programmiere (mit AVR), helfen mir
die C-Codes leider nicht viel, kann ich einfach nicht. Meine Idee
hierbei war, ein Register in High/Lownibble aufzuteilen, um so Haupt-
und Untermenüs zu unterteilen. So ist dann 0001 0000 das erste
Hauptmenü, 0001 0001 das zugehörige Untermenü. 0 heißt dann keine
Menüanzeige. Mit swappen der Nibbles kann ich so schnell addieren und
subtrahieren. Ich bin da nicht so erweiterbar - max  15 Menüpunkte mit
15 Untermenüs, das reicht mir aber voll. Die Steuerung sollte mittels 4
Richtungstasten erfolgen, die Auswahl mit einer "Enter"-Taste. Blöd
wird dann nur der Verwaltungsaufwand, wenn ich durch die Menüs
durchscrollen will. Schließlich soll beim hochschalten nicht z.B. der
3. Untermenüpunkt des vorigen Menüs angezeigt werden, wenn ich grad im
3. Untermenü war. Also suche ich noch nach Alternativen bzw. anderen
Lösungen. An einen Drehgeber hatte ich allerdings noch nicht gedacht...
Mal sehn.

winke
kay

Autor: Andi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dann kuck Dir mal das AVR-ASM weiter oben an.
Das System geht für bis zu 255 Menü/Submenüs und 4 Ebenen.
Vorteil ist bei dem System die einfache Erweiterbarkeit der
Menü-Verkettung.
Bei wirklichem Interesse gebe ich gerne Hilfestellung.

MfG
Andi

Autor: kay (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habs mir schon gestern gezogen, bin aber erst jetzt dazugekommen, mal
reinzuschaun. Momentan steig ich noch nicht richtig durch, wird aber
schon ;)
ldiw sollte wohl "load immediate word" sein? - find ich nicht auf
meiner Befehlsliste, ist es ein macro?
Ist insgesamt doch etwas seltsam für mich, da ich durch die set-Angaben
nicht durchsteige. Wozu die 15 bytes, wenn nur eine menünummer
weitergegeben wird? Oder bin ich einfach zu blöd für? Es ist auch etwas
scwierig, wenn die Definitionen fehlen, da muß ich oft erst raten, was
genau wie passiert. Ist die 3 beim Drehgeber der tastknopf? Ist DIPG ne
Variable oder ein register?
Ich würd mich jedenfalls freuen, da Hilfe zu bekommen.
winke
kay

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.