close
تبلیغات در اینترنت
ساعت دیجیتال توسط ATmega8

aks
آخرين ارسال هاي تالارگفتمان

aks
عنوان پاسخ بازديد آخرين ارسال
aksaksمعرفی اپلیکیشن پرورش افکار امیر شریفی 0 24 fns4565
aksaksکارخانه آرد ترکمن دشت 0 59 ghorbanpour
aksaksشتاب سنج چیست و چگونه کار می کند؟ 2 1602 snapplole
aksaks فلزياب 12 رگولاتوره 4 5529 snapplole
aksaks مدار توباکس ساشو - قویترین فلزیاب جهان 17 12862 snapplole
aksakspwm 1 325 snapplole
aksaksآموزش سئو محتوای تولید شده توسط کاربر 0 63 mkheiry
aksaksطراحی سایت و نکات طلایی درمورد گوگل 1 142 ratin97
aksaksقانون جذب عشق 1 307 tehranloole
aksaksنکات امنیتی در نیازمندیها و سایت ثبت آگهی رایگان 0 74 sangriz

بازديد : 3488 بار

www.tiva.in

دراین پروژه قصد داریم به معرفی یک ساعت دیجیتال با میکرو AVRATMEGA8 بپردازیم.درابتدا با پیکره بندی کردن ساعت داخلی این میکرو درمحیط BASCOM آشنا می شویم.توجه داشته باشید برای راه اندازی این ساعت به یک کریستال با مقدار۳۲/۷۶۸ نیاز پیدا میکنید. در ادامه پایه و اساس نمایش اعداد بر روی سون سگمنت ( ۷SEGMENT ) را توسط این برنامه بررسی میکنیم. همانطور که میدانید ساعت داخلی میکروهای AVR از طریق کد زیر در محیط بسکام پیکره بندی می شود:

Config Clock = Soft , Gosub = Sectic
Time= “_hour:_min:_sec”"

 برای دیدن متن کامل به ادامه مطلب بروید

 

متغییرهای _hour و _min و _sec متغییرهایی هستند که خود کامپایلر بسکام با پیکره بندی ساعت برای مشخص نمودن ساعت و دقیقه و ثانیه تعریف میکند.ما در این برنامه قصد داریم تنها مقادیر _hour و _min را بروی سون سگمنت نمایش دهیم.اما شما با درک برنامه ودر صورت علاقه می توانید مقدار _sec را نیز بر روی سون سگمنت نمایش دهید. توجه داشته باشید تا وقتی که کد Enable Interrupts را در محیط برنامه نویسی تایپ نکنید ساعت به جریان نمی افتد. Gosub = Sectic در واقع زیربرنامه ای است که میکرو هر یک ثانیه به سراغ آن رفته و دستورات موجود در آن را اجرا میکند. در این برنامه ما از ۴ سون سگمنت آند مشترک تکی بهره برده ایم.هر کدام از این سون سگمنت ها دارای ۱۰ پایه هستند.دو پایه از این ۱۰ پایه مشترکا آند این سون سگمنت ها ، یک پایه مربوط به DAT سون سگمنت و۷ پایه ی دیگر مربوط به کاتد ها هستند.برای ساختن اعداد باید کاتد ها را خاموش یا روشن میکنند.ما به طور قرار دادی به صورت مشخص شده در عکس زیر کاتد ها را نام گذاری میکنیم تا کار برنامه نویسی آسان تر گردد.

نمای سون سگمنت به همراه راهنمای قطعات و پایه ها

توجه کنید این نام گذاری کاملا قراردادی است و شما می توانید به صورتی که می خواهید نام گذاری کنید اما مبنای این برنامه نام گذاری اینگونه ی این ۷ کاتد است. ما باید هر ۷ کاتد همه ی سون سگمنت ها را به هم وصل کرده سپس آنها را به ۷ پورت از پورت های میکرو متصل نماییم.و باید هر کدام از آند های سون سگمنت ها را به یک پورت میکرو متصل کنیم.پس ما برای راه اندازی سون سگمنت ها تنها به ۱۱ پورت میکرو نیاز داریم. همان طور که گفتیم بعد از پیکره بندی ساعت داخلی میکرو با دو متغییر _hour و _min ( در این برنامه ) سرو کار داریم. می دانید این عدد ها می تواند یک رقمی یا دو رقمی باشند.اگر این عدد ها تنها مقادیری یک رقمی داشتند کار ما ساده بود اما چون مقادیری دو رقمی نیز پیدا می کنند برای نمایش آنها روی سون سگمنت به مشکل برخورد میکنیم. ما برای حل این مشکل در این برنامه هر یک از متغییر های _hour و _min را به دو متغییر دیگر تقسیم می کنیم تا نمایش اعداد روی سون سگمنت ها راحت تر شود. در این برنامه متغییر _hour به دو متغییر Yekan_h و Dahgan_h و متغییر _min به دو متغییر Yekan_m و Dahgan_m از طریق کد های زیر:

