Hallo zusammen,
um mal in die avr programmierung einzusteigen wollte ich eine nicht
multigeplexte 7segment anzeige ansteuern.
ich frage mich nur, wie erstelle ich sone art methode (in java heisst
das so, wie nennt man das in c?)
google hat mir nicht helfen können
Schau dir bitte erstmal das Tutorial an:
http://www.mikrocontroller.net/articles/AVR-Tutorial
Da steht eigentlich alles drin. Meine Empfehlung wäre, deine Anzeige an
7 bit eines 8-Bit Ports deines AVR anzuschliessen (mit 330 Ohm
Widerständen) und dann schön eine 8 blinken lassen.
Kümmelkorn hochkantspalter schrieb:> ich frage mich nur, wie erstelle ich sone art methode
Das ist ganz einfach.
Du erstellst eine Funktion, der du die anzuzeigende Zahl übergibst.
Diese Zahl benutzt du als Index auf eine LuT, die die Bitmuster zur
Anzeige auf dem Display enthält.
Alternativ könntest du auch erstmal ein C-Buch lesen.
mfg.
Thomas Eckmann schrieb:> Kümmelkorn hochkantspalter schrieb:>> ich frage mich nur, wie erstelle ich sone art methode> Das ist ganz einfach.> Du erstellst eine Funktion, der du die anzuzeigende Zahl übergibst.> Diese Zahl benutzt du als Index auf eine LuT, die die Bitmuster zur> Anzeige auf dem Display enthält.>> mfg.
Aber wie deklariere/definiere(?) ich im code eine methode?
also als java syntag meine ich sowas:
public void eins()
{
//mache 1 an
}
wie geht das in c?
Was natürlich heisst, das du dir ein System beim Anschliessen der 7
Segmente ausdenkst. Es ist nicht die dümmste Idee, Segment a an Bit0,
Segment b an Bit 1 usw. anzuschliessen.
Eine Sieben machst du dann dadurch, das du Bit 0,1 und 2 ansteuerst.
Eine Eins wäre dann Bit 1 und 2 , usw.
Mach dir beispielsweise ein Array, indem die Bitmuster drin sind:
1
uint_8tsegmente[10]=
2
{0b00111111,0b00000110,0b01011011,....}
bis zur 9, als Beispiel hab ich mal die Bitmuster für 0 , 1 und 2
reingeschrieben, wenn du meinen vorigen Vorschlag befolgst.
Dann kannst du eine kleine Funktion machen:
1
voidShow(uint8_tZahl){
2
PORTC=segmente[Zahl];
3
}
Das setzt voraus das PortC schon auf Ausgang gesetzt ist und da auch das
Display angeschlossen ist.
Wenn du nun im Hauptprogramm schreibst:
show(7);
zeigt die Anzeige eine 7-Segment 7.
hatte ich erst überlesen
ich hab erst vor kurzem angefangen mit avr, wie definiere ich das array?
Ich reg mich immer über so fragen auf, aber kanns du mir mal nen code
mal beispielhatf für dei ersten 2 zeichen fertig machen?
Jo, steht doch schon da , alles in C :D
Spassvögel schliessen übrigens den Dezimalpunkt an Bit 7 an , den kann
man dann auch benutzen. Wär doch schade um das freie Beinchen am Port.
Ohh, ich habe das semikolon nach dem Array } vergessen, ergänz das in
deinem Code.
Nee, schreib das Array vor Main() , dann haben auch Unterprogramme was
davon.
Die Funktion Show() ist so ein Unterprogramm. Aber bitte lies doch mal
das Tutorial.
Show() würde auch ausserhalb von main() stehen.Globale Variablen und
Konstanten sollten immer ganz vorne im Programm stehen.
Die normale Definition für 7 Segment ist ja
a
-------
| |
f | | b
| g |
------
| |
e | | c
| d |
-------
Und nun habe ich einfach a mit Bit 0 , b mit Bit 1, c mit Bit2 usw. des
Portes verbunden.
Mit ein bisschen nachdenken und dieser hilfreichen Grafik kannst du dann
die anderen Zahlen ergänzen.
Die Notation a la 0b01010101 nennt sich binär und hat in dem Fall den
Vorteil, die Bits einzeln zu zeigen. Du kannst statt 0b00000110 auch
0x06 schreiben oder einfach 6 , ist aber hier eher unpraktisch.
Bei der 3 sind also Segment a,b,c,d und g gesetzt, tüftel ein bisschen.
Kümmelkorn hochkantspalter schrieb:> das turtorial is doch nur für assembler?
Dann ist dieses Tutorial wohl ganz frisch geschrieben?
AVR-GCC-Tutorial:
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial
BTW: Nimm dir wirklich erstmal ein normales C Tutorial zu herzen - da
drin wird definitiv erklärt, wie man eine Funktion (Methode) und Arrays
erstellt. C ist zwar eine schöne Sprache, aber gerade die Syntax kann
jemanden zunächst ganz schön verwirren ;-)
> habs durch diverse versuche
Der nächste der hier aufschlägt und den wir in nächster Zeit durch C
durchsprechen sollen, nur weil er sich zu fein ist, sich einfach mal die
C-Grundlagen in einem C Buch anzusehen.