mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik 7 Segment anzeige


Autor: Michael Knapp (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Kann mir jemand auf die sprünge helfen?
Ich würde gerne mit einem ATmega8 ein Analoges signal von 0-4V messen
und das dann auf 4 7-Segment anzeigen von 0 -1150 ausgeben.

Kann mir bitte jemand mit einem CODE beispiel am besten in Assembler
helfen damit ich verstehe wie die umwandlung  von den 0-4V nach 0-1150

auf den 7-Segment Anzeigen vorsich geht.

 Ich bedanke mich schon mal für jede kleine Hilfe

Michael

Autor: kamil (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hi,
ich hab hier ein stück code, allerdings ins C,
wo ich allerdings nur zwei 7 segment anzeigen ansteuere.
im prinzip ganz simpel.
zuerst die eine zahl auf den port wo die eine anzeige dran sind,
dann umschalten auf die andere.
d.h. jeweils nur eine ist an, aber wenn man schnell genug wechselt (
mehr als 26Hz), dann flackert nix mehr.
damit die leuchtkraft erhalten bleibt, muss man natürlich den LED strom
erhöhen.
mit 4 stück könnte natürlich der led strom zu hoch werden, um
ausreichend leuchtkraft zu bekommen.
die 7 kathoden ( 14 kathode bei 2 anzeigen, wobei beide anzeigen an den
kathoden parallel sind und somit nur ein vorwiderstand dran ist)sind
direkt mit vorwiderständen an dem port vom atmel dran.
die anode schalte ich über einen PNP transitor um.
man muss halt noch ausprobieren, welche hex zahl auf dem port welcher
zahl entspricht, was man dann einfach in einem array speichert.
man könnte auch latchs verwenden, damit die LEDs immer an sind und man
nur die adresse ändert.
fals du es so wie ich mit multiplexen versuchen solltest,
dann nimmt du 3 die du umschaltet und die 1 am anfang schaltest du
einfach nur ein, wenn die benötigt wird.
grüsse

unsigned char
zahlzuport[13]={0x01,0x67,0x14,0x24,0x62,0x28,0x08,0x65,0x00,0x20,0xFF,0 
x7E,0x66};

interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
    if((te<-40)||(te>130)||(nodata==1))
  {
    zehner=11;
    einser=11;
         //  PORTD.4=0;
  }
      else
      {
      if(te<0)          //negative werte
      {
        e=te*(-1);
        zehner=11;
      }
      else
        e=te;

      einser=(e%100)%10;      //einsterstellen
      if((e>=10)&&(te>0))               //
        zehner=(e/10)%10;
      else
          if(te<0)
            if(te<-9)
              zehner=12;
            else
                     zehner=11;
          else
           zehner=10;

        }

if(PORTD.6==1)
{
  PORTD.5=1;
  PORTB=zahlzuport[einser];
  PORTD.6=0;
}
else
{
  PORTD.6=1;
  PORTB=zahlzuport[zehner];
  PORTD.5=0;
}
}

PS: die erfahrenen progger mögen mir für diesen code ( einer der ersten
versuche überhaupt) verzeichen, fals der nicht so toll sein sollte

Autor: Michael Knapp (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Ich habe hier

http://www.mikrocontroller.net/forum/read-4-18926.html

etwas gefunden das mit sicherheit das richtige enthält

doch ich kann aus dem CODE nicht erkennen wie das funktioniert.

http://www.mikrocontroller.net/attachment.php/4168...

hier ist der CODE in BASCOM

kann mir das programm jemad näher erleutern ich habe noch karkeine
erfahrung mit programmierung von µC´s.

Michael

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.