طراحی کنترلر، مدارت دلخواه، پروژه ها و تمرینات درس میکروکنترلرها
این پروژه یک دماسنج ساده می باشد که توانایی اندازه گیری دما از منفی 40 تا مثبت 120 درجه سانتی گراد با دقت دو رقم اعشار را دارد.توسط منوی آلارم ساعت زنگ هشدار قابل تنظیم می باشد. و همچنین توسط منوی تایم ساعت و تاریخ دستگاه قابل تنظیم می باشد. قابلیت نمایش ساعت و تاریخ شمسی جاری به همراه روز هفته و همچنین نمایش ساعت آلارم در نمایشگر.در صورتی که برق شهر از حداقل تعریف شده کمتر، یا از حداکثر بیشتر شود رله خروجی قطع خواهد شد و از طریق بازر بوق هشدار پخش می شود.یک مدار صوتی جهت پخش فایل های صوتی MP3 و WMV با Sampling rate 8KHz-48KHz و خروجی دیجیتال به آنالوگ 24 بیتی می باشد که از حافظه های Micro SD تا 32GB و فرمت های FAT16 و FAT32 پشتیبانی می کند.این پروژه یک مدار واسط I/O می باشد که دارای 4 خروجی رله است. توسط نرم افزار کنترلی که قابل نصب بروی ویندوز های XP, Win7, Win8, Win10 می باشد می توان هر چهار رله را به صورت مجزا فعال و غیر فعال کرد.
پروژه دماسنج ساده با avr

MCP-29

پروژه دماسنج ساده با avr
ساعت دیجیتال دارای تقویم شمسی و زنگ هشدار

MCP-42

ساعت دیجیتال دارای تقویم شمسی و زنگ هشدار
پروژه محافظ لوازم برقی با avr و نمایشگر سون سگمنت

MCP-21

پروژه محافظ لوازم برقی با avr و نمایشگر سون سگمنت
پروژه mp3 پلیر ساده با avr به زبان C

MCP-32

پروژه mp3 پلیر ساده با avr به زبان C
پروژه کنترل رله توسط پورت USB با AVR و C شارپ

MCP-31

پروژه کنترل رله توسط پورت USB با AVR و C شارپ

تبدیل تاریخ میلادی به شمسی

بسیاری از دوستان که در برنامه نویسی های ان ها تاریخ میلادی هست به دنبال کدی میگردند تا بشود به صورت اتوماتیک تاریخ میلادی را به شمسی تبدیل کند هم چنین که در این کد سال کبیسه نیز حساب بشود.
امروز کد تبدیل تاریخ میلادی به شمسی را به زبان بیسیک را برای دوستان برنامه نویس ،را قرار داده ام. این کد کاملا عملی میباشد وتست شده است

یکی از کاربرد های این کد که خودم هم مدت زیادی با ان سروکار داشتم در مورد کار با ای سی ds1307 هست همانطور که میدانید این ای سی یکreal time clock= RTC هست که علاوه برا کار های دیگر مثل شمارش ساعت ، روز و… تاریخ را به صورت میلادی محاسبه میکند که با استفاده از این کد میتوانید تاریخ را به شمسی تبدیل کنید.

اما در مورد نحوه استفاده از کد باید سال ،ماه و روز میلادی خود را همانطور که در برنامه توضیح داده شده است در متغیر های زیر قرار دهید.

از بخش سفارش طراحی هم اکنون درخواست خود را ثبت کنید
حل و تشریح کلیه تمرینات درس میکروکنترلر AVR
طراحی و ساخت مدارات دلخواه شما با میکروکنترلر AVR


Myear = 2008
Mday =28
Mmonth = 8
که در این کد تاریخ ۲۰۰۸/۰۸/۲۸ را به عنوان نمونه قرار دادیم خروجی این کد که در ان تاریخ به صورت شمسی تولید میشود به صورت زیر میباشد که در این مثال تاریخ ۱۳۸۷/۰۶/۰۷ میباشد.


در کد زیر متغیر Jday به عنوان خروجی روز تبدیل شده میباشد که میتوانید از این متغیر روز تاریخ شمسی تبدیل شده را بگیرید،خروجی ماه در این کد متغیر Jmonth و متغیر Jyear به عنوان خروجی سال شمسی میباشد هم چنین که متغیر Jdayofyear تعداد روز های سپری شده از ماه شمسی محاسبه شده از اول سال تا کنون را نمایش میدهد.

 

