ساخت ساعت و تقویم دیجیتال
در این بخش تیم الکترونیک و برنامه نویسی الکترونیک ۹۸, اقدام به طراحی و انتشار پروژه ای کاربردی و حرفه ای با عنوان, ساخت ساعت و تقویم بسیار دقیق و پیشرفته به کمک واحد RTC میکروکنترلر, برای شما علاقه مندان به پروژه های میکروکنترلر AVR کرده است. در این پروژه زمان دقیق جاری بر حسب ساعت، دقیقه و ثانیه و تاریخ بر حسب سال، ماه و روز را بر روی یک LCD کاراکتری نمایش داده می شود و به کمک دو شستی می توان کلیه مقادیر زمان و تاریخ را تغییر داد.
نقشه شماتیک پروژه
برای محاسبه زمان واقعی و رسیدن به زمان دقیق برای هر یک ثانیه باید از کریستال ساعت یا همان کریستال 32768Hz در میکروکنترلرهای AVR استفاده کرد، لازم به ذکر است کریستال ساعت در میکروکنترلرهای AVR به دو پایه Tosc1 و Tosc2 متصل می شود.
این برنامه به کمک واحد RTC میکروکنترلر ATmega16 نوشته شده، در نتیجه مقدار زمان اندازه گیری شده بسیار دقیق می باشد. به کمک دستور Config Clock= Soft ساعت داخلی را فعال کرده و با دستور Config Date = Ymd, Separator تقویم را پیکربندی می کنیم.
حال کافی است زمان و تاریخ پیش فرض را با دستورات Date$ و Time$ وارد کنیم. با شروع به کار برنامه ساعت به صورت خودکار به روز می شود. به کمک توابع Inctime و Incdate می توان زمان و تاریخ را تنظیم کرد، به طوری که مثلا وقتی دقیقه به 59 برسد و ما یک واحد اضافه کنیم به عدد 1 برمی گردد.
همچنین فایل شبیه ساز این پروژه نیز که با نرم افزار 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 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 |
$regfile = "m16def.dat" $crystal = 8000000 '---------------------------------------- Config Lcdpin = Pin , Db7 = Porta.0 , Db6 = Porta.1 , Db5 = Porta.2 , Db4 = Porta.3 , E = Porta.4 , Rs = Porta.5 Config Lcd = 16 * 2 Cursor Off : Cls '---------------------------------------- Config Debounce = 30 Config Clock = Soft Config Date = Ymd , Separator = / Dim T As Byte , D As Byte T = 0 : D = 0 Enable Interrupts Time$ = "12:45:50" Date$ = "93/09/27" '---------------------------------------- Do Home Lcd "Time: " ; Time$ Lowerline Lcd "Date: " ; Date$ Debounce Pinb.0 , 0 , Menu Repeat: Loop End '---------------------------------------- Menu: T = 0 D = 0 Cls Lcd "Time Setting:" Do Debounce Pinb.0 , 0 , Label1 Debounce Pinb.1 , 0 , Timeset Loop '---------------------------------------- Label1: Cls Lcd "Date Setting:" Do Debounce Pinb.0 , 0 , Repeat Debounce Pinb.1 , 0 , Dateset Loop '---------------------------------------- Timeset: Cls Incr T Lcd "Hour: " ; _hour Do Debounce Pinb.1 , 0 , Inctime , Sub Debounce Pinb.0 , 0 , Label2 Loop '---------------------------------------- Label2: Cls Incr T Lcd "Min: " ; _min Do Debounce Pinb.1 , 0 , Inctime , Sub Debounce Pinb.0 , 0 , Label1 Loop '---------------------------------------- Dateset: Cls Incr D Lcd "Day: " ; _day Do Debounce Pinb.1 , 0 , Incdate , Sub Debounce Pinb.0 , 0 , Label3 Loop '---------------------------------------- Label3: Cls Incr D Lcd "Month: " ; _month Do Debounce Pinb.1 , 0 , Incdate , Sub Debounce Pinb.0 , 0 , Label4 Loop '---------------------------------------- Label4: Cls Incr D Lcd "Year: " ; _year Do Debounce Pinb.1 , 0 , Incdate , Sub Debounce Pinb.0 , 0 , Repeat Loop '------------------------------------- Inctime: If T = 1 Then Incr _hour If _hour = 24 Then _hour = 0 End If Cls Lcd "Hour: " ; _hour Else If T = 2 Then Incr _min If _min = 60 Then _min = 0 End If Cls Lcd "Min: " ; _min End If End If Return '------------------------------------- Incdate: If D = 1 Then Incr _day If _day > 31 Then _day = 1 End If Cls Lcd "Day: " ; _day Else If D = 2 Then Incr _month If _month > 12 Then _month = 1 End If Cls Lcd "Month: " ; _month Else If D = 3 Then Incr _year If _year > 100 Then _year = 0 End If Cls Lcd "Year: " ; _year End If End If End If Return |
سلام دوست عزیز
لینک دانلود بررسی شد و مشکلی یافت نشد، لطفا در صورتیکه از ابزار تغییر آی پی استفاده می کنید در هنگام دانلود آنرا غیرفعال کنید.
سلام
من این پروژه شما رو مدارش رو به صورت عملی رو برد بستم ولی ساعت کارنمیکنه و ثابت مونده.
ممنون میشم اگه کمک کنید چون زمان کم دارم برای تحویل
با سلام و احترام
پروژه فوق یک پروژه ساده و عملی می باشد، مشکل عدم عملکرد ساعت به احتمال زیاد از سمت کریستال ساعت می باشد. همچنین توجه داشته باشید در زمان پروگرام کردن میکروکنترلر حتما حتما باید فیوزبیت Jtag که به صورت پیش فرض بر روی میکروکنترلر فعال است را غیرفعال کنید.
سلام مهتدس جان میشه فایل PCB این مدار رو بفرستید ممنون میشم
با سلام و احترام
این پروژه فاقد فایل طراحی شده PCB می باشد.
کریستال ۳مگاهرتز توبازار اصلا نبود یدونه ۴ گرفتیم ولی مدارکارنکرد فیوز بیتاش چجوریه مهندس جان میشه راهنمایی کنید و اینکه فرکانس برنامه ای ک نوشتید چندمگاهرتزه
با سلام و احترام
کریستال مورد استفاده در این پروژه در بازار به نام کریستال ساعت معروف است و مقدار آن برابر با 32768Hz هرتز و یا معادل 32.768KHz کیلوهرتز می باشد.
اگه ممکنه تنظیمات و فیوزبیت های میکروکنترلر رو برای پروگرم کردن قراربدید ممنون میشم چون وبتی برای تحویل پروژه ندارم
سلام خسته نباشید فایل رو دانلود کردم قسمت پی سی بی مدار پایه های ال سی دی بیشتر 16پایه هستن