با سلام

اين پروژه توسط يک سنسور دما LM35 دما را سنس ميکند و ايندفعه دما را بروي سون سگمنت نشان ميدهد و شما ميتوانيد از آن براي کنترل دماي خانه استفاده کنيد از مزيت هاي اين مدار اين است که دماي منفي هم قابل مشاهده است><<>يعني اگه دما به زير صفر برود هم نشان ميدهد <> نشان دادن دما بروي سون سگمنت هم بصرفه تر و هم اينکه ديد بهتري نسبت به LCD دارد ><>>از فاصله دور هم ميتوانيد دما را ببينيد.

قطعات مدار:

در اين پروژه من از يک atmega8 و يک سون سگمنت 4digit کاتد مشترک و از يک سنسور LM35 و يک مقاومت 10کيلو و يک ديود 4148 و چهار مقاومت 220 اهم استفاده کردم.(براي تغذيه ميکرو حتما از يک رگولاتور 7805 استفاده کنيد)



برنامه مدار:


 





توضیح برنامه 

====================

1.خط اول معرفی آیسی میکرو atmega 8 

2.خ دوم فرکانس  کاری میکرو (که  بین 1مگاهرتز تا 16 مگاهرتز میتواند باشد ) هر چی این فرکانس پایین باشد سرعت کار میکرو (سرعت خواندن برنامه بیشتر میشود .

3.خ سوم وچهارم پیکره بندی کردن پورت های B, D به عنوان خروجی 

4.خ پنجم پیکره بندی پورت C (در atmega 8 ) که دارای 6 ورودی آنالوگ به دیجیتال میباشد ( ADC) به عنوان ورودی آنالوگ (برای وصل کردن سنسور دما به این پورت )

5. معرفی متغییر ها برای ورودی آنالوگ باید یک متغییر از نوع word تعریف کنیم

6. start adc  برای راه اندازی ورودی آنالوگ 

7. معرفی سه گروه با دستور declare sub نام گروه ها اختیاری میباشد

8.در درون حلقه do loop  که بطور دایم تکرار میشود و وقتی میکرو به این خط برسد از این حلقه دیگر بیرون نمیرود و دایم درون این حلقه میچرخد و دستورات درون این حلقه را انجام میدهد <>>><> دستورات درون این حلقه چیه؟><>>>>>>> با دستور call  گروه ها را میخوانیم یعنی وقتی میکرو به دستور call میرسد به گروه خوانده شده پریده و دستورات این گروه را انجام میدهد و وقتی به دستور end sub رسید یعنی آخر گروه و بر میگردد دوباره تو حلقه و دوباره گروه بعد این دستورات به سرعت خوانده میشود یعنی هر سه گروه کار خود را انجام میدهند .

9. با دستور sub گروه شروع میشود و بادستور end sub گروه به پایان میرسد 

مثلا گروه temp کار خواندن ورودی های آنالوگ (adc0,adc1) دارد یعنی همون دما رو که توسط lm35 سنس میشود به صورت ولتاژ به ورودی های آنالوگ داده میشود و میکرو  به دیجیتال تبدیل میکند (برای اینکه فقط دمای بالای صفر را بتوانید بخوانید به یک ورودی آنالوگ به دیجیتال احتیاج دارین ولی حالا برای خواندن دمای منفی به دو ورودی ADC احتیاج دارین .

دستور if then شرط هست <> مثلا میگوییم اگر c کوچکتر از 0 شد فلان کار را بکن و این شرط با دستور

end if پایان میابد.

علامت ( - ) تفریق و علامت ( / )  تقسیم و علامت ( = ) مساوی میباشد که از آنها استفاده کردیم >>>>>>>>>>>> یعنی وقتی میگوییم  portd=&b0111 >>>> یعنی عدد باینری 0111 را در خروجی پورت D قرار بده 

علامت ( : ) برای اینکه دستورات را در یک خط بنویسیم از این علامت استفاده میکنیم و گرنه باید هر دستور را در یک خط بنویسیم .

کار گروه refresh چیه ؟؟؟<>>>> این گروه عدد مقدار هگزا (عدد برای نمایش در  7segment ) از زیر مجموعه 7seg را در خروجی پورت b میدهد .

زیر مجموعه 7seg چیه ؟؟؟ <>>> مثلا برای اینکه عدد 0 در سون سگمنت نشان داده شود باید عدد هگزا 3F در خروجی ظاهر شود و برای عدد 1 باید عدد هگزا 6 در خروجی ظاهر شود به همین ترتیب .

دستور mod 10 چیه ؟؟؟<><<>>> این دستور یگان عدد را بدست میاورد.(برای بیشتر آشنا شدن با دستورات فایل PDF آن را که در پست های قبل گذاشتم دانلود کنید) دیگه چیزی نیست که من توضیح بدم 

اگه یه کم کار کنید با نگاه کردن به برنامه خودتون دیگه میدونید برنامه چکار میکنه :) 


اینم نقشه مدار که اگر به پایه 20 میکرو atmega 8 ولتاژ 5 ولت را وصل نکنید دما تا 50 درجه بیشتر برای شما نشان داده نمیشود با وصل کردن این ولتاژ به پایه شماره 20 که ولتاژ رفرنس خروجی میباشد تا 99 درجه برای شما در سون سگمنت نمایش داده میشود سون سگمنت اول برای نشان دادن منفی و دو سگمنت وسط برای نشان دادن دما و سگمنت آخر برای نشان دادن درجه هست در عکس زیر دمای -2 درجه نشان داده میشود.

نقشه پروتیوس مدار

------------------------------


 


دانلود کامپایل برنامه به همراه فایل پروتیوس



 سوالی داشتین در قسمت نظرات بیان کنید

                                               

                                                       >>>>>>موفق باشین <<<<<<