Witam wszystkich
Chciałbym wam przedstawić mój nowo zbudowany zegarek na uP Atmega 8 i jako wyświetlacz użyłem LCD 4x20 . Całość zmontowałem na uniwersalnej płytce . Atmega pracuje na wewnętrznym oscylatorze ustawionym na 8 Mhz , do procka podlączyłem kwarc zegarkowy Program przy pomocy kolegi Stefana pisałem w Bascom zdjecia zalącze jutro rano ponieważ muszę zrobić dzisiaj zamieszczam kod programu
Wszelkie komentarze oraz sugestie mile widziane.
Pozdrawiam serdecznie . Bartek
Chciałbym wam przedstawić mój nowo zbudowany zegarek na uP Atmega 8 i jako wyświetlacz użyłem LCD 4x20 . Całość zmontowałem na uniwersalnej płytce . Atmega pracuje na wewnętrznym oscylatorze ustawionym na 8 Mhz , do procka podlączyłem kwarc zegarkowy Program przy pomocy kolegi Stefana pisałem w Bascom zdjecia zalącze jutro rano ponieważ muszę zrobić dzisiaj zamieszczam kod programu
$regfile = "m8def.dat"
$crystal = 8000000
Config Lcd = 20 * 4
Config Lcdpin = Pin , Db4 = Portd.2 , Db5 = Portd.3 , Db6 = Portd.4 , Db7 = Portd.5 , E = Portd.1 , Rs = Portd.0
Config Clock = Soft
Config Date = Dmy , Separator = /
Time$ = "00:00:00"
Date$ = "01/01/10"
Config Pinb.0 = Input : Set Portb.0 : S1 Alias Pinb.0
Config Pind.7 = Input : Set Portd.7 : S2 Alias Pind.7
Config Pind.6 = Input : Set Portd.6 : S3 Alias Pind.6
Config Pinc.4 = Input : Set Portc.4 : S4 Alias Pinc.4
Config Pinc.3 = Input : Set Portc.3 : S5 Alias Pinc.3
Config Pinc.2 = Input : Set Portc.2 : S6 Alias Pinc.2
Buzzer Alias Portb.2
Config Rc5 = Pinb.1
Deflcdchar 0 , 31 , 31 , 31 , 31 , 31 , 31 , 31 , 31 ' replace ? with number (0-7)
Deflcdchar 1 , 32 , 27 , 27 , 32 , 4 , 17 , 17 , 14 ' replace ? with number (0-7)
Deflcdchar 3 , 31 , 31 , 31 , 31 , 31 , 31 , 31 , 31 ' replace ? with number (0-7)
Cursor Off
Cls
Lcd " Zegarek by Bartek"
Lowerline
Lcd " Ver 1.0"
Thirdline
Lcd " Bascom AVR"
Dim A As Byte
Fourthline
For A = 0 To 19
Waitms 250
Lcd Chr(3)
Next
Waitms 200
Sound Buzzer , 500 , 250
Wait 1
Gosub Ustawianie
Ustawianie:
Disable Interrupts
Cls
Lcd "Ustawianie czasu"
Do
Lowerline
Lcd ; Spc(5) ; Time$
If S3 = 0 Then Gosub Godz
If S2 = 0 Then Gosub Minuty
If S1 = 0 Then Gosub Sekundy
If S4 = 0 Then Exit Do
If _hour = 24 Then _hour = 00
If _min = 60 Then _min = 00
If _sec = 60 Then _sec = 00
Loop
Cls
Sound Buzzer , 500 , 250
Waitms 850
Enable Interrupts
Wroc:
Lcd " Godzina"
Do
Lowerline
Lcd ; Spc(4) ; Time$ ; Spc(8)
If Time$ = "22:40:00" Then Gosub Dzwiek
If S5 = 0 Then Gosub Dzwiek
If S6 = 0 Then Gosub Ustawianie
Loop
Godz:
Incr _hour
Waitms 100
Return
Minuty:
Incr _min
Waitms 100
Return
Sekundy:
Incr _sec
Waitms 100
Return
Dzien:
Incr _day
Waitms 100
Return
Mies:
Incr _month
Waitms 100
Return
Rok:
Incr _year
Waitms 100
Return
Dzwiek:
Cls
Lcd "Alarm Budzik"
Sound Buzzer , 1000 , 150
Waitms 100
Sound Buzzer , 800 , 250
Waitms 100
Sound Buzzer , 1300 , 400
Waitms 100
Sound Buzzer , 400 , 100
Waitms 100
Sound Buzzer , 600 , 600
Waitms 100
Sound Buzzer , 1000 , 500
Waitms 100
Reset Buzzer
Cls
Gosub Wroc
End
Wszelkie komentarze oraz sugestie mile widziane.
Pozdrawiam serdecznie . Bartek
