ايران ويج

نسخه‌ی کامل: راهنمایی در مورد پروژه دماسنج AVR
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
صفحه‌ها: 1 2 3
الان شماتیکتو ندارم ببینم چیه. ورژن من فایل تو رو باز نمیکنه .
ببین توی do loop برنامت هی داری زیر برنامه میخونی و دو تا ایف گذاشتی که همیشه اجرا میشن و حتما جای دیگه اینا صفر میشن. فلگ یه متغیر هست مثلا bit.
وقتی یکبار ال ای دی روشن شد یکش کن وقتی خاموش شد 0 کن.
حالا دو تا ایفت رو بزار تو یه ایفه دیگه که 0 و 1 بودن فلگ رو چک کنه.
برنامت رو خوب برام توضیح بده خط به خط.
(۱۰-دى-۱۳۹۰, ۱۹:۳۷:۰۳)parviz2012 نوشته است: [ -> ]الان شماتیکتو ندارم ببینم چیه. ورژن من فایل تو رو باز نمیکنه .
ببین توی do loop برنامت هی داری زیر برنامه میخونی و دو تا ایف گذاشتی که همیشه اجرا میشن و حتما جای دیگه اینا صفر میشن. فلگ یه متغیر هست مثلا bit.
وقتی یکبار ال ای دی روشن شد یکش کن وقتی خاموش شد 0 کن.
حالا دو تا ایفت رو بزار تو یه ایفه دیگه که 0 و 1 بودن فلگ رو چک کنه.
برنامت رو خوب برام توضیح بده خط به خط.


عکس شماتیک با فایل پروتئوس 7
رو ضمیمه کردم.

جالبه که در مورد دستور فلگ هیچ تو توضیح و آموزشی ندیدم تو نت !
توضیح برنامت؟ توضیح بده ببینم چی کار میکنه برنامت. کد رو باید بفهمیم.
(۱۰-دى-۱۳۹۰, ۱۹:۵۳:۱۵)parviz2012 نوشته است: [ -> ]توضیح برنامت؟ توضیح بده ببینم چی کار میکنه برنامت. کد رو باید بفهمیم.

حاجی کل برنامه رو توضیح بدم ؟ خیلیه که !!!Shy
.خط اول معرفی آیسی میکرو 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 چیه ؟؟؟<><<>>> این دستور یگان عدد را بدست میاورد.
معلم خوبی میشی .
منظورم فقط سابها بودن که دارن چه کاری انجام میدن.
ببین همون چیزی که گفتم برنامت داره هی تکرار میشه فلگ بزار.
(۱۰-دى-۱۳۹۰, ۲۰:۱۸:۰۰)parviz2012 نوشته است: [ -> ]معلم خوبی میشی .
منظورم فقط سابها بودن که دارن چه کاری انجام میدن.
ببین همون چیزی که گفتم برنامت داره هی تکرار میشه فلگ بزار.

ببخشید حاجی
مگه شما کدهای منو نمیبینید ؟
زحمت بکش و لطف کن این فلگ رو برام درست کن هرچی گشتم در مورد فلگ چیزی پیدا نکردم
کد:
dim flag as bit
flag=0
if flag=0 then
if c>26 then
flag=1
end if
end if
if حالتهای دیگر then
flag=0
end if
سلام..
دوسته من شما فقط تو حلقه اصلیت این دستور رو اضافه کن
کد:
if c<25 then
set portb.1
waitms 100
else
reset portb.1
end if
if c>35 then
set portb.2
waitms 100
else
reset portb.2
end if
فک نکنم مشکلی پیش بیاد .. البته من فایل پروتئوس رو ندیدم که تست کنم..
موفق باشی
(۱۱-دى-۱۳۹۰, ۱۲:۰۷:۰۱)EBKA نوشته است: [ -> ]سلام..
دوسته من شما فقط تو حلقه اصلیت این دستور رو اضافه کن
کد:
if c<25 then
set portb.1
waitms 100
else
reset portb.1
end if
if c>35 then
set portb.2
waitms 100
else
reset portb.2
end if
فک نکنم مشکلی پیش بیاد .. البته من فایل پروتئوس رو ندیدم که تست کنم..
موفق باشی
حاجی ممنون
ولی اینو خودم امتحان کرده بودم
این که شما دادید رو هم امتحان کردم تو پروتئوس دائم سگمنت چشمک میزنه !
مشکل فکر کنم از این حلقه باشه
یکی دوستان گفتند باید از فلگ استفاده کنی ولی من از فلگ چیزی سر در نیاوردم.
(۱۱-دى-۱۳۹۰, ۰۱:۱۱:۳۰)parviz2012 نوشته است: [ -> ]
کد:
dim flag as bit
flag=0
if flag=0 then
if c>26 then
flag=1
end if
end if
if حالتهای دیگر then
flag=0
end if


حاجی کاش این کدرو میذاشتی توی این کدی که بهتون دادم .
من اینو نفهمیدم که باید کجای حلقه بزارم.
ایراد میگیره
تو پرتئوس رو زیاد شما مد نظر نداشته باش.. تو عمل مشکلی پیش نمیاد
صفحه‌ها: 1 2 3