adambose1990
Newbie level 4
- Joined
- Oct 7, 2011
- Messages
- 7
- Helped
- 0
- Reputation
- 0
- Reaction score
- 0
- Trophy points
- 1,281
- Location
- Kolkata, India
- Activity points
- 1,389
This is a whole new Digital alarm clock in 7-segment display....... Some user interface facility is given here.
This is the circuit diagram....
Components used:
4 7-segment displays
1 AT89s52/AT89c52
28 Resistors of 150 ohm
1 Capacitor 10uF
2 Capacitors 33pF
5 volt Buzzer
1 12MHz crystal
5 Red LEDs
4 DIP switches (push button)
Description:
2 switches 'HOUR' and 'MINUTE' have been used for increasing the hour and minute in display. The clock will show 12:00 AM while switching for the first time. Then adjust the time using those HOUR and MINUTE buttons. If you want to set alarm push SET ALARM button then adjust the hour and minute and then push SAVE ALARM button. When the alarm buzzer is ringing press SET ALARM twice to stop the buzzer. This will ensure your awaking. There are two LEDs for indication AM and PM respectively. Another 2 LEDs are used for second-clock-indication. The lower LED will blink for the first 30 secs and upper one will blink for the rest 30 secs. When you are have set an alarm timing, another LED will glow.
So this is pretty cool na? I think this is much user friendly.
Coding: Coding is done in BASCOM 8051 V2.0.11.0. Its very easy, you can convert it to its equivalent C program after you understand the code.
or do something funny, just make a .hex file using you notepad and copy these following codes into it.
You also can download following rar file containing everything you need.
.bas //for Bascom
.hex
.jpg
.dsn
This is the circuit diagram....
Components used:
4 7-segment displays
1 AT89s52/AT89c52
28 Resistors of 150 ohm
1 Capacitor 10uF
2 Capacitors 33pF
5 volt Buzzer
1 12MHz crystal
5 Red LEDs
4 DIP switches (push button)
Description:
2 switches 'HOUR' and 'MINUTE' have been used for increasing the hour and minute in display. The clock will show 12:00 AM while switching for the first time. Then adjust the time using those HOUR and MINUTE buttons. If you want to set alarm push SET ALARM button then adjust the hour and minute and then push SAVE ALARM button. When the alarm buzzer is ringing press SET ALARM twice to stop the buzzer. This will ensure your awaking. There are two LEDs for indication AM and PM respectively. Another 2 LEDs are used for second-clock-indication. The lower LED will blink for the first 30 secs and upper one will blink for the rest 30 secs. When you are have set an alarm timing, another LED will glow.
So this is pretty cool na? I think this is much user friendly.
Coding: Coding is done in BASCOM 8051 V2.0.11.0. Its very easy, you can convert it to its equivalent C program after you understand the code.
Code:
' Description:
'
' Compiled by BASCOM 8051 Demo
'
' [url=https://www.mcselec.com]Home - MCS Electronics[/url]
'
'===========================================================================
$regfile = "REG51.DAT"
'---------------------------------------------------------------------------
' 7 Segment Pattern Data
Const Segpat0 = &B11000000 ' 0 ****A***
Const Segpat1 = &B11111001 ' 1 * *
Const Segpat2 = &B10100100 ' 2 F B
Const Segpat3 = &B10110000 ' 3 * *
Const Segpat4 = &B10011001 ' 4 ****G***
Const Segpat5 = &B10010010 ' 5 * *
Const Segpat6 = &B10000010 ' 6 E C
Const Segpat7 = &B11011000 ' 7 * *
Const Segpat8 = &B10000000 ' 8 ****D***
Const Segpat9 = &B10011000 ' 9
Const Segpblk = &B11111111 ' 10 BLANK
'---------------------------------------------------------------------------
Hour10 Alias P1.0
Led_am Alias P1.1
Led_pm Alias P1.2
Piezo Alias P1.3
Sw_alarm Alias P1.4
Sw_exit Alias P1.5
Sw_hour Alias P1.6
Sw_min Alias P1.7
'---------------------------------------------------------------------------
Dim Icount As Word
Dim Clock_cent As Byte
Dim Clock_second As Byte
Dim Clock_min As Byte
Dim Clock_hour As Byte
Dim Alarm_min As Byte
Dim Alarm_hour As Byte
Dim Data_min As Byte
Dim Data_hour As Byte
Dim Tempa As Byte
Dim Tempb As Byte
Dim Tempc As Byte
Dim Beep As Bit
Dim Dot_high As Bit
Dim Dot_low As Bit
Dim Dot_alarm As Bit
'===========================================================================
On Timer0 Timebase ' Timer0 Interrupt
'---------------------------------------------------------------------------
Config Timer0 = Timer , Gate = Internal , Mode = 2 ' Timer0 Auto Reload Timer Mode
Load Timer0 , 200 ' Auto Reload Constant 200 uSec
Start Timer0 ' Start Timer0
Enable Timer0 ' Enable Timer0
Enable Interrupts ' Enable All Interrupt
'===========================================================================
Icount = 0
Clock_cent = 0
Clock_second = 0
Clock_min = 0
Clock_hour = 0
Alarm_min = 0
Alarm_hour = 0
Beep = 0
Dot_alarm = 1
'---------------------------------------------------------------------------
Main_clock:
'
If Clock_cent > 99 Then
Clock_cent = 0
Incr Clock_second
End If
'
If Clock_second > 59 Then
Clock_second = 0
Incr Clock_min
End If
'
If Clock_min > 59 Then
Clock_min = 0
Incr Clock_hour
End If
'
If Clock_hour > 23 Then
Clock_hour = 0
End If
'
Data_min = Clock_min : Data_hour = Clock_hour
'
Gosub Dot_proc
Gosub Clock_disp
'
If Sw_alarm = 0 Then
Gosub Alarm_proc
End If
'
If Sw_min = 0 Then
Clock_second = 0
Incr Clock_min
If Clock_min > 59 Then
Clock_min = 0
End If
Waitms 100
End If
'
If Sw_hour = 0 Then
Incr Clock_hour
If Clock_hour > 23 Then
Clock_hour = 0
End If
Waitms 100
End If
'
If Dot_alarm = 0 Then
If Clock_hour = Alarm_hour Then
If Clock_min = Alarm_min Then
Set Beep
Else
Reset Beep
End If
Else
Reset Beep
End If
Else
Reset Beep
End If
'
Goto Main_clock
'===========================================================================
Clock_disp:
'
Tempa = Data_min Mod 10 : Gosub Patconv
If Dot_alarm = 0 Then
Tempb = Tempb And &H7F
End If
P3 = Tempb
'
Tempa = Data_min / 10 : Gosub Patconv
If Dot_high = 0 Then
Tempb = Tempb And &H7F
End If
P2 = Tempb
'
If Data_hour < 12 Then
Reset Led_am : Set Led_pm
Tempc = Data_hour
Else
Reset Led_pm : Set Led_am
Tempc = Data_hour - 12
End If
'
If Tempc = 0 Then
Tempc = 12
End If
'
Tempa = Tempc Mod 10 : Gosub Patconv
If Dot_low = 0 Then
Tempb = Tempb And &H7F
End If
P0 = Tempb
'
Tempa = Tempc / 10
'
If Tempa = 1 Then
Reset Hour10
Else
Set Hour10
End If
'
Return
'
'===========================================================================
Dot_proc:
'
If Clock_second < 30 Then
Reset Dot_low
If Clock_cent < 50 Then
Reset Dot_high
Else
Set Dot_high
End If
Else
Reset Dot_high
If Clock_cent < 50 Then
Reset Dot_low
Else
Set Dot_low
End If
End If
'
Return
'
'===========================================================================
Alarm_proc:
'
Set Dot_high : Set Dot_low
Data_min = Alarm_min : Data_hour = Alarm_hour
Gosub Clock_disp
Waitms 100
'
Alarm_loop:
Data_min = Alarm_min : Data_hour = Alarm_hour
Gosub Clock_disp
If Sw_min = 0 Then
Incr Alarm_min
If Alarm_min > 59 Then
Alarm_min = 0
End If
Waitms 100
End If
'
If Sw_hour = 0 Then
Incr Alarm_hour
If Alarm_hour > 23 Then
Alarm_hour = 0
End If
Waitms 100
End If
'
If Sw_alarm = 0 Then
Set Dot_alarm
Goto Alarm_ret
End If
'
If Sw_exit = 0 Then
Reset Dot_alarm
Goto Alarm_ret
End If
'
Goto Alarm_loop
'
Alarm_ret:
'
Waitms 100
'
Return
'===========================================================================
Patconv:
'
Tempa = Tempa And &H0F
Select Case Tempa
Case 0 : Tempb = Segpat0
Case 1 : Tempb = Segpat1
Case 2 : Tempb = Segpat2
Case 3 : Tempb = Segpat3
Case 4 : Tempb = Segpat4
Case 5 : Tempb = Segpat5
Case 6 : Tempb = Segpat6
Case 7 : Tempb = Segpat7
Case 8 : Tempb = Segpat8
Case 9 : Tempb = Segpat9
Case Else
End Select
'
Return
'===========================================================================
Timebase:
'
Incr Icount
'
If Icount > 49 Then ' 49
'
Icount = 0
Incr Clock_cent
End If
'
If Beep = 1 Then
If Piezo = 1 Then
Reset Piezo
Else
Set Piezo
End If
End If
'
If Beep = 0 Then
Set Piezo
End If
'
Return
'---------------------------------------------------------------------------
'
'============================ END OF FILE ==================================
'
or do something funny, just make a .hex file using you notepad and copy these following codes into it.
Code:
:1000000002006632000000000000000203700000E1
:10001000000000320000000000000032000000007C
:10002000000000320000000000000000000012008C
:100030003A60044002E422740122C3EDB50706ECE5
:10004000B50602E422740122F874AD040000000039
:100050000000000070F500D8F022E62401F6FA084E
:10006000E63400F64A22787FE4F6D8FD75813075D3
:100070002000C28CE58954F02402F589758A387510
:100080008C38D28CD2A9D2AF75220075230075248A
:100090000075250075260075270075280075290054
:1000A000C205D208E524B46302800250030200B501
:1000B0007524000525E525B43B02800250030200AB
:1000C000C67525000526E526B43B028002500302D2
:1000D00000D77526000527E527B4170280025003D4
:1000E0000200E675270085262A85272B511A316BD9
:1000F000A294920450030200FB5154A29792045020
:100100000302011C7525000526E526B43B0280028A
:10011000500302011875260074641148A2969204D7
:10012000500302013A0527E527B417028002500365
:1001300002013675270074641148A2089204500326
:10014000020166E527B529028003020161E526B5B3
:100150002802800302015CD20502015EC205020191
:1001600063C205020168C2050200A475F00AE52A0F
:1001700084C0F0782CD0E0F651CCA2089204500351
:10018000020186532D7F852DB075F00AE52A84C0C3
:10019000E0782CD0E0F651CCA20692045003020184
:1001A000A4532D7F852DA0E52BB40C0280024003C3
:1001B0000201BDC291D292852B2E0201D0C292D2F1
:1001C0009175F00CE52BC395F0C0E0782ED0E0F6E9
:1001D000E52EB4000280030201DD752E0C75F00AD5
:1001E000E52E84C0F0782CD0E0F651CCA207920422
:1001F00050030201F8532D7F852D8075F00AE52EFE
:1002000084C0E0782CD0E0F6E52CB4010280030233
:100210000217C290020219D29022E525B41E028074
:1002200002400302023EC207E524B43202800240CB
:1002300003020239C20602023BD206020253C20680
:10024000E524B4320280024003020251C2070202D6
:1002500053D20722D206D20785282A85292B316B53
:100260007464114885282A85292B316BA297920442
:10027000500302028A0528E528B43B02800250039D
:1002800002028675280074641148A29692045003F5
:100290000202A80529E529B41702800250030202D0
:1002A000A475290074641148A294920450030202B8
:1002B000B6D2080202C7A295920450030202C4C239
:1002C000080202C70202647464114822532C0FE52D
:1002D0002CB4000280030202DF752DC002036FE51B
:1002E0002CB4010280030202EF752DF902036FE5C1
:1002F0002CB4020280030202FF752DA402036FE5F5
:100300002CB40302800302030F752DB002036FE5C6
:100310002CB40402800302031F752D9902036FE5BC
:100320002CB40502800302032F752D9202036FE5A2
:100330002CB40602800302033F752D8202036FE591
:100340002CB40702800302034F752DD802036FE51A
:100350002CB40802800302035F752D8002036FE551
:100360002CB40902800302036F752D9802036F22DB
:10037000C0D0C2D3C0E0C0F0C083C082C000C00102
:10038000C002C003C004C005C006C007C008C00941
:10039000C00AC00BC00CC00DC00EC00FC010C011F1
:1003A0007822115AAC22AD237E317F00112E6003DA
:1003B0000203BB7522007523000524A205920440A8
:1003C000030203D4A293920440030203D2C2930215
:1003D00003D4D293A205920450030203DFD293D038
:1003E00011D010D00FD00ED00DD00CD00BD00AD021
:1003F00009D008D007D006D005D004D003D002D051
:1004000001D000D082D083D0F0D0E0D0D032000034
:00000001FF
You also can download following rar file containing everything you need.
.bas //for Bascom
.hex
.jpg
.dsn