اطلاعیه

Collapse
No announcement yet.

ساعت

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

    ساعت

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

    #2
    پاسخ : ساعت

    میتونی چند تا متغییر بزاری و توش ساعت ها و تاریخ هایی که میخوای ذخیره کنی و چند تا ایف بنویسی و بگی اگه ساعت نمایش داده شده برابر ساعت های متغیر ها شد به مدت یک دقیقه آلارم بده اگه خواستی بگو برنامشو بنویسم :bye

    دیدگاه


      #3
      پاسخ : ساعت

      منم دوست دارم یاد بگیرم
      به چه زبانی هست؟
      دما رو هم اندازه بگیره خوبه
      **** k i n j ****

      دیدگاه


        #4
        پاسخ : ساعت

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

        دیدگاه


          #5
          پاسخ : ساعت

          به نام خدا
          سلام
          اگه میخوای از آی سی های آماده استفاده، آی سی هایی مانند DS1307 ، برای نگهداری ساعت و تاریخ هستن که کار کردن باهاشون بسیار ساده ست! توی همین سایت، یک تاپیکی بود که یک ساعت بسیار دقیق رو با میکرو و آی سی DS1307 و سون سگکمن (اگه اشتباه نکنم) از اول تا آخر، توضیح داده بود و همه چیزشو گذاشته بود!
          بذار بگردم تاپیکشو پیدا کنم!

          اضافه شده در تاریخ :
          این تاپیک رو دنبال کن:

          http://www.eca.ir/forum2/index.php?topic=38492.0

          تا الان 28 صفحه شده! :eek:

          اضافه شده در تاریخ :
          اینم شاید به کارت بیاد:

          http://www.eca.ir/forum2/index.php?topic=69414.0



          اضافه شده در تاریخ :
          شاید اینم مفید باشه:

          http://www.eca.ir/forum2/index.php?t...3752#msg393752

          :nerd:

          اضافه شده در تاریخ :
          این صنعتیه:

          http://www.eca.ir/forum2/index.php?topic=14104.0

          :rolleyes:
          1: اللهم صل علی محمد و آل محمد و عجل فرجهم و ...
          2: دانش بهتره یا ثروت؟ بدون شعور هیچکدوم!
          3: دلا معاش چنان کن که گر بلغزد پای *** فرشته‌ات به دو دست دعا نگه دارد (حافظ)

          دیدگاه


            #6
            پاسخ : ساعت

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

            دیدگاه


              #7
              پاسخ : ساعت

              سلام
              برنامه ی کرنومتر را از وب سایت wle.ir برداشتم.

              کد:
              [left]#include <mega8.h> 
              #include <delay.h>
              int s,start;
              // Timer 2 overflow interrupt service routine
              interrupt [TIM2_OVF] void timer2_ovf_isr(void)
              {
              if (start==1){
              s++;     }
              }
              // Declare your global variables here
              void main(void)
              {
              // Declare your local variables here
              int a,m,h,a1,a2,a3,a4,a5,a6,a7,a8,st,p;
              char sega[10]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};
              PORTB=0x00;
              DDRB=0x38;
              PORTC=0x00;
              DDRC=0x7F;
              PORTD=0x00;
              DDRD=0xFF;
              ASSR=0x08;
              TCCR2=0x05;
              TCNT2=0x00;
              OCR2=0x00;
              TIMSK=0x40;
              #asm("sei")
              while (1)
              {
                 //***********************************************************************
                  if ((PINB.1==1) && (p==0)) {
                 a=0;
                 s=0;
                 m=0;
                 h=0;
                 p=1;
                 start=0; 
                 PORTB.5=0;          }
                  if ((PINB.1==0) && (p==1)) {
                  p=0;            }
                  if ((PINB.0==1) && (st==0)) {
                 start++;
                 st=1;
                 if(start==1){
                 a=a*2.55;
                 TCNT2=a;}          }
                  if ((PINB.0==0) && (st==1)) {
                  st=0;            }
                 if(start==2){
                 start=0;  }
                 //***********************************************************************
                 if(start==1) {
                 a=TCNT2;
                 if(a>128){
                 PORTB.5=1;}
                 else{
                 PORTB.5=0;}
                 a=a/2.55;
                 if (s>59){
                 s=0;
                 m++;}
                 if(m>59){
                 m=0;
                 h++;}
                 if (h>99){
                 h=0;}     }
                 //***********************************************************************
                 a1=s%10;
                 a2=s/10;
                 //**********
                 a3=m%10;
                 a4=m/10;
                 //**********
                 a5=h%10;
                 a6=h/10;
                  //**********
                 a7=a%10;
                 a8=a/10;
                 //***********************************************************************
                  PORTC.0=1;
                 PORTD=sega[a1];
                 delay_ms(4);
                 PORTC.0=0;
                 PORTC.1=1;
                 PORTD=sega[a2];
                 delay_ms(4);
                 PORTC.1=0;
                  PORTC.2=1;
                 PORTD=sega[a3];
                 delay_ms(4);
                 PORTC.2=0;
                 PORTC.3=1;
                 PORTD=sega[a4];
                 delay_ms(4);
                 PORTC.3=0;
                  PORTC.4=1;
                 PORTD=sega[a5];
                 delay_ms(4);
                 PORTC.4=0;
                 PORTC.5=1;
                 PORTD=sega[a6];
                 delay_ms(4);
                 PORTC.5=0;
                  PORTB.3=1;
                 PORTD=sega[a7];
                 delay_ms(4);
                 PORTB.3=0;
                 PORTB.4=1;
                 PORTD=sega[a8];
                 delay_ms(4);
                 PORTB.4=0;
              };
              }
              [/left]

              این یه برنامه ی کرنومتر هستش. کامل جواب میده.می خواهم این برنامه را طوری ارتقا بدم که بتونم بهش زمان بدم و سر زمان مشخص آلارم بده. یعنی هم کرنومتر را داشته باشم و هم بتونم زمان بدم.(البته اگه زمانی که من مشخص میکنم روی 7سگمنت دیگه ای بشه نمایشش داد خیلی خوب میشه)
              سوالی که دارم: من چطور میتونم 4 تا زمان بدم و میکرو به چه روش (روشهایی) میتونه سر زمانهای مشخص شده پیغام بده.

              شماتیک مدار:

              متشکرم

              دیدگاه


                #8
                پاسخ : ساعت

                با سلام
                در رابطه با باتری backup میخواستم بپرسم چطوری میتونیم توی مدار ساعت استفاده کنیم؟ مدار راه انداز خاصی داره؟
                ممنون میشم اگر راهنمایی کنید

                دیدگاه


                  #9
                  پاسخ : ساعت

                  سلام
                  اگه از آی سی های آماده استفاده میآ‌کنی
                  به راحتی میتونی این کار رو بکنی!
                  دو تا پایه دارن این آیآ‌سیآ‌ها
                  باطری رو بهشون وصل میکنی!
                  مخصوصا DS1307 که خیلی خوش دسته!

                  1: اللهم صل علی محمد و آل محمد و عجل فرجهم و ...
                  2: دانش بهتره یا ثروت؟ بدون شعور هیچکدوم!
                  3: دلا معاش چنان کن که گر بلغزد پای *** فرشته‌ات به دو دست دعا نگه دارد (حافظ)

                  دیدگاه


                    #10
                    پاسخ : ساعت

                    سلام
                    از پاسخ شما سپاسگزارم. اما من از RTC داخلی میکرو استفاده میکنم. برای این منظور چه راه حلی را پیشنهاد میکنید؟
                    سپاس

                    دیدگاه


                      #11
                      پاسخ : ساعت

                      چیزی که الان به نظرم میرسه اینه که:
                      چند نکته رو باید رعایت کنی:
                      1 - اطلاعات رو درون حافظه eeprom در هر ثانیه یکبار ذخیره کنی
                      حالا این اطلاعات شامل مواردی میشه که RTC تو داره محاسبه میکنه
                      مثه ساعت و یا احیانا تاریخ.
                      2 - از watch dog هم باید استفاده کنی
                      اون هم هر ثانیه یک بار باید پدیت بشه
                      تا اگه به هر دلیلی میکرو قاطی کرد
                      ریست بشه و مقادیر قبلی رو از eeprom لود کنه
                      3 - دو نوع منبع رو برای کار استفاده کنی:
                      دائمی مثه آداپتور
                      و موقت مثه باطری
                      در مواردی که برق هست، آداپتور باشه
                      و در مواقعی که نیست، باطری باشه
                      4 - زمانی که از باطری استفاده می کنی
                      حتما از خواص sleep میکرو استفاده کنی
                      چون مصرف به شدت کاهش پیدا میکنه
                      و فقط قسمت هایی روشن بمونن که
                      نیاز داری بهشون
                      و مواردی که جریان میکشن
                      مثه LCDها و ... حتما خاموش بشن
                      مگر اینکه بهشون نیاز داشته باشی
                      5 - یک مدار نیاز داری که به محض قطع شدن برق
                      به روی باطری سوئیچ کنه
                      مگر اینکه کلا بخوای از اول از باطری استفاده کنی
                      6 - در زمان سوئیچ کردن به باطری
                      باید از یک خازن هم استفاده کنی
                      تا در اون زمان سوئیچینگ
                      مدارت از برق خازن استفاده کنه
                      و ریست یا خاموش نشه
                      7 - برای محاسبه ی مقدار اون خازن
                      باید بدونی که مدارت چقدر جریان میکشه
                      و ...
                      موارد دیگه ای هم هست که باید رعایت کنی!

                      اضافه شده در تاریخ :
                      یه سوال؟
                      چرا از آی سی هایی
                      مثه DS1307
                      استفاده نمیکنی؟
                      :rolleyes:
                      1: اللهم صل علی محمد و آل محمد و عجل فرجهم و ...
                      2: دانش بهتره یا ثروت؟ بدون شعور هیچکدوم!
                      3: دلا معاش چنان کن که گر بلغزد پای *** فرشته‌ات به دو دست دعا نگه دارد (حافظ)

                      دیدگاه


                        #12
                        پاسخ : ساعت

                        چیزی که الان به نظرم میرسه اینه که:
                        چند نکته رو باید رعایت کنی:
                        1 - اطلاعات رو درون حافظه eeprom در هر ثانیه یکبار ذخیره کنی
                        حالا این اطلاعات شامل مواردی میشه که RTC تو داره محاسبه میکنه
                        مثه ساعت و یا احیانا تاریخ.
                        2 - از watch dog هم باید استفاده کنی
                        اون هم هر ثانیه یک بار باید پدیت بشه
                        تا اگه به هر دلیلی میکرو قاطی کرد
                        ریست بشه و مقادیر قبلی رو از eeprom لود کنه
                        3 - دو نوع منبع رو برای کار استفاده کنی:
                        دائمی مثه آداپتور
                        و موقت مثه باطری
                        در مواردی که برق هست، آداپتور باشه
                        و در مواقعی که نیست، باطری باشه
                        4 - زمانی که از باطری استفاده می کنی
                        حتما از خواص sleep میکرو استفاده کنی
                        چون مصرف به شدت کاهش پیدا میکنه
                        و فقط قسمت هایی روشن بمونن که
                        نیاز داری بهشون
                        و مواردی که جریان میکشن
                        مثه LCDها و ... حتما خاموش بشن
                        مگر اینکه بهشون نیاز داشته باشی
                        5 - یک مدار نیاز داری که به محض قطع شدن برق
                        به روی باطری سوئیچ کنه
                        مگر اینکه کلا بخوای از اول از باطری استفاده کنی
                        6 - در زمان سوئیچ کردن به باطری
                        باید از یک خازن هم استفاده کنی
                        تا در اون زمان سوئیچینگ
                        مدارت از برق خازن استفاده کنه
                        و ریست یا خاموش نشه
                        7 - برای محاسبه ی مقدار اون خازن
                        باید بدونی که مدارت چقدر جریان میکشه
                        و ...
                        موارد دیگه ای هم هست که باید رعایت کنی!
                        اگر امکان داره موارد فوق را با ذکر مثال توضیح بدید، من که گیج شدم oo:

                        برای اینکه هزینه کاهش پیدا کنه از RTC داخلی استفاده میکنم. شما DS1307 را پیشنهاد میدید؟ دلیل خاصی داره؟
                        یه سوال دیگه: اگر بخوام از باتری استفاده کنم، lcd مصرفش زیاده و باتری سریع خالی میشه، برای این منظور پیشنهادی دارید؟
                        سپاس

                        اضافه شده در تاریخ :
                        چرا کسی جوابم را نمیده؟!!!!! :cry2:

                        دیدگاه


                          #13
                          پاسخ : ساعت

                          نوشته اصلی توسط robot1
                          اگر امکان داره موارد فوق را با ذکر مثال توضیح بدید، من که گیج شدم oo:

                          برای اینکه هزینه کاهش پیدا کنه از RTC داخلی استفاده میکنم. شما DS1307 را پیشنهاد میدید؟ دلیل خاصی داره؟
                          یه سوال دیگه: اگر بخوام از باتری استفاده کنم، lcd مصرفش زیاده و باتری سریع خالی میشه، برای این منظور پیشنهادی دارید؟
                          سپاس
                          فقط در مورد باتری بگم که اون باتری برای 1307 هستش نه ال سی دی
                          واسه ذخیره و بک اپه
                          **** k i n j ****

                          دیدگاه


                            #14
                            پاسخ : ساعت

                            نوشته اصلی توسط محمدصادق رستمی
                            چیزی که الان به نظرم میرسه اینه که:
                            چند نکته رو باید رعایت کنی:
                            1 - اطلاعات رو درون حافظه eeprom در هر ثانیه یکبار ذخیره کنی
                            حالا این اطلاعات شامل مواردی میشه که RTC تو داره محاسبه میکنه
                            مثه ساعت و یا احیانا تاریخ.
                            2 - از watch dog هم باید استفاده کنی
                            اون هم هر ثانیه یک بار باید پدیت بشه
                            تا اگه به هر دلیلی میکرو قاطی کرد
                            ریست بشه و مقادیر قبلی رو از eeprom لود کنه
                            3 - دو نوع منبع رو برای کار استفاده کنی:
                            دائمی مثه آداپتور
                            و موقت مثه باطری
                            در مواردی که برق هست، آداپتور باشه
                            و در مواقعی که نیست، باطری باشه
                            4 - زمانی که از باطری استفاده می کنی
                            حتما از خواص sleep میکرو استفاده کنی
                            چون مصرف به شدت کاهش پیدا میکنه
                            و فقط قسمت هایی روشن بمونن که
                            نیاز داری بهشون
                            و مواردی که جریان میکشن
                            مثه LCDها و ... حتما خاموش بشن
                            مگر اینکه بهشون نیاز داشته باشی
                            5 - یک مدار نیاز داری که به محض قطع شدن برق
                            به روی باطری سوئیچ کنه
                            مگر اینکه کلا بخوای از اول از باطری استفاده کنی
                            6 - در زمان سوئیچ کردن به باطری
                            باید از یک خازن هم استفاده کنی
                            تا در اون زمان سوئیچینگ
                            مدارت از برق خازن استفاده کنه
                            و ریست یا خاموش نشه
                            7 - برای محاسبه ی مقدار اون خازن
                            باید بدونی که مدارت چقدر جریان میکشه
                            و ...
                            موارد دیگه ای هم هست که باید رعایت کنی!
                            سلام دوست عزیز
                            در مورد اول در کمتر از 30 ساعت حافظه EEPROM میکرو دیگه قابل نوشتن نیست دوست عزیز
                            مورد دوم و سوم رو با شما موافقم غیر از EEPROM مورد دوم
                            در مورد چهارم ، دوستمون گفتند که با 7SEG ، در این صورت مصرف میکروکنترلر در مد خواب یا در حالت بیدار ، در کنار مصرف 7SEG با تقریب قابل اغماضی قابل صرفنظر کردنه
                            موارد بعدی که بهشون اشاره کردید خیلی هم عالی هستند من متشکرم

                            Good Luck

                            دیدگاه


                              #15
                              پاسخ : ساعت

                              نوشته اصلی توسط robot1
                              اگر امکان داره موارد فوق را با ذکر مثال توضیح بدید، من که گیج شدم oo:

                              برای اینکه هزینه کاهش پیدا کنه از RTC داخلی استفاده میکنم. شما DS1307 را پیشنهاد میدید؟ دلیل خاصی داره؟
                              یه سوال دیگه: اگر بخوام از باتری استفاده کنم، lcd مصرفش زیاده و باتری سریع خالی میشه، برای این منظور پیشنهادی دارید؟
                              سپاس
                              سلام دوست عزیز
                              دقیقا بهترین کار همین rtc داخلیه ، DS1307 وقتی مفیده که با میکروکنترلرت هزار تا کار دیگه میکنی و نمیخوای وقت سی پی یوی نازنین حروم بشه بخاطر محاسبه زمان و هر یه ثانیه یک بار یه وقفه بخوره ، مثلا ارتباط 1WIRE زمان بندی هاش خیییلی حساسه و چند ده میکروثانیه کافیه تادیتای اشتباه از slave گرفته بشه (مثلا یه وقفه سرریز تایمر) ، در این موارد آی سی های ساعت بصرفه است،
                              دوست عزیز مطمئن باشید مصرف سون سگمنت از ال سی دی بیشتره ، پیشنهاد رو نمیدونم متاسفانه چون باتری گرونه و آداپتور یه نمه ضایع است اما من دومی رو انتخاب میکنم

                              Good Luck

                              دیدگاه

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