نمایش/عدم نمایش سایدبار
رفتن به بالای صفحه

شمارنده تک رقمی با کلید

به نام خدا : سلام خدمت دوستان bye؛ این پروژه ساده avr یه شمارنده هست که وقتی شما رو کلید کلیک میکنید سون سگمنت عدد ۰ رو نشون میده حالا اگه دوباره کلیک کنید عدد ۱ رو نشون میده و… در کل اینا برنامه های ساده هستن ولی برا شروع بدک نیستن.(البته این پروژه فک کنم ۲ تا مشکل داره که در آینده میتونید بفهمید مشکلاتش رو )

شمارنده تک رقمی با کلید


شماتیک پروژه :
shematic
 
کد پروژه :

 

دانلود پروژه این مطلب از سرور سایت

 
سوالی بود در خدمتیم….البته اگه بلد بودم laugh

پسورد فایل های سایت :
www.dmf313.ir
جنگ ما فتح قدس را در پی خواهد داشت (امام خمینی) >>>>>> اگر از صدام بگذریم، اگر مسأله قدس را فراموش کنیم، اگر از جنایت های امریکا بگذریم از آل سعود نخواهیم گذشت. ان‌شاالله اندوه دلمان را را در وقت مناسب با انتقام از امریکا و ال سعود برطرف خواهیم کرد و داغ و حسرت حلاوت این جنایت بزرگ را بر دلشان خواهیم گذاشت و با برپایی جشن پیروزی حق بر جنود کفر و نفاق و آزادی کعبه از دست نااهلان و نامحرمان به مسجد الحرام وارد خواهیم شد (امام خمینی)
ارسال دیدگاه
59

1) تعداد حروف غیر فارسی از حروف فارسی بیشتر باشه دیدگاه به صورت خودکار حذف میشه.

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

