راه اندازی سون سگمنت
هدف پروژه: می خواهیم تابعی بنویسیم که اعداد را روی نمایشگر 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”/]
دانلود سورس کد
در اینجا شما میتوانید سورس برنامه را دریافت ،کامپایل و پروگرم نمایید و شاهد عملکرد برنامه باشید.
با کلیک بر روی عکس زیر فیلم راه اندازی این پروژه را مشاهده کیند.
نظر بدهید