اطلاعیه

Collapse
No announcement yet.

سوال در مورد برنامه ساعت با DS1307

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

    سوال در مورد برنامه ساعت با DS1307

    سلام دوستان-من یه مدار ساعت با avr دارم که این مدار از ای سی DS1307 استفاده کرده .و برنامه فقط برای ساعت هست .یه برنامه دیگه هست که تاریخ میلادی رو به شمسی تبدیل کرده .حالا من میخام برنامه تبدیل تاریخ میلادی به شمسی رو درون برنامه ساعت قرار بدم که هم ساعت رو نشون بده هم تاریخ رو ولی نمی دونم کجای برنامه قرارش بردم که جواب بده .هم شماتیک مدار با پرتئوس رو قرار میدم هم هر دو برنامه رو .دوستانی که با بسکام مسلط هستند یه نگاه بندازن ببیند کاری از دستشون بر میاد oo:

    اینم لینک
    http://www.up.98ia.com/images/jqigkw624y32luxtnef.zip
    یا به اندازه آرزوهایت تلاش میکنی یا به اندازه تلاشت ارزو میکنی

    #2
    پاسخ : سوال در مورد برنامه ساعت با DS1307

    این برنامه ابتدایی ساعته که توی یزدکیت گذاشتن باید در برنامه تغییرات زیادی بدی تا بتونی ساعت رو با تقویم داشته باشی و هم با سه تا کلید بتونی مقادیر رو تغییر بدی.

    این یه برنامه اس که همه اینا رو داره(ساعت با تقویم شمسی و میلادی و کلید های set و upوdown):

    طرز کارشم این جوری که اگه یه بار کلید selection رو بزنی می تونی با دوتا کلید دیگه دقیقه رو تغییر بدی اگه دوباره selection بزنی ساعت,3بار روز,4بار ماه,5بار سال ,باز6 هم ثانیه رو صفر می کنه و اگه دوباره بزنی ساعت شروع به کار می کنه

    http://s3.picofile.com/file/7368575585/c1.zip.html


    انا لله و انا اليه الراجعون

    دیدگاه


      #3
      پاسخ : سوال در مورد برنامه ساعت با DS1307

      نوشته اصلی توسط شاهین شرق
      این برنامه ابتدایی ساعته که توی یزدکیت گذاشتن باید در برنامه تغییرات زیادی بدی تا بتونی ساعت رو با تقویم داشته باشی و هم با سه تا کلید بتونی مقادیر رو تغییر بدی.

      این یه برنامه اس که همه اینا رو داره(ساعت با تقویم شمسی و میلادی و کلید های set و upوdown):

      طرز کارشم این جوری که اگه یه بار کلید selection رو بزنی می تونی با دوتا کلید دیگه دقیقه رو تغییر بدی اگه دوباره selection بزنی ساعت,3بار روز,4بار ماه,5بار سال ,باز6 هم ثانیه رو صفر می کنه و اگه دوباره بزنی ساعت شروع به کار می کنه

      http://s3.picofile.com/file/7368575585/c1.zip.html
      اقا دمت گرم خیلی باحالی :applause: :applause: :applause: :bye :nice: .واقعا لطف کردی.واله من سورس رو نگاه کردم ولی چیزی متوجه نشدم .ممنون میشم شما که مسلط به این برنامه هستید تاریخ میلادی رو حذف کنید .(فقط ساعت با تاریخ شمسی باشه).
      خواهش دوم و درخواستم اینکه من می میخام این ساعت رو بذارم رو یه دستگاه که طبق معمول ساعت و تاریخ رو نشون بده و کار دیگش هم این باشه که وقتی دستگاه استارت میشه مدار شروع کنه به شمارش زمانی و این شمارش مثلا 10 دقیقه یکبار در حافظه eeprom ذخیره بشه و مثلا هر 2 دقیقه یکبار هم مدت زمان کارد کرد ذخیره شده در eeprom رو نشون بده(در کل اینجوری بگم میخام وقتی دستگاه استارت شد وشروع به کار کرد مدت زمان کاردکردشو بدونم )یا اگر براتون امکانش نیست راهنمایی کنید تا خودم انجام بدم
      یا به اندازه آرزوهایت تلاش میکنی یا به اندازه تلاشت ارزو میکنی

      دیدگاه


        #4
        پاسخ : سوال در مورد برنامه ساعت با DS1307

        نمی دونم چقدر بیسیک بلدی ولی بهت کمک می کنم خودت ردیف کن. :read:
        این برنامه ظاهرش زیاد ولی آسونه روش دقیق بشی می بینی خیلی از دستورات و حلقه ها تکراری هستن.

        :NO:
        خب قدم اول:این قسمت نمایش روی lcd هست:
        Locate 1 , 1
        Lcd Myear ; "/" ; Mmonth ; "/" ; Mday ; " " ; Hour ; ":" ; Mine ; " "
        Lowerline
        Lcd Jyear ; "/" ; Jmonth ; "/" ; Jday ; " " ; Selection ; " " ; Seco ; " "

        متغیر هایی که اولشون M دارن مربوط به تقویم میلادی و اونایی که J دارن واسه تقویم جلالی هستن.
        انا لله و انا اليه الراجعون

        دیدگاه


          #5
          پاسخ : سوال در مورد برنامه ساعت با DS1307

          نوشته اصلی توسط شاهین شرق
          نمی دونم چقدر بیسیک بلدی ولی بهت کمک می کنم خودت ردیف کن. :read:
          این برنامه ظاهرش زیاد ولی آسونه روش دقیق بشی می بینی خیلی از دستورات و حلقه ها تکراری هستن.

          :NO:
          خب قدم اول:این قسمت نمایش روی lcd هست:
          Locate 1 , 1
          Lcd Myear ; "/" ; Mmonth ; "/" ; Mday ; " " ; Hour ; ":" ; Mine ; " "
          Lowerline
          Lcd Jyear ; "/" ; Jmonth ; "/" ; Jday ; " " ; Selection ; " " ; Seco ; " "

          متغیر هایی که اولشون M دارن مربوط به تقویم میلادی و اونایی که J دارن واسه تقویم جلالی هستن.
          اقا تا اینجا حله :wow: :wow: :wow:.من قسمت میلادی رو پاک میکنم تا فقط قسمت شمسی بمونه .اقا شما به من کمک کن تا این برنامه رو تکمیلش کنم منم در عوضش تشکر میکنم که ستاره هات زیاد بشه و تو انجمن یه عرض اندامی کنی . :nerd: :nerd: :nerd: :icon_razz: :icon_razz:

          (((می میخام این ساعت رو بذارم رو یه دستگاه که طبق معمول ساعت و تاریخ رو نشون بده و کار دیگش هم این باشه که وقتی دستگاه استارت میشه مدار شروع کنه به شمارش زمانی و این شمارش مثلا 10 دقیقه یکبار در حافظه eeprom ذخیره بشه و مثلا هر 2 دقیقه یکبار هم مدت زمان کارد کرد ذخیره شده در eeprom رو نشون بده(در کل اینجوری بگم میخام وقتی دستگاه استارت شد وشروع به کار کرد مدت زمان کاردکردشو بدونم )یا اگر براتون امکانش نیست راهنمایی کنید تا خودم انجام بدم ))) این قسمت رو چیکارش کنیم وچی براش بنویسیم.
          یا به اندازه آرزوهایت تلاش میکنی یا به اندازه تلاشت ارزو میکنی

          دیدگاه


            #6
            پاسخ : سوال در مورد برنامه ساعت با DS1307

            نوشته اصلی توسط علیدلی
            اقا شما به من کمک کن تا این برنامه رو تکمیلش کنم منم در عوضش تشکر میکنم که ستاره هات زیاد بشه و تو انجمن یه عرض اندامی کنی . :nerd: :nerd: :nerd: :icon_razz: :icon_razz:
            ممنونم.توی انجمن باید با سواد و اخلاق عرض اندام کرد نه با ستاره و تشکر

            در قدم دوم:

            http://s3.picofile.com/file/7368992468/C2.zip.html

            این برنامه اصلاح شده است به همراه نقشه اصلاح شده.همون برنامه اس ولی دو قسمت تغییر کرده که در محیط بسکام با عبارتNEW مشخص شده.
            یکی قسمت متغییر هاDIM ویکی دیگه قسمت نمایش یا DISPLAY هست.کلید START رو که می زنی مدار شروع بهزمان سنجی می کنی.
            هنوز اون چیزی که می خوای نشده برو روش کار کن.خیلی سخت نیست.
            انا لله و انا اليه الراجعون

            دیدگاه


              #7
              پاسخ : سوال در مورد برنامه ساعت با DS1307

              نوشته اصلی توسط شاهین شرق
              ممنونم.توی انجمن باید با سواد و اخلاق عرض اندام کرد نه با ستاره و تشکر

              در قدم دوم:

              http://s3.picofile.com/file/7368992468/C2.zip.html

              این برنامه اصلاح شده است به همراه نقشه اصلاح شده.همون برنامه اس ولی دو قسمت تغییر کرده که در محیط بسکام با عبارتNEW مشخص شده.
              یکی قسمت متغییر هاDIM ویکی دیگه قسمت نمایش یا DISPLAY هست.کلید START رو که می زنی مدار شروع بهزمان سنجی می کنی.
              هنوز اون چیزی که می خوای نشده برو روش کار کن.خیلی سخت نیست.
              سلام .ممنونم از لطفتون .شماتیک رو در پرتئوس شبیه سازی کردم ولی متاسفانه مورد داره.موردش اینکه LCD هر چند ثانیه پرش داره و ثانیه درست نمیشماره وساعت به هم می ریزه.بعدش هم که دکمه استارت رو میزنم ساعت قفل میکنه . بعضی مواقع که دکمه SELCTION رو میزنم تایمر به ازای فشار دادن کلید یکی میشماره.قانونا برنامه اینحور باید باشه که وقتی استارت رو میزنی شروع کنه به شمارش ولی اینکارو انجام نمیده
              یا به اندازه آرزوهایت تلاش میکنی یا به اندازه تلاشت ارزو میکنی

              دیدگاه


                #8
                پاسخ : سوال در مورد برنامه ساعت با DS1307

                این مشکل به عملکرد مدار برنمی کرده و مشکل از پروتئوس که منم همین مشکل رو دارم ولی در عمل این مشکل وجود نداره.
                (با استفاده از تجربه ام می گم که تا الان از این مدار ساعت ده ها بار ساختم و جواب گرفتم)

                اما اگه CPU USAGE رو روی برنامه پروتئوس متمرکز و در حالتREAL TIME بزاری این مشکل خیلی کمتر میشه.
                در ضمن کلید START هم باید موقع زدن در حالت وصل دائمی باشه برعکس سه تا کلید دیگه که سوییچ هستن.
                انا لله و انا اليه الراجعون

                دیدگاه


                  #9
                  پاسخ : سوال در مورد برنامه ساعت با DS1307

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

                  اما اگه CPU USAGE رو روی برنامه پروتئوس متمرکز و در حالتREAL TIME بزاری این مشکل خیلی کمتر میشه.
                  در ضمن کلید START هم باید موقع زدن در حالت وصل دائمی باشه برعکس سه تا کلید دیگه که سوییچ هستن.
                  (((در ضمن کلید START هم باید موقع زدن در حالت وصل دائمی باشه برعکس سه تا کلید دیگه که سوییچ هستن))) دوست خوبم من سوئیچ استارت رو از bush booton بر داشتم و کلید دائم گذاشتم .مشکل اینجاست که وقتی کلید رو میزنم اصلا شمارش نمی کنه فقط می نویسه (ON).و هیچ اتفاقی نمی افته .حالا میگیم اون پرش از پرتئوس هست این دیگه از برنامه باید باشه :cry2: :cry2:
                  یا به اندازه آرزوهایت تلاش میکنی یا به اندازه تلاشت ارزو میکنی

                  دیدگاه


                    #10
                    پاسخ : سوال در مورد برنامه ساعت با DS1307

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

                    اگه شک داری در قسمت DISPLAY به جای Tmine بزار Tseco تا ببینی که ثانیه میندازه.

                    Locate 1 , 1
                    Lcd Hour ; ":" ; Mine ; " " ; "ON (" ; Thour ; ":" ; Tseco ; &quot "
                    Lowerline
                    Lcd Jyear ; "/" ; Jmonth ; "/" ; Jday ; " " ; Selection ; " "
                    انا لله و انا اليه الراجعون

                    دیدگاه


                      #11
                      پاسخ : سوال در مورد برنامه ساعت با DS1307

                      سلام اقای شاهین شرق :bye :bye :bye
                      از بابت راهنمای هاتون بسیار سپاسگذارم :applause: :applause: :applause: :applause: :nice: :nice:

                      1::: برنامه خدارو شکر با کمک و رهنمودهای شما بزرگوار داره تموم میشه .فقط یه چیزی .من میخام وقتی کلید STOPرو زدم تایمر شروع کنه به شمارش(که الان این کارو انجام میده) و وقتی برق قطع شد ،،شمارس در حافظه eeprom ذخیره بشه و وقتی برق وصل شد مجداد شروع کنه به شمارش و وقتی کلید stop رو زدم .شمارش متوقف بشه و نمایش بده که چقد شمارش کرده..در کل اینجوری بگم میخام مدت زمان کارکرد دستگاه در زمان وصل برق رو بدونم و وقتی زدم stop روی ال سی دی نشون بده..
                      با این تفاسیر نیاز به دستورات eeprom داریم .من خیلی با eeprom کار نکردم در حد این::
                      A = 0
                      Readeeprom A , 1
                      Do
                      Incr A
                      Writeeeprom A , 1
                      Waitms 300
                      Cls
                      Home
                      Lcd A
                      Waitms 250
                      Loop

                      خواستم خودم عملیات ذخیره کردن در eeprom رو انجام بدم ولی نتونستم .. حالا این بهانه ای شد تا شما به عنوان یا استاد منو راهنمایی کنید که چطور میتونم از دستورات eeprom استفاده کنم و کاری رو که عرض کردم خدمتتون ((* وقتی برق قطع شد ،،شمارس در حافظه eeprom ذخیره بشه و وقتی برق وصل شد مجداد شروع کنه به شمارش و وقتی کلید stop رو زدم .شمارش متوقف بشه و نمایش بده که چقد شمارش کرده*)) رو انجام بدم ..تو کتابهای مختلف هم در مورد دستورات eeprom خوندم ولی در حد مبتدی بودش وکاروم انجام نداد.گوش به فرمان شما جهت اموزش هستیم
                      یا به اندازه آرزوهایت تلاش میکنی یا به اندازه تلاشت ارزو میکنی

                      دیدگاه


                        #12
                        پاسخ : سوال در مورد برنامه ساعت با DS1307

                        خب ببین من یه کمی متوجه قضیه نشدم!

                        یعنی میگی ساعت کارکرد در میکرو ذخیره بشه و بعد از قطع و وصل برق دوباره شروع به شمارش کنه و هر وقتی یه دکمه ای به اسم stop رو بزنیم کارکرد را نمایش بده؟

                        اول اینکه لازم نیست این مدل دستوراتی که برای e2prom نوشته ای استفاده کنی.قضیه خیلی ساده تر از این حرفهاست و مدتهاست که ازe2prom در کارهام استفاده می کنم و یه بار هم از این دستورات استفاده نکردم!

                        خب من یه طرح اولیه دارم:

                        یه خازن بزرگ مثلا2200 میکرو رو با تغذیه میکرو موازی بشه.برای اینکه وقتی برق رفته برای چند لحظه کوتاه میکرو رو روشن نگهداره.بعد برای اینکه به میکرو بفهمونیم که برق قطع شده از قبل رگولاتور یه انشعاب 5ولتی می گیریم میدیم به یه پایه میکرو هر وقت برق قطع شد این پایه صفر بشه و میکرو بفهمه که برق قطع شده سریع برای آخرین بار مقادیر کارکرد رو در e2prom ذخیره کنه.
                        دوباره که برق وصل شد مقادیر رو از حافظه پایدار به حافظه فلش میکرو بریزه. :agree:
                        فکر نکنم کلید stop لازم باشه چون هر وقت کلید start رو بزنی کارکرد رو نمایش میده و نزنی نمایش نمیده

                        کسی طرح بهتری داره استقبال می کنیم
                        انا لله و انا اليه الراجعون

                        دیدگاه


                          #13
                          پاسخ : سوال در مورد برنامه ساعت با DS1307

                          نوشته اصلی توسط شاهین شرق
                          خب ببین من یه کمی متوجه قضیه نشدم!



                          یه خازن بزرگ مثلا2200 میکرو رو با تغذیه میکرو موازی بشه.برای اینکه وقتی برق رفته برای چند لحظه کوتاه میکرو رو روشن نگهداره.بعد برای اینکه به میکرو بفهمونیم که برق قطع شده از قبل رگولاتور یه انشعاب 5ولتی می گیریم میدیم به یه پایه میکرو هر وقت برق قطع شد این پایه صفر بشه و میکرو بفهمه که برق قطع شده سریع برای آخرین بار مقادیر کارکرد رو در e2prom ذخیره کنه.
                          دوباره که برق وصل شد مقادیر رو از حافظه پایدار به حافظه فلش میکرو بریزه. :agree:
                          فکر نکنم کلید stop لازم باشه چون هر وقت کلید start رو بزنی کارکرد رو نمایش میده و نزنی نمایش نمیده

                          کسی طرح بهتری داره استقبال می کنیم
                          ((*خب ببین من یه کمی متوجه قضیه نشدم!*)).هدف از تایمر این است که مدت زمان کار کرد دستگاه رو نشون بده.این یعنی چی/؟یعنی اینکه ما زمانیکه زدیم استارت و دستگاه شروع به کارکرد در این لحظه تایمر هم شروع به کار کنه و مدت زمان کارکرد دستگاه رو زمان سنجی کنه...تا اینجا OK?? :NO: :NO: :NO:

                          ((*یه خازن بزرگ مثلا2200 میکرو رو با تغذیه میکرو موازی بشه.برای اینکه وقتی برق رفته برای چند لحظه کوتاه میکرو رو روشن نگهداره.بعد برای اینکه به میکرو بفهمونیم که برق قطع شده از قبل رگولاتور یه انشعاب 5ولتی می گیریم میدیم به یه پایه میکرو هر وقت برق قطع شد این پایه صفر بشه و میکرو بفهمه که برق قطع شده سریع برای آخرین بار مقادیر کارکرد رو در e2prom ذخیره کنه.
                          دوباره که برق وصل شد مقادیر رو از حافظه پایدار به حافظه فلش میکرو بریزه. :agree:
                          فکر نکنم کلید stop لازم باشه چون هر وقت کلید start رو بزنی کارکرد رو نمایش میده و نزنی نمایش نمیده *)).همینطور که قبلا گفتم مثلا قرار هست یه دستگاه بصورت مفید24 ساعت کارکنه .بلفرض مثال 18 ساعت کار میکنه وبرق قطع میشه .این 18 ساعت کارکرد باید ذخیره بشه و بعدی که برق وصل شد از 18 ساعت شروع به کار کنه تا برسه به 24 ساعت .

                          پس ما نیاز به این داریم که میکرو عملیات کارکرد یا شمارش تایمر رو قبل از برق رفتن ذخیره کنه تا من متوجه بشم وقتی برق وصل شد دستگاه چقدر کار کرده ؟؟
                          روشی که با خازن مطرح کردید فکر کنم بد نباشه ولی چرا از eprom استفاده نمیکنیم؟؟چون اگر بخایم اینکارو انجام بدیدم باید از پایه های میکرو استفاده کنیم و من پایه های میکرو رو بهش نیاز دارم چون میخام امکانات جانبی بهش اضافه کنم .بنظرم eeprom بهتره :nerd:

                          یا به اندازه آرزوهایت تلاش میکنی یا به اندازه تلاشت ارزو میکنی

                          دیدگاه


                            #14
                            پاسخ : سوال در مورد برنامه ساعت با DS1307

                            اتفاقا از e2prom استفاده می کنیم.
                            اگه پایه کم میاری از میکروبزرگتر استفاده کن.

                            خب استفاده از e2prom: :nerd:
                            من یه مثال واست میزارم:
                            اول متغیرهای از نوع e2prom تعریف می کنی:(دقت کن اسمهای متغیرها رو واسه مثال گذاشتم)

                            Dim Seco1 As Eram Integer
                            Dim Mine1 As Eram Integer
                            Dim Hour1 As Eram Integer

                            بعد دریه جای مخصوص در برنامه( که احتمالا یه برچسبی که بعدقطع برق میکرو به اون سر می زنه) مقادیرت رو در این متغیر ها به این ترتیب ذخیره می کنی:

                            Seco1 = Seco2
                            Waitms 50
                            Mine1 = Mine2
                            Waitms 50
                            Hour1 = Hour2
                            Waitms 50

                            و مرحله آخرین اینه که اول برنامه ات( وقتی میکرو می خواد کارش رو شروع کنه) این مقادیر رو از حافظه پایدار به متغیرهای اصلی انتقال میدی(برعکس مرحله قبلی):

                            Seco2 = Seco1
                            Waitms 50
                            Mine2 = Mine1
                            Waitms 50
                            Hour2 = Hour1
                            Waitms 50

                            بقیه قسمتها هم که آب خوردنه!
                            انا لله و انا اليه الراجعون

                            دیدگاه


                              #15
                              پاسخ : سوال در مورد برنامه ساعت با DS1307

                              نوشته اصلی توسط شاهین شرق
                              اتفاقا از e2prom استفاده می کنیم.
                              اگه پایه کم میاری از میکروبزرگتر استفاده کن.

                              خب استفاده از e2prom: :nerd:
                              من یه مثال واست میزارم:
                              اول متغیرهای از نوع e2prom تعریف می کنی:(دقت کن اسمهای متغیرها رو واسه مثال گذاشتم)

                              Dim Seco1 As Eram Integer
                              Dim Mine1 As Eram Integer
                              Dim Hour1 As Eram Integer

                              بعد دریه جای مخصوص در برنامه( که احتمالا یه برچسبی که بعدقطع برق میکرو به اون سر می زنه) مقادیرت رو در این متغیر ها به این ترتیب ذخیره می کنی:

                              Seco1 = Seco2
                              Waitms 50
                              Mine1 = Mine2
                              Waitms 50
                              Hour1 = Hour2
                              Waitms 50

                              و مرحله آخرین اینه که اول برنامه ات( وقتی میکرو می خواد کارش رو شروع کنه) این مقادیر رو از حافظه پایدار به متغیرهای اصلی انتقال میدی(برعکس مرحله قبلی):

                              Seco2 = Seco1
                              Waitms 50
                              Mine2 = Mine1
                              Waitms 50
                              Hour2 = Hour1
                              Waitms 50

                              بقیه قسمتها هم که آب خوردنه!
                              سلام استاد :bye :bye :bye :nerd: :nerd: :nerd:
                              استاد چون من در زمینه کار با حافظه پیش زمینه ندارم .یه کوچولو متوجه نشدم :angry:

                              ((*عد دریه جای مخصوص در برنامه( که احتمالا یه برچسبی که بعدقطع برق میکرو به اون سر می زنه) مقادیرت رو در این متغیر ها به این ترتیب ذخیره می کنی:

                              Seco1 = Seco2
                              Waitms 50
                              Mine1 = Mine2
                              Waitms 50
                              Hour1 = Hour2
                              Waitms 50
                              ))))
                              این قسمت رو کجای برنامه ساعت بذارم .اخه من از اون برنامه ساعت که به شمسی تبدیل شده چیزی سر در نمیارم ؟؟ :cry2: :cry2: :cry2:

                              دیدگاه

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