3) برای گزاشتن کدهاتون از این سایت استفاده کنید : debian

  1. مهمان

    AmirEslami

    سلام
    خیلی عالی بود

    1397/09/12
    07:58
  2. مهمان

    AmirEslami

    سلام
    ممنون از سایت خوبتون

    1397/09/12
    07:55
  3. مهمان

    Faeze

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

    1397/09/10
    03:54
  4. مهمان

    نیما

    سلام
    روز جمعتون بخیر
    من میخواستم یک برنامه شبیه به این بنویسم که با فشار دادن کلید یک واحد 7seg ام افزایش پیدا کنه
    میشه کمکم کنید
    smile

    1397/08/11
    04:07
  5. مهمان

    ایران

    سلام اقا مهدی طاعاتتون قبول
    حاجی نگاه من هنوز در حد وقفه ADC تایمر کانتر نیستم چرا دروغ قبل خ افتضاح بودم
    این برنامه رو ببین من اومدیم با SWCASEنوشتم ولی ایراد داره بنظرت چکارکنم
    http://s9.picofile.com/file/8334195434/7SEQ2.rar.html

    1397/05/20
    07:36
  6. مهمان

    ایران

    سلام اقا مهدی فکر نکنی دیونما پشت هم پیام میدم
    دارم پروژه 2سون سگمنت مینویسم ولی هی این ارور گیر میده به این ایف چرا
    http://s9.picofile.com/file/8334121892/2.jpg

    1397/05/20
    03:24
    • نویسنده این مطلب

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

      سلام مجدد – خط 151 نقطه ویرگول ( ; ) نزاشتی – سوال پرسیدن چه ربطی به اینی که میگی داره – یعنی الان که من بعضا تو eca میام 3-4 تا سوال پشت سر هم میپرسم و بعد میرم چند ماه دیگه یا سال دیگه سوال میپرسم دیونم؟ خخخخ

      1397/05/20
      06:57
  7. مهمان

    ایران

    سلام اقا مشکل حل شد نشستم 10تا برنامه نوشتم رسیدم به برنامه ای که تو نوشتی که خوبترینش بنظرم فقط دوتا مساله پیش میاد
    یکی اینکه تو پروتئوس من(مال تو اینطوری نیست نمیدونم چرا)با یک لحظه کلید کردن روی کلیدعدد از صفرنمیشماره یعنی چندبار با مکث باید کلید بزنی تا بره روصفر وشمارشو اغاز کنه
    دوم اینکه این برنامه یه مشکل داره اگر کلید گیرکنه مستمر میشماره ویک مشکل اساسی تو برنامس
    یه بار یه جا نحوه کد نویسیش دیده بودم که چطور میشه این مشکلوبرطرف کرد ولی یادم رفت(همش تقصیر خدمته)
    دقیقا اونفردی که توضیح میداد میگفت بچه های برنامه نویس حرفه ای این کد مینویسن که به قضیه گیر کلید برخورد نکنن
    درنهایت یک سوال چرا برای ifدوم پرانتز نذاشتی ؟؟؟
    الان دارم رودوتا سگمنت کار میکنم

    1397/05/20
    02:22
    • نویسنده این مطلب

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

      سلام-با پروتئوس کار نکن – در عمل کار کن –
      دستورات شرطی که زیر مجموعش یک خط ( یک دستور ) هستش – الزامی به گزاشتن پرانتز نیست – ولی بیش از دو دستور بشه کدهای if، باید پرانتز استفاده کرد حتما.
      کد+شماتیکت رو بفرست.
      میتونی از وقفه خارجی استفاده کنی تا این داستانا ایجاد نشه – چون شما در برنامه هاتون از Dealy استفاده میکنید و timer این مشکل کلید زنی رخ میده – چون میکرو سر اون Dealy ها گیر میکنه و طرف هم مثلا 0.5 ثانیه یا کمتر کلید رو فشار میده و بعد ول میکنه ولذا تو برنامه میکرو – میکرو نمیتونه رخ دادن اون کلیدو تشخیص بده.

      1397/05/20
      06:55
  8. مهمان

    ایران

    ببببخشید اشتپ شد
    من همون مدار تورو گذاشتم فقط پول اپ کردم پین کلیدو
    if (PINC.0==0 && i=10){
    i=0 ;
    PORTD=cathode_seg[0x3F]

    1397/05/18
    10:51
    • نویسنده این مطلب

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

      مقاومت پول دان باید بزاری نه پول آپ

      1397/05/19
      09:26
  9. مهمان

    ایران

    سلام مشکل این چیه چرا ارور میده و اجرا نمیشه
    if (PINC.0==0 && i=10){
    i=0 ;
    PORTD=cathode_seg[0x3F]
    }

    1397/05/18
    09:01
    • نویسنده این مطلب

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

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

      1397/05/18
      09:04
  10. مهمان

    پ اکبری

    ببخشید خیلی سوال میپرسم تو پروتئوس باید برای مقاومت بعد از کلید چی سرچ کنیم

    1397/02/30
    12:48
    • نویسنده این مطلب

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

      مقاومت res باید باشه

      1397/02/30
      06:28
  11. مهمان

    پ اکبری

    سلام مشکل این چیه از رو کد شما نوشتم ولی خواستم دو رقمیش کنم
    unsigned char cathode_seg[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0}x7F,0x6F

    1397/02/29
    10:45
    • نویسنده این مطلب

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

      سلام
      اون دو تا متغییر آخری چرا خارج از پرانتزه؟

      1397/02/29
      10:47
    • مهمان

      پ اکبری

      نه همه داخلن تو سایت خواستم بنویسم اینجوری شد
      تو کدویژن که مینویسم این خط ارور میده

      1397/02/29
      05:26
      • نویسنده این مطلب

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

        این درستشه :
        unsigned char Cathode_seg[] = { 0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F };

        1397/02/30
        12:13
  12. مهمان

    پ اکبری

    و اینکه با ‌atmega 32 هم میشه ؟

    1397/02/28
    01:27
    • نویسنده این مطلب

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

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

      1397/02/28
      02:28
  13. مهمان

    پ اکبری

    سلام میشه بگین کدش چجوری میشه اگه بخوام دو رقمیش کنم ولی با کلید هم باشه ؟‌ اتصالاتش هم که مثل شمارنده ٠ تا ٩٩ هست که گذاشتین ؟

    1397/02/28
    01:20
    • نویسنده این مطلب

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

      کد نمینویسم برا کسی.خودتون برید بنویسید.

      1397/02/28
      02:28
  14. مهمان

    ehsan

    با سلام و خسته نباشید
    مطالب بسیار عالی بودن . فقط یه سوال > میشه راهتمایی کنین که یک شمارنده 0 تا 9 روی سون سگمنت کاتد مشترک باشه که دارای کلید باشه به طوری که اگه کلید بسته بود شمارنده بالا شمار و اگر باز بود پایین شمار باشد .
    ممنون میشم که راهنمایی کنین . victory

    1397/02/28
    10:12
    • نویسنده این مطلب

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

      سلام-کد نوشته نمیشه.

      1397/02/28
      12:28
  15. مهمان

    ناشناس

    سلام. من رشتم کامپیوتره… و به دلیل کار کردن یه جلسه هم سر کلاس نرفتم:| خخ و استاد هم همچین چیزی ازم خواست…
    درکل الان شب امتحانمه و من دارم اینو براش آماده میکنم. ممنون نجاتم دادی laugh heart heart
    آموزش خارجی هم زیاد دیدم ولی درکل همش خطا میداد… و یا مثلا keil میخواست و این خطارو میداد
    The selected compiler ‘Keil for 8051’ is not installed.
    Compilation failed. Check the Project Settings.
    اینو هم براش نصب کردم ولی فایده نداشت. درکل ممنون laugh

    1396/10/20
    06:49
  16. مهمان

    hosein

    ممنون بابت پاسختون لطف کردین جناب مهندس من تازه شروع بع یادگیری کردم کتاب مهندس جابر الوندی رو گرفتم ولی خیلی کلی یه سری چیزا رو تئضیح دادن اگر یه کتابی یا مرجعی معرفی کنین که کمی جزیی تر مسایل رو بررسی کرده باشه ممنون میشم

    1396/09/01
    11:15
    • نویسنده این مطلب

      مهدی دمرچیلو

      سلام-والا من خودم با همین کتاب شروع کردم بعدش دیگه از گوگل هرچی میخواستم پیدا میکردم و پیدا میکنم – گوگل منبع خوبیه.

      1396/09/01
      11:38
  17. مهمان

    hosein

    سلام وقتتون بخیر ممنون میشم اگر توضیح مختصری در باره این خط بدین 0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F که منظور از 0x ها پشت هگز در تعریف کد های سون سگمت چیست ممنون از لطفتون

    1396/08/30
    03:18
    • نویسنده این مطلب

      مهدی دمرچیلو

      سلام
      به کامپایلر میگیم اینا عدد هگز هستن

      1396/08/30
      09:41
  18. مهمان

    الی

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

    1394/10/30
    05:43
    • نویسنده این مطلب

      مهدی دمرچیلو

      سلام
      تو سایت آپلود کردم

      1394/10/30
      06:25
      • مهمان

        الی

        ببخشید شما تو توضیحات فرمودین با هربار زدن کلید یه شماره میشمره ولی این برنامه دفه اول بعد از زدن پوش باتن خودش خودکار تا ۹ میشمره!

        1394/11/01
        12:37
        • نویسنده این مطلب

          مهدی دمرچیلو

          سلام
          مطلب زیر رو بخونید متوجه میشید مشکل کار رو.
          بعد بگید ببینم درست متوجه شدید یا نه
          http://dmf313.ir/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%AC%D8%A7%D9%85%D8%B9-%D9%85%DB%8C%DA%A9%D8%B1%D9%88%DA%A9%D9%86%D8%AA%D8%B1%D9%84%D8%B1-avr-%D8%AC%D9%84%D8%B3%D9%8712/

          1394/11/01
          01:09
          • مهمان

            الی

            کاملا متوجه شدم هگز برنامه شما تو پروتئوسی که گذاشتین درست کار میکنه اما تو پروتئوس من بعد وصل کلید اتوماتیک کار میکنه حتی برنامه رو هم دوباره نوشتم ولی …
            پروتئوس من نسخه ۷ هست شاید مشکل از اونه!

            1394/11/01
            09:18
          • نویسنده این مطلب

            مهدی دمرچیلو

            خب معلوم میشه که مطلبی که گفتم رو نخوندید ..
            باید بگم که برا اون دکمه(باتن) باید یه مقاومت پول دان بزاری تا مشکل حل بشه.
            توضیحات کامل در این زمین هدر اون مطلبی که گفتم داده شده است

            1394/11/01
            11:48
          • مهمان

            الی

            پس معلوم شد با بی دقتی خوندم smile !درست شد مرسی!دمتون گرم!

            1394/11/01
            01:59
  19. مهمان

    محسن

    ببخشيد با زبان بيسيك اشناي دارم

    1394/02/28
    11:51
  20. مهمان

    محسن

    سلام مهدي جان ممنون ميشم كمكم كني راستش من با زبان بيسيك اشناي ندارم و با سي اشناي ندارم .ميخواستم بدونم اگه بجاي كليد كيپد بذاريم وخروجي پنج عدد سون سگمنت باشه برنامه به چه صورتي نوشته ميشه . تشكر بابت اين سايت اموزنده موفق باشي

    1394/02/28
    11:50
    • نویسنده این مطلب

      مهدی دمرچیلو

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

      1394/03/12
      12:19
  21. نویسنده سایت

    amir021

    ولی خیلی با مرامی دمت گرم good

    1393/12/26
    07:02
    • نویسنده این مطلب

      مهدی دمرچیلو

      برو فک کن چن دقیقه ….. ۲۰ دقیقه….مردونه فک کن….چون خودت به جواب برسی خیلی خیلی بهتره….به نکته و به اشکال کار پی میبری….ولی اگه من برات حل کنم….مشکل کار رو متوجه نمیشی
      در هر صورت اگه متوجه نشدی در خدمتیم…..

      1393/12/26
      07:12
  22. نویسنده سایت

    amir021

    مهدی جان شرمنده خیلی سوال می کنم blush
    من دوباره این برنامه رو جور دیگه نوشتم بقه صورتی که با یک کلید یک واحد افزایش و با یک کلید یک واحد کاهش پیدا کنه
    اینم برنامم اما بازم به مشکل برخردم به نظرت کجاش ایراد داره help
    #include
    #include
    flash unsigned char cathode_seg[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71,0x6F,0x76};
    void main(void)
    {int i=0;
    DDRD=0xff;
    PORTD=0x00;
    DDRC.1=0;
    PINC.1=0 ;
    DDRC.0=0;
    PINC.0=0;
    while(1)
    {
    if(PINC.0==1){ PORTD=cathode_seg[i];
    i=i+1; }
    if(PINC.1==1)
    i=i-1 ;
    if(i==18)i=0;
    delay_ms(500);
    }}

    1393/12/26
    06:57
    • نویسنده این مطلب

      مهدی دمرچیلو

      اولا ازز این به بعد فایل پروژه رو بفرست…
      دوما
      مردونه ۲۰ دقیقه بشین فک کن….اگه نشد درخدمتیم

      1393/12/26
      06:59
      • نویسنده این مطلب

        مهدی دمرچیلو

        چون اگه من جواب بدم جالب نیست…خودش مشکل رو پیدا کنی خیلی خیلی بهتره….

        1393/12/26
        07:00
  23. نویسنده سایت

    amir021

    اره دیلای بای اینه که میکرو فرصت تصمیم گیری داشته باشه good
    و این که اعداد سریع عوض نشن درسته good
    دستور ایف هم فهمیدم bb

    1393/12/26
    01:29
    • نویسنده این مطلب

      مهدی دمرچیلو

      برای اینه که…..اگه داخل نباشه مشکل زیر پیش میاد
      چک میکنه پورت سی رو(در حد میکرو ثانیه…مثلا…)….۱ ثانیه صبر
      چک میکنه پورت سی رو(در حد میکرو ثانیه…مثلا…)….۱ ثانیه صبر
      .
      .
      .
      ————-
      در واقع همش صبر و دیلای داره تا این که بخواد پایه رو چک کنه…..
      ولی وقتی دیلای داخل باشه…..هی چک میکنه و هی چک میکنه و هی….تا این که پایه C.0 یک بشه و بعد کارش رو انجام میده(نمایش عدد در ۷S و افزایش ۱ واحدی متغییر) و بعد دیلای ۱ ثانیه
      OK?

      1393/12/26
      01:33
  24. نویسنده سایت

    amir021

    اول : خخخخخخ laugh
    بعد اره فهمیدم چون اگه تعخیر نداشت مثل فرفره می چرخید
    سوال دوم
    منضور م اینه که چرا ایف دوم داخل دستورات ایف اولیه }{ منضورم چرا از } { برا ایف استفاده کردی sad

    1393/12/26
    11:32
    • نویسنده این مطلب

      مهدی دمرچیلو

      میگم فهمیدی که چرا دیلای رو داخل
      if(PINC.0==1)
      گزاشتم و خارجش(مثل کد اولی خودت) نزاشتم؟؟؟؟
      ———————————————————
      برا تمامی if ها باید از {} استفاده کد و کد های if رو داخلش نوشت ولی اگه داخل if فقط یه کد بود….میشه }{ رو قرار نداد…
      if دومی هم با توجه به پروژه فرق نداره داخل if اولی باشه یا نباشه…..

      1393/12/26
      11:40
  25. نویسنده سایت

    amir021

    دو تا سوال داشتم yes
    چرا در حلقه ایف دیلی اسفاده کردی search
    دوم چرا شرط دوم ایف داخل برنامه های اجرایی ایف اولی
    منضور مکان ایف اول و ایف دوم rtfm

    1393/12/26
    10:48
    • نویسنده این مطلب

      مهدی دمرچیلو

      سوال۱) خودت بشین ۲ دقیقه فک کن..
      سوال۲) نفهمیدم

      1393/12/26
      11:14
  26. مهمان

    سامان

    داداش این دستورا رو چجوری توی این صفحه مشکی خوشگل میذاری؟؟ بگو ما هم ازین کارا کنیم ملت کف کنن cool

    1393/11/16
    01:23
    • نویسنده این مطلب

      مهدی دمرچیلو

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

      1393/11/16
      08:51
  27. مهمان

    سامان

    گزاشت؟ یا گذاشت؟؟؟ O_o
    18 تمام !

    1393/11/16
    01:21
    • نویسنده این مطلب

      مهدی دمرچیلو

      laugh

      1393/11/16
      08:48
  28. مهمان

    Amir

    منضورم اینکه به جای این که ولتاژ پنج ولت وصل کنیم
    به زمین وصل کنیم اون موثع برنامه چه جوری میشه (توی یکام دیبانس بود اگه اشتباه نکنم
    راستی
    VOID main ()n
    void main(void)
    چه فرقی می کنه

    1393/11/02
    08:15
    • نویسنده این مطلب

      مهدی دمرچیلو

      میشه….
      هیچی میگی هر موقع فلان پایه ۰ شد فلان کار رو کن….البته بهتره همیشه برا دکه ها یا همون باتن ها یه مقاومت پول آپ یا پول دان گزاشت…..که در این جا باید یه مقاومت پول آپ گزاشت….
      اینی که تو نوشتی
      VOID main ()n void main(void)
      معنی نداره
      ولی اگه منظورت اینه
      VOID main (void) void main(void)
      سمت چپی غلط هستش
      >>>تو C حروف کوچک و بزرگ با هم فرق دارن و جدا از هم هستن…….
      void اولی برا تعیین اینه که تابع چیزی ارسال میکنه یا نه
      و void داخل پرانتز برا اینه که بینیم تابع متغییری دریافت میکنه یا نه

      1393/11/02
      08:38
  29. مهمان

    Amir

    سلام و خسته نباشید
    یک سوال چرا اول وقتی ورودی رو تعریف کردی بعد برابر با صفر قرار دادی no
    من فکر می کنم بخاطر اینکه وقتی کلید وصل شد و قطع شد ورودی راحت تر به به حالت قبل برگرده sorry
    دومین سوال:
    اگر قرار باشه ورودی به جای یک شدن صفر باشه چکار کنم
    سومین سوال:
    در قسمت ایف
    در یک جا امدی2 تا مساوی گزاشتی تو یک جا دیگه یکی
    من فکر می کنم یک مساوی یعنی برابر بایکش کن
    و دو مساوی یعنی اینه گه مقایسه کن mail
    درسته
    شرمنده داداش انقدر سوال می کنم pardon

    1393/11/02
    03:03
    • نویسنده این مطلب

      مهدی دمرچیلو

      سلام
      اینو میگی؟؟
      DDRC.0=0;
      PINC.0=0;

      خط دوم مقدار اولیه هستش…..اصلا من اکثر موارد تا لازم نشه اصلا از استفاده نمیکنم……همیشه هم همین طور مینویسم laugh —- زیاد مهم نیست به نظرم
      ————————
      متوجه نشدم
      ——————
      سوال۳: بله smile
      ——————
      سوالات زیاد نبود که…..سوال بود بپرس درخدمتیم

      1393/11/02
      04:50