Hallo Bin hier mit dem max7219 beschäftigt Nun stellt sich die Frage wie schaltet man den Dezimal punkt an ohne das die anderen nummern flakern ???? in den Bibliotheken steht darüber nur leider nichts Hat jemand ein Tipp??
:
Verschoben durch User
Andreas S. schrieb: > Nun stellt sich die Frage wie schaltet man den Dezimal punkt an ohne das > die anderen nummern flakern ???? Einfach für die gewünschte Stelle (Digit) im auszugebenden Zeichen zusätzlich das MSB (= Bit 7) setzen, z.B. per ODER-Verknüpfung. Das gilt unabhängig vom Decode-Mode. Details siehe Datenblatt.
Andreas S. schrieb: > Nun stellt sich die Frage wie schaltet man den Dezimal punkt an ohne das > die anderen nummern flakern ???? Warum soll da was flackern? Wen man eine Ziffer ausgibt, wird der Dezimalpunkt mit ausgegeben (Oder-Verknüpfung).
:
Bearbeitet durch User
Hallo Wenn ich den Punkt mit MAX7219_writeData(0x80,2) einschalte Flackert immer die nummer wo der Punkt gesetzt ist!! Schalte ich den Punkt mit |0x80 ein gehen alle punkte an in den Digits die gerade gezählt werden !! Gibt es die Möglichkeit den Punkt zb an digit 3 einzuschalten mit der True funktion void MAX7219_displayNumber(volatile signed long int number) { char negative = 0; if (number < 0) { negative = 1; number *= -1; } MAX7219_clearDisplay(); // If number = 0, only show one zero then exit if (number == 8) { MAX7219_writeData(MAX7219_DIGIT0, 0); return; } char i = 0; // Loop until number is 0. do { MAX7219_writeData(++i, number % 10 |DP ); number /= 10; } while (number); if (negative) { MAX7219_writeData(++i, MAX7219_CHAR_NEGATIVE); } MAX7219_writeData(0x80,2) }
MAX7219_writeData(++i, number % 10 |DP ); Wenn ich mal davon ausgehe dass DP der Dezimalpunkt ist, so wird der ja bei jeder Stelle hinzugefügt. Sollte nur bei i == 2 passieren, das ist die zweite Stelle. Fehlt da die Fallunterscheidung? Und die Funktion MAX7219_writeData()? Was ist denn da Datum, was Stelle? MAX7219_writeData(0x80,2) schreibt nun 2 an Stelle 0x80? Gibt es da 128 Stellen?
Wenn du beim MAX7219 einen Dezimalpunkt (DP) mit anzeigen willst, musst du die Zahl digitweise ausgeben, es sei denn, du hast eine Deluxe-Funktion, bei der außer der Zahl auch noch die DP-Stelle als weiterer Parameter angegeben werden kann. Hat deine MAX7219-Library nicht wenigstens eine Digit-Ausgabe, bei der der DP als weiterer Parameter (false/true) angegeben werden kann? Beim MAX7219 muss der DP generell zusammen mit der Ziffer (oder dem Zeichen) geschrieben werden, denn er ist ein LED-Segment wie die anderen 7 auch. Einen DP über ein bestehendes Zeichen an einer bestimmten Digit-Stelle drüber zu schreiben, geht nicht. Wenn alles richtig gemacht wird, darf auch nichts flimmern oder flackern.
Hallo in der MAX7219-Library wäre noch vorhanden void setColumn(int addr, int col, byte value); /* * Display a hexadecimal digit on a 7-Segment Display * Params: * addr address of the display * digit the position of the digit on the display (0..7) * value the value to be displayed. (0x00..0x0F) * dp sets the decimal point. */ void setDigit(int addr, int digit, byte value, boolean dp); /* * Display a character on a 7-Segment display. * There are only a few characters that make sense here : * '0','1','2','3','4','5','6','7','8','9','0', * 'A','b','c','d','E','F','H','L','P', * '.','-','_',' ' * Params: * addr address of the display * digit the position of the character on the display (0..7) * value the character to be displayed. * dp sets the decimal point. */ void setChar(int addr, int digit, char value, boolean dp); Wo müsste ich jetzt was eingeben damit der Punkt an 3 stelle über True und false aktiviert wird
Zunächst kenne ich diese Library nicht, würde aber vermuten, dass es demnach sowohl mit setDigit als auch mit setChar geht. Vermutlich ist das Ganze (wegen "address of the display") für mehrere kaskadierte 8-Digit-Displays gedacht. Bei einem Display mit nur 8 Digits wäre dann für einen DP bei der 3. Stelle von rechts wahrscheinlich addr = 1, digit = 3, dann die an der 3. Stelle auszugebende Ziffer bzw. das Zeichen und schließlich true. Bei allen anderen Ziffern/Zeichen ohne DP müsste dann am Schluss natürlich jeweils false stehen. Hast du das schon probiert?
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.