Der Max7219 soll damit angesteuert werden vielleicht gibt es hier auch Beispielprogramme nur noch keine gefunden. Programm für CCS Wie muss der Code aussehen in AVR hab davon keine Ahnung. Routine AUSGABE(): void AUSGABE(char adresse,char wert) { char x; // Bevor die Daten übertragen werden, wird zuerst der PIN LOAD auf LOW gesetzt. // Die Daten beginnen mit dem Bit D15, also MSB output_low(LOAD); // Die Datenbits D15-D12 werden übertragen // Da diese nicht wichtig sind, wird eine 0 übermittelt for (x=0;x<4;x++) { output_low(DATA); output_high(CLK); output_low(CLK); } // Die Datenbits D11-D8 beinhalten die Registeradresse des MAX7219 for (x=4;x>0;x--) { if (bit_test(adresse,x-1)) output_high(DATA); else output_low(DATA); output_high(CLK); output_low(CLK); Routine AUSGABE_INIT(): void ausgabe_init() { ausgabe(0x0b,0x04); // Hier wird die Anzahl der Digits angegeben (5 Digits) ausgabe(0x0c,0x01); // Displays werden auf Normal-Betrieb gesetzt (kein Shutdown) ausgabe(0x09,0xff); // Displays werden auf Normal-Betrieb gesetzt (kein Displaytest) ausgabe(0x0a,0x00); // Die Helligkeit der Digits wird hier eingestellt } } // Die Datenbits D7-D0 sind die Daten an den MAX7219 for (x=8;x>0;x--) { if (bit_test(wert,x-1)) output_high(DATA); else output_low(DATA); output_high(CLK); output_low(CLK); } // Zum Schluß wird der PIN LOAD auf HIGH gesetzt, damit ist die // Datenübertragung zu Ende output_high(LOAD); } http://www.bobhobby.com/wp-content/uploads/2008/04/physical-hit-counter-interface.GIF das ist der Schaltplan den ich benutze Und zur Ansteuerung benutze ich das MYAVR LPT Board das auch einen RS232 Anschluss hat
Ich hab den C-Code (die Programmiersprache heißt "c") mal übersichtlicher formatiert. Leider ist er syntaktisch unbrauchbar. (Du hast nicht alles kopiert). Solltest Du wirklich Interesse daran haben, etwas in einen Mikroprozessor zu programmieren, dann wirst Du mit Hilfe von http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial das alles ganz allein hinbekommen können.
1 | //Routine AUSGABE():
|
2 | void AUSGABE(char adresse,char wert) |
3 | {
|
4 | char x; |
5 | // Bevor die Daten übertragen werden, wird zuerst der PIN LOAD auf LOW gesetzt.
|
6 | // Die Daten beginnen mit dem Bit D15, also MSB
|
7 | output_low(LOAD); |
8 | // Die Datenbits D15-D12 werden übertragen
|
9 | // Da diese nicht wichtig sind, wird eine 0 übermittelt
|
10 | for (x=0;x<4;x++) { |
11 | output_low(DATA); |
12 | output_high(CLK); |
13 | output_low(CLK); |
14 | }
|
15 | // Die Datenbits D11-D8 beinhalten die Registeradresse des MAX7219
|
16 | for (x=4;x>0;x--) |
17 | {
|
18 | if (bit_test(adresse,x-1)) output_high(DATA); |
19 | else output_low(DATA); |
20 | |
21 | output_high(CLK); |
22 | output_low(CLK); |
23 | |
24 | |
25 | |
26 | // Routine AUSGABE_INIT():
|
27 | void ausgabe_init() { |
28 | ausgabe(0x0b,0x04); // Hier wird die Anzahl der Digits angegeben (5Digits) |
29 | ausgabe(0x0c,0x01); // Displays werden auf Normal-Betrieb gesetzt (keinShutdown) |
30 | ausgabe(0x09,0xff); // Displays werden auf Normal-Betrieb gesetzt (keinDisplaytest) |
31 | ausgabe(0x0a,0x00); // Die Helligkeit der Digits wird hier eingestellt |
32 | }
|
33 | }
|
34 | // Die Datenbits D7-D0 sind die Daten an den MAX7219
|
35 | for (x=8;x>0;x--) { |
36 | if (bit_test(wert,x-1)) output_high(DATA); |
37 | else output_low(DATA); |
38 | output_high(CLK); |
39 | output_low(CLK); |
40 | }
|
41 | // Zum Schluß wird der PIN LOAD auf HIGH gesetzt, damit ist die
|
42 | // Datenübertragung zu Ende
|
43 | output_high(LOAD); |
44 | }
|
Grüße, Gregor
Übrigens gibt's das ganze Projekt für den AVR ATiny25 hier: http://www.bobhobby.com/2008/04/22/usb-physical-hit-counter-based-on-avr-attiny25/ Einfach nachbauen, ATiny programmieren, PC-Software (!) installieren und nach der Fehlersuche freuen oder heulen...
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.