اطلاعیه

Collapse
No announcement yet.

راه اندازی ساعت با آی سی 1307 و LCD

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

    راه اندازی ساعت با آی سی 1307 و LCD

    با سلام خدمت دوستان
    در اینجا یک ساعت دیجیتال با استفاده از آی سی DS1307 و ال سی دی گرافیکی قرمز فروشگاه ECA ساخته شده است. فونت اعداد نیز توسط اینجانب طراحی شده است. میکروکنترلر مورد استفاده ATMEGA16 در فرکانس 8 مگاهرتز می باشد. در صورت تمایل فایل ها قابل ارائه است. (این برنامه شماتیک پروتئوس نداشته و صرفا با آزمون و خطا بر روی مدار واقعی ساخته شده است!! :cry: )
    STM32 واقعا یه چیز دیگه است...

    #2
    پاسخ : راه اندازی ساعت با آی سی 1307 و LCD

    نوشته اصلی توسط Javad Moosavi
    با سلام خدمت دوستان
    در اینجا یک ساعت دیجیتال با استفاده از آی سی DS1307 و ال سی دی گرافیکی قرمز فروشگاه ECA ساخته شده است. فونت اعداد نیز توسط اینجانب طراحی شده است. میکروکنترلر مورد استفاده ATMEGA16 در فرکانس 8 مگاهرتز می باشد. در صورت تمایل فایل ها قابل ارائه است. (این برنامه شماتیک پروتئوس نداشته و صرفا با آزمون و خطا بر روی مدار واقعی ساخته شده است!! :cry: )
    عالیه . بیزحمت فایلها و شماتیک هم بزارین ممنون

    دیدگاه


      #3
      پاسخ : راه اندازی ساعت با آی سی 1307 و LCD

      نوشته اصلی توسط Javad Moosavi
      با سلام خدمت دوستان
      در اینجا یک ساعت دیجیتال با استفاده از آی سی DS1307 و ال سی دی گرافیکی قرمز فروشگاه ECA ساخته شده است. فونت اعداد نیز توسط اینجانب طراحی شده است. میکروکنترلر مورد استفاده ATMEGA16 در فرکانس 8 مگاهرتز می باشد. در صورت تمایل فایل ها قابل ارائه است. (این برنامه شماتیک پروتئوس نداشته و صرفا با آزمون و خطا بر روی مدار واقعی ساخته شده است!! :cry: )
      این که ال سی دیش قرمز نیست ، سبزه :mrgreen:
      http://massoud68.persiangig.com/pict...1406891613.gif

      مشکلتون حل شده ؟؟؟
      پس روي "موضوع به نتيجه رسيد" کليک کنيد !! :job:

      دیدگاه


        #4
        پاسخ : راه اندازی ساعت با آی سی 1307 و LCD

        نوشته اصلی توسط سمیراا
        عالیه . بیزحمت فایلها و شماتیک هم بزارین ممنون
        با عرض پوزش شماتیک رو ندارم متاسفانه. (این مدار با پروتئوس شبیه سازی نشده). ولی فایل بسکام رو براتون می ذارم. میکروکنترلر ATMEGA 32 و ال سی دی 128*64 می باشد. البته از روی کد میشه به شماتیک رسید!!!! :biggrin:
        [code=vb]
        'IN THE NAME OF ALLAH
        '128 X 64 GRAPHICAL LCD RUNNING
        'CODE BY JAVAD MOOSAVI

        $regfile = "m16def.dat"
        $crystal = 8000000
        $swstack = 32
        $hwstack = 32
        $framesize = 40
        $lib "glcdKS108.LBX"
        $include "font8x8.font"

        Config Graphlcd = 128 * 64sed , Dataport = Portb , Controlport = Portd , _
        Ce = 0 , Ce2 = 1 , Cd = 2 , Rd = 3 , Reset = 4 , Enable = 5
        Setfont Font8x8
        Const Ds1307w = &HD0
        Const Ds1307r = &HD1
        Config Sda = Porta.0
        Config Scl = Porta.1
        Dim _sec As Byte
        Dim _min As Byte
        Dim _hour As Byte
        Dim _year As Word
        Dim Weekday As Byte
        Dim M_day As Word
        Dim M_month As Word
        Dim I As Integer

        Dim Secdah As Single
        Dim Secyek As Single
        Dim Minyek As Single
        Dim Mindah As Single
        Dim Hourdah As Single
        Dim Houryek As Single

        Cls
        Showpic 0 , 0 , Pic
        Waitms 4000

        Dim H As Integer
        Dim V As Integer

        For V = 0 To 63
        For H = 0 To 127
        Pset H , V , 0
        Waitus 30
        Next H
        Next V
        Waitms 100

        Cls



        '******************************************** ***************
        'remove

        I2cstart
        I2cwbyte Ds1307w
        I2cwbyte 0
        I2cstart
        I2cwbyte Ds1307r
        I2crbyte _sec , Ack
        I2crbyte _min , Ack
        I2crbyte _hour , Ack
        I2crbyte Weekday , Ack
        I2crbyte M_day , Ack
        I2crbyte M_month , Ack
        I2crbyte _year , Nack
        I2cstop
        _sec = Makedec(_sec)
        _min = Makedec(_min)
        _hour = Makedec(_hour)
        '******************************************** ***************

        Lcdat 1 , 1 , "CHECKING VALUES!"
        Lcdat 2 , 1 , "SECOND: " ; _sec
        Lcdat 3 , 1 , "MINUTE: " ; _min
        Lcdat 4 , 1 , "HOUR : " ; _hour

        Waitms 3000

        'Cls








        '_sec = 0
        '_min = 59
        '_hour = 23
        '_sec = Makebcd(_sec)
        '_min = Makebcd(_min)
        '_hour = Makebcd(_hour)
        'I2cstart
        'I2cwbyte Ds1307w
        'I2cwbyte 0
        'I2cwbyte _sec
        'I2cwbyte _min
        'I2cwbyte _hour
        'I2cstop



        Cls

        Lcdat 1 , 1 , "FINISHED"
        Lcdat 2 , 1 , "TIMING"
        Waitms 1000

        Mstart:
        Cls


        Lcdat 1 , 1 , "DS1307 REAL TIME"
        Lcdat 2 , 12 , "JAVAD MOOSAVI"

        Do
        Gosub R_de_t
        Lcdat 3 , 1 , "TIME:" ; _hour ; ":" ; _min ; ":" ; _sec ; " "
        'IMAGE PRODUCTION
        Secdah = _sec
        Mindah = _min
        Hourdah = _hour

        Secdah = Secdah / 10
        Secdah = Int(secdah)
        Secyek = Secdah * 10
        Secyek = _sec - Secyek

        Mindah = Mindah / 10
        Mindah = Int(mindah)
        Minyek = Mindah * 10
        Minyek = _min - Minyek

        Hourdah = Hourdah / 10
        Hourdah = Int(hourdah)
        Houryek = Hourdah * 10
        Houryek = _hour - Houryek




        I = 0

        Select Case Hourdah
        Case 0 : Showpic I , 32 , Zero
        Case 1 : Showpic I , 32 , One
        Case 2 : Showpic I , 32 , Two
        Case 3 : Showpic I , 32 , Three
        Case 4 : Showpic I , 32 , Four
        Case 5 : Showpic I , 32 , Five
        Case 6 : Showpic I , 32 , Six
        Case 7 : Showpic I , 32 , Seven
        Case 8 : Showpic I , 32 , Eight
        Case 9 : Showpic I , 32 , Nine
        End Select

        I = I + 16

        Select Case Houryek
        Case 0 : Showpic I , 32 , Zero
        Case 1 : Showpic I , 32 , One
        Case 2 : Showpic I , 32 , Two
        Case 3 : Showpic I , 32 , Three
        Case 4 : Showpic I , 32 , Four
        Case 5 : Showpic I , 32 , Five
        Case 6 : Showpic I , 32 , Six
        Case 7 : Showpic I , 32 , Seven
        Case 8 : Showpic I , 32 , Eight
        Case 9 : Showpic I , 32 , Nine
        End Select

        I = I + 16
        Showpic I , 32 , Dot

        I = I + 16
        Select Case Mindah
        Case 0 : Showpic I , 32 , Zero
        Case 1 : Showpic I , 32 , One
        Case 2 : Showpic I , 32 , Two
        Case 3 : Showpic I , 32 , Three
        Case 4 : Showpic I , 32 , Four
        Case 5 : Showpic I , 32 , Five
        Case 6 : Showpic I , 32 , Six
        Case 7 : Showpic I , 32 , Seven
        Case 8 : Showpic I , 32 , Eight
        Case 9 : Showpic I , 32 , Nine
        End Select

        I = I + 16
        Select Case Minyek
        Case 0 : Showpic I , 32 , Zero
        Case 1 : Showpic I , 32 , One
        Case 2 : Showpic I , 32 , Two
        Case 3 : Showpic I , 32 , Three
        Case 4 : Showpic I , 32 , Four
        Case 5 : Showpic I , 32 , Five
        Case 6 : Showpic I , 32 , Six
        Case 7 : Showpic I , 32 , Seven
        Case 8 : Showpic I , 32 , Eight
        Case 9 : Showpic I , 32 , Nine
        End Select
        I = I + 16
        Showpic I , 32 , Dot
        I = I + 16
        Select Case Secdah
        Case 0 : Showpic I , 32 , Zero
        Case 1 : Showpic I , 32 , One
        Case 2 : Showpic I , 32 , Two
        Case 3 : Showpic I , 32 , Three
        Case 4 : Showpic I , 32 , Four
        Case 5 : Showpic I , 32 , Five
        Case 6 : Showpic I , 32 , Six
        Case 7 : Showpic I , 32 , Seven
        Case 8 : Showpic I , 32 , Eight
        Case 9 : Showpic I , 32 , Nine
        End Select

        I = I + 16
        Select Case Secyek
        Case 0 : Showpic I , 32 , Zero
        Case 1 : Showpic I , 32 , One
        Case 2 : Showpic I , 32 , Two
        Case 3 : Showpic I , 32 , Three
        Case 4 : Showpic I , 32 , Four
        Case 5 : Showpic I , 32 , Five
        Case 6 : Showpic I , 32 , Six
        Case 7 : Showpic I , 32 , Seven
        Case 8 : Showpic I , 32 , Eight
        Case 9 : Showpic I , 32 , Nine
        End Select

        Waitms 300

        Loop



        End
        Pic:
        $bgf "newaa.bgf"
        Zero:
        $bgf "zero.bgf"
        One:
        $bgf "one.bgf"
        Two:
        $bgf "two.bgf"
        Three:
        $bgf "three.bgf"
        Four:
        $bgf "four.bgf"
        Five:
        $bgf "five.bgf"
        Six:
        $bgf "six.bgf"
        Seven:
        $bgf "seven.bgf"
        Eight:
        $bgf "eight.bgf"
        Nine:
        $bgf "nine.bgf"
        Dot:
        $bgf "dot.bgf"
        Blue:
        $bgf "blue.bgf"

        R_de_t:
        I2cstart
        I2cwbyte Ds1307w
        I2cwbyte 0
        I2cstart
        I2cwbyte Ds1307r
        I2crbyte _sec , Ack
        I2crbyte _min , Ack
        I2crbyte _hour , Ack
        I2crbyte Weekday , Ack
        I2crbyte M_day , Ack
        I2crbyte M_month , Ack
        I2crbyte _year , Nack
        I2cstop
        _sec = Makedec(_sec)
        _min = Makedec(_min)
        _hour = Makedec(_hour)
        Return

        'ECA LCD PIN OUT
        '1.GND
        '2.VDD
        '3.Vo
        '4.D/I
        '5.R/W
        '6.E
        '7--14. DB0--DB7
        '15.CS1
        '16.CS2
        '17./RST
        '18.Vout
        '19.A+
        '20.K-
        [/code]

        البته کد بسیار شلوغی هستش... اگر مشکلی داشتید در خدمتم
        STM32 واقعا یه چیز دیگه است...

        دیدگاه


          #5
          پاسخ : راه اندازی ساعت با آی سی 1307 و LCD

          من ال سی دی قرمز فروشگاه رو راه انداختم البته به صورت سریال با PIC قشنگه خیلی :smile:
          جهان پیر است و بی بنیاد ازاین فرهاد کش فریاد
          که کرد افسون و نیرنگش ملول از جان شیرینم

          دیدگاه


            #6
            پاسخ : راه اندازی ساعت با آی سی 1307 و LCD

            سلام
            سوالم اینه که اگه توی help کدویژن ds1307 رو سرچ کنیم یه چندتا مثال برامون میاره. اومده قبل از (while(1 از دستورات set استفاده کرده که تاریخ و ساعت رو ست کنه. حالا مشکل من اینه که اگه برق قطع بشه و دوباره وصل بشه چون میکرو دوباره راه اندازی میشه دستورات set رو هم دوباره اجرا میکنه و ساعتش به هم میریزه درصورتیکه ما برای ds1307 باتری میذاریم که ساعتش بهم نریزه ولی به خاطر برنامه نویسیمون ساعت بهم میریزه.
            راهی برای این مشکل سرغ دارید؟
            آیا میشه از دستورات set قبل از while استفاده نکرد؟
            مشکل بعدیم اینه که توی این مثال ها آخر حلقه while یه delay 500ms گذاشته. آیا میشه این تاخیر رو حذف کرد؟
            www.gam-co.blogsky.com

            دیدگاه


              #7
              پاسخ : راه اندازی ساعت با آی سی 1307 و LCD

              نوشته اصلی توسط vahidabedi
              سلام
              سوالم اینه که اگه توی help کدویژن ds1307 رو سرچ کنیم یه چندتا مثال برامون میاره. اومده قبل از (while(1 از دستورات set استفاده کرده که تاریخ و ساعت رو ست کنه. حالا مشکل من اینه که اگه برق قطع بشه و دوباره وصل بشه چون میکرو دوباره راه اندازی میشه دستورات set رو هم دوباره اجرا میکنه و ساعتش به هم میریزه درصورتیکه ما برای ds1307 باتری میذاریم که ساعتش بهم نریزه ولی به خاطر برنامه نویسیمون ساعت بهم میریزه.
              راهی برای این مشکل سرغ دارید؟
              آیا میشه از دستورات set قبل از while استفاده نکرد؟
              مشکل بعدیم اینه که توی این مثال ها آخر حلقه while یه delay 500ms گذاشته. آیا میشه این تاخیر رو حذف کرد؟
              سلام شما فقط ثانیه رو مقدار دهی کنید کافی هستش. از باتری بک پ استفاده میکنید دیگه ساعتو دقیقه که درسته حالا صفر کردن ثانیه مشکلی ایجاد نمیکنه.
              ثانیه رو اول برنامه صفر کنید چون دیدم خودم وقتی 1307 قاط میزد باید ثانیه رو صفر میکردم تا درست بشه.

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

              دیدگاه


                #8
                پاسخ : راه اندازی ساعت با آی سی 1307 و LCD

                ببخشید چطور میشه فقط ثانیه رو مقدار دهی کرد؟؟ مگه توی دستورش ساعت و دقیقه و ثانیه رو با هم نباید مقدار داد؟
                میشه یه برنامه بعنوان مثال بذارید؟
                www.gam-co.blogsky.com

                دیدگاه


                  #9
                  پاسخ : راه اندازی ساعت با آی سی 1307 و LCD

                  نوشته اصلی توسط vahidabedi
                  ببخشید چطور میشه فقط ثانیه رو مقدار دهی کرد؟؟ مگه توی دستورش ساعت و دقیقه و ثانیه رو با هم نباید مقدار داد؟
                  میشه یه برنامه بعنوان مثال بذارید؟
                  [code=c]
                  sz=0;
                  rtc_get_time(&hour,&minute,&second);
                  hh=hour;
                  mm=minute;
                  ss=second;
                  rtc_set_time(hh,mm,sz);

                  [/code]
                  "زمان خط است نه دايره" چه ايده بدي بوده گرد ساختن ساعت. احساس ميکني هميشه فرصت تکرار است.
                  ساعت دروغ ميگويد. دروغ. زمان بر گرد يک دايره نمي چرخد! زمان بر روي خطي مستقيم ميدود. و هيچگاه، هيچگاه، هيچگاه باز نميگردد.
                  ساعت خوب، ساعت شني است! هر لحظه به تو يادآوري ميکند که دانه اي که افتاد ديگر باز نميگردد.
                  پس بهتره يکم به ثانيه هايي که داريم فکر کنيم تا به راحتي از دستشون نديم....

                  دیدگاه

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