راه اندازی سون سگمنت
هدف پروژه: می خواهیم تابعی بنویسیم که اعداد را روی نمایشگر 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 میلی ثانیه فرا بخوانید تا نور صفحه نمایشگر ها کمرنگ یا چشمک زن نشود.