gut, die schaltung ist soweit aufgebaut.
- mega8 in auslieferungszustand
- ein 20*4 lcd ist erfolgreich angeschloseen
- ein uhrenquarz (32, 7... kHz) ist an xtal angeschlossen ohne externe kondensatoren
hier mein code:
Code:
' +-------------------------------------------------------------------------------+
' | Projektname: Terrarium Kontroll Einheit |
' | Projektbeschreibung: Steuereinheit mit Temperaturmessung und Relaissteuerung. |
' | Zeitsteuerung über Softclock und Uhrenquarz |
' | |
' | Dateiname: tke.bas |
' | Version: 0.2 |
' | |
' | Author: René Brixel |
' | Kontakt: rbrixel@capsob.de |
' | |
' | Start des Projekts: 27.04.2007 |
' | Ende des Projekts: --.--.---- |
' +-------------------------------------------------------------------------------+
'--------------- AVR Einstellungen ---------------
$regfile = "m8def.dat" 'AVR ATMega 8...
$crystal = 1000000 '...mit internen 1 MHz
Config Date = Mdy , Separator = /
Config Clock = Soft
Enable Interrupts
'--------------- PORT Einstellungen ---------------
Ddrb = &B00000000 '1 = Ausgang; 0 = Eingang
Portb = &B00000001 'Wenn Eingang, dann 1 = PullUp aktiviert
Ddrd = &B01111111 '1 = Ausgang; 0 = Eingang
Portd = &B10000000 'Wenn Eingang, dann 1 = PullUp aktiviert
Taster_enter Alias Pind.7 'Taster Enter / Set
Taster_menu Alias Pinb.0 'Taster Setup / Menu
'--------------- LCD Einstellungen ---------------
Config Lcd = 20 * 4 'Ein 20 * 4 Zeilen LCD
Config Lcdpin = Pin , Db4 = Portd.3 , Db5 = Portd.2 , Db6 = Portd.1 , Db7 = Portd.0 , E = Portd.4 , Rs = Portd.6
Config Lcdbus = 4 '4 Bit Modus
Cursor Off 'Cursor des LCDs ausschalten
'--------------- Variablen Deklaration ---------------
Time$ = "00:00:00" 'Setzen auf Startwert
Date$ = "00/00/00" 'Setzen auf Startwert
'--------------- HAUPTPROGRAMM ---------------
Do
Locate 1 , 1
Lcd Time$ 'Zeige Zeit in Zeile1
Locate 2 , 1
Lcd _day ; "/" ; _month ; "/0" ; _year 'Zeige Datum in Form DD/MM/YY in Zeile2
If Taster_menu = 0 Then Gosub Time 'wiederhole Anzeige bis Taster 1 zum Stellen gedrückt, springe nach Sub "Time"
Waitms 200
Loop
End
'Stunde
Time:
Waitms 200
Cls 'lösche Zeilen
Do
Locate 1 , 1
Lcd "Stunde einstellen:" 'Stunden setzen
Locate 2 , 1
Lcd _hour
If Taster_enter = 0 Then 'Mit Taster 2
Incr _hour 'hochzählen
Locate 2 , 1
Lcd _hour
Waitms 200
End If
If _hour > 23 Then 'Zählt bis Max, danach wieder ab 0
Cls
_hour = 00
End If 'solange, bis Taster 1 gedrückt
Loop Until Taster_menu = 0
Waitms 200
'Minute
Cls
Do
Locate 1 , 1
Lcd "Minute einstellen:"
Locate 2 , 1
Lcd _min
If Taster_enter = 0 Then
Incr _min
Locate 2 , 1
Lcd _min
Waitms 200
End If
If _min > 59 Then
Cls
_min = 00
End If
Loop Until Taster_menu = 0
Waitms 200
Cls
'Tag
Cls
Do
Locate 1 , 1
Lcd "Tag einstellen:"
Locate 2 , 1
Lcd _day
If Taster_enter = 0 Then
Incr _day
Locate 2 , 1
Lcd _day
Waitms 200
End If
If _day > 31 Then
Cls
_day = 01
End If
Loop Until Taster_menu = 0
Waitms 200
Cls
'Monat
Cls
Do
Locate 1 , 1
Lcd "Monat einstellen:"
Locate 2 , 1
Lcd _month
If Taster_enter = 0 Then
Incr _month
Locate 2 , 1
Lcd _month
Waitms 200
End If
If _month > 12 Then
Cls
_month = 01
End If
Loop Until Taster_menu = 0
Waitms 200
Cls
'Jahr
Cls
Do
Locate 1 , 1
Lcd "Jahr einstellen:"
Locate 2 , 1
Lcd _year
If Taster_enter = 0 Then
Incr _year
Locate 2 , 1
Lcd _year
Waitms 200
End If
If _year > 10 Then
Cls
_year = 00
End If
Loop Until Taster_menu = 0
Waitms 200
Cls
_sec = 00 'Springe Nach Setzen Von Zeit / Datum Wieder Zurueck
Return
thx an andree-hb.
PROBLEM: die uhr lässt sich zwar einstellen, aber die zeit wird nich hochgezählt. sozusagen - die uhr steht. hat jemand eine idee?
cap.
Lesezeichen