نمایش/عدم نمایش سایدبار
رفتن به بالای صفحه
آزادی حجاز از دست نااهلان
مهدی دمیرچیلو

پروژه شمارنده از 0 تا 99 در سون سگمنت با avr

به نام خدا : شمارنده از ۰ تا ۹۹ در ۷S – سلام خدمت دوستان…تو این پروژه AVR  میخوام یه سون سگمنت ۲ تایی کاتد مشترک رو راه اندازی کنیم…این پروژه با زبون c وبا کدویژن نوشتم و با پروتئوس طراحیش کردم. و از atmega16 استفاده کردم؛ این برنامه هم کارش اینه که از 0 تا 99 میشموره!

پروژه شمارنده از 0 تا 99 در سون سگمنت با avr


فیلم پروژه :

عکس پروژه :
 سون سگمنت کاتد مشترک

 

شماتیک پروژه :
شمارنده از ۰ تا ۹۹ در ۷S

 

کد پروژه :

 

توجه مهم : حتما فیوز بیت های میکرو AVR رو روی ۸ میگ تنظیم کنید…اگه فیوز بیت نمیدونید چیه…مطلب زیر رو بخونید :
آموزش جامع میکروکنترلر AVR جلسه۱۰

توجه۲ : اون قطعه سیاهه که در فیلم و در عکس پروژه میبینید بهش میگن رگولاتور که کارش اینه که اگه ولتاژ بین ۷ تا ۳۵ ولت بهش بدی…ولتاژ ۵ ولت در خروجی بهمون میده و چون من از باتری کتابی ۹ ولت استفاده کردم لذا مجبورم از رگولاتور ۵ ولت(۷۸۰۵) استفاده کنم.

راهنمای اتصال سون سگمنت به میکرو

(ترتیب پایه های سون سگمنت ۲ تایی کاتد مشترک)

همون طور که میدونید یه سون سگمنت تک رقمی از ۸ تا LED تشکیل شد…در زیر عکسی از یه ۷S دو رقمی میبینید….برای هر LED داخل ۷S یه اسمی گزاشته که میبینید….a-b-c-d-e-f-g-p
 ترتیب پایه های سون سگمنت

ترتیب پایه های سون سگمنت رو میتونید با زدن زمین و ولتاز تست کنید و پایه ها رو بشناسید…اما من قبلا این کار رو کردم و در زیر ترتیب پایه ها رو براتون میزارم.
 پروژه AVR

دانلود پروژه شمارنده از ۰ تا ۹۹ در ۷s

خوب…امیدوارم از این مطلب خوشتون اومده باشه و مفید بوده باشه براتون…..فعلا یا علی…

 

==============================

 

همون کد پروژه رو یکم ویرایش کردم و به صورت زیر نوشتم، این مدلی کداتونو بنویسید بهتره :

گروه پرسش و پاسخ الکترونیکی در سروش
مهدی دمیرچیلو جنگ ما فتح قدس را به همراه خواهد داشت. [ امام خمینی (ره) ]
ارسال دیدگاه
69

1) نظرات غیر فارسی به صورت خودکار حذف میشوند ( حداقل 5 حرف فارسی وارد کنید ).

2) به موارد درخواست پروژه/کد آماده و سوالاتی که بلد نباشم پاسخ داده نمیشه.