$regfile = “m16def.dat”
$crystal = 1000000
$lib “mcsbyteint.lbx”

Dim Myear As Integer ‘‘input Miladi(gregorian) Year
Dim Mday As Integer ‘input Miladi Day
Dim Mmonth As Integer ‘input Miladi Month
Dim Mdayofyear As Integer
Dim Myear_ As Integer

Dim Jday As Integer ‘output Jalali(shamsi) Day
Dim Jmonth As Integer ‘output Jalali Month
Dim Jyear As Integer ‘output Jalali Year
Dim Jdayofyear As Integer

Dim Gnumdayofyear As Integer
Dim Isleapyear As Bit
Dim Isleapyearp As Bit

Dim Iloop As Byte
Dim Temp1 As Integer
Dim Temp2 As Integer
Dim Temp3 As Integer
Dim Temp4 As Integer

Dim Jmonth_a(12) As Byte
Dim Mmonth_a(12) As Byte

Mmonth_a(1) = 31
‘——–۲۸ Ya ۲۹ Agar Sall Kabiseh Bashad In Mah ۲۹ Roz Mibashad——————–
Mmonth_a(2) = 28
Mmonth_a(3) = 31

Mmonth_a(4) = 30
Mmonth_a(5) = 31
Mmonth_a(6) = 30

Mmonth_a(7) = 31
Mmonth_a(8) = 31
Mmonth_a(9) = 30

Mmonth_a(10) = 31
Mmonth_a(11) = 30
Mmonth_a(12) = 31

Gnumdayofyear = 365

Myear = 2008 ’sample Miladi(gregorian) Year
Mday = 28 ’sample Miladi Day
Mmonth = 8 ’sample Miladi Month
‘————–shart Kabiseh Bodane Sall———— -
Temp1 = Myear Mod 4
Temp2 = Myear Mod 100
Temp3 = Myear Mod 400
Temp4 = Temp1 And Temp2

If Temp4 <> 0 Or Temp3 = 0 Then
Mmonth_a(2) = 28
Else
Mmonth_a(2) = 29
End If

Myear_ = Myear - 1
Temp1 = Myear_ Mod 4
Temp2 = Myear_ Mod 100
Temp3 = Myear_ Mod 400
Temp4 = Temp1 And Temp2

If Temp4 <> 0 Or Temp3 = 0 Then
Reset Isleapyearp
Else
Set Isleapyearp
End If

Temp1 = Mmonth - 1

For Iloop = 1 To Temp1
Mdayofyear = Mmonth_a(iloop) + Mdayofyear
Next
Mdayofyear = Mday + Mdayofyear

If Mdayofyear > 79 Then

Temp1 = Mdayofyear - 79
Jyear = Myear - 621

If Temp1 < 186 Then

Temp2 = Temp1 Mod 31
Temp3 = Temp1 / 31

If Temp2 = 0 Then
Jmonth = Temp3
Jday = 31
Else
Jmonth = Temp3 + 1
Jday = Temp2
End If

Else

Temp2 = Temp1 - 186
Temp3 = Temp2 Mod 30
Temp4 = Temp2 / 30

If Temp3 = 0 Then
Jmonth = Temp4 + 6
Jday = 30
Else
Jmonth = Temp4 + 7
Jday = Temp3
End If

End If

Else

Jyear = Myear - 622

If Isleapyearp = 1 Then
Mdayofyear = Mdayofyear + 11
Else
Mdayofyear = Mdayofyear + 10
End If

Temp2 = Mdayofyear Mod 30
Temp3 = Mdayofyear / 30

If Temp2 = 0 Then
Jmonth = Temp3 + 9
Jday = 30
Else
Jmonth = Temp3 + 10
Jday = Temp2
End If

Waitms 1

End If

 منبع: yazdkit.com

  منبع: www.picpars.com

  لطفا مقالات، آموزش‌ها و پروژه های خود را به آدرس ایمیل ارتباطی ایمیل نمائید تا آن را با نام خودتان در سایت منتشر کنیم.

به این مطلب امتیاز دهید

برچسب ها:
تاریخ ارسال چهارشنبه، 6 مرداد ماه، 1389    نویسندهنویسنده: مدیریت    نظرات 4 نظر    بازدید بازدید [ 17620 ]   پرینتنسخه چاپی
فایل پی دی اف فایل پی دی اف   ارسال به دوستان ارسال به دوستان