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

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

انجمن های تخصصی برق و الکترونیک ECA

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

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


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

 

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

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

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

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

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

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

4) نظرات حاوی کد برنامه نویسی تایید نمیشوند ( قالب سایت بهم میریزه )

  1. Avatar

    مهمان

    مجتبی

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

  2. Avatar

    مهمان

    shah13

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

  3. Avatar

    مهمان

    AmirEslami

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

  4. Avatar

    مهمان

    AmirEslami

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

  5. Avatar

    مهمان

    Faeze

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

  6. Avatar

    مهمان

    نیما

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

  7. Avatar

    مهمان

    ایران

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

  8. Avatar

    مهمان

    ایران

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

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

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

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

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

  9. Avatar

    مهمان

    ایران

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

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

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

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

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

  10. Avatar

    مهمان

    ایران

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

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

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

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

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

  11. Avatar

    مهمان

    ایران

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

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

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

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

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

  12. Avatar

    مهمان

    پ اکبری

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

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

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

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

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

  13. Avatar

    مهمان

    پ اکبری

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

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

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

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

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

    • Avatar

      مهمان

      پ اکبری

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

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

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

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

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

  14. Avatar

    مهمان

    پ اکبری

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

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

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

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

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

  15. Avatar

    مهمان

    پ اکبری

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

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

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

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

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

  16. Avatar

    مهمان

    ehsan

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

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

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

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

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

  17. Avatar

    مهمان

    ناشناس

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

  18. Avatar

    مهمان

    hosein

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

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

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

      مهدی دمرچیلو

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

  19. Avatar

    مهمان

    hosein

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

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

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

      مهدی دمرچیلو

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

  20. Avatar

    مهمان

    الی

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

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

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

      مهدی دمرچیلو

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

      • Avatar

        مهمان

        الی

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

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

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

          مهدی دمرچیلو

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

          • Avatar

            مهمان

            الی

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

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

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

            مهدی دمرچیلو

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

          • Avatar

            مهمان

            الی

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

  21. Avatar

    مهمان

    محسن

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

  22. Avatar

    مهمان

    محسن

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

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

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

      مهدی دمرچیلو

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

  23. Avatar

    نویسنده سایت

    amir021

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

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

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

      مهدی دمرچیلو

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

  24. Avatar

    نویسنده سایت

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

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

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

      مهدی دمرچیلو

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

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

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

        مهدی دمرچیلو

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

  25. Avatar

    نویسنده سایت

    amir021

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

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

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

      مهدی دمرچیلو

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

  26. Avatar

    نویسنده سایت

    amir021

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

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

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

      مهدی دمرچیلو

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

  27. Avatar

    نویسنده سایت

    amir021

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

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

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

      مهدی دمرچیلو

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

  28. Avatar

    مهمان

    سامان

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

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

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

      مهدی دمرچیلو

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

  29. Avatar

    مهمان

    سامان

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

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

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

      مهدی دمرچیلو

      laugh

  30. Avatar

    مهمان

    Amir

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

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

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

      مهدی دمرچیلو

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

  31. Avatar

    مهمان

    Amir

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

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

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

      مهدی دمرچیلو

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

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