Hi Leute, ich hoffe ich bin im richtigen Unterforum, falls nicht bitte verschieben
Ich habe folgendes Problem:
Ich habe eine Schaltung aufgebaut, mit einer 7 Segment LED Anzeige (CA). Diese habe ich ohne IC direkt an einen ATmega8 angeschlossen, das funktioniert wunderbar.
Zusätzlich dazu habe ich 4 Taster angeschlossen, welche 4 Funktionen bereitstellen.
Pinb.0 = Erhöht die Zahl auf dem 7 Segment Display, bis 9.
Pinb.1 = Reduziert die Zahl auf dem 7 Segment Display, bis 0.
Pinb.2 = Setzt die Anzeige wieder auf 0.
Pinc.5 = Zählt von der eingestellten Zahl runter, und schaltet gleichzeitig solange Portc.0 auf High. (Der Pin soll ein Relais schalten)
Wie man vielleicht erkennen kann, handelt es sich um einen Countdown Timer, welcher zu der eingestellten Zeit auf dem 7 Segment Display ein Relais schalten soll.
Im Augenblick habe ich noch kein passendes Relais hier, darum schalte ich eine 20mA LED an Portc.0 (natürlich mit passendem Vorwiderstand für +5V)
Allerdings liefert der Portc.0 nur 1.8V, zuwenig für die LED und für das Relais - sollte hier schon ein Transistor das schalten übernehmen?
Zusätzlich wollte ich eine Blinkende "0" einbauen, wenn das Display nach dem runterzählen eine "0" anzeigt. Ich habe es versucht mit dem kompletten Port für die LED Anzeige auszuschalten - es blinkt aber nicht, sondern schaltet sich nur komplett aus und wieder an. Wie löse ich das am besten?
Hier mein Code bisher:
Danke
Ich habe folgendes Problem:
Ich habe eine Schaltung aufgebaut, mit einer 7 Segment LED Anzeige (CA). Diese habe ich ohne IC direkt an einen ATmega8 angeschlossen, das funktioniert wunderbar.
Zusätzlich dazu habe ich 4 Taster angeschlossen, welche 4 Funktionen bereitstellen.
Pinb.0 = Erhöht die Zahl auf dem 7 Segment Display, bis 9.
Pinb.1 = Reduziert die Zahl auf dem 7 Segment Display, bis 0.
Pinb.2 = Setzt die Anzeige wieder auf 0.
Pinc.5 = Zählt von der eingestellten Zahl runter, und schaltet gleichzeitig solange Portc.0 auf High. (Der Pin soll ein Relais schalten)
Wie man vielleicht erkennen kann, handelt es sich um einen Countdown Timer, welcher zu der eingestellten Zeit auf dem 7 Segment Display ein Relais schalten soll.
Im Augenblick habe ich noch kein passendes Relais hier, darum schalte ich eine 20mA LED an Portc.0 (natürlich mit passendem Vorwiderstand für +5V)
Allerdings liefert der Portc.0 nur 1.8V, zuwenig für die LED und für das Relais - sollte hier schon ein Transistor das schalten übernehmen?
Zusätzlich wollte ich eine Blinkende "0" einbauen, wenn das Display nach dem runterzählen eine "0" anzeigt. Ich habe es versucht mit dem kompletten Port für die LED Anzeige auszuschalten - es blinkt aber nicht, sondern schaltet sich nur komplett aus und wieder an. Wie löse ich das am besten?
Hier mein Code bisher:
Code:
$regfile "m8def.dat"
$crystal = 1000000
Config Portb.0 ; Portb.1 ; Portb.2 ; Portc.5 = Input
Config Portc.0 ; Portc.4 = Output
Config Portd = Output
Portb.0 = 1
Portb.1 = 1
Portb.2 = 1
Portc.5 = 1
Dim Dis(10) As Byte
Dim Cnt As Byte
Dis(1) = &B00111111 '0
Dis(2) = &B00000110 '1
Dis(3) = &B01011011 '2
Dis(4) = &B01001111 '3
Dis(5) = &B01100110 '4
Dis(6) = &B01101101 '5
Dis(7) = &B01111101 '6
Dis(8) = &B00000111 '7
Dis(9) = &B01111111 '8
Dis(10) = &B01101111 '9
Cnt = 1
Do
Portd = Dis(cnt)
If Pinb.0 = 0 Then Gosub Plus
If Pinb.1 = 0 Then Gosub Minus
If Pinb.2 = 0 Then Gosub Rstbtn
If Pinc.5 = 0 Then Gosub Prgstart
If Cnt = 5 Then
Portc.0 = 1
Else
Portc.0 = 0
End If
Loop
End
Plus:
Portd = Dis(cnt) : Waitms 200
Cnt = Cnt + 1
If Cnt > 10 Then Cnt = 10
Return
Minus:
Portd = Dis(cnt) : Waitms 200
Cnt = Cnt - 1
If Cnt < 1 Then Cnt = 1
Return
Rstbtn:
Cnt = 1
Return
Prgstart:
Do
Portc.0 = 1
Portd = Dis(cnt) : Waitms 1000
Cnt = Cnt - 1
If Cnt = 1 Then
Cnt = 1
Waitms 500
Portd = &B00000000
Waitms 500
Cnt = 1
Waitms 500
Portd = &B00000000
Waitms 500
Cnt = 1
Waitms 500
Portd = &B00000000
Waitms 500
Exit Do
End If
Loop
Return
Danke