mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Problem bei 8x24 Zeichen LCD an Atmega 16


Autor: Bene (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

habe mich jetzt die ganze Zeit durchs Forum gelesen, jedoch finde ich 
immer nur Bruchteile.
Ich möchte das Samsung 0282a 8x24 Zeichen mit 16 Pin Ansteuerung mit 
einem AtMega 16 betreiben und dort verschiedene Temperaturen und das 
Datum plus Uhr anzeigen lassen. Die Uhr soll eine Softclock sein mit 2 
Tastern zum Stellen der Uhr. Der Quelltext ist von Andree-HB übernommen 
worden und nicht bearbeitet. (siehe Quelltext) Er benutzt aber leider 
ein Display das direkt mit Bascom zusammenarbeitet. Jetzt habe ich einen 
Ansatz gefunden, um dieses Display anzusteuern, komme damit aber noch 
nicht richtig parat.(Beitrag "LCD Display 8x24 mit M50530")
Ich würde gerne erstmal einfach eine Uhrzeit und ein Datum ausgeben, 
dafür müsste ich natürlich erstmal das Display ansteuern können.
Kann mir jemand beim Umschreiben des Codes helfen, sodass ich die 
Softclock benutzen kann? Die Temperatursensoren auszulesen wäre dann 
wieder kein Problem.

Gruß
Bene


'************************************************************
'
'Atmega Softclock -> genau Uhrzeit ohne RTC (Real-Time-Clock)
'
'Benutzt wird ein Mega8/8, Fusebits auf Auslieferungszustand,
'Lcd An Portb , Taster Zum Stellen An Pd.0
'zum Hochzählen An Pd.3.
'zwischen XTAL ist ein 32.xxx Uhrenquarz
'14.08.2006, Andree-HB, www.pixelklecks.de
'************************************************************



$regfile = "m8def.dat"


Config Lcdpin = Pin , Rs = Portb.0 , E = Portb.1 , Db4 = Portb.2 , Db5 = 
Portb.3 , Db6 = Portb.4 , Db7 = Portb.5
Config Lcd = 24 * 2
Initlcd
Cursor Off
Cls

Enable Interrupts

Config Date = Mdy , Separator = /
Config Clock = Soft
Config Portd = Input


Portd.0 = 1                                                 'Taster1, 
Zeit/Datum stellen, PullUp ein, schaltet gegen Minus
Portd.3 = 1                                                 'Taster2, 
Zahl hochzählen, PullUp ein, schaltet gegen Minus


Time$ = "00:00:00"                                          'Setzen auf 
Startwert
Date$ = "00/00/00"                                          'Setzen auf 
Startwert

Do
   Locate 1 , 1
   Lcd Time$                                                'Zeige Zeit 
in Zeile1
   Locate 2 , 1
   Lcd _day ; "/" ; _month ; "/0" ; _year                   'Zeige Datum 
in Form DD/MM/YYin Zeile2
'lcd Date$                                                     'zeige 
Datum in Form MM/DD/YY

   If Pind.0 = 0 Then Gosub Time                            'wiederhole 
Anzeige bis Taster 1 zum Stellen gedrückt, springe nach Sub "Time"
Loop
End


'Stunde
Time:
Waitms 200
Cls                                                         'lösche 
Zeilen
Do
Locate 1 , 1
Lcd "Set Hour:"                                             'Stunden 
setzen
Locate 2 , 1
Lcd _hour
         If Pind.3 = 0 Then                                 'Mit Taster 
2
           Incr _hour 
'hochzählen
           Locate 2 , 1
           Lcd _hour
         End If
If _hour > 23 Then                                          'Zählt bis 
Max, danach wieder ab 0
Cls
_hour = 00
End If                                                      'solange, 
bis Taster 1 gedrückt
Loop Until Pind.0 = 0
Waitms 200



'Minute
Cls
Do
Locate 1 , 1
Lcd "Set Minute:"
Locate 2 , 1
Lcd _min
         If Pind.3 = 0 Then
           Incr _min
           Locate 2 , 1
           Lcd _min
         End If
If _min > 59 Then
Cls
_min = 00
End If
Loop Until Pind.0 = 0
Waitms 200
Cls



'Tag
Cls
Do
Locate 1 , 1
Lcd "Set Day :"
Locate 2 , 1
Lcd _day
         If Pind.3 = 0 Then
           Incr _day
           Locate 2 , 1
           Lcd _day
         End If
If _day > 31 Then
Cls
_day = 01
End If
Loop Until Pind.0 = 0
Waitms 200
Cls



'Monat
Cls
Do
Locate 1 , 1
Lcd "Set Month :"
Locate 2 , 1
Lcd _month
         If Pind.3 = 0 Then
           Incr _month
           Locate 2 , 1
           Lcd _month
         End If
If _month > 12 Then
Cls
_month = 01
End If
Loop Until Pind.0 = 0
Waitms 200
Cls



'Jahr
Cls
Do
Locate 1 , 1
Lcd "Set Year :"
Locate 2 , 1
Lcd _year
         If Pind.3 = 0 Then
           Incr _year
           Locate 2 , 1
           Lcd _year
         End If
If _year > 10 Then
Cls
_year = 00
End If
Loop Until Pind.0 = 0
Waitms 200
Cls


_sec = 00                                                   'Springe 
Nach Setzen Von Zeit / Datum Wieder Zurueck
Return

Autor: Frank (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wie in dem verlinken Thread schon beschrieben wirds mit den eingebauten 
Routinen nix werden. Also schreib dir ne LIB, binde Die mit ein und dann 
nur noch die LCD-Befehle gegen die Eigenen austauschen. Schon gehts.

bye

Frank

Autor: Bene (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Könnt ihr mir da helfen? Also mit der LIB und dem einbinden? Die Befehle 
eingeben kann ich dann wieder selber.
Dann könnte ich weiterbasteln...

Autor: Frank (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich glaub kaum das dir Jemand mal so auf doof ne Lib für dein LCD 
schreibt. Das wirst du wohl selbst tun müssen. So ist das nunmal wenn 
man was Aussergewöhnliches benutzen will.

bye

Frank

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was ist an dem Display "außergewöhnlich"???

Das Datenblatt des Controllers beschreibt Befehle und Timing recht gut, 
da ist die Ansteuer-Routine doch kein Problem.

Wer aber nur mit Bauklötzern spielt, der hat natürlich schlechte 
Karten...

...

Autor: Frank (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aussergewöhnlich heisst nix Anderes als vom Baukasten nicht direkt 
unterstützt. Das bedeutet eben selbermachen. Und selber heisst eben 
selber und nicht von Anderen machen lassen.

bye

Frank

Autor: Bene (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich dachte nur das ihr das etwas schneller hinbekommen könntet, weil ih 
rmit solchen Displays ja öfters arbeitet. Brauche das Display ja nur 
einmal und dann nicht mehr. Ist nur für meine Terariumsteuerung.

Autor: Frank (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
du brauchst das Display "nur" einmal. Wir aber vielleicht nie. Wer hat 
dann wohl das grössere Interesse sich so eine LIB zu schreiben?

Autor: Bene (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja das ist schon klar.
Kann man den Code unter Beitrag "LCD Display 8x24 mit M50530" 
nicht leicht verändern und für meine Zwecke verwenden? Muss ja niemand 
was neu schreiben.

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

Bewertung
0 lesenswert
nicht lesenswert
Hier mal als Dateianhang.

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe nichts dagegen, wenn Du den von mir geschriebenen LCD-Treiber 
(in Assembler) benutzt. Du müsstest Dann Dein Programm in Assembler 
schreiben.

Aber Du kannst doch nicht ernsthaft erwarten, dass Dir jemand einen 
Bauklotz für den Baukasten BASCOM schreibt, nur weil Du das (für BASCOM) 
falsche Display gekauft hast. Dann kaufe Dir gefälligst ein Display, das 
von Deinem Baukasten unterstützt wird. Da könnte ich Dir das 4x27 von 
Pollin empfehlen, das kostet nur 5 Euro und wird von BASCOM als 4x40 
angesprochen. Und schon sind Deine Probleme gelöst. Das erleichtert 
sogar Deine Hardware, denn es benötigt nur 5V, also keine separate 
Spannung von fast 12V für den Kontrast.

Weiterhin kannst Du nicht erwarten, dass Dir jemand Anderes Dein 
Programm schreibt. Entweder Du kannst es, Du lernst es, oder Du kaufst 
es.

...

Autor: Frank B. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@  Bene - Danke das du dir mal die Mühe gemacht hast und für Bascom ein 
Programm geschrieben hast womit man diese Displays ansteuern kann.

Könntest du mir einen Tipp geben wie ich es machen kann, damit ich mir 
einen Text aus dem µC direkt aufs Display schicken kann.
Z.B ein einfaches " Hallo "

Danke


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.