7 Segment Anzeige mit Max

  • Hallo zusammen

    Ich möchte gerne eine 7 Segment Anzeige Anode und dem MAX 7219 Programmieren. diese soll dan im späterem die Temperatur von meinem Zimmer anzeigen. Nur habe ich mühe diese anzeigen zu lassen. Mit diesem Programm gibt sie irgend welche wirre anzeigen heraus. ich hoffe ihr könnt mir weiter helfen

    [font="Courier New"]// define our pins :

    #define DATA 8 // GPIO 2 (WiringPi pin num 8) header pin 3
    #define CLOCK 14 // GPIO 11 (WiringPi pin num 14) header pin 23
    #define LOAD 15 // GPIO 14 (WiringPi pin num 15) header pin 8


    // The Max7219 Registers :

    #define DECODE_MODE 0x09
    #define INTENSITY 0x0a
    #define SCAN_LIMIT 0x0b
    #define SHUTDOWN 0x0c
    #define DISPLAY_TEST 0x0f


    static void Send16bits (unsigned short output)
    {
       
    unsigned char i;

    for (i=16; i>0; i--)
    {
    unsigned short mask = 1 << (i - 1); // calculate bitmask
     
    digitalWrite(CLOCK, 0); // set clock to 0
       
    // Send one bit on the data pin
       
    if (output & mask)
    digitalWrite(DATA, 1);
    else
    digitalWrite(DATA, 0);
           
    digitalWrite(CLOCK, 1); // set clock to 1
         
    }

    }


    // Take a reg numer and data and send to the max7219

    static void MAX7219Send (unsigned char reg_number, unsigned char dataout)
    {
    digitalWrite(LOAD, 1); // set LOAD 1 to start
    Send16bits((reg_number << 8) + dataout); // send 16 bits ( reg number + dataout )
    digitalWrite(LOAD, 0); // LOAD 0 to latch
    digitalWrite(LOAD, 1); // set LOAD 1 to finish
    }


    int main (void)
    {
       
    printf ("\n\nRaspberry Pi Max7219 Test using WiringPi\n\n");

    if (wiringPiSetup () == -1) exit (1) ;

    //We need 3 output pins to control the Max7219: Data, Clock and Load

    pinMode(DATA, OUTPUT);
    pinMode(CLOCK, OUTPUT);
    pinMode(LOAD, OUTPUT);
       
    MAX7219Send(SCAN_LIMIT, 7); // set up to scan all eight digits


    /*

    BCD decode mode off : data bits correspond to the segments (A-G and DP) of the seven segment display.

    BCD mode on : 0 to 15 = 0 to 9, -, E, H, L, P, and ' '
       
    */

    MAX7219Send(DECODE_MODE, 1); // Set BCD decode mode on

    MAX7219Send(DISPLAY_TEST, 0); // Disable test mode

    MAX7219Send(INTENSITY, 1); // set brightness 0 to 15
         
    MAX7219Send(SHUTDOWN, 1); // come out of shutdown mode / turn on the digits
         
    MAX7219Send(1,6); // displays the number 6 on digit 1

    return 0;
    }[/font]

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!