Hallo Forum User.
Habe es vorgenommen eine schöne Lcd-Uhr-Wecker für meine Tochter zu basteln.
ist auch alles so weit fertig.
Nur mit dem CODE bin mir nicht ganz sicher!
denn es gibt bestimmt Regeln in der Reihenfolge die ich noch nicht kenne.
Könnt ihr mir bitte bei Helfen!
Habe es vorgenommen eine schöne Lcd-Uhr-Wecker für meine Tochter zu basteln.
ist auch alles so weit fertig.
Nur mit dem CODE bin mir nicht ganz sicher!
denn es gibt bestimmt Regeln in der Reihenfolge die ich noch nicht kenne.
Könnt ihr mir bitte bei Helfen!
Code:
'V2.1
'LCD FORMAT __UHR___00:00:00
' >ALARM<_00:00___
$regfile = "m8def.dat"
$crystal = 8000000
$hwstack = 23
$swstack = 23
$framesize = 10
'-----LCD Configurieren
Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , _
Db6 = Portc.4 , Db7 = Portc.5 , Rs = Portd.0 , E = Portd.1
Config Lcd = 16 * 2
Config Lcdbus = 4
Cursor Off
Cls
'-----Tiner2---als---EchtzeitUhr---Configurieren
On Timer2 Takt
Assr.as2 = 1 '-Bit AS2=1: Asynchroner Timer2-Betrieb
Tccr2 = &B00010101 '-Bits6+3=00: Nicht-PWM-Modus
'-Bits5+4=01: Pin OC2 invertieren
'-Bits2+1+0=101: Takt 32768Hz/128=256Hz
Timsk.toie2 = 1 '-Timer2-Overflow-Interrupt an
Waitms 1000 '-Eine Sekunde warten bis Quarz schwingt
'-----ADC---fuer---LCDBeleuchtung-Configurieren
Config Adc = Single , Prescaler = Auto , Reference = Avcc
Start Adc
'-----Port's---Configurieren
Ddrb = &B00001001 '-Pins PB0+PB3 sind Ausgang
Ddrc = &B00111110 '-PC.0 ADC Rest LCD
Portc.1 = 0 '-PC.1 LCD Beleuchtung
Ddrd = &B10000011 '-PD0+1+7 Ausgaenge PD2+3+4 Eingaenge
Portd = &B00011100 '-PD2+3+4 Pullup Wiederstand AN
'-----Ausg?nge-----Configurieren-----
Lcd_licht Alias Portc.1 '-LCD Beleuchtung Auto AN-AUS
Speaker Alias Portb.0 '-Pipser an PORTB.0
Led Alias Portd.7 '-Led an Portb.7
'-----Eing?nge---Configurieren-----
Stunde_plus Alias Pind.2 '-Taster Stunde_plus
Minute_plus Alias Pind.3 '-Taster Minute_plus
Alarm_an_aus Alias Pind.4 '-Taster Alarm_an_aus
'-----Variablen-----
Dim Sekunde As Byte '-Sekunde
Dim Minute As Byte '-Minute
Dim Stunde As Byte '-Stunde
Dim Aminute As Byte '-Alarm Minute
Dim Astunde As Byte '-Alarm Stunde
Dim A As Bit
'-----String LCD anzeige-----
Dim S As String * 2 '-LCD Stunde
Dim M As String * 2 '-LCD Minute
Dim Sek As String * 2 '-LCD Sekunde
Dim Ast As String * 2 '-LCD Alarm Stunde
Dim Amin As String * 2 '-LCD Alarm Minute
Dim Lcd_bel As Word '-LCD Beleuchtung bei demerung AN oder AUS
Dim Lcd_string As String * 2
Sekunde = 0
Minute = 0
Stunde = 0
A = 1 'A Variable
Sreg.7 = 1 '-Global Interrupt
Do
Led = 0
'-----Alarm Ein oder Ausschalten-----
If Alarm_an_aus = 0 Then
If A = 1 Then
A = 0
Else
A = 1
End If
End If
Gosub Lcd_uhr
If Sekunde > 59 Then Incr Minute
If Sekunde > 59 Then Sekunde = 0
If Minute > 59 Then Incr Stunde
If Minute > 59 Then Minute = 0
If Stunde > 23 Then Stunde = 0
If Aminute > 59 Then Incr Astunde
If Aminute > 59 Then Aminute = 0
If Astunde > 23 Then Astunde = 0
'-----LCD-Beleuchtung---ansteuern
Lcd_bel = Getadc(0) '-Foto Element an PC.0 10bit
If Lcd_bel => 512 Then Set Lcd_licht '-Beleuchtung Einschaltem
If Lcd_bel <= 512 Then Reset Lcd_licht '-Beileuchtung Ausschalten
Loop
End
Lcd_uhr:
'-----Sting---Format
S = Str(stunde)
S = Format(s , "00")
M = Str(minute)
M = Format(m , "00")
Sek = Str(sekunde)
Sek = Format(sek , "00")
Ast = Str(astunde)
Ast = Format(ast , "00")
Amin = Str(aminute)
Amin = Format(amin , "00")
Lcd_string = Str(lcd_bel)
Lcd_string = Format(lcd_string , "00")
'-----LCD Linie 2 Alarm
Locate 2 , 15
Lcd Lcd_string
Locate 2 , 12
Lcd Amin 'Amin=Aminute
Locate 2 , 11
Lcd ":"
Locate 2 , 9
Lcd Ast 'Ast=Astunde
Locate 2 , 7
Lcd "<"
Locate 2 , 1
Lcd ">"
Waitms 50
'-----LCD Linie 1 Uhrzeit
Locate 1 , 15
Lcd Sek 'Sek=Sekunde
Locate 1 , 14
Lcd ":"
Locate 1 , 12
Lcd M 'M=Minute
Locate 1 , 11
Lcd ":"
Locate 1 , 9
Lcd S 'S=Stunde
Locate 1 , 3
Lcd "UHR"
Waitms 50
'-----Weker---Einstellen
If A = 0 Then
If Stunde_plus = 0 And Minute_plus = 0 Then 'Werend Alarm=AN und Stunde_plus,Minute_Plus=0 dann Alarm auf NULL
Waitms 50
Astunde = 0
Aminute = 0
Elseif Minute_plus = 0 Then 'Werend Alarm=AN und Minute_plus=0 dann Aminute +1
Waitms 50
Incr Aminute
Elseif Stunde_plus = 0 Then 'Werend Alarm=AN und Stunde_plus=0 dann Astunde +1
Waitms 50
Incr Astunde
End If
End If
'-----Alarm---Ausleusen
If A = 0 Then
If S = Ast And M > Amin Then 'Werend Alarm=AN und Uhr>Alarm dann Alarm-Minutu +3min
Aminute = Minute + 3
Else
If S = Ast And M = Amin Then ' Gosub Alarm 'Werend Alarm=AN und Uhr=Alarm dann Sirene
Led = 0
' Toggle Speaker
Sound Speaker , 65 , 1274 'C2(1/16)
Waitms 2 'P(1/16)
Sound Speaker , 87 , 954 'F2(1/16)
Waitms 2 'P(1/16)
Sound Speaker , 98 , 850 'G2(1/16)
Waitms 2 'P(1/16)
Sound Speaker , 87 , 954 'F2(1/16)
Sound Speaker , 117 , 715 'Ais2(1/16)
Waitms 2 'P(1/16)
Sound Speaker , 110 , 758 'A2(1/16)
Waitms 2 'P(1/16)
Sound Speaker , 98 , 850 'G2(1/16)
Waitms 2 'P(1/16)
Sound Speaker , 110 , 758 'A2(1/16)
Sound Speaker , 87 , 954 'F2(1/16)
Waitms 2
Led = 1
End If
End If
End If
'----->Alarm< im Display wenn Alarm=AN
If A = 0 Then
Locate 2 , 2
Lcd "ALARM"
Else
Locate 2 , 2
Lcd " "
End If
'-----Uhrzeit---Einstellen
If A = 1 Then
If Stunde_plus = 0 And Minute_plus = 0 Then
Waitms 50
Stunde = 0
Minute = 0
Sekunde = 0
Elseif Minute_plus = 0 Then
Waitms 50
Incr Minute
Elseif Stunde_plus = 0 Then
Waitms 50
Incr Stunde
End If
End If
Return
Takt:
Incr Sekunde
Return