Google Translate


جهت Ø¯Ø±ÙŠØ§ÙØª رايگان تازه هاي سايت شماره مويايل خود را به همراه نام Ùˆ نام خانوادگي به شماره 99009123812060 ارسال كنيد.
| · موتور همو پلار در 10 ثانيه | [ 5 نظر - 16016 مشاهده ] |
| · نصب برنامه در Slax | [ 9 نظر - 12310 مشاهده ] |
| · ورود به Ù…ØÙŠØ· Slax | [ 16 نظر - 12770 مشاهده ] |
| · خواندن ÙØ§ÛŒÙ„های MMC Ùˆ SD با ÙØ±Ù…ت FAT16 , FAT32 | [ 33 نظر - 26640 مشاهده ] |
| · رله کنترل ÙØ§Ø² Three Phase Monitor | [ 35 نظر - 30949 مشاهده ] |
ميكروكنترل: ساعت دیجیتال توسط ATmega8 دراین پروژه قصد داریم به معرÙÛŒ یک ساعت دیجیتال با میکرو AVRATMEGA8 بپردازیم.درابتدا با پیکره بندی کردن ساعت داخلی این میکرو درمØÛŒØ· BASCOM آشنا Ù…ÛŒ شویم.توجه داشته باشید برای راه اندازی این ساعت به یک کریستال با مقدار32/768 نیاز پیدا میکنید. در ادامه پایه Ùˆ اساس نمایش اعداد بر روی سون سگمنت ( 7SEGMENT ) را توسط این برنامه بررسی میکنیم. همانطور Ú©Ù‡ میدانید ساعت داخلی میکروهای AVR از طریق کد زیر در Ù…ØÛŒØ· بسکام پیکره بندی Ù…ÛŒ شود: Config Clock = Soft , Gosub = Sectic
Time$ = "_hour:_min:_sec"" متغییرهای _hour Ùˆ _min Ùˆ _sec متغییرهایی هستند Ú©Ù‡ خود کامپایلر بسکام با پیکره بندی ساعت برای مشخص نمودن ساعت Ùˆ دقیقه Ùˆ ثانیه تعری٠میکند.ما در این برنامه قصد داریم تنها مقادیر _hour Ùˆ _min را بروی سون سگمنت نمایش دهیم.اما شما با درک برنامه ودر صورت علاقه Ù…ÛŒ توانید مقدار _sec را نیز بر روی سون سگمنت نمایش دهید. توجه داشته باشید تا وقتی Ú©Ù‡ کد Enable Interrupts را در Ù…ØÛŒØ· برنامه نویسی تایپ نکنید ساعت به جریان نمی Ø§ÙØªØ¯. Gosub = Sectic در واقع زیربرنامه ای است Ú©Ù‡ میکرو هر یک ثانیه به سراغ آن Ø±ÙØªÙ‡ Ùˆ دستورات موجود در آن را اجرا میکند. در این برنامه ما از 4 سون سگمنت آند مشترک تکی بهره برده ایم.هر کدام از این سون سگمنت ها دارای 10 پایه هستند.دو پایه از این 10 پایه مشترکا آند این سون سگمنت ها ØŒ یک پایه مربوط به DAT سون سگمنت Ùˆ7 پایه ÛŒ دیگر مربوط به کاتد ها هستند.برای ساختن اعداد باید کاتد ها را خاموش یا روشن میکنند.ما به طور قرار دادی به صورت مشخص شده در عکس زیر کاتد ها را نام گذاری میکنیم تا کار برنامه نویسی آسان تر گردد.
توجه کنید این نام گذاری کاملا قراردادی است Ùˆ شما Ù…ÛŒ توانید به صورتی Ú©Ù‡ Ù…ÛŒ خواهید نام گذاری کنید اما مبنای این برنامه نام گذاری اینگونه ÛŒ این 7 کاتد است. ما باید هر 7 کاتد همه ÛŒ سون سگمنت ها را به هم وصل کرده سپس آنها را به 7 پورت از پورت های میکرو متصل نماییم.Ùˆ باید هر کدام از آند های سون سگمنت ها را به یک پورت میکرو متصل کنیم.پس ما برای راه اندازی سون سگمنت ها تنها به 11 پورت میکرو نیاز داریم. همان طور Ú©Ù‡ Ú¯ÙØªÛŒÙ… بعد از پیکره بندی ساعت داخلی میکرو با دو متغییر _hour Ùˆ _min ( در این برنامه ) سرو کار داریم. Ù…ÛŒ دانید این عدد ها Ù…ÛŒ تواند یک رقمی یا دو رقمی باشند.اگر این عدد ها تنها مقادیری یک رقمی داشتند کار ما ساده بود اما چون مقادیری دو رقمی نیز پیدا Ù…ÛŒ کنند برای نمایش آنها روی سون سگمنت به مشکل برخورد میکنیم. ما برای ØÙ„ این مشکل در این برنامه هر یک از متغییر های _hour Ùˆ _min را به دو متغییر دیگر تقسیم Ù…ÛŒ کنیم تا نمایش اعداد روی سون سگمنت ها Ø±Ø§ØØª تر شود. در این برنامه متغییر _hour به دو متغییر Yekan_h Ùˆ Dahgan_h Ùˆ متغییر _min به دو متغییر Yekan_m Ùˆ Dahgan_m از طریق کد های زیر: Tmp_h = _hour Mod 100
Dahgan_h = Tmp_h / 10 Yekan_h = Tmp_h Mod 10 Tmp_m = _min Mod 100 Dahgan_m = Tmp_m / 10 Yekan_m = Tmp_m Mod 10 تبدیل Ù…ÛŒ شوند.در کدهای بالا Tmp یک متغییر واسط است. ØØ§Ù„ Ú©Ù‡ برای هر سون سگمنت یک متغییر داریم نوبت به نمایش عدد ها روی سون سگمنت ها است.ما ابتدا عدد ها را با ØµÙØ± Ùˆ یک کردن 7 پورت مشخص شده Ù…ÛŒ سازیم Ùˆ مشخص Ù…ÛŒ کنیم. مثلا در این برنامه برای ساختن عدد یک با ید این 7 پورت بصورت زیر باشند: Portc.1 = 1 : Portd.2 = 0 : Portd.1 = 1 : Portd.0 = 1 :
Portc.2 = 1 : Portc.3 = 1 : Portc.4 = 0 Ùˆ ØØ§Ù„ کار اصلی میکرو: Config Timer0 = Timer , Prescale = 8
Enable Timer0 On Timer0 7seg Start Timer0 ØªØ§ÛŒÙ…Ø±ØµÙØ± میکرو را پیکره بندی Ù…ÛŒ کنیم.اما متغییر 7seg در واقع پرچم سرریزی تایمر ØµÙØ± است.با هر بار پرچم سرریزی تایمر ØµÙØ± میکرو به سراغ زیر برنامه 7seg Ø±ÙØªÙ‡ Ùˆ دستور موجود در آن ( Ú©Ù‡ در این برنامه انجام همان 8 عمل ذکر شده در بالا است ) را اجرا میکند. ØØ§Ù„ا چشم ما قابل به تشخیص این روشن وخاموش شدن ها نیست.جالب است اگر یک دوربین جلوی این ساعت بگیرید Ù…ÛŒ توانید این روشن Ùˆ خاموش شدن ها را ببینید. شما این ساعت را Ù…ÛŒ توانید روی هر سون سگمنتی اجرا کنید Ú©Ù‡ ما در زیر Ù†ØÙˆÙ‡ Ø§Ø³ØªÙØ§Ø¯Ù‡ این برنامه را برای انواع مختل٠آن ØªÙˆØ¶ÛŒØ Ø¯Ø§Ø¯Ù‡ ایم: 1- برای سون سگمنت های Ú©ÙˆÚ†Ú©: در این جا نیازی به ترانزیستور ندارید ومی توانید پورت ها را مستقیم به میکرو متصل کنید.Ùقط توجه کنید سون سگمنت ها جریانی بیشتر از mA20 نکشد، چون برای میکرو مشکل پیش Ù…ÛŒ آید. 2- برای سون سگمنت های 5 ولت به بالا: در این صورت نیاز به ترانزیستور پیدا Ù…ÛŒ کنید. به طوری Ú©Ù‡ برای 7 بخش ( کاتد ها ) از C945 وبرای 4 بخش( آندها ) از ترانزیستور C945 به علاوه A1015 Ø§Ø³ØªÙØ§Ø¯Ù‡ کنید.Ù†ØÙˆÙ‡ اتصال درشکل های زیر آمده است.
اما از دیگرپورت های میکرو برای روشن وخاموش کردن DAT سون سگمنت ها به عنوان ثانیه شمار (شما Ù…ÛŒ توانید از DAT های خود سون سگمنت ها نیز Ø§Ø³ØªÙØ§Ø¯Ù‡ کنید ) واتصال کلید برای تنظیم ساعت Ùˆ دقیقه بصورت زیر Ø§Ø³ØªÙØ§Ø¯Ù‡ Ù…ÛŒ کنیم: 1- برای ثانیه شمار در زیر برنامه Sectic دستور Toggle Portx.y ( در این برنامه Toggle Portd.7 Ùˆ Toggle Portb.2 ) را قرار Ù…ÛŒ دهیم.بدین صورت هر ثانیه DAT ها روشن Ùˆ خاموش Ù…ÛŒ شوند. 2-برای اتصال کلید ها از دستور زیر بهره Ù…ÛŒ بریم: Config Debounce = X
Ú©Ù‡ X مقادیر معینی Ù…ÛŒ پذیرد.در واقع Debounce یک لرزه گیر برای کلید است بطوری Ú©Ù‡ اگر به مقدار X دست خود را روی کلید Ù†Ú¯Ù‡ ندارید زیر برنامه معیین اجرا نمی شود.Ø§Ø³ØªÙØ§Ø¯Ù‡ از این دستور نیاز به کد های دیگر نیز دارد Ú©Ù‡ به طور کامل در برنامه آمده اند. شما Ù…ÛŒ توانید این ساعت را بصورت Ú©ÙˆÚ†Ú© (برای ماشین)،رو میزی،دیواری درست کنید واز داشتن یک ساعت دیجیتال خوب لذت ببرید. جهت دانلود ÙØ§ÛŒÙ„ پرتیوس بر روی تصویر Ùوق کلیک کنید برنامه ساعت Ùوق بطور کامل در زیر آورده شده است. '-----------------------------------------------
' the program of digital clock on 7seg-ment ' wrote by:fahim faryabi ' 1387/11/16 '----------------------------------------------- $regfile = "m8def.dat" $crystal = 8000000 Config Timer0 = Timer , Prescale = 8 Config Portd = Output Config Portc = Output Config Portb = Output Config Clock = Soft , Gosub = Sectic Time$ = "01:01:00" Config Debounce = 25 Enable Interrupts Enable Timer0 On Timer0 7seg Start Timer0 Dim Sel_7seg As Byte Dim Dahgan_m As Byte Dim Yekan_m As Byte Dim Flag As Byte Dim Tmp_m As Byte Dim Dahgan_h As Byte Dim Yekan_h As Byte Dim Tmp_h As Byte Ddrb.5 = 0 : Portb.5 = 1 Ddrd.3 = 0 : Portd.3 = 1 Declare Sub Sa_zyad Declare Sub Da_zyad Do Debounce Pinb.5 , 0 , Da_zyad , Sub Debounce Pind.3 , 0 , Sa_zyad , Sub Tmp_h = _hour Mod 100 Dahgan_h = Tmp_h / 10 Yekan_h = Tmp_h Mod 10 Tmp_m = _min Mod 100 Dahgan_m = Tmp_m / 10 Yekan_m = Tmp_m Mod 10 If _hour = 13 Then _hour = 01 End If If _hour < 1 Then _hour = 12 End If If _min = 60 Then _min = 0 End If If _min < 0 Then _min = 59 End If Loop End 'end program 7seg: Incr Sel_7seg Select Case Sel_7seg Case 1: Portb.3 = 1 : Portb.0 = 0 : Portb.1 = 0 : Portd.6 = 0 Flag = Yekan_m Case 2: Portb.3 = 0 : Portb.0 = 1 : Portb.1 = 0 : Portd.6 = 0 Flag = Dahgan_m Case 3: Portb.3 = 0 : Portb.0 = 0 : Portb.1 = 1 : Portd.6 = 0 Flag = Yekan_h Case 4: Portb.3 = 0 : Portb.0 = 0 : Portb.1 = 0 : Portd.6 = 1 Flag = Dahgan_h Sel_7seg = 0 End Select Select Case Flag Case 0: Portc.1 = 1 : Portd.2 = 0 : Portd.1 = 0 : Portd.0 = 0 : Portc.2 = 0 : Portc.3 = 0 : Portc.4 = 0 Case 1: Portc.1 = 1 : Portd.2 = 0 : Portd.1 = 1 : Portd.0 = 1 : Portc.2 = 1 : Portc.3 = 1 : Portc.4 = 0 Case 2 : Portc.1 = 0 : Portd.2 = 0 : Portd.1 = 0 : Portd.0 = 1 : Portc.2 = 0 : Portc.3 = 0 : Portc.4 = 1 Case 3: Portc.1 = 0 : Portd.2 = 0 : Portd.1 = 0 : Portd.0 = 1 : Portc.2 = 0 : Portc.3 = 1 : Portc.4 = 0 Case 4: Portc.1 = 0 : Portd.2 = 0 : Portd.1 = 1 : Portd.0 = 0 : Portc.2 = 1 : Portc.3 = 1 : Portc.4 = 0 Case 5: Portc.1 = 0 : Portd.2 = 1 : Portd.1 = 0 : Portd.0 = 0 : Portc.2 = 0 : Portc.3 = 1 : Portc.4 = 0 Case 6: Portc.1 = 0 : Portd.2 = 1 : Portd.1 = 0 : Portd.0 = 0 : Portc.2 = 0 : Portc.3 = 0 : Portc.4 = 0 Case 7: Portc.1 = 1 : Portd.2 = 0 : Portd.1 = 0 : Portd.0 = 1 : Portc.2 = 1 : Portc.3 = 1 : Portc.4 = 0 Case 8: Portc.1 = 0 : Portd.2 = 0 : Portd.1 = 0 : Portd.0 = 0 : Portc.2 = 0 : Portc.3 = 0 : Portc.4 = 0 Case 9: Portc.1 = 0 : Portd.2 = 0 : Portd.1 = 0 : Portd.0 = 0 : Portc.2 = 0 : Portc.3 = 1 : Portc.4 = 0 End Select Return Sub Sa_zyad Incr _hour End Sub Sub Da_zyad Incr _min _sec = 0 End Sub Sectic: Toggle Portd.7 Toggle Portb.2 Return این مدار طرØÛŒ بود Ú©Ù‡ توسط Ùهیم ÙØ§Ø±ÛŒØ§Ø¨ÛŒ طراØÛŒ Ùˆ ارسال شده Ú©Ù‡ برای تماس یا ایشان میتوانید از ایمیل fahimfaryabi[AT]yahoo[DOT]com زیر Ø§Ø³ØªÙØ§Ø¯Ù‡ کنید. کلمات کليدي : ساعت دیجیتال میکروکنترولر سون سگمنت نمایشگر clock AVR ATmega8 7segment Seven Segment ارسال شده در مورخه : جمعه، 9 مهر ماه ، 1389 توسط lachini
مرتبط با موضوع : خواندن ÙØ§ÛŒÙ„های MMC Ùˆ SD با ÙØ±Ù…ت FAT16 , FAT32 [چهارشنبه، 29 دي ماه ، 1389] ولتمتر AC با امکان ارسال SMS [شنبه، 18 دي ماه ، 1389] تابلو نمایش نرخ ارز با ATmega8 [جمعه، 17 دي ماه ، 1389] ساعت دیجیتال توسط 8051 Ùˆ اسمبلی [چهارشنبه، 3 شهريور ماه ، 1389] ضبط صوت دیجیتال توسط میکرو AVR [شنبه، 8 خرداد ماه ، 1389] تایمر موزیکال توسط AVR [يكشنبه، 25 اسفند ماه ، 1387] مدار دزدگیر با امکان شماره گیری [چهارشنبه، 23 بهمن ماه ، 1387] منبع تغذيه ديجيتالي ØµÙØ± تا سي ولت با Atmega8-PWM [سه شنبه، 17 دي ماه ، 1387]
[ ارسال جوابیه ]
[ ارسال جوابیه ]
[ ارسال جوابیه ]
[ ارسال جوابیه ]
[ ارسال جوابیه ]
[ ارسال جوابیه ]
[ ارسال جوابیه ]
[ ارسال جوابیه ]
[ ارسال جوابیه ]
[ ارسال جوابیه ]
[ ارسال جوابیه ]
[ ارسال جوابیه ]
[ ارسال جوابیه ]
[ ارسال جوابیه ]
[ ارسال جوابیه ]
[ ارسال جوابیه ]
[ ارسال جوابیه ]
[ ارسال جوابیه ]
[ ارسال جوابیه ]
[ ارسال جوابیه ]
[ ارسال جوابیه ]
[ ارسال جوابیه ]
[ ارسال جوابیه ]
[ ارسال جوابیه ]
[ ارسال جوابیه ]
[ ارسال جوابیه ]
[ ارسال جوابیه ]
[ ارسال جوابیه ]
[ ارسال جوابیه ]
[ ارسال جوابیه ]
[ ارسال جوابیه ]
[ ارسال جوابیه ]
[ ارسال جوابیه ]
[ ارسال جوابیه ] |
امتیاز دهی به مطلب
تعداد آراء: 144 ![]() انتخاب ها
|
