7Segment Anzeige

Dies ist das deutsche Forum für alle Themen um den IO-Warrior. Beiträge bitte nur in Deutsch.

Moderator: Guido Körber

Post Reply
kevin91
Posts: 3
Joined: Tue May 29, 2012 5:50 pm

7Segment Anzeige

Post by kevin91 »

Hallo Leute,
seit kurzem Experimentiere ich mit dem IOWarrior24, da ich Elektroniker für Automatisierungstechnik lern, hab ich ein wenig erfahrung mit ICs.

In meinem letzten Experimentierprojekt hab ich es mir ermöglicht eine 7Segment Anzeige über ein 4511 Baustein zu schalten.

Image

Die 10kOhm Widerstände hab ich weg gelassen und statt den Schaltern hab ich die Ports 1.4-1.7 genutzt.

Es funktioniert auch alles wunderbar, ich denke nur das es einfacher geht und ich das ganze "quer-durch-die-brust-ins-auge" anpacke.

Mein Code sieht folgendermaßen aus:

Code: Select all

private void DezToBCD(int Zahl = 0)
        {
            // P1.4 -> Ausgang BCD 0
            // P1.5 -> Ausgang BCD 1
            // P1.6 -> Ausgang BCD 2
            // P1.7 -> Ausgang BCD 3
            int WertNeu;

            switch (Zahl)
            {
                case 0:
                    // 0 -> BCD 0000
                    // P1.4 -> LOW
                    WertNeu = Data[2] & 0xEF;
                    Data[2] = (byte)WertNeu;
                    IowKitWrite(IowHandle, 0, ref Data[0], 3);
                    // P1.5 -> LOW
                    WertNeu = Data[2] & 0xDF;
                    Data[2] = (byte)WertNeu;
                    IowKitWrite(IowHandle, 0, ref Data[0], 3);
                    // P1.6 -> LOW
                    WertNeu = Data[2] & 0xBF;
                    Data[2] = (byte)WertNeu;
                    IowKitWrite(IowHandle, 0, ref Data[0], 3);
                    // P1.7 -> LOW
                    WertNeu = Data[2] & 0x7F;
                    Data[2] = (byte)WertNeu;
                    IowKitWrite(IowHandle, 0, ref Data[0], 3);
                break; 
                case 1:
                    // 1 -> BCD 0001
                    // P1.4 -> LOW
                    WertNeu = Data[2] & 0xEF;
                    Data[2] = (byte)WertNeu;
                    IowKitWrite(IowHandle, 0, ref Data[0], 3);
                    // P1.5 -> LOW
                    WertNeu = Data[2] & 0xDF;
                    Data[2] = (byte)WertNeu;
                    IowKitWrite(IowHandle, 0, ref Data[0], 3);
                    // P1.6 -> LOW
                    WertNeu = Data[2] & 0xBF;
                    Data[2] = (byte)WertNeu;
                    IowKitWrite(IowHandle, 0, ref Data[0], 3);
                    // P1.7 -> HIGH
                    WertNeu = Data[2] | 0x80;
                    Data[2] = (byte)WertNeu;
                    IowKitWrite(IowHandle, 0, ref Data[0], 3);
                break; 
                case 2:
                    // 2 -> BCD 0010
                    // P1.4 -> LOW
                    WertNeu = Data[2] & 0xEF;
                    Data[2] = (byte)WertNeu;
                    IowKitWrite(IowHandle, 0, ref Data[0], 3);
                    // P1.5 -> LOW
                    WertNeu = Data[2] & 0xDF;
                    Data[2] = (byte)WertNeu;
                    IowKitWrite(IowHandle, 0, ref Data[0], 3);
                    // P1.6 -> HIGH
                    WertNeu = Data[2] | 0x40;
                    Data[2] = (byte)WertNeu;
                    IowKitWrite(IowHandle, 0, ref Data[0], 3);
                    // P1.7 -> LOW
                    WertNeu = Data[2] & 0x7F;
                    Data[2] = (byte)WertNeu;
                    IowKitWrite(IowHandle, 0, ref Data[0], 3);
                break;
                case 3:
                    // 3 -> BCD 0011
                    // P1.4 -> LOW
                    WertNeu = Data[2] & 0xEF;
                    Data[2] = (byte)WertNeu;
                    IowKitWrite(IowHandle, 0, ref Data[0], 3);
                    // P1.5 -> LOW
                    WertNeu = Data[2] & 0xDF;
                    Data[2] = (byte)WertNeu;
                    IowKitWrite(IowHandle, 0, ref Data[0], 3);
                    // P1.6 -> HIGH
                    WertNeu = Data[2] | 0x40;
                    Data[2] = (byte)WertNeu;
                    IowKitWrite(IowHandle, 0, ref Data[0], 3);
                    // P1.7 -> HIGH
                    WertNeu = Data[2] | 0x80;
                    Data[2] = (byte)WertNeu;
                    IowKitWrite(IowHandle, 0, ref Data[0], 3);
                break;
                .....
            }
        }

        private void SegmentZahl_SelectedIndexChanged(object sender, EventArgs e)
        {
            DezToBCD(Convert.ToInt32(SegmentZahl.SelectedItem));
        }


Gibt es einer einfacherere und logischere möglichkeit?

Vielen Danke für eure Hilfe
MfG Kevin
friend-of-rq
Posts: 389
Joined: Sun Feb 13, 2005 1:22 pm
Location: Gerblingerode / Duderstadt
Contact:

Re: 7Segment Anzeige

Post by friend-of-rq »

Hallo kevin91
ich denke nur das es einfacher geht und ich das ganze ...
Was denn ? Schaltung oder Programm ... ist das nur zum spielen oder hast Du ein Ziel ?

Gruss Ralf
kevin91
Posts: 3
Joined: Tue May 29, 2012 5:50 pm

Re: 7Segment Anzeige

Post by kevin91 »

Hallo,

ja hat ein Ziel soll eine Countdown anzeige werden, jedoch ist der Countdown nicht immer gleich und es sollen auch zufallszahlen angezeigt werden.

Allgemein also ob es eine einfachere Methode gibt um eine 7 Segement Anzeige anzusteuern.

Danke
LG Kevin
friend-of-rq
Posts: 389
Joined: Sun Feb 13, 2005 1:22 pm
Location: Gerblingerode / Duderstadt
Contact:

Re: 7Segment Anzeige

Post by friend-of-rq »

@ kevin91

Schaltung ist doch soweit OK... nur VDD=9V ist nicht gut für den IOW (5V)

Gruss Ralf
kevin91
Posts: 3
Joined: Tue May 29, 2012 5:50 pm

Re: 7Segment Anzeige

Post by kevin91 »

Ups stimmt :P
Sorry der Plan stimmt net war nur eine Zeichnung aus dem Internet, der 4511 und die 7 Segment Anzeige waren an den Vcc vom ioWarrior angeklemmt, hab es in der Arbeit "Frei-Hand" mit hilfe vom Datenblatt des 4511 auf eine Lochrasterplatine gelötet, und um hier alles vollständig posten zu können hab ich per Google einen Schaltplan gesucht und leider darauf nicht geachtet :)

Alles klar dann kann ich das ganze so einsetzen :P danke :))

Gruß Kevin
Post Reply