3) پسورد فایل های سایت : www.dmf313.ir

  1. Avatar

    مهمان

    AMIR

    بعد یه سوال دیگه خیلی مهمه rofl چجوری وقتی یه پوش باتن رو فشار میدیم (یه بار)کلا مدار روشن بشه
    برای مثال ما پورت سی یک اتمگا8 رو پول اپ کردیم و یه پوش باتن وصل کردیم بهش و مد نظرمونه که وقتی باتن رو یک بار فشار میدی کلا روشن بشه (مثلا پو رت دی یک با فشار دادن باتن یک بشه به این صورتif(PINC.1==1){PORTD.1 = 1;}D)

    • مهدی دمیرچیلو

      نویسنده این مطلب

      مهدی دمیرچیلو

      سوالت چی بود الان دقیقا؟ نفهمیدم
      یه موردی – وقتی پایه C1 رو PULL.UP کردی، و یه کلید بهش وصل کردی، وقتی کلید فوق فشرده بشه مقدار پایه C1 صفر میشه و در حالت عادی که کلید فشرده نشده، مقدار پایه C1 یک هستش ( به دلیل مقاومت PULL.UP )

      • Avatar

        مهمان

        AMIR

        میدونم. سوالم این بود که با یک بار فشردن کلید مثلا یک سون سگمنت برای همیشه روشن بشه نه فقط وقتی کلید صفره . تو اون قسمت بالایی هم اون قسمت شرط رو اشتباه نوشتم درستش اینهif(pinc.1 == 0){portd.1 = 1}d

        • مهدی دمیرچیلو

          نویسنده این مطلب

          مهدی دمیرچیلو

          جدا متوجه نمیشم چی میگی و چی میخوای.
          الان دکمه c.1 رو فشار دادی، شمارش اعداد تو 7s شروع بشه؟ اینو میگی؟
          برای همیشه روشن بشه رو نمیفهمم!

          • Avatar

            مهمان

            amir

            ببینید اگه تو این چیزی که گفتم دکمه سی یک صفر بشه به معنی اینکه دکمه فشرده بشه تا وقتی که دکمه فشردس 7s کار میکنه و اعدادو نمایش میده اما ما وقتی دستمونو از رو دکمه بر میداریم و سی یک یک میشه سون سگمنت دیگه اعدادو نمایش نمیده و خاموش میشه حالا ما میخوایم کاری کنیم که وقتی فقط یک بار دکمه رو فشار میدیم و دستمونو از رو دکمه بر میداریم سون سگمنت دیگه خاموش نشه و تا اخر بشماره. توضیحش سخته wacko

          • مهدی دمیرچیلو

            نویسنده این مطلب

            مهدی دمیرچیلو

            آها – خب اون حلقه for خط 37 رو بردار – بجاش یه if بزار، یه متغییر تعریف کن، تا زمانی که کلید فشردس مقدارش 1 واحد زیاد بشه در هر مرحله،
            زمانی هم که کلید رو ول کنی، متغییر فوق دیگه مقدارش زیاد نمیشه و عدد داخل 7s ثابت میمونه.

  2. Avatar

    مهمان

    AMIR

    دستت درد نکنه
    خیلی سایت مفید و خوبی داری victory

  3. Avatar

    مهمان

    amir

    بعد یه چیز دیگه اینکه نمیشه یه شرط براش گذاشت؟ مثلا { victory IF(I==30){PORTC.5 = 1 اخه وقتی زدم قبول نکرد ممنون میشم جواب بدی

    • مهدی دمیرچیلو

      نویسنده این مطلب

      مهدی دمیرچیلو

      یعنی میگی اگه عدد 30 تو 7s نمایش داده شد، بیاد پایه c5 رو 1 کنه؟
      خب یکاری کن : به جای حلقه های 11و15 بیا یه حلقه 0 تا 99 تعریف کن ( متغییر k )
      بعد مقدار یکانشو جدا کن و بده به متغییر j و مقدار دهگانشو بده به متغییر i.
      حالا هر موقع متغغییر k شد 30، کار مدنظرتو انجام بده.
      —————————–
      کد چزیزی که در بالا توضیح دادم رو نوشتم و پیوست کردم، انتهای همین مطلب.
      تو خط 37 تا 40 همین کد جدیده، بیا شرط مدنظرتو قرار بده…

  4. Avatar

    مهمان

    AMIR

    سلام دستت درد نکنه درست کار کرد ولی چجوری میشه تاخیر شمارش به بعدش رو بیشتر کرد دیلی هاشو باید دستکاری کرد؟

    • مهدی دمیرچیلو

      نویسنده این مطلب

      مهدی دمیرچیلو

      سلام – خط 15 رو میتونی تغییر بدی – الان تعداد تکرار 15 تاس، کم و زیادش کن.
      اون dELAY ها رو تغییر بدی، احتمالا 7s چشمک میزنه، که خب باید تغییر بدی!
      ————-
      تو اون کد جدیده، این داستان delay رو هم لحاظ کردم ( ته همین مطلب گزاشتم کد جدیده رو )

  5. Avatar

    مهمان

    حمیدرضا

    سلام آقا مهدی خسته نباشید واقعا ممنون بابت مطالبتون
    ببخشید برای شمارنده سه رقمی با سون سگمنت چهار رقمی یا شمارنده چهار رقمی برنامه ای دارین؟توی سایتتون پیدا نکردم

  6. Avatar

    مهمان

    قادر

    برنامتون کاملا اشتباهه

    • Avatar

      مهمان

      javad

      مهدی جان سلام خیلی ممنون ازاموزش هاتون وبه اقا قادربگم این برنامه رومن نوشتم ومدارش راهم بستم عالی کارکرد شمادقت کنیدیه جای کارواشتباه کردین

  7. Avatar

    مهمان

    ایران

    مهدی جان میگم یه مشکل دیگم دارم اینکه ترتیب اجرا حلقه ها چه جوریه؟

    • مهدی دمیرچیلو

      نویسنده این مطلب

      مهدی دمیرچیلو

      خط 19 : برای تکرار نمایش هر عدد – تا چشمک نزنه.
      خط 15 و 17 هم که هر کدوم برا یکی از ارقام 7s ( سون سگمنت ) هستن

  8. Avatar

    مهمان

    ایران

    سلام داش مهدی
    چیزی که من از برنامت فهمیدم اینه اومدی یه بار یه سگمنت فعال کردی یکی غیرفعال
    بعد اومدی برای یکی از سگمنتها 9بار حد مجاز شمارش گذاشتی
    یکی ده بار چرا؟!چرا هردو ده بار نیست
    بع اومدی یه حلقه به اسم تکرار گذاشتی به حد25برای رفرش صفحه؟درسته؟چرا25؟
    بعد چرا تو برنامت بعد از هر بار مقدار دهی به هر سگمنت جفتشون غیر فعال کردی؟

    • مهدی دمیرچیلو

      نویسنده این مطلب

      مهدی دمیرچیلو

      سلام
      یه نکته :
      i<=9 با j<10 برابره ======= در واقع j<10 همون j<=9 هستش دیگه ======= خخخ این از سوال اولت ============================= سوال دومت : خب این مقدارو با خطا و تست بدست ابردم - برای این که دیتا که داریم نشون میدیم تو سون سگمنت چشمک نزنه و حداقل تکرار برا چشم انسان حدود 20-40 بار تکرار هستش همین لامپ های خونه هم چشمک میزنه - ولی چون سریع چشمک میزنه چشم ما متوجه نمیشه - که خب از همین روش در بحث کنترل میزان نور led ها هم استفاده میکنن

  9. Avatar

    مهمان

    محمد

    چرا حلقه های forتو در تو هست

    • مهدی دمیرچیلو

      نویسنده این مطلب

      مهدی دمیرچیلو

      رقم اول 7s
      رقم دومش
      تکرار براش رفرش شدن و چشمک زن نشدن 7s

  10. Avatar

    مهمان

    mehdi

    سلام میش کمکم کنید …میخام سون سگمنت 0 تا 6 را بشماره….مرسی…

  11. Avatar

    مهمان

    Pegah

    سلام ببخشید همین برنامه رو با اسمبلی میشه بنویسید،لطفا

    • مهدی دمیرچیلو

      نویسنده این مطلب

      مهدی دمیرچیلو

      سلام-اسمبلی کار نمیکنم.

  12. Avatar

    مهمان

    پارسا

    سلام من میخواستم که شمارنده شروع به کار کنه و با یه دکمه دوباره صفر بشه چطوری میتونم این کار رو انجام بدم ؟

    • مهدی دمیرچیلو

      نویسنده این مطلب

      مهدی دمیرچیلو

      سلام
      بین خط 18 و 19 دستور goto بزار تا به خط 14 بره برنامه

  13. Avatar

    مهمان

    محمد حسین

    سلام این آندمشترکه یا کاتدمشترک ؟
    اگه این کاتدمشترک باشه ولی من با آندمشترک بزنم بازم کار میکنه یا نه؟

    • مهدی دمیرچیلو

      نویسنده این مطلب

      مهدی دمیرچیلو

      سلام
      اینو سرچ کن تو قسمت تصاویر گوگل
      seven segment anode or cathode

  14. Avatar

    مهمان

    محمد

    سلام ؛ ببخشید میخواستم بپرسم که واسه pcb این مدار مقاومت یا خازنی ویا چیز دیگری لازمه یا نه؟
    ممنون

    • مهدی دمرچیلو

      نویسنده این مطلب

      مهدی دمرچیلو

      سلام-بله کلی فرق داره با این- سر تغذیه اش داستان داریم – سر تامین جریان این 7s داستان داریم و …

  15. Avatar

    مهمان

    ped

    سلام خسته نباشید ببخشد داخل برنامه توی حلقه تکرار چرا گفتید tekrar از 25کمتر شد چرا 25؟
    ممنون میشم جواب بدید

    • مهدی دمرچیلو

      نویسنده این مطلب

      مهدی دمرچیلو

      سلام – میزان بروزرسانی هستش دیگه – مقدارشو تا جایی تعیین میکنیم که چشم ما تغیرات ( روشن خاموش شدن 7s ها ) رو نفهمه – وگرنه همین پروژه رو با دوربین موبایل ببینی – میبینی که داره چشمک میزنه.
      این داستان تو لامپ های خونه هستش – اگه با موبایل با دوربین با کیفیت از لامپ خونه فیلم بگیری – میبینی که داره چشمک میزنه – چون هر 50 ثانیه یکبار خاموش روشن میشه – چشم ما متوجه تغییرات نمیشه.

  16. Avatar

    مهمان

    *

    سلام
    این جیمیل دوستمه
    به این میتونین پیام بدین
    ممنون
    کد این برنامه رو ندارین؟!
    برنامه ای بنویسید که با فشردن یک کلید شمارش از ۰۰ الی ۹۹ روی سون سگمنت آند مشترک آغاز شود. با فشردن دوباره همان کلید شمارش متوقف شده؛ با فشردن مجدد آن کلید شمارش دوباره ادامه یابد. با فشردن مجدد کلید، صفر شود.
    من خودم شمارنده رو کدش رو نوشتم و شکلشم رسم کردم
    هیچ مشکلی نداشت
    ولی وقتی کلید بهش وصل کردم
    دیگه کار نکرد
    میشه کمکم کنین لطفا؟!
    #include
    #include
    flash unsigned char display[]={
    0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
    unsigned char p1=0,p2=0;
    interrupt [TIM1_OVF] void timer1_ovf_isr(void){
    TCCR1B=0x00;
    TCNT1H=0x85;
    TCNT1L=0xEE;
    TCCR1B=0x04;
    p1++;
    if(p1==10){
    p1=0;
    p2++;}
    if(p2==10) p2=0;}
    void main(){
    PORTA=0xFF;
    DDRA=0xFF;
    PORTB=0x00;
    DDRB=0x03;
    PORTC=0x03;
    DDRC=0x00;
    TCNT1H=0x85;
    TCNT1L=0xEE;
    TIMSK=0x04;
    TCCR1B=0x04;
    #asm(“sei”)
    while (1){
    if(PINC.0==0){
    PORTB=0x01;
    PORTA=display[p1];
    delay_ms(10);
    PORTB=0x02;
    PORTA=display[p2];
    delay_ms(10);
    while (PINC.0==0);
    }}}

  17. Avatar

    مهمان

    محمدپوریان

    نمیخوام دیگران ببینن دوما فیلم همینی که درست کردمه

    • مهدی دمرچیلو

      نویسنده این مطلب

      مهدی دمرچیلو

      بابا بفرست – زیرش هم بنویس نظرو منتشر نکن
      سخت میگیری چقدر

  18. Avatar

    مهمان

    محمدپوریان

    گذاشتی خبر بده اسمم یادت نره بعد میگم کاری که من کردمو بکن تو ایمیلت بفرستم فیلمشو یک دونه سون سگمنت دست سازه

    • مهدی دمرچیلو

      نویسنده این مطلب

      مهدی دمرچیلو

      فیلم چی؟
      تو سایت زیر آپلود کن و لینکشو برام بفرست
      http://www.picofile.com

  19. Avatar

    مهمان

    محمد پوریان

    میخواهی فایل پرتوس رو بدم بهت

  20. Avatar

    مهمان

    محمد پوریان

    البته اسم من که ایدشو دادم یادت نره و البته یک چیز دیگه من همین رو با ۷ال ای دی زدم شد ایمیلمو داری پیام بده فیلمشو برات بفرستم

    • مهدی دمرچیلو

      نویسنده این مطلب

      مهدی دمرچیلو

      دارم مطلبشو مینویسم – چیز خاصی نداره – گفتم با ترانزیستور باید در حالت سوییچ ازش استفاده کنی – تو نت بزنی مدارشو میاره – حالا من مطلبم رو کامل کنم منتشرش میکنم.

  21. Avatar

    مهمان

    محمدپوریان
    • مهدی دمرچیلو

      نویسنده این مطلب

      مهدی دمرچیلو

      سلام مجدد
      اولا باید برای این مدارت از ترانزیستور استفاده کنی – به پایه های میکرو برا هر پایه یه ترانزیستور وصل کن تا جریانو تقویت کنی وگرنه میکرو آسیب میبینه.
      از نظر ولتاژی هم چون LED ها رو موازی بستی نباید مشکلی رخ بده ولی همون بیشتر مشکل جریان داره مدارت.

      • Avatar

        مهمان

        محمدپوریان

        واقعا ممنونم فقط میتونید مداری تقویت جریانی به من معرفی کنید

        • مهدی دمرچیلو

          نویسنده این مطلب

          مهدی دمرچیلو

          از انواع ترانزیستور میتونی استفاده کنی – از آیسی هم میتونی استقاده کنی – الان من همین پروژتو با BC547 راه انداختم – 4 تا LED شو فقط – باید همین مدارمو 7 بار دیگه انجام بدم تا بشه دقیقا پروژه شما – ما حالشو نداشتیم برای تست همین 4 تا اکتفا کردیم – حالا شاید مطلبشو نوشتم – فعلا تو کارشم – ولی خب قولی نمیدم مطلبی بنویسم و اگه بنویسم کی منتشر میشه – چون نمیدونم چی پیش میاد – البته چیز خاصی هم نداره – این لینکو ببین خوب آموزش داده – اگه متوجه نشدی که تو نت فارسی بزن – اگه چیزی گیر نیوبری باید صبر کنی تا مطلبشو بزارم تو سایت
          http://www.ermicro.com/blog/?p=423

  22. Avatar

    مهمان

    ناشناس

    سلام چطوری عکس بفرستم

    • مهدی دمرچیلو

      نویسنده این مطلب

      مهدی دمرچیلو

      shout
      تو سایت زیر آپلود کن و لینک عکسو برام بفرست
      http://www.picofile.com

  23. Avatar

    مهمان

    محمدپوریان

    میشه بگید چیکار کنم

    • مهدی دمرچیلو

      نویسنده این مطلب

      مهدی دمرچیلو

      یعنی اومدید 7s رو با led خودتون خواستید بسازید و جواب نداده؟
      شماتیکو بفرست اگه اینطوره.

  24. Avatar

    مهمان

    محمدپوریان

    سلام میدونم شاید بگید برو خوت مدارش رو طراحی کن ولی باید بگم من طراحی مدار بلد نیستم و فقط یک علاقه مند به الکترونیکم این پرژتون عالی بود من دوست داشتم این رو با ledامتحان کنم تو پرتئوس برای هر یک سگمنت 2تا ال ای دی گذاشتم ولی هی خاموش و روشن میشن یعنی چشمک میزنن میشه بگید باید چیکار کنم این مشکل حل بشه خواهش میکنم

  25. Avatar

    مهمان

    پویا

    سلام داداش
    من میخوام با دوتا سون سگمنت جدا گانه همین کار رو انجام بدم تو نوشتن برنامه مشکل دارم اگه میشه راهنماییم کن دمت گرم
    خیلی ضروریه sorry

  26. Avatar

    مهمان

    سحر

    سلام میشه بگید چرا ۲۵ بار تکرار میشه؟ اگه کمتر باشه چی میشه؟

    • مهدی دمرچیلو

      نویسنده این مطلب

      مهدی دمرچیلو

      سلام-برا بحث رفرش شدن هستش – به صورت خطا و تست به دست ابردمش
      البته به روش علمی هم میشه ولی من چیز یادم نمیاد از نحوه کارش

  27. Avatar

    مهمان

    YAS

    سایت خیلی مفیدی داری
    سوالی ک دارم کد تکرار رو یعنی چی؟
    منظور اینکه ۲۵ بار تا ۹۹ بشماره؟

    • مهدی دمرچیلو

      نویسنده این مطلب

      مهدی دمرچیلو

      سلام
      خط ۱۵ تا ۲۸ رو باید بزاری داخل یه حلقه که ۱۵ بار تکرار میشه…
      این دیگه مربوطه به بحث حلقه ها در برنامه نویسی C

    • Avatar

      مهمان

      علی

      واسه این که چشم قادر به دیدنش باشه

  28. Avatar

    مهمان

    cloner

    سلام مهدی جان شرمنده من تو کدتون یه تغییر دادم و میخوام طوری بشه که مثلا داره میشماره وقتی یه کلید رو بزنی وایسه رو همون عدد و وقتی دوباره کلید رو زدی از همون جا دوباره بشماره کدشم ایجا میزارم یه نگا بندازین این کدو از چند نرفر پرسیدم اما مشکلش اینه که کلید چه بزنه چه نزنه دوباره میشماره.

    • مهدی دمرچیلو

      نویسنده این مطلب

      مهدی دمرچیلو

      لینک سوالت در ECA?

  29. Avatar

    مهمان

    jafar

    ببخشید میشه همین برنامه رو به صورت نزولی بنویسید یعنی از ۹۹ تا ۰ با کدویژن

    • مهدی دمرچیلو

      نویسنده این مطلب

      مهدی دمرچیلو

      سلام
      چیز خاصی نداره
      یکم روش فک کنید، کدش رو بنویسید مطمئنا به جواب میرسید…

  30. مهدی دمرچیلو

    نویسنده این مطلب

    مهدی دمرچیلو
    • مهدی دمرچیلو

      نویسنده این مطلب

      مهدی دمرچیلو

      در ضمن مدارتون رو دیدم….درسته….فقط حواستون باشه فرکانس میرو رو ….رو ۸ میگ بزارید…..تو پروتئوس ….روی میکرو ۲بار کلیک چپ….نمایش صفحه جدید….تعین فرکانس و قرار دادن بر روی ۸ میگ

  31. Avatar

    مهمان

    smo

    متاسفانه از اونم چیزی متوجه نشدم
    unknw

  32. Avatar

    مهمان

    smo

    چهارتا FOR تودرتو نوشتم و کد شمارو تغیر دادم
    اما کنترلام درست کار نمیکنه
    کدی دارید مث این دو رقمی باشه ولی برای 4 رقمیا تا من استفاده کنم

    • مهدی دمرچیلو

      نویسنده این مطلب

      مهدی دمرچیلو

      فک کنم بحث رفرش سازی شاید هم نمایش تو ۷s تون مشکل داشته باشه.
      اولی احتمالش زیاده..
      ببین تو سایت فک کنم نمونه ۴ تایی هم گزاشته باشم

  33. مهدی دمرچیلو

    نویسنده این مطلب

    مهدی دمرچیلو

    ممنون
    داش من حداقل بگو کجاش رو مشکل داری dash
    من الان چی باید بگم unknw
    و چطور کمکت کنم آخه wacko

  34. Avatar

    مهمان

    smo

    مرسی از سایت خوبتون
    من تو بستن 4تایی این پروژه مشکل دارم
    ممنون میشم کمک کنید

  35. Avatar

    مهمان

    میلاد

    سلام
    مشکلش اینه ک برای کنترل پایه ها نباید برنامه رو اینجوری بنویسی.
    ب این شکل بنویس
    PORTD=0XFE;
    PORTD=0XFD;

  36. Avatar

    مهمان

    Iraj

    در عمل یک7SEGMENT رو باید چطور تشخیص بدیم که اند مشترک یا کاتد مشترک طرز تشخیص پایه ها چطوریه؟