Tmp_h = _hour Mod ۱۰۰
Dahgan_h = Tmp_h / ۱۰
Yekan_h = Tmp_h Mod ۱۰

Tmp_m = _min Mod ۱۰۰
Dahgan_m = Tmp_m / ۱۰
Yekan_m = Tmp_m Mod ۱۰

تبدیل می شوند.در کدهای بالا Tmp یک متغییر واسط است. حال که برای هر سون سگمنت یک متغییر داریم نوبت به نمایش عدد ها روی سون سگمنت ها است.ما ابتدا عدد ها را با صفر و یک کردن ۷ پورت مشخص شده می سازیم و مشخص می کنیم. مثلا در این برنامه برای ساختن عدد یک با ید این ۷ پورت بصورت زیر باشند:

Portc.= ۱ : Portd.= ۰ : Portd.= ۱ : Portd.= ۱ :
Portc.= ۱ : Portc.= ۱ : Portc.= ۰

و حال کار اصلی میکرو:
۱- روشن کردن سون سگمنت شماره ی یک(از سمت راست) و نشان دادن مقدار Yekan_m
2- خاموش کردن سون سگمنت شماره یک
۳- روشن کردن سون سگمنت شماره دو ونشان دادن مقدار Dahgan_m
4- خاموش سون سگمنت شماره دو
۵- روشن کردن سون سگمنت شماره سه ونشان دادن مقدار Yekan_h
6- خاموش سون سگمنت شماره سه
۷- روشن کردن سون سگمنت شماره چهار و نشان دادن Dahgan_h
8- خاموش سون سگمنت شماره چهار
ما در این برنامه از متغییر واسط دیگری به نام Flag استفاده میکنیم.این متغییر هر بار مساوی با یکی از مقادیر: Yekan_m و Dahgan_m و Yekan_h و Dahgan_h است.قبلا ما مقادیر ۰ تا ۹ را برای Flag از طریق دستور Select Case Flag مشخص کردیم که در هر یک از این case ها با گذاشتن ۰ یا ۱ جلوی ۷ پورت مشخص شده اعداد را ساخته ایم. در بالا دیدیم که میکرو آند سون سگمنت ها را به ترتیب از راست به چپ روشن و خاموش میکند و مقادیر مشخص را نمایش میدهد. اما در سرعت های پایین این خاموش و روشن شدن ها معلوم است و اعداد نمایش داده شده قابل تشخیص نیست.یعنی باید میکرو این ۸ عمل را به دفعات زیاد در ثانیه انجام دهد.برای رفع این مشکل ما در این برنامه از طریق دستور:

Config Timer0 = Timer , Prescale = ۸
Enable Timer0
On Timer0 ۷seg
Start Timer0

تایمرصفر میکرو را پیکره بندی می کنیم.اما متغییر ۷seg در واقع پرچم سرریزی تایمر صفر است.با هر بار پرچم سرریزی تایمر صفر میکرو به سراغ زیر برنامه ۷seg رفته و دستور موجود در آن ( که در این برنامه انجام همان ۸ عمل ذکر شده در بالا است ) را اجرا میکند. حالا چشم ما قابل به تشخیص این روشن وخاموش شدن ها نیست.جالب است اگر یک دوربین جلوی این ساعت بگیرید می توانید این روشن و خاموش شدن ها را ببینید. شما این ساعت را می توانید روی هر سون سگمنتی اجرا کنید که ما در زیر نحوه استفاده این برنامه را برای انواع مختلف آن توضیح داده ایم: ۱- برای سون سگمنت های کوچک: در این جا نیازی به ترانزیستور ندارید ومی توانید پورت ها را مستقیم به میکرو متصل کنید.فقط توجه کنید سون سگمنت ها جریانی بیشتر از mA20 نکشد، چون برای میکرو مشکل پیش می آید. ۲- برای سون سگمنت های ۵ ولت به بالا: در این صورت نیاز به ترانزیستور پیدا می کنید. به طوری که برای ۷ بخش ( کاتد ها ) از C945 وبرای ۴ بخش( آندها ) از ترانزیستور C945 به علاوه A1015 استفاده کنید.نحوه اتصال درشکل های زیر آمده است.

