ساخت ساعت دیجیتال
در این بخش تیم الکترونیک و برنامه نویسی الکترونیک ۹۸, اقدام به طراحی و انتشار پروژه ای کاربردی و حرفه ای با عنوان, ساعت دیجیتال با قابلیت نمایش ساعت، دقیقه و ثانیه توسط سون سگمنت, برای شما علاقه مندان به پروژه های میکروکنترلر AVR کرده است. در این پروژه زمان دقیق محاسبه شده توسط واحد RTC میکروکنترلر AVR، به کمک 6 عدد سون سگمنت (7-Segment) آند مشترک بر حسب ساعت، دقیقه و ثانیه مشاهده می شود. همچنین شما می توانید با استفاده از دو میکروسوئیچ تعبیه شده در مدار زمان را نیز تنظیم نمائید.
نقشه شماتیک پروژه
مدار طراحی شده در این پروژه بسیار حرفه ای و استاندارد بوده به نحوی که برای محاسبه بسیار دقیق زمان از واحد RTC میکروکنترلر ATmega32 و کریستال ساعت استفاده شده، و همچنین جهت راه اندازی صحیح سون سگمنت ها از آی سی 74HC573 که یک تراشه Latch می باشد، به کار گرفته شده است. به همین دلیل شما می توانید با استفاده از این پروژه یک ساعت دیجیتالی بسیار دقیق و زیبا با استفاده از نمایشگرهای سون سگمنت (7-Segment) و میکروکنترلرهای AVR بسازید.
سخت افزار پروژه
در این پروژه به کمک میکروکنترلر ATmega32 و آی شس 74HC573، که همانطور که گفته شد یک تراشه Latch می باشد، زمان بر روی نمایشگر ظاهر شده و به کمک شستی های MIN و HOUR می توان ساعت و دقیقه را تنظیم کرد. این ساعت از زمان سنج داخلی RTC برای داشتن دقت بالا استفاده می کند و زمان پیش فرض آن برای شروع 12:00:00 می باشد.
همچنین فایل شبیه ساز این پروژه نیز که با نرم افزار Proteus 8 Professional طراحی شده، پیوست فایل پروژه جهت دانلود قرار داده شده است، که می تواند شما را در یادگیری هر چه بهتر مدار و نحوه عملکرد آن یاری نماید.
برنامه میکروکنترلر به زبان بیسیک BASIC در نرم افزار BASCOM-AVR
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 |
$regfile = "m32def.dat" $crystal = 8000000 '--------------------------------------- Config Porta = Output Config Portb = Output Config Portd = Output Config Pinc.0 = Input Config Pinc.1 = Input '--------------------------------------- Ddrc.0 = 0 : Portc.0 = 1 Ddrc.1 = 0 : Portc.1 = 1 '--------------------------------------- Enable Interrupts Config Clock = Soft '--------------------------------------- Dim A As Byte , B As Byte , X As Byte , X2 As Byte Dim X3 As Byte , Led As Integer , F As Byte Dim Key As Bit '--------------------------------------- _min = 12 _sec = 12 _hour = 12 '--------------------------------------- X = _sec X2 = _min X3 = _hour '--------------------------------------- For A = 0 To 5 Portd = Lookup(0 , Digit) 'FOR DISPLAY 0 FOR DEFULT ON 7 SEG MENT Porta.a = 1 Porta.a = 0 Next A '--------------------------------------- Do 'CHANGE NUMBER If Pinc.0 = 0 And Key = 0 Then Key = 1 Incr _min If _min > 59 Then _min = 0 End If If Pinc.1 = 0 And Key = 0 Then Key = 1 Incr _hour If _hour > 23 Then _hour = 0 End If If Pinc.0 = 1 And Pinc.1 = 1 And Key = 1 Then Key = 0 Waitms 10 Select Case X '--------------------------------------- 'SECOND Case Is < 10 : Portd = Lookup(_sec , Digit) Porta.0 = 1 Porta.0 = 0 '--------------------------------------- Case Is >= 10 : A = _sec / 10 Portd = Lookup(a , Digit) Porta.1 = 1 Porta.1 = 0 '--------------------------------------- B = _sec Mod 10 Portd = Lookup(b , Digit) Porta.0 = 1 Porta.0 = 0 End Select '--------------------------------------- Select Case X2 ' MINUTE Case Is < 10 : Portd = Lookup(_min , Digit) Porta.2 = 1 Porta.2 = 0 '--------------------------------------- Case Is >= 10 : A = _min / 10 Portd = Lookup(a , Digit) Porta.3 = 1 Porta.3 = 0 '--------------------------------------- B = _min Mod 10 Portd = Lookup(b , Digit) Porta.2 = 1 Porta.2 = 0 '--------------------------------------- End Select Select Case X3 ' HOUR '--------------------------------------- Case Is < 10 : Portd = Lookup(_hour , Digit) Porta.4 = 1 Porta.4 = 0 '--------------------------------------- Case Is >= 10 : A = _hour / 10 Portd = Lookup(a , Digit) Porta.5 = 1 Porta.5 = 0 '--------------------------------------- B = _hour Mod 10 Portd = Lookup(b , Digit) Porta.4 = 1 Porta.4 = 0 End Select '--------------------------------------- Incr Led 'FOR LIGHTING BETWEEN LED If Led > 37 Then Toggle Portb.0 Led = 0 End If Loop '--------------------------------------- Digit: Data &B11000000 '0 Data &B11111001 Data &B10100100 Data &B10110000 Data &B10011001 Data &B10010010 Data &B10000011 Data &B11111000 Data &B10000000 Data &B10011000 '9 |
سلام میشه لطفا بگید فایلی که به اسم codeهست باچه برنامه باز میشه؟!
سلام دوست عزیز
اگه برنامه به زبان بیسیک نوشته شده از نرم افزار بسکام و اگر به زبان سی نوشته شده با نرم افزار کدویژن باز کنید .
سلام خسته نباشید
2000تا اسم دادم برای سایتتون هیچ کودومه قبول نکرد
سلام دوست عزیز
از آنجا که کاربران سایت الکترونیک98 بسیار زیاد هستند اکثر نام های کاربری مرسوم و رند، پر شده اند، لذا شما برای ثبت نام در سایت باید نام کاربری مورد نظر خود را با برخی اعداد مثل سال تولد، سال میلادی و یا یک عدد استفاده کنید، تا احتمال تکراری بودن نام کاربری به صفر برسد.
سلام ببخشید ال ای دی ها از نظر سخت افزاری برای چه کاری گذاشته شدن؟
سلام دوست عزیز
لامپ های LED حکم ثانیه شمار در ساعت های دیجیتالی را دارند، همان دو نقطه ای که در ساعت های دیجیتالی با هر بار تغییر ثانیه در بین دقیقه و ساعت خاموش و روشن می شوند.
سلام خسته نباشید میشه کد این برنامه رو واسه کدویژن بزارید من هر کاری میکنم این کد رو واسه کد ویژن نمیخونه ممنون میشم کد برنامه کد ویژن هم بزارید خیلی سپاس گذارم.
سلام دوست عزیز
برنامه این پروژه به زبان بیسیک نوشته شده است و باید در کامپایلر BASCOM-AVR آنرا اجرا نمایید.
در حال حاضر زبان C پروژه نوشته نشده و در دسترس نیست.
سلام داداش واقعا من به برنامه این ساعت نیاز دارم اخه استادمون گفته فقط کدویژن میتونی شما برنامه کدویژن رو برای من بنویسی خیلی ممنون میشم از شما
سلام دوست عزیز
با توجه محدودیت زمانی و حجم کاری بالا در حال حاضر این امکان برای ما مقدور نیست.