اطلاعیه

Collapse
No announcement yet.

کمک برای ساخت ساعت و تقویم آلارم دار با mega16

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

    کمک برای ساخت ساعت و تقویم آلارم دار با mega16

    با سلام خدمت مهندسین
    اقا من میخوام یه ساعت و تقویم بسازم که یه قسمت seting داشته باشه و بشه تو این قسمت یه تاریخ و ساعت مشخصی رو وارد کرد که تو اون زمان مشخص الارم فعال بشه کسی هست بهم کمک کنه خودم شروع کردم با ds1307 ولی چون اماتورم به مشکل بر خوردم
    مرسی از کسانی که بهم کمک کنن
    وه کو شیتان شیتی تو بوم

    #2
    پاسخ : کمک برای ساخت ساعت و تقویم آلارم دار با mega16

    سلام
    من به تازگی برنامه یه ساعت دیجیتال با قابلیت تنظیم ساعت و تنظیم آلارم رو با مگا8 و 7سگمنت نوشتم. به زبان سی هستش اگه خواستی (یعنی اگه پروژت رو با سی نوشتی) بگو تا بذارم
    کــــــــاش آدم

    هيــــــــچوقــت نفهــــمــه

    يـــــه حـــرفايـــــــ ي دروغ بـــــــــوده!

    دیدگاه


      #3
      پاسخ : کمک برای ساخت ساعت و تقویم آلارم دار با mega16

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

      دیدگاه


        #4
        پاسخ : کمک برای ساخت ساعت و تقویم آلارم دار با mega16

        سلام مهندس
        شرمندم همین الان یادم افتاد .
        ایمیلت رو بده تا واست بفرستم به ایمیلت
        راستی من ار rtc داخلی تایمر 2 میکرو و کریستال ساعت استفاده کردم و واقعا دقیقه.از ds1307 استفاده نکردم
        ولی پروژه ساعت با ds1307 تو اینترنت زیاده(اگه حتما ضروریه که از این آی سی استفاده کنی نت رو سرچ کن)
        کــــــــاش آدم

        هيــــــــچوقــت نفهــــمــه

        يـــــه حـــرفايـــــــ ي دروغ بـــــــــوده!

        دیدگاه


          #5
          پاسخ : کمک برای ساخت ساعت و تقویم آلارم دار با mega16

          سلام hanamohsen عزیز
          اگر شما بخواید با ds1307 کار کنید حتما اون 4 تا مقاومت رو که باید به پایه های ds وصل کنین یادتون نره! من سر همین موضوع کلی گشتم
          البته من با زبان بیسیک کار می کنم.
          دوم این که eca1367 عزیز شما چه جوری با خود میکرو تونستین ساعتو بنویسین!!!!!!!!!!!!! این طور که میکرو ریست بشه کار خراب می شه و...؟؟؟؟؟؟؟؟؟؟؟
          پیروزی یعنی : توانایی رفتن از یک شکست ، به شکستی دیگر بدون از دست دادن اشتیاق . . .
          ------------------------------------------------------------ - - -
          صبرت که تمام شد نرو!
          "معرفت"
          تازه از آن لحظه آغاز می شود...

          دیدگاه


            #6
            پاسخ : کمک برای ساخت ساعت و تقویم آلارم دار با mega16

            آقای سید علی شما می دونید چه جوری ایشون با میکرو کار کردن؟
            تا اون جایی که من اطلاع دارم اگه میکرو ریست بشه ساعت که می پره!!!!!!!!!!
            پیروزی یعنی : توانایی رفتن از یک شکست ، به شکستی دیگر بدون از دست دادن اشتیاق . . .
            ------------------------------------------------------------ - - -
            صبرت که تمام شد نرو!
            "معرفت"
            تازه از آن لحظه آغاز می شود...

            دیدگاه


              #7
              پاسخ : کمک برای ساخت ساعت و تقویم آلارم دار با mega16

              نوشته اصلی توسط eca1367
              سلام مهندس
              شرمندم همین الان یادم افتاد .
              ایمیلت رو بده تا واست بفرستم به ایمیلت
              راستی من ار rtc داخلی تایمر 2 میکرو و کریستال ساعت استفاده کردم و واقعا دقیقه.از ds1307 استفاده نکردم
              ولی پروژه ساعت با ds1307 تو اینترنت زیاده(اگه حتما ضروریه که از این آی سی استفاده کنی نت رو سرچ کن)
              سلام مرسی
              به قول دوستمون اگه میکرو ریست بشه همه چی میپره،به خاطر همین میخوام با ds1307 کار کنم،البته ساعت و تاریخش مهمه ولی نه به اندازه اون الارم چون میخوام یه قسمت داشته باشه که بشه یه تاریخ و ساعت مشخص وارد کرد تا تو اون ساعت وتارخ مشخص یه دستگاه رو برام راه بندازه به مدت مثلا 3 یا 4 ساعت،تو نت سرچ کردم ولی چیز به درد بخوری پیدا نکردم
              وه کو شیتان شیتی تو بوم

              دیدگاه


                #8
                پاسخ : کمک برای ساخت ساعت و تقویم آلارم دار با mega16

                نوشته اصلی توسط hanamohsen
                سلام مرسی
                به قول دوستمون اگه میکرو ریست بشه همه چی میپره،به خاطر همین میخوام با ds1307 کار کنم،البته ساعت و تاریخش مهمه ولی نه به اندازه اون الارم چون میخوام یه قسمت داشته باشه که بشه یه تاریخ و ساعت مشخص وارد کرد تا تو اون ساعت وتارخ مشخص یه دستگاه رو برام راه بندازه به مدت مثلا 3 یا 4 ساعت،تو نت سرچ کردم ولی چیز به درد بخوری پیدا نکردم
                سلام دوست عزیز
                من با ds1307 هم کار کردم با بسکام البته درسته یه خورده گیر داره ولی باید با جند تا مقاومت میشه حل کرد در ضمن من همچین برنامه ای رو با بسکام نوشتم کاری نداره فقط یه دونه نوشتن عدد برای اولین بار تو ds و بعد خواندن اون و چند تا شرط ساده، همین!
                پیروزی یعنی : توانایی رفتن از یک شکست ، به شکستی دیگر بدون از دست دادن اشتیاق . . .
                ------------------------------------------------------------ - - -
                صبرت که تمام شد نرو!
                "معرفت"
                تازه از آن لحظه آغاز می شود...

                دیدگاه


                  #9
                  پاسخ : کمک برای ساخت ساعت و تقویم آلارم دار با mega16

                  نوشته اصلی توسط elec200
                  سلام دوست عزیز
                  من با ds1307 هم کار کردم با بسکام البته درسته یه خورده گیر داره ولی باید با جند تا مقاومت میشه حل کرد در ضمن من همچین برنامه ای رو با بسکام نوشتم کاری نداره فقط یه دونه نوشتن عدد برای اولین بار تو ds و بعد خواندن اون و چند تا شرط ساده، همین!
                  من بیسکام بلد نیستم فقط با c کار کردم،کدویژن
                  وه کو شیتان شیتی تو بوم

                  دیدگاه


                    #10
                    پاسخ : کمک برای ساخت ساعت و تقویم آلارم دار با mega16

                    سلام
                    اگه قرار به ریست شدن مدار باشه که نه تنها ساعت بلکه هر مدار دیگری هم که باشه همه داده هاش میپره و از اول راه اندازی میشه :smile:
                    ثانیا اینجا این سوال پیش میاد که اصلا چرا مدار باید ریست شه؟
                    ممکنه ریست به علت افت ولتاژ رو تغذیه مدار اتفاق بیفته(با تنظیم فیوزبیت های BODEN , BODLEVEL) که چون این مدار با برق شهر تغذیه میشه این مشکل رو نداریم. در هنگام قطعی برق هم میشه از یه باتری کمکی در مدار استفاده کرد(برای ادامه عملکرد ساعت)

                    یه مورد دیگه اینه که دوستان عزیز تو هر پروژه ای و در برنامه نویسیش ما یه سری پارامتر داریم یه سری ورودی و یه خروجی هایی . هر پروژه محدودیت ها و شرایط خاص خودش رو داره. ممکنه تو یه پروژه مثلا توجه رو کاهش نویزپذیری مدار باشه. ممکنه یه پروژه طوری باشه که مدار اون باید تو ساعات خاصی کار کنه و ....
                    مثلا تو همین مداری که بنده نوشتم فقط از برق شهر استفاده کردم بدون استفاده از هیچ باتری کمکی. چرا؟ چونکه اولا مگه تو سال برق شهر چند بار قطع میشه؟ والا اینچا که ما زندگی می کنیم یکی دو بار تو سال بیشتر قطع نمیشه :biggrin: پس لزومی به افزایش قطعات و هزینه ندیدم چون همین مدار کارم رو قشنگ و بدون مشکل راه میندازه

                    اگرم برق قطع شد 5 ثانیه ای ساعت رو با دکمه های مدار تنظیم می کنم

                    پس قرار نیست که پروژه من و شرایط اون مثل پروژه شما باشه و بالعکس. نکته ای که تو برنامه نویسی مهمه ایده گرفتنه (مثلا الان دوستمون hanamohsen میخاد ببینه که چجوری میشه واسه ساعت یه آلارم تعریف کنه در حالی که بقیه کارا رو خودش انجام داده)که من همیشه تو پروژه های سایر دوستان ازش استفاده می کنم
                    امیدوارم دوستان این نکات رو مد نظر داشته باشن.
                    ببخشید که سرتون رو درد آوردم :biggrin:
                    کــــــــاش آدم

                    هيــــــــچوقــت نفهــــمــه

                    يـــــه حـــرفايـــــــ ي دروغ بـــــــــوده!

                    دیدگاه


                      #11
                      پاسخ : کمک برای ساخت ساعت و تقویم آلارم دار با mega16

                      hanamohsen عزیز من برای تنظیم آلارم این کار رو کردم
                      این برنامه با تایمر ساعت(32.768هرتز) یک ثانیه یک ثانیه شروع به شمارش میکنه و سر هر یک ثانیه یک وقفه اتفاق میفته . در زیربرنامه وقفه به متغیر ذخیره کننده ثانیه یکی اضافه میشه و دو تا if هم گذاشتم که اگه ثانیه بزرگتر از 59 شد دقیقه رو یکی اضافه کنه و اگه دقیقه بزرگتر از 59 شد به ساعت یکی اضافه شه و ...
                      چهار تا متغیر global تعریف کردم(y0,..,y4) . تو مدار 4 کلید داریم. یه کلید برا تنظیم ساعت، یکی برا تنظیم آلارم و دو تای دیگه هم برا بالا و پایین .
                      وقتی کاربر کلید تنظیم آلارم رو فشار میده اول شمارش تایمر دو رو قطع می کنم و سپس وارد برنامه تنظیم آلارم میشم
                      تو این برنامه یه متغیر به اسم nowseg تعریف کردم و ابتدا اون رو با y0 که مقدار اولیش صفره برابر قرار میدم.y0 نماینده دهگان ساعته. تا زمانی که کاربر 4 بار کلید تنظیم آلارم رو فشار نده تو این برنامه میمونه. چرا 4 تا؟ ببین اول که کاربر کلید رو فشار میده میریم رو تنظیم دهگان ساعت . با کلیک بعدی میریم رو تنظیم یکان ساعت و با کلیک بعدی تنظیم دهگان دقیقه و بالاخره یکان دقیقه. در هر کلیک هم با کلیدهای بالا و پایین مقدار مورد نظر برای هر 7سگمنت رو ست می کنم. حالا من ساعت و دقیقه آلارمم رو تو متغیرهای y0 تا y4 دارم.با کلیک پنجم کاربر شمارش تایمر رو مجددا آغاز می کنم و از برنامه تنظیم آلارم خارج میشم و به main برمیگردم.
                      حالا تو وقفه سر ریز تایمر 2 یه شرط گذاشتم که اگه ساعت و دقیقه ام با y0 تا y4 برابر بود به پایه رو که مربوط به زنگه یک می کنم
                      امیدوارم متوجه شده باشی

                      B.0 کلید تنظیم آلارم
                      B.1 کلید up
                      B.2 کلید down


                      کد:
                       void ShowRing(unsigned char a)
                      {
                      unsigned char nowseg=0;
                      
                      nowseg=y[0];
                      //delay_ms(200);
                      
                      while(a<5){
                      PORTC=0b0000001;
                      PORTD=segment[y[3]];
                      if(a==4)   clear();
                      delay_ms(4);
                      
                      PORTC=0b0000010;
                      PORTD=segment[y[2]];
                      if(a==3)   clear();
                      delay_ms(4);
                      
                      PORTC=0b00000100;
                      PORTD=segment[y[1]];
                      if(a==2)   clear();
                      delay_ms(4);
                      
                      PORTC=0b00001000;
                      PORTD=segment[y[0]];
                      if(a==1)   clear();
                      delay_ms(4); 
                      
                      if(PINB.3==0){
                      delay_ms(500);
                      a++;
                      switch(a){
                      case 1:
                      nowseg=y[0];
                      break;
                      case 2:
                      nowseg=y[1];
                      break;
                      case 3:
                      nowseg=y[2];
                      break;
                      case 4:
                      nowseg=y[3];
                      break;
                      default:
                      break;
                      }
                      
                      while(PINB.3==0) {}
                      }
                      
                      
                      // up and down keys
                      if(PINB.1==0 && nowseg<9){      // up key
                      delay_ms(500);
                      nowseg++;
                      if(a==1 && nowseg>1)
                      nowseg--;
                      if(a==2 && nowseg>2 && y[0]==1)
                      nowseg--;
                      if(a==3 && nowseg>5)
                      nowseg--;
                      while(PINB.1==0) {}
                      }
                      
                      if(PINB.2==0 && nowseg>0){      // down key
                      delay_ms(500);
                      nowseg--;
                      while(PINB.2==0)  {}
                      }
                      
                      switch(a){
                      case 1:
                      y[0]=nowseg;
                      break;
                      case 2:
                      y[1]=nowseg;
                      break;
                      case 3:
                      y[2]=nowseg;
                      break;
                      case 4:
                      y[3]=nowseg;
                      break;
                      default:
                      break;
                      }
                      
                      }  // end while(a<5)
                      TIMSK=0x40;
                      }
                      کــــــــاش آدم

                      هيــــــــچوقــت نفهــــمــه

                      يـــــه حـــرفايـــــــ ي دروغ بـــــــــوده!

                      دیدگاه


                        #12
                        پاسخ : کمک برای ساخت ساعت و تقویم آلارم دار با mega16

                        نوشته اصلی توسط eca1367
                        hanamohsen عزیز من برای تنظیم آلارم این کار رو کردم
                        این برنامه با تایمر ساعت(32.768هرتز) یک ثانیه یک ثانیه شروع به شمارش میکنه و سر هر یک ثانیه یک وقفه اتفاق میفته . در زیربرنامه وقفه به متغیر ذخیره کننده ثانیه یکی اضافه میشه و دو تا if هم گذاشتم که اگه ثانیه بزرگتر از 59 شد دقیقه رو یکی اضافه کنه و اگه دقیقه بزرگتر از 59 شد به ساعت یکی اضافه شه و ...
                        چهار تا متغیر global تعریف کردم(y0,..,y4) . تو مدار 4 کلید داریم. یه کلید برا تنظیم ساعت، یکی برا تنظیم آلارم و دو تای دیگه هم برا بالا و پایین .
                        وقتی کاربر کلید تنظیم آلارم رو فشار میده اول شمارش تایمر دو رو قطع می کنم و سپس وارد برنامه تنظیم آلارم میشم
                        تو این برنامه یه متغیر به اسم nowseg تعریف کردم و ابتدا اون رو با y0 که مقدار اولیش صفره برابر قرار میدم.y0 نماینده دهگان ساعته. تا زمانی که کاربر 4 بار کلید تنظیم آلارم رو فشار نده تو این برنامه میمونه. چرا 4 تا؟ ببین اول که کاربر کلید رو فشار میده میریم رو تنظیم دهگان ساعت . با کلیک بعدی میریم رو تنظیم یکان ساعت و با کلیک بعدی تنظیم دهگان دقیقه و بالاخره یکان دقیقه. در هر کلیک هم با کلیدهای بالا و پایین مقدار مورد نظر برای هر 7سگمنت رو ست می کنم. حالا من ساعت و دقیقه آلارمم رو تو متغیرهای y0 تا y4 دارم.با کلیک پنجم کاربر شمارش تایمر رو مجددا آغاز می کنم و از برنامه تنظیم آلارم خارج میشم و به main برمیگردم.
                        حالا تو وقفه سر ریز تایمر 2 یه شرط گذاشتم که اگه ساعت و دقیقه ام با y0 تا y4 برابر بود به پایه رو که مربوط به زنگه یک می کنم
                        امیدوارم متوجه شده باشی

                        B.0 کلید تنظیم آلارم
                        B.1 کلید up
                        B.2 کلید down


                        کد:
                         void ShowRing(unsigned char a)
                        {
                        unsigned char nowseg=0;
                        
                        nowseg=y[0];
                        //delay_ms(200);
                        
                        while(a<5){
                        PORTC=0b0000001;
                        PORTD=segment[y[3]];
                        if(a==4)   clear();
                        delay_ms(4);
                        
                        PORTC=0b0000010;
                        PORTD=segment[y[2]];
                        if(a==3)   clear();
                        delay_ms(4);
                        
                        PORTC=0b00000100;
                        PORTD=segment[y[1]];
                        if(a==2)   clear();
                        delay_ms(4);
                        
                        PORTC=0b00001000;
                        PORTD=segment[y[0]];
                        if(a==1)   clear();
                        delay_ms(4); 
                        
                        if(PINB.3==0){
                        delay_ms(500);
                        a++;
                        switch(a){
                        case 1:
                        nowseg=y[0];
                        break;
                        case 2:
                        nowseg=y[1];
                        break;
                        case 3:
                        nowseg=y[2];
                        break;
                        case 4:
                        nowseg=y[3];
                        break;
                        default:
                        break;
                        }
                        
                        while(PINB.3==0) {}
                        }
                        
                        
                        // up and down keys
                        if(PINB.1==0 && nowseg<9){      // up key
                        delay_ms(500);
                        nowseg++;
                        if(a==1 && nowseg>1)
                        nowseg--;
                        if(a==2 && nowseg>2 && y[0]==1)
                        nowseg--;
                        if(a==3 && nowseg>5)
                        nowseg--;
                        while(PINB.1==0) {}
                        }
                        
                        if(PINB.2==0 && nowseg>0){      // down key
                        delay_ms(500);
                        nowseg--;
                        while(PINB.2==0)  {}
                        }
                        
                        switch(a){
                        case 1:
                        y[0]=nowseg;
                        break;
                        case 2:
                        y[1]=nowseg;
                        break;
                        case 3:
                        y[2]=nowseg;
                        break;
                        case 4:
                        y[3]=nowseg;
                        break;
                        default:
                        break;
                        }
                        
                        }  // end while(a<5)
                        TIMSK=0x40;
                        }
                        مرسی از جوابتون،چون من آماتورم باید این برنامه رو چند بار مرور کنم
                        وه کو شیتان شیتی تو بوم

                        دیدگاه


                          #13
                          پاسخ : کمک برای ساخت ساعت و تقویم آلارم دار با mega16

                          اوکی هر جا که لازم بود بگو تا توضیح بدم
                          من خودمم آماتورم :icon_razz:
                          کــــــــاش آدم

                          هيــــــــچوقــت نفهــــمــه

                          يـــــه حـــرفايـــــــ ي دروغ بـــــــــوده!

                          دیدگاه

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