ترانزیستور C945

 

ترانزیستور C945 و ترانزیستور A1015

اما از دیگرپورت های میکرو برای روشن وخاموش کردن DAT سون سگمنت ها به عنوان ثانیه شمار (شما می توانید از DAT های خود سون سگمنت ها نیز استفاده کنید ) واتصال کلید برای تنظیم ساعت و دقیقه بصورت زیر استفاده می کنیم: ۱- برای ثانیه شمار در زیر برنامه Sectic دستور Toggle Portx.y ( در این برنامه Toggle Portd.7 و Toggle Portb.2 ) را قرار می دهیم.بدین صورت هر ثانیه DAT ها روشن و خاموش می شوند. ۲-برای اتصال کلید ها از دستور زیر بهره می بریم:

Config Debounce = X

که X مقادیر معینی می پذیرد.در واقع Debounce یک لرزه گیر برای کلید است بطوری که اگر به مقدار X دست خود را روی کلید نگه ندارید زیر برنامه معیین اجرا نمی شود.استفاده از این دستور نیاز به کد های دیگر نیز دارد که به طور کامل در برنامه آمده اند. شما می توانید این ساعت را بصورت کوچک (برای ماشین)،رو میزی،دیواری درست کنید واز داشتن یک ساعت دیجیتال خوب لذت ببرید.

ساعت دیجیتال ساخته شده نمای جلو

ساعت دیجیتال نمای بالا

نقشه مدار ساعت دیجیتال

جهت دانلود فایل پرتیوس بر روی تصویر فوق کلیک کنید

برنامه ساعت فوق بطور کامل در زیر آورده شده است.

‘———————————————–
‘   the program of digital clock on ۷seg-ment
‘          wrote by:fahim faryabi
‘               ۱۳۸۷/۱۱/۱۶
‘———————————————–
$regfile = “m8def.dat”
$crystal = ۸۰۰۰۰۰۰
Config Timer0 = Timer , Prescale = ۸
Config Portd = Output
Config Portc = Output
Config Portb = Output
Config Clock = Soft , Gosub = Sectic
Time= “۰۱:۰۱:۰۰″
Config Debounce = ۲۵
Enable Interrupts
Enable Timer0
On Timer0 ۷seg
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.= ۰ : Portb.= ۱
Ddrd.= ۰ : Portd.= ۱
Declare Sub Sa_zyad
Declare Sub Da_zyad

Do

Debounce Pinb., ۰ , Da_zyad , Sub
Debounce Pind., ۰ , Sa_zyad , Sub

Tmp_h = _hour Mod ۱۰۰
Dahgan_h = Tmp_h / ۱۰
Yekan_h = Tmp_h Mod ۱۰

Tmp_m = _min Mod ۱۰۰
Dahgan_m = Tmp_m / ۱۰
Yekan_m = Tmp_m Mod ۱۰

If _hour = ۱۳ Then
_hour = ۰۱
End If

If _hour < ۱ Then
_hour = ۱۲
End If

If _min = ۶۰ Then
_min = ۰
End If

If _min < ۰ Then
_min = ۵۹
End If

Loop
End                       ‘end program

7seg:
Incr Sel_7seg
Select Case Sel_7seg
Case ۱:
Portb.= ۱ : Portb.= ۰ : Portb.= ۰ : Portd.= ۰
Flag = Yekan_m
Case ۲:
Portb.= ۰ : Portb.= ۱ : Portb.= ۰ : Portd.= ۰
Flag = Dahgan_m
Case ۳:
Portb.= ۰ : Portb.= ۰ : Portb.= ۱ : Portd.= ۰
Flag = Yekan_h
Case ۴:
Portb.= ۰ : Portb.= ۰ : Portb.= ۰ : Portd.= ۱
Flag = Dahgan_h
Sel_7seg = ۰
End Select

