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.
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