ساخت ساعت دیجیتال
در این بخش تیم الکترونیک و برنامه نویسی الکترونیک ۹۸, اقدام به طراحی و انتشار پروژه ای کاربردی و جذاب با عنوان, نمایش ساعت و دقیقه روی سون سگمنت با قابلیت تنظیم RTC, برای شما علاقه مندان به پروژه های میکروکنترلر AVR کرده است. در این پروژه بر روی یک سون سگمنت مالتی پلکس چهار رقمی ساعت و دقیقه نمایش داده می شود، و هر ثانیه LED نقطه (DP) روشن و خاموش می گردد. همچنین توسط دو شستی می توان زمان را تغییر داد.
نقشه شماتیک پروژه
برای آنکه ساعت دیجیتالی با دقت بالایی داشته باشیم از کریستال 32768Hz یا همان کریستال ساعت برای فعال سازی واحد RTC استفاده می کنیم. دقت این تایمر به مراتب بالاتر از دستورات تاخیری است.
پس از پیکربندی RTC با دستور Config Clock = Soft, Gosub = Sectic و Timer$، ساعت داخلی میکروکنترلر ATmega8 با زمان اولیه 23:22 شروع به کار می کند. افزایش زمان با تابع Sub Keyscan انجام می شود. تابع Sub Send مربوط به ارسال معادل باینری زمان روی سون سگمنت (7-Segment) می باشد.
همچنین فایل شبیه ساز این پروژه نیز که با نرم افزار 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 |
$regfile = "m8def.dat" $crystal = 8000000 'Internal RC $hwstack = 64 $swstack = 64 $framesize = 64 '---------------------------------------RTC Config Clock = Soft , Gosub = Sectic Enable Interrupts Time$ = "23:22:10" '---------------------------------------I/O Config Portd = Output 'A-G (Data) Config Portc = Output 'Comm. Anode Config Pinb.0 = Input 'Hour Key Config Pinb.1 = Input 'Minute Key Config Pinb.2 = Output 'Blink Sec '---------------------------------------Set Pullup Resistor For Setting Key's Set Portb.0 Set Portb.1 '---------------------------------------Aliases Dataport Alias Portd Comm Alias Portc Hour_key Alias Pinb.0 Min_key Alias Pinb.1 Second_led Alias Portb.2 '---------------------------------------Variables Dim Temp As Byte Dim Temp2 As Byte Dim Scnd As Byte Dim Rtc_run As Byte Dim S As Bit Dim Dp As Bit '---------------------------------------Declaration Declare Sub Keyscan Declare Sub Refresh Declare Sub Send Declare Sub Wait4key Declare Sub Blink_sec '---------------------------------------Wait 4 RTC Start Comm = &H0F 'Prompt Do If Rtc_run > 0 Then Exit Do Loop '---------------------------------------Main Prog Start Here: Do Call Keyscan Call Refresh Call Blink_sec Loop End '--------------------------------------- Sub Keyscan If Hour_key = 0 Then Incr _hour If _hour > 23 Then _hour = 0 Call Wait4key End If If Min_key = 0 Then Incr _min If _min > 59 Then _min = 0 Call Wait4key End If End Sub '--------------------------------------- Sub Refresh Comm = &B1000 : Dp = 0 : Temp = _hour \ 10 : Call Send Comm = &B0100 : Dp = 1 : Temp = _hour Mod 10 : Call Send Comm = &B0010 : Dp = 0 : Temp = _min \ 10 : Call Send Comm = &B0001 : Dp = 0 : Temp = _min Mod 10 : Call Send End Sub '--------------------------------------- Sub Send Dataport = Lookup(temp , Segdata) If Dp = 1 Then Portd.7 = S Else Portd.7 = 1 End If Waitms 4 Dataport = &HFF End Sub '--------------------------------------- Sub Wait4key For Temp2 = 1 To 25 Call Refresh Next End Sub '--------------------------------------- Sub Blink_sec Incr Scnd If Scnd > 63 Then Scnd = 0 If Scnd > 0 And Scnd < 31 Then S = 1 Else S = 0 End If End Sub '--------------------------------------- Segdata: Data &B11000000 , &B11111001 , &B10100100 , &B10110000 Data &B10011001 , &B10010010 , &B10000010 , &B11111000 Data &B10000000 , &B10010000 '--------------------------------------- Sectic: Incr Rtc_run Return |
فایل c که نداره چه بدرد میخوره؟چطوری باید ببینیم کد چی نوشتین؟
همانطور که در بخش توضیحات پروژه نوشته شده برنامه این پروژه به زبان بیسیک نوشته شده است برای دیدن برنامه نوشته شده باید از نرم افزار بسکام استفاده کنید.
سلام میشه تنظیمات مربوط به فیوز بیت هارو بگید ما هم مشکلمون حل بشه؟
سلام دوست عزیز
باید در هنگام پروگرام کردن میکروکنترلر وضعیت فیوزبیت های مربوط به کریستال را بر روی 8 مگاهرتز داخلی به صورت زیر تنظیم کنید و سپس برای اعمال تغیرات فیوزبیت ها را بر روی میکروکنترلر پروگرام کنید.
CKSEL0=0 : CKSEL1=0 : CKSEL2=1 : CKSEL3=0
سلام
وقتی شما آند مشترک گذاشتید من روی pcb دقیقا باید چیکار کنم؟ یعنی مشترکها بدون ترانزیستور به آیسی منفی ها با ترانزیستور یا برعکس…. من گیج شدم عذرخواهی میکنم. لطف میکنید جواب بدید ممنون
سلام دوست عزیز
متوجه سوال شما نشدیم! آیا سوال شما در رابطه با همین مطلب است؟
سلام مجدد، بله.
شما فقط ۱بار درباره اینکه چه سونسگمنتی بخرم و چطور به آیسی وصلش کنم ۱توضیح مختصر بدید کافیه.
منظورم اینه که مستقیم وصل بشه یا باید بعد آیسی ترانزیستور بزارم یا نه….
سلام دوست عزیز
برای ساخت این پروژه باید از سون سگمنت 4 رقمه مالتی پلکس آند مشترک استفاده کنید.
برای اتصال آن به میکروکنترلر کافی است پایه های A تا F سون سگمنت را شناسایی کنید و همانند نقشه شماتیک به میکروکنترلر متصل نمائید. همچنین در صورتیکه نور سگمنت ها کم بود می توانید از ترانزیستور برای راه اندازی سون سگمنت استفاده کنید.
متوجه شدم، ممنون از وقتی که برای پاسخ دادن میزارید.
عذرخواهی میکنم باز سوال میپرسم
چیکار میشه کردکه با قطعو وصل ولتاژ حتی تا چندروز زمان بههم نریزه؟
سلام دوست عزیز
برای اینکار می توانید از آی سی DS1307 که در بازار به آی سی ساعت معروف است استفاده کنید.
الان دربارش خوندم، ورودی و خروجیش چطور به آیسی متصل میشه؟ کدهاشو چطور باید کامپایل کرد؟
سلام دوست عزیز
جهت یافتن پاسخ سوالات خود و راه اندازی تراشه DS1307 لطفا لینک زیر را مشاهده کنید:
راه اندازی آی سی ساعت DS1307
سلام وقتتون بخیر، این پروژه رو با ds1307 مچ کنید و برنامه و طرح pcb این مدارو برام بفرستید هزینش چه مقدار میشه؟
با سلام .ببخشید هنگامی که میخواستم ساعت درشیبه شاز( Proteus 8)را اجرا کنم ساعت روی ۲۳ وایستاده وحرکت نمکند وهی چشمک میزند کلید کار نمیکند مشکل از کجا میباشد.مرسی اقای اکبری