اطلاعیه

Collapse
No announcement yet.

اضافه کردن کلید شاسی به برنامه ساعت با atmega16

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    اضافه کردن کلید شاسی به برنامه ساعت با atmega16

    با سلام خدمت دوستان
    من با با استفاده از atmgea16 و شش عدد 7seg (که با کدهای bcd راه اندازی شدن) یک ساعت درست کردم. ثانیه رو با دستور delay_ms(1000) تولید کردم(تکلیفم همینطور بود) حالا مشکل من اینه که میخوام 4عدد کلید شاسی رو به مدار اضافه کنم برای کم و زیاد کردن مقدار دقیقه و ساعت. کسی میتونه بگه چجوری این کار امکان پذیره؟؟ الگوریتمش چجوریه؟
    با زبان C کار میکنم و کامپایلر codevision . اینجا شماتیک مدار و کد رو میزارم. کد من بدونم در نظز گرفتن کلید هستش حالا میخوام اگه بشه بهش کلید هم اضافه کنم..
    با تشکر




    کد:
    #include <mega16.h>
    #include <delay.h>
    unsigned int h,h1,m,m1,s,s1;
    void main()
    {
    DDRA=0xff;
    DDRC=0xff;
    DDRD=0xff;
    while(1)
     {
      for(h=0;h<=5;h++)
      {PORTA=h<<4;
        for(h1=0;h1<=9;h1++)
        {
        if(h==2 && h1==4) goto S1;
        PORTA=(h<<4)|h1;
          for(m=0;m<=5;m++)
          {PORTD=m<<4;
            for(m1=0;m1<=9;m1++)
            {PORTD=(m<<4)|m1;
              for(s=0;s<=5;s++)
              {PORTC=s<<4;
                for(s1=0;s1<=9;s1++)
                {PORTC=(s<<4)|s1;
                delay_ms(1000);
                }
              }
            }
          }
          
        }
       }  S1:
     }
    }
    به رویاهات فکر کن!!

    #2
    پاسخ : اضافه کردن کلید شاسی به برنامه ساعت با atmega16

    کسی بلد نیست اینو ؟؟ :cry:
    به رویاهات فکر کن!!

    دیدگاه


      #3
      پاسخ : اضافه کردن کلید شاسی به برنامه ساعت با atmega16

      حداقل یه ایده ای چیزی.. :sad: کمک کنید لطفا..
      به رویاهات فکر کن!!

      دیدگاه


        #4
        پاسخ : اضافه کردن کلید شاسی به برنامه ساعت با atmega16

        نوشته اصلی توسط eric_s88
        حداقل یه ایده ای چیزی.. :sad: کمک کنید لطفا..
        اگه شماتیک مدارت همین باشه که گذاشتی از توی CodeWizard اول PORTB رو ورودی کن و Pull Up هم بکن حالا هر دکمه ای رو که فشار بدی همون پایه از پورت B صفر میشه و با یه if و دستور PIN می تونی بخونیش
        اینجوری:
        کد:
        if(PINB.0==0)
        {
        //daghigharo ezafe kon
        }
        if(PINB.1==0)
        {
        //daghigharo kam kon
        }
        if(PINB.2==0)
        {
        //saato ezafe kon
        }
        if(PINB.3==0)
        {
        //saato kam kon
        }
        -

        دیدگاه


          #5
          پاسخ : اضافه کردن کلید شاسی به برنامه ساعت با atmega16

          سلام مرسی دوست عزیز
          حالا مساله ای که مطرح میشه اینه که این کد هایی رو که گذاشتی کجای برنامه اصلی باید بذارم تا به محض فشردن کلید برنامه مربوط به اون کلید اجرا بشه؟؟
          اگر اول برنامه استفاده بشه و برنامه شروع بشه و ساعت شروع به کار کنه، آیا با فشردن کلید برنامه شرط های اول برنامه رو چک میکنه؟؟ :sad:

          بازم ممنون
          به رویاهات فکر کن!!

          دیدگاه


            #6
            پاسخ : اضافه کردن کلید شاسی به برنامه ساعت با atmega16

            سلام
            برا داشتن ساعت استفاده از دستور delay(1000) به نظر من جالب نیست.از تایمر 0 یا 2 استفاده کن
            اگر که می خواهی delay استفاده کنی.کل برنامه رو توی loop قرار بده
            بعد هم بیا مثلا delay رو 100 انتخاب کن و هر 10 تا یکی بشمار
            اگه کمک بیشتری خواستی بگو.سورس هم تا دلت بخواد تو سایت و نت هست :bye
            هميشه به ياد خدا باش !

            دیدگاه


              #7
              پاسخ : اضافه کردن کلید شاسی به برنامه ساعت با atmega16

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

              اگه سورسی چیزی داری بذاری ممنون میشم
              به رویاهات فکر کن!!

              دیدگاه


                #8
                پاسخ : اضافه کردن کلید شاسی به برنامه ساعت با atmega16

                سورس آماده ندارم
                اما اگه از وقفه استفاده کنی که خوبه و مشکلی نیست.ولی اگه نمی خواهی استفاده کنی.همونی که گفتم به نظرم خوبه .کل برنامه رو تو لوپ بزار.مثلا اینطوری
                start program
                .
                .
                do
                read s.w
                (اینجا اگه کلیدی فشرده شده بود .بره تو زیر برنامه کلید خونده شده و تغییرات رو بگیره و برگرده)
                ادامه برنامه
                loop
                به نظرم مدل برنامه سخت نیست
                من یه مورد قبلانا وقتی کلید اول خونده میشد.فانکشنها کل کلیدها تغییر میکرد و تو زیر برنامه کلید اول بازم کلیدها با برنامه جدیدو میخوندم.اینو جهت ایده گرفتن گفتم




                هميشه به ياد خدا باش !

                دیدگاه

                لطفا صبر کنید...
                X