راه اندازی سون سگمنت

هدف پروژه: می خواهیم تابعی بنویسیم که اعداد را روی نمایشگر 7 قسمتی نمایش دهد و بتوان آن را در برنامه های مختلف صدا زد.

سخت افزار مورد استفاده: در اینجا از برد آموزشی avr شرکت نامینیک که مبتنی بر تراشه ATMEGA32 است استفاده می کنیم. در قسمت پایین برد یک عدد نمایشگر 7 قسمتی 4 تایی وجود دارد. 7 عدد آند نمایشگر به پایه های 0 الی 6 پورت c میکرو وصل شده و 4 عدد کاتد نمایشگر برای انتخاب یکی از 4 عدد نمایشگر و تنظیم نور نمایشگر، به امیتر 4 ترانزیستور وصل شده. پایه های 4 الی 7 پورت b میکرو هم به بیس این ترانزیستور ها وصل شده است. ترانزیستور ها از نوع pnp بوده و کلکتور آن زمین شده است. یعنی برای روشن کردن نمایشگر باید آندها را 1 کرد و یک یا چند پایه از 4 پورت b را صفر. نمایشگر آند مشترک است.

کتابخانه های استفاده شده: در این برنامه  کتابخانه خود میکرو و کتابخانه تاخیر مورد نیاز است که در خطوط 9 و 10 از برنامه دیده می شوند. ضمن اینکه کتابخانه توابع ریاضی و کتابخانه stdlib در خطوط 11 و 12 فراخوانی شده اند.

شرح کد برنامه: در خط 14 یک آرایه تعریف شده که کد اعداد و بعضی حروف را برای نمایشگر های آند مشترک در آن قرار داده ایم. مثلا اولین خانه عدد 0x3F بوده به معنی عدد صفر. در خط 17 هم یک آرایه 4 تایی تعریف شده که با فراخوانی هر خانه آن یک نمایشگر روشن می شود.

خطوط 30 تا 54 تابع ss_s قرار دارد این تابع یک عدد صحیح از 0 تا 9999 می گیرد و در 4 عدد نمایشگر نشان می دهد. در غیر این صورت علامت Err را به معنی خطا نمایش می دهد.

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

[pastacode lang=”cpp” manual=”%23include%20%3Cmega32.h%3E%0A%23include%20%3Cdelay.h%3E%0A%20%0Aint%20i%3B%0A%20%0Aunsigned%20char%20num_code%5B15%5D%3D%7B0x3f%2C0x06%2C0x5B%2C0x4F%2C0x66%2C0x6D%2C0x7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%200×07%2C0x7F%2C0x6F%2C0x80%2C0x31%2C0x31%2C0x79%2C0x40%7D%3B%0A%20%0Aunsigned%20char%20shpins%5B4%5D%3D%7B0x70%2C0xE0%2C0xB0%2C0xD0%7D%3B%0A%20%0Avoid%20disp_err(void)%0A%7B%0A%20%20%20for(i%3D0%3Bi%3C3%3Bi%2B%2B)%0A%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20PORTC%3Dnum_code%5Bi%2B11%5D%3B%0A%20%20%20%20%20%20%20%20PORTB%3Dshpins%5Bi%5D%3B%0A%20%20%20%20%20%20%20%20delay_us(500)%3B%0A%20%20%20%20%20%7D%0A%20%20%20%20%20PORTB%3D0xF0%3B%0A%7D%0A%20%0Avoid%20ss_s(int%20num)%0A%7B%0A%20%20%20int%20t%2Cl%2Cc%3D0%3B%0A%20%20%20bit%20g%3D1%3B%0A%20%20%20t%3Dnum%3B%0A%20%20%20if(num%3E9999%20%7C%7C%20num%3C0)%0A%20%20%20%7B%0A%20%20%20%20%20%20disp_err()%3B%0A%20%20%20%7D%0A%20%20%20else%0A%20%20%20%7B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20while(t!%3D0%20%7C%7C%20g)%0A%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20t%3Dt%2F10%3B%0A%20%20%20%20%20%20%20%20l%3Dnum-t*10%3B%0A%20%20%20%20%20%20%20%20num%3Dnum%2F10%3B%0A%20%20%20%20%20%20%20%20PORTC%3Dnum_code%5Bl%5D%3B%0A%20%20%20%20%20%20%20%20PORTB%3Dshpins%5Bc%5D%3B%0A%20%20%20%20%20%20%20%20delay_us(500)%3B%0A%20%20%20%20%20%20%20%20PORTB%3D0xF0%3B%0A%20%20%20%20%20%20%20%20c%2B%2B%3B%0A%20%20%20%20%20%20%20%20g%3D0%3B%0A%20%20%20%20%20%7D%0A%20%20%20%7D%0A%7D%0A%20%0Avoid%20main(void)%0A%7B%0ADDRC%3D0xFF%3B%0APORTC%3D0x4F%3B%0ADDRB%3D0xF0%3B%0A%20%0Awhile%20(1)%0A%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20ss_s(1188)%3B%0A%20%20%20%20%20%20%20%20delay_ms(19)%3B%0A%20%20%20%20%20%20%7D%0A%7D” message=”” highlight=”” provider=”manual”/]

دانلود سورس کد

در  اینجا شما میتوانید سورس برنامه را دریافت ،کامپایل و پروگرم نمایید و شاهد عملکرد برنامه باشید.

با کلیک بر روی عکس زیر فیلم راه اندازی این پروژه را مشاهده کیند.

مقالات

نظر بدهید

مطلب قبلی
راه اندازی تایمر
مطلب بعدی
راه اندازی PWM