نمایش/عدم نمایش سایدبار
رفتن به بالای صفحه
أَللّهُمَّ ارْزُقْنی شَفاعَةَ الْحُسَیْنِ یَومَ الْوُرُودِ
مهدی دمیرچیلو

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

2

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

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


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

 

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

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

تعداد مطالب : 367 تا
جنگ ما فتح قدس را به همراه خواهد داشت. [ امام خمینی (ره) ]
بقیه جلسات :
این مطلب هیچ طبقه بندی یی ندارد!
ارسال دیدگاه
62
نظرات این مطلب بسته شده است.
  1. Aliyeh

    مهمان

    Aliyeh

    سلام من یک برنامه ای میخوام که با فشردن کلید های ۱تا ۹ عدد متناظر با آنهارو روی سون سگمنت نمایش بده

  2. مجتبی

    مهمان

    مجتبی

    سلام اقا مهدی این پروژه را با اتمگا 16 smd اس ام دی انجام دادم و نتیجه گرفتم خدا روشکر دارم میره سراغ سون سگمنت دوتایی بعد انشاالله پیشرفته تر از اون و این با smd شدنی هست

  3. shah13

    مهمان

    shah13

    سلام اگه بخوام این شمارنده رو بادوتا سون سگمنت بنویسم که دورقمو بشماره چه تغییراتی باید به برنامه بدم؟

  4. AmirEslami

    مهمان

    AmirEslami

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

  5. AmirEslami

    مهمان

    AmirEslami

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

  6. Faeze

    مهمان

    Faeze

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

  7. نیما

    مهمان

    نیما

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

  8. ایران

    مهمان

    ایران

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

  9. ایران

    مهمان

    ایران

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

    مشاهده پاسخ ها (1)
    • مهدی دمیرچیلو

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

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

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

  10. ایران

    مهمان

    ایران

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

    مشاهده پاسخ ها (1)
    • مهدی دمیرچیلو

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

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

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

  11. ایران

    مهمان

    ایران

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

    مشاهده پاسخ ها (1)
    • مهدی دمیرچیلو

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

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

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

  12. ایران

    مهمان

    ایران

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

    مشاهده پاسخ ها (1)
    • مهدی دمیرچیلو

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

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

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

  13. پ اکبری

    مهمان

    پ اکبری

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

    مشاهده پاسخ ها (1)
    • مهدی دمیرچیلو

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

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

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

  14. پ اکبری

    مهمان

    پ اکبری

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

    مشاهده پاسخ ها (3)
    • مهدی دمیرچیلو

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

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

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

    • پ اکبری

      مهمان

      پ اکبری

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

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

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

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

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

  15. پ اکبری

    مهمان

    پ اکبری

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

    مشاهده پاسخ ها (1)
    • مهدی دمیرچیلو

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

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

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

  16. پ اکبری

    مهمان

    پ اکبری

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

    مشاهده پاسخ ها (1)
    • مهدی دمیرچیلو

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

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

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

  17. ehsan

    مهمان

    ehsan

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

    مشاهده پاسخ ها (1)
    • مهدی دمیرچیلو

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

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

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

  18. ناشناس

    مهمان

    ناشناس

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

  19. hosein

    مهمان

    hosein

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

    مشاهده پاسخ ها (1)
    • مهدی دمرچیلو

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

      مهدی دمرچیلو

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

  20. hosein

    مهمان

    hosein

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

    مشاهده پاسخ ها (1)
    • مهدی دمرچیلو

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

      مهدی دمرچیلو

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

  21. الی

    مهمان

    الی

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

    مشاهده پاسخ ها (6)
    • مهدی دمرچیلو

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

      مهدی دمرچیلو

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

      • الی

        مهمان

        الی

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

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

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

          مهدی دمرچیلو

          سلام
          مطلب زیر رو بخونید متوجه میشید مشکل کار رو.
          بعد بگید ببینم درست متوجه شدید یا نه
          https://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/

          • الی

            مهمان

            الی

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

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

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

            مهدی دمرچیلو

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

          • الی

            مهمان

            الی

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

  22. محسن

    مهمان

    محسن

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

  23. محسن

    مهمان

    محسن

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

    مشاهده پاسخ ها (1)
    • مهدی دمرچیلو

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

      مهدی دمرچیلو

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

  24. amir021

    نویسنده سایت

    amir021

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

    مشاهده پاسخ ها (1)
    • مهدی دمرچیلو

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

      مهدی دمرچیلو

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

  25. amir021

    نویسنده سایت

    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);
    }}

    مشاهده پاسخ ها (2)
    • مهدی دمرچیلو

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

      مهدی دمرچیلو

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

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

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

        مهدی دمرچیلو

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

  26. amir021

    نویسنده سایت

    amir021

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

    مشاهده پاسخ ها (1)
    • مهدی دمرچیلو

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

      مهدی دمرچیلو

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

  27. amir021

    نویسنده سایت

    amir021

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

    مشاهده پاسخ ها (1)
    • مهدی دمرچیلو

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

      مهدی دمرچیلو

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

  28. amir021

    نویسنده سایت

    amir021

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

    مشاهده پاسخ ها (1)
    • مهدی دمرچیلو

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

      مهدی دمرچیلو

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

  29. سامان

    مهمان

    سامان

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

    مشاهده پاسخ ها (1)
    • مهدی دمرچیلو

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

      مهدی دمرچیلو

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

  30. سامان

    مهمان

    سامان

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

    مشاهده پاسخ ها (1)
    • مهدی دمرچیلو

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

      مهدی دمرچیلو

      laugh

  31. Amir

    مهمان

    Amir

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

    مشاهده پاسخ ها (1)
    • مهدی دمرچیلو

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

      مهدی دمرچیلو

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

  32. Amir

    مهمان

    Amir

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

    مشاهده پاسخ ها (1)
    • مهدی دمرچیلو

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

      مهدی دمرچیلو

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

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