Select Case Flag
Case ۰:
Portc.= ۱ : Portd.= ۰ : Portd.= ۰ : Portd.= ۰ :
Portc.= ۰ : Portc.= ۰ : Portc.= ۰

Case ۱:
Portc.= ۱ : Portd.= ۰ : Portd.= ۱ : Portd.= ۱ :
Portc.= ۱ : Portc.= ۱ : Portc.= ۰

Case ۲ :
Portc.= ۰ : Portd.= ۰ : Portd.= ۰ : Portd.= ۱ :
Portc.= ۰ : Portc.= ۰ : Portc.= ۱

Case ۳:
Portc.= ۰ : Portd.= ۰ : Portd.= ۰ : Portd.= ۱ :
Portc.= ۰ : Portc.= ۱ : Portc.= ۰

Case ۴:
Portc.= ۰ : Portd.= ۰ : Portd.= ۱ : Portd.= ۰ :
Portc.= ۱ : Portc.= ۱ : Portc.= ۰

Case ۵:
Portc.= ۰ : Portd.= ۱ : Portd.= ۰ : Portd.= ۰ :
Portc.= ۰ : Portc.= ۱ : Portc.= ۰

Case ۶:
Portc.= ۰ : Portd.= ۱ : Portd.= ۰ : Portd.= ۰ :
Portc.= ۰ : Portc.= ۰ : Portc.= ۰

Case ۷:
Portc.= ۱ : Portd.= ۰ : Portd.= ۰ : Portd.= ۱ :
Portc.= ۱ : Portc.= ۱ : Portc.= ۰

Case ۸:
Portc.= ۰ : Portd.= ۰ : Portd.= ۰ : Portd.= ۰ :
Portc.= ۰ : Portc.= ۰ : Portc.= ۰

Case ۹:
Portc.= ۰ : Portd.= ۰ : Portd.= ۰ : Portd.= ۰ :
Portc.= ۰ aks دسته بندي: پروژه میکرو کنترلر های AVR مدارات دیجیتال

proje robosorena

برچسب ها : ساعت دیجیتال توسط ATmega8, ساعت دیجیتال, ساعت دیجیتال ATmega8, ATmega8, Seven Segment, clock AVR, AVR & PLC, مدار منطقی و دیجیتال, ساعت دیجیتال میکروکنترولر, سون سگمنت نمایشگر,



aks نظر ثبت شده توسط : BFDH@eHF در تاريخ : 1391/8/29

TRUYIUOLH87TO, 8I7 87


aks ارسال نظر
نام
ایمیل (منتشر نمی‌شود) (لازم)
وبسایت
:) :( ;) :D ;)) :X :? :P :* =(( :O @};- :B /:) :S
نظر خصوصی
مشخصات شما ذخیره شود ؟ [حذف مشخصات] [شکلک ها]
کد امنیتیرفرش کد امنیتی
خبرنامه

با ثبت ایمیل خود، جديدترين مطالب سايت را در ايميل خود دريافت نماييد

خبرنامه

ايميل خود را وارد نماييد

عضويت سريع
نام کاربری :
رمز عبور :
تکرار رمز :
ایمیل :
نام اصلی :
کد امنیتی : * کد امنیتیبارگزاری مجدد
آمار کاربران
??? aksaks خوش آمديد ميهمان
aks عضو شويد
aks ارسال کلمه عبور

نام کاربری :
رمز عبور :



aks آمار مطالب
aks کل مطالب : 280
aks کل نظرات : 436
aks آمار کاربران
aks افراد آنلاين : 2
aks تعداد اعضا : 5612

aks کاربران آنلاين

کاربران آنلاين: 0


aks آمار بازديد
aks بازديد امروز : 586
aks بارديد ديروز : 1,522
aks بازديد هفته : 5,313
aks بازديد ماه : 26,898
aks بازديد سال : 126,473
aks بازديد کلي : 2,555,049
aks ورودي گوگل امروز : 10
aks ورودي گوگل ديروز : 47
aks آِ ي پي : 54.167.18.170
aks مرورگر :
aks سيستم عامل :