اطلاعیه

Collapse
No announcement yet.

[پروژه] ساعت دقیق (باDS1307) + تاریخ (شمسی,میلادی) + دما + سون سگمنت + منبع ت

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

    پاسخ : [پروژه] ساعت دقیق (باDS1307) + تاریخ (شمسی,میلادی) + دما + سون سگمنت + منبع تغذیه

    میشه فایلا رو دوباره اپلود کنید ممنون

    دیدگاه


      پاسخ : [پروژه] ساعت دقیق (باDS1307) + تاریخ (شمسی,میل&#157

      برنامه + PCB :
      کد:
      http://upir.ir/93dey/Clock-Date.rar
      دوست عزیز احتیاجی به نقل قول پست به اون بزرگی نبود، تاپیک شلوغ میشه لطفا ویرایش کنید و نقل قول پاک کنید.

      دیدگاه


        پاسخ : [پروژه] ساعت دقیق (باDS1307) + تاریخ (شمسی,میلادی) + دما + سون سگمنت + منبع تغذیه

        دوستان سلام
        بابت تاخیر یکی دو روزم عذر میخوام، بدلیل عمل جراحی تو بیمارستان بودم. به همین خاطر هم فرصت نشد برنامه رو کامل و درست بذارم. لینک زیر رو قبلا تست کرده بودم، کار میکرد، لطفا اگه امکانش هست خودتون بذارینش تو برنامه اصلی.
        http://up-is.ir/do.php?filename=142176607996641.zip
        ممنون و معذرت بابت بدقولی
        تشکر نکن، صلوات بفرست:

        [img width=165 height=100]http://www.askdin.com/gallery/images/29839/1___________5.png[/img]

        دیدگاه


          پاسخ : [پروژه] ساعت دقیق (باDS1307) + تاریخ (شمسی,میلادی) ...

          نوشته اصلی توسط سامان اسدی
          نظر تاپیک زننده (آقای وحید اسدی) هم مهمه
          آقای اسدی در این مورد نظر شما چیه ؟؟
          سلام آقا فکر نمیکردم نظر من این قدر مهم باشه
          بابا بیخیال پروژه اوپن سورسه ! هر کسی مایله هر تغییری رو لحاظ کنه ...
          خداییش همکاریه بچه ها عالیه :applause: :wow:

          اما در مورد LM35 نمیدونم چرا به این بدبخت اینهمه گیر میدید :-))
          با تکنیک زیر میشه دمای منفی رو هم اندازه گیری کرد ...
          فایل رو از ضمیمه پست دانلود کنید ... >>>

          برای سنس رطوبت هم میشه از این سنسورهای ارزون ( که با شیوه مقاومتی ) کار میکنن به راحتی رطوبت رو اندازه گرفت فقط کالیبره کردنش کمی مشکله ...

          الآن لینک هارو تست کردم ، متاسفانه پرشین گیگ دوباره خوابیده ؛ به زودی همه لینک ها ضمیمه میشن ...
          کسی از دوستان مدار رو بسته ؟؟؟ من چند روزی درگیره خدمت لعنتیم فعلا نمیتونم تغییرات رو تست کنم ... :sad:
          فایل های پیوست شده
          - اَللّهُمَّ عَجِّل لِوَلیِّکَ الفَرَج -
          ارتباط با من : ir02x6
          طراحی و ساخت انواع منابع تغذیه سوئیچینگ - SMPS Designer

          دیدگاه


            پاسخ : [پروژه] ساعت دقیق (باDS1307) + تاریخ (شمسی,میل&#157

            سلام مهندس وحید
            ما که 7 روزه لیستی از ایران میکرو سفارش دادیم فعلا ارسال نکردند، چند قطعه این پروژه توی لیسته، دلیل دیر کرد هم گفتند بخاطر موجود نبودن 7سگمنت SNF-3494FSR گفتند فکر کنم. فردا ارسال میکنند (البته حجم سفارش هم بالاست شاید به همین خاطر دیر کرد داره)
            من در مورد مدار و PCB شما گیج شدم
            توی دیتاشیت SNF-3494FSR نوشته پایه 15 7سگمنت پایه G هستش، اما شما تو PCB این پایه رو آزاد گذاشتید، همینطور پایه 1 و 1 7سگمنت که مربوط به D1 و D2 هستند آزاده
            در دیتاشیت نوشتهدو تا CP و TP یک پایه هستند، اما تو شماتیک هر کدوم به یک پورت وصل شدند!
            میشه راهنمایی کنید و توضیح بدید؟ چون میخوام PCB ویرایش کنم برای فوتوسل و کلیدها، اون قسمته مربوط به قرار گرفتن 7سگمنت هم میخواستم مشخص کنم
            با تشکر

            دیدگاه


              پاسخ : [پروژه] ساعت دقیق (باDS1307) + تاریخ (شمسی,میلادی) + دما ...

              من هرچه دنبال سون سگمنت این پروژه گشتم نتونستم پیدا کنم . نمی شه با کمی تغییر از سون سگمنت کاتد مشترک BQ-M362RD-A برای این پروژه استفاده کرد؟ (این سون سگمنت رو تو فروشگاه eca دیدم)

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

              دیدگاه


                پاسخ : پاسخ : [پروژه] ساعت دقیق (باDS1307) + تاریخ (شمسی,میل

                نوشته اصلی توسط hamidelectroniic
                توی دیتاشیت SNF-3494FSR نوشته پایه 15 7سگمنت پایه G هستش، اما شما تو PCB این پایه رو آزاد گذاشتید، همینطور پایه 1 و 1 7سگمنت که مربوط به D1 و D2 هستند آزاده
                در دیتاشیت نوشتهدو تا CP و TP یک پایه هستند، اما تو شماتیک هر کدوم به یک پورت وصل شدند!
                میشه راهنمایی کنید و توضیح بدید؟ چون میخوام PCB ویرایش کنم برای فوتوسل و کلیدها، اون قسمته مربوط به قرار گرفتن 7سگمنت هم میخواستم مشخص کنم
                با تشکر
                سلام ، فکر کنم اگر به شکل زیر دقت کنید متوجه موضوع بشید ...
                سون سگمنت رو باید برعکس بزارید ؛ همچنین پایه های کاتد مشترک از داخل به هم متصل هستند ...


                نوشته اصلی توسط ابزار دقیق(dariush)
                من هرچه دنبال سون سگمنت این پروژه گشتم نتونستم پیدا کنم . نمی شه با کمی تغییر از سون سگمنت کاتد مشترک BQ-M362RD-A برای این پروژه استفاده کرد؟ (این سون سگمنت رو تو فروشگاه eca دیدم)
                خوب دوست من اگر پست اول رو مطالعه کنید میبینید که مدار مربوط به سون سگمنت BQ-M362RD-A نیز قرار داده شده ، همچنین BQ-M362RD-A هم آند مشترکه ...
                http://eshop.eca.ir/سون-سگمنت/2428-س...39-سبز.html
                - اَللّهُمَّ عَجِّل لِوَلیِّکَ الفَرَج -
                ارتباط با من : ir02x6
                طراحی و ساخت انواع منابع تغذیه سوئیچینگ - SMPS Designer

                دیدگاه


                  پاسخ : [پروژه] ساعت دقیق (باDS1307) + تاریخ (شمسی,میلادی) + دما + سون سگمنت + منبع تغذیه

                  خیلی ممنون
                  الان فقط تو شماتیک دو تا CP و یک TP داریم که از میکرو اومده که تو دیتاشیت 7سگمنت این پایه ها نیست
                  بعد پایه مربوط به CTP به پایه 4 سون سگمنت وصل میشه درسته؟

                  دیدگاه


                    پاسخ : [پروژه] ساعت دقیق (باDS1307) + تاریخ (شمسی,میلادی) + دما + سون سگمنت + منبع تغذی

                    نوشته اصلی توسط hamidelectroniic
                    الان فقط تو شماتیک دو تا CP و یک TP داریم که از میکرو اومده که تو دیتاشیت 7سگمنت این پایه ها نیست
                    بعد پایه مربوط به CTP به پایه 4 سون سگمنت وصل میشه درسته؟
                    سلام ، دوست عزیز بزار یک بار دیگه مرور کنیم ...
                    CP همون Clock Points هست ، حالا چرا 2 تا چون 2 تا نقطه ساعت وجود داره بالا و پایین از طرفی کاتد (-) این نقطه ها ؛ بالایی با A و پایینی با B مشترکه و آندشون هم مشترکه که همون CPT که به پایه 4 میکرو میره ...
                    TP هم ، Temp Point هست که کاتدش با C مشترکه و آندش هم با نقطه های ساعت که CPT نام داره مشترکه و باز به پایه 4 میکرو رفته ... :bye
                    - اَللّهُمَّ عَجِّل لِوَلیِّکَ الفَرَج -
                    ارتباط با من : ir02x6
                    طراحی و ساخت انواع منابع تغذیه سوئیچینگ - SMPS Designer

                    دیدگاه


                      پاسخ : [پروژه] ساعت دقیق (باDS1307) + تاریخ (شمسی,میل&#157

                      نوشته اصلی توسط ir02x6
                      سلام ، دوست عزیز بزار یک بار دیگه مرور کنیم ...
                      CP همون Clock Points هست ، حالا چرا 2 تا چون 2 تا نقطه ساعت وجود داره بالا و پایین از طرفی کاتد (-) این نقطه ها ؛ بالایی با A و پایینی با B مشترکه و آندشون هم مشترکه که همون CPT که به پایه 4 میکرو میره ...
                      TP هم ، Temp Point هست که کاتدش با C مشترکه و آندش هم با نقطه های ساعت که CPT نام داره مشترکه و باز به پایه 4 میکرو رفته ... :bye
                      خیلی ممنون از توضیحات کاملتون
                      من در PCB فتوسل اضافه و کلیدهارو ویرایش کردم، بعد اینکه تست کنم اگر بتونم آلارم هم براش مینویسم و کلیدها کلا 3 تا میشه، یکی برای DIP_KEY دو تای دیگه هم برای تنظیم ساعت و تاریخ و آلارم، فقط شاید تو نوشتن آلارم به مشکل بخورم که اینجا مطرح میکنم تا راهنمایی کنند دوستان
                      یک برنامه در مورد آلارم رو آقا محمد (یوزرشون محمد ن هست) زحمت کشیدن و بهم دادن که از اون برنامه کمک میگیرم، همینجا ازشون تشکر میکنم

                      دیدگاه


                        پاسخ : [پروژه] ساعت دقیق (باDS1307) + تاریخ (شمسی,میلادی) + دما + سون سگمنت + منبع تغذیه خا

                        با سلام من زیاد حرفه ای نیستم از این مدار خوشم اومد خواستم درستش کنم

                        ولی وقتی خواستم برنامه رو تبدیل کنم به HEX این قسمت $lib "ds1307clock.lib" ایراد گرفت :cry2:

                        به هیچ قسمت برنامه دست نزدم خطا یی که می گیره میگه این $lib "ds1307clock.lib" فایل در کتابخانه وجود ندارد چطوری به کتابخونه اضافش کنم

                        دیدگاه


                          پاسخ : [پروژه] ساعت دقیق (باDS1307) + تاریخ (شمسی,میلادی) + دما + سون سگمنت + منبع تغذیه خا

                          نوشته اصلی توسط 2alborz
                          با سلام من زیاد حرفه ای نیستم از این مدار خوشم اومد خواستم درستش کنم

                          ولی وقتی خواستم برنامه رو تبدیل کنم به HEX این قسمت $lib "ds1307clock.lib" ایراد گرفت :cry2:

                          به هیچ قسمت برنامه دست نزدم خطا یی که می گیره میگه این $lib "ds1307clock.lib" فایل در کتابخانه وجود ندارد چطوری به کتابخونه اضافش کنم
                          سلام
                          فایلهای مربوط به ds1307clock رو در لینک زیر کپی کنید :
                          کد:
                          C:\Program Files\MCS Electronics\BASCOM-AVR\LIB
                          لینک فایلهای ds1307clock :
                          کد:
                          http://upir.ir/93dey/ds1307clock-LIB.rar

                          دیدگاه


                            پاسخ : [پروژه] ساعت دقیق (باDS1307) + تاریخ (شمسی,میلادی) + دما + سون سگمنت + منبع تغذیه خا

                            بازم کار نکرد اقا سامان :cry2: بعد وقتی رو برد بستم فقط دو تا 5 نمایش میده و دماسنجو :cry: می تونه مشکل از ایسی ساعت باشه :NO: :cry:
                            $regfile = "m8def.dat"
                            $crystal = 4000000
                            '$projecttime = 0
                            $hwstack = 64
                            $swstack = 64
                            $framesize = 64
                            $lib "ds1307clock.lib"

                            'Sub
                            Declare Sub Refresh
                            Declare Sub Send
                            Declare Sub Keyscan
                            Declare Sub Wait4key

                            'A2D
                            Config Adc = Single , Prescaler = Auto , Reference = Avcc
                            Enable Adc
                            Start Adc

                            'Var
                            '============================================ ===========================
                            Dim Photocell As Byte , X As Byte , X2 As Word 'for photocell
                            '============================================ ===========================
                            Dim Temp As Byte , Sec_blink As Bit
                            Dim Temp2 As Byte , W As Word , Temp_clock As Byte

                            Config Sda = Portc.4
                            Config Scl = Portc.3

                            'address of ds1307
                            Const Ds1307w = &HD0 ' Addresses of Ds1307 clock
                            Const Ds1307r = &HD1

                            Config Clock = User

                            'dim other needed variables
                            Dim Weekday As Byte
                            Waitms 100

                            'For Blink LED
                            Config Timer1 = Timer , Prescale = 64
                            Enable Interrupts
                            Enable Timer1
                            Timer1 = 34276
                            On Ovf1 Ov1
                            Stop Timer1

                            'I/O
                            Ddrd = &B00011111
                            Portd = &B11100000

                            Min_key Alias Pind.7
                            Hour_key Alias Pind.6
                            Dip_key Alias Pind.5

                            Com4 Alias Portd.4
                            Com3 Alias Portd.3
                            Com2 Alias Portd.1
                            Com1 Alias Portd.0
                            Com_dot Alias Portd.2

                            Ddrb = &B00111110
                            Portb = &HFF

                            Seg_a Alias Portb.1
                            Seg_g Alias Portb.2
                            Seg_b Alias Portb.3
                            Seg_c Alias Portb.4
                            Seg_f Alias Portb.5

                            Point_up Alias Portb.1
                            Point_dn Alias Portb.3
                            Point_dg Alias Portb.4

                            Ddrc = &B00000011

                            Seg_e Alias Portc.0
                            Seg_d Alias Portc.1

                            'Main prog start here:
                            If Dip_key = 0 Then
                            Time$ = "2350" ' to watch the day changing value
                            Date$ = "06-08-10" ' 08 june 2010
                            End If

                            Start Timer1
                            Do
                            Call Refresh
                            Call Keyscan
                            Loop

                            End

                            Sub Refresh
                            Gosub Getdatetime
                            If Temp_clock >= 3 And Temp_clock <= 4 Then
                            Com1 = 0 : Com2 = 1 : Com3 = 0 : Com4 = 0 : Com_dot = 0
                            Temp = W \ 10 : Call Send
                            Com1 = 0 : Com2 = 0 : Com3 = 1 : Com4 = 0 : Com_dot = 0
                            Temp = W Mod 10 : Call Send
                            Com1 = 0 : Com2 = 0 : Com3 = 0 : Com4 = 1 : Com_dot = 0
                            Temp = 10 : Call Send
                            Com1 = 0 : Com2 = 0 : Com3 = 0 : Com4 = 0 : Com_dot = 1
                            Point_dg = 0
                            Waitms 2
                            Point_dg = 1
                            Else
                            W = Getadc(5)
                            W = W / 2
                            W = W - 2
                            Com1 = 1 : Com2 = 0 : Com3 = 0 : Com4 = 0 : Com_dot = 0
                            Temp = _hour \ 10 : Call Send
                            Com1 = 0 : Com2 = 1 : Com3 = 0 : Com4 = 0 : Com_dot = 0
                            Temp = _hour Mod 10 : Call Send
                            Com1 = 0 : Com2 = 0 : Com3 = 1 : Com4 = 0 : Com_dot = 0
                            Temp = _min \ 10 : Call Send
                            Com1 = 0 : Com2 = 0 : Com3 = 0 : Com4 = 1 : Com_dot = 0
                            Temp = _min Mod 10 : Call Send
                            Com1 = 0 : Com2 = 0 : Com3 = 0 : Com4 = 0 : Com_dot = 1
                            Point_up = Sec_blink
                            Point_dn = Sec_blink
                            Waitms 2
                            Point_up = 1
                            Point_dn = 1
                            End If
                            End Sub

                            Sub Send
                            Select Case Temp
                            Case 0:
                            Seg_a = 0
                            Seg_b = 0
                            Seg_c = 0
                            Seg_d = 0
                            Seg_e = 0
                            Seg_f = 0
                            Seg_g = 1
                            Case 1:
                            Seg_a = 1
                            Seg_b = 0
                            Seg_c = 0
                            Seg_d = 1
                            Seg_e = 1
                            Seg_f = 1
                            Seg_g = 1
                            Case 2:
                            Seg_a = 0
                            Seg_b = 0
                            Seg_c = 1
                            Seg_d = 0
                            Seg_e = 0
                            Seg_f = 1
                            Seg_g = 0
                            Case 3:
                            Seg_a = 0
                            Seg_b = 0
                            Seg_c = 0
                            Seg_d = 0
                            Seg_e = 1
                            Seg_f = 1
                            Seg_g = 0
                            Case 4:
                            Seg_a = 1
                            Seg_b = 0
                            Seg_c = 0
                            Seg_d = 1
                            Seg_e = 1
                            Seg_f = 0
                            Seg_g = 0
                            Case 5:
                            Seg_a = 0
                            Seg_b = 1
                            Seg_c = 0
                            Seg_d = 0
                            Seg_e = 1
                            Seg_f = 0
                            Seg_g = 0
                            Case 6:
                            Seg_a = 0
                            Seg_b = 1
                            Seg_c = 0
                            Seg_d = 0
                            Seg_e = 0
                            Seg_f = 0
                            Seg_g = 0
                            Case 7:
                            Seg_a = 0
                            Seg_b = 0
                            Seg_c = 0
                            Seg_d = 1
                            Seg_e = 1
                            Seg_f = 1
                            Seg_g = 1
                            Case 8:
                            Seg_a = 0
                            Seg_b = 0
                            Seg_c = 0
                            Seg_d = 0
                            Seg_e = 0
                            Seg_f = 0
                            Seg_g = 0
                            Case 9:
                            Seg_a = 0
                            Seg_b = 0
                            Seg_c = 0
                            Seg_d = 0
                            Seg_e = 1
                            Seg_f = 0
                            Seg_g = 0
                            Case 10:
                            'C
                            Seg_a = 0
                            Seg_b = 1
                            Seg_c = 1
                            Seg_d = 0
                            Seg_e = 0
                            Seg_f = 0
                            Seg_g = 1
                            End Select
                            '============================================ ===========================
                            FOR X = 0 TO 255
                            Waitus 7
                            IF X = Photocell THEN EXIT FOR
                            NEXT
                            '============================================ ===========================
                            Waitms 2
                            Seg_a = 1
                            Seg_b = 1
                            Seg_c = 1
                            Seg_d = 1
                            Seg_e = 1
                            Seg_f = 1
                            Seg_g = 1
                            '============================================ ===========================
                            FOR X = X TO 255
                            Waitus 7
                            NEXT
                            '============================================ ===========================
                            End Sub

                            Ov1:
                            Timer1 = 34276
                            Toggle Sec_blink
                            Incr Temp_clock
                            If Temp_clock > 4 Then Temp_clock = 0
                            '============================================ ===========================
                            X2 = Getadc(2) / 4
                            Photocell = 255 - X2
                            '============================================ ============================
                            Return

                            'called from ds1307clock.lib
                            Getdatetime:
                            I2cstart ' Generate start code
                            I2cwbyte Ds1307w ' send address
                            I2cwbyte 0 ' start address in 1307

                            I2cstart ' Generate start code
                            I2cwbyte Ds1307r ' send address
                            I2crbyte _sec , Ack
                            I2crbyte _min , Ack ' MINUTES
                            I2crbyte _hour , Ack ' Hours
                            I2crbyte Weekday , Ack ' Day of Week
                            I2crbyte _day , Ack ' Day of Month
                            I2crbyte _month , Ack ' Month of Year
                            I2crbyte _year , Nack ' Year
                            I2cstop
                            _sec = Makedec(_sec) : _min = Makedec(_min) : _hour = Makedec(_hour)
                            _day = Makedec(_day) : _month = Makedec(_month) : _year = Makedec(_year)
                            Return

                            Setdate:
                            _day = Makebcd(_day) : _month = Makebcd(_month) : _year = Makebcd(_year)
                            I2cstart ' Generate start code
                            I2cwbyte Ds1307w ' send address
                            I2cwbyte 4 ' starting address in 1307
                            I2cwbyte _day ' Send Data to SECONDS
                            I2cwbyte _month ' MINUTES
                            I2cwbyte _year ' Hours
                            I2cstop
                            Return

                            Settime:
                            _sec = Makebcd(_sec) : _min = Makebcd(_min) : _hour = Makebcd(_hour)
                            I2cstart ' Generate start code
                            I2cwbyte Ds1307w ' send address
                            I2cwbyte 0 ' starting address in 1307
                            I2cwbyte _sec ' Send Data to SECONDS
                            I2cwbyte _min ' MINUTES
                            I2cwbyte _hour ' Hours
                            I2cstop
                            Return


                            Sub Keyscan
                            If Hour_key = 0 Then
                            Incr _hour
                            If _hour > 23 Then _hour = 0
                            Gosub Settime
                            Call Wait4key
                            End If
                            If Min_key = 0 Then
                            Incr _min
                            If _min > 59 Then _min = 0
                            Gosub Settime
                            Call Wait4key
                            End If
                            End Sub

                            Sub Wait4key
                            For Temp2 = 1 To 25
                            Call Refresh
                            Next
                            End Sub

                            دیدگاه


                              پاسخ : [پروژه] ساعت دقیق (باDS1307) + تاریخ (شمسی,میلادی) + دما + سون سگمنت + منبع تغذیه

                              نوشته اصلی توسط 2alborz
                              همونطور که اقا سامان گفته بود یک فوتوسل گذاشتم ولی کار نکرد شاید کار من مشکل داره لطفا یک نگاه بهش بندازید اگر تونستید تصحیحش کنید
                              درود بر شما
                              بله حق با شماست ...
                              کدی که من امتحانش کردم با کدویژن بود ...
                              همش مقسر این بسکام ... :cry:
                              برنامه را به این شکل تغییرش بدهید ...
                              کد:
                              '=======================================================================
                              Dim Photocell As Byte , X As Byte , X2 As Word       'for photocell
                              '=======================================================================
                              
                              
                              '=======================================================================
                              X2 = Getadc(5) / 4
                              Photocell = 255 - X2
                              '=======================================================================
                              این قسمتها را تغییر دهید و نتیجه را حتما اعلام کنید ...

                              [code=qbasic]
                              '******************************************** ***********************************
                              '* Digital DS1307 Clock and Date (Jalali and AD) and Thermometer + 7seg *
                              '* Compiler: BASCOM-AVR 2.0.7.3 *
                              '* Creation Date: 2010.01.10 - Author: Behnam Zakizadeh - www.AVR64.com *
                              '* Updated and Improved by : Ir02x6 ( Vahid Asadi ) - 2014.11.20 *
                              '* © ir02x6 - www.ECA.ir *
                              '* Ver: 2.0 ( 7SEG : BQ-M362RD-A ) *
                              '******************************************** ***********************************
                              $regfile = "m8def.dat"
                              $crystal = 4000000
                              '$projecttime = 0
                              $hwstack = 64
                              $swstack = 64
                              $framesize = 64
                              $lib "ds1307clock.lib"

                              ' Miladi be Shamsi{
                              $lib "mcsbyteint.lbx"
                              ' } Miladi be Shamsi

                              ' Sub {
                              Declare Sub Refresh
                              Declare Sub Refreshtime
                              Declare Sub Refreshdate
                              Declare Sub Send
                              Declare Sub Keyscan
                              Declare Sub Wait4key
                              Declare Sub Wait4keytime
                              Declare Sub Wait4keydate
                              Declare Sub Tabdil
                              ' } Sub

                              ' A2D {
                              Config Adc = Single , Prescaler = Auto , Reference = Internal
                              Enable Adc
                              Start Adc
                              ' } A2D

                              ' Var {

                              '============================================ ===========================
                              DIM Photocell AS Byte , X AS Byte , X2 AS Word 'for photocell
                              '============================================ ===========================

                              Dim Temp As Byte , Sec_blink As Bit
                              Dim W As Word , Temp_clock As Byte
                              Dim Menu1 As Bit
                              Menu1 = 0
                              Dim Menu2 As Bit
                              Menu2 = 0
                              Dim Kelid As Bit
                              Dim Kelid2 As Bit
                              Dim Kelid3 As Bit
                              Kelid = 0
                              Kelid2 = 0
                              Kelid3 = 0
                              ' } Var

                              ' Miladi be Shamsi {
                              Dim Myear As Integer 'input Miladi(gregorian) Year
                              Dim Mday As Integer 'input Miladi Day
                              Dim Mmonth As Integer 'input Miladi Month
                              Dim Mdayofyear As Integer
                              Dim Myear_ As Integer
                              Dim Jday As Integer 'output Jalali(shamsi) Day
                              Dim Jmonth As Integer 'output Jalali Month
                              Dim Jyear As Integer 'output Jalali Year
                              Dim Jdayofyear As Integer
                              Dim Gnumdayofyear As Integer
                              Dim Isleapyear As Bit
                              Dim Isleapyearp As Bit
                              Dim Iloop As Byte
                              Dim Temp3 As Integer
                              Dim Temp4 As Integer
                              Dim Temp5 As Integer
                              Dim Temp6 As Integer
                              Dim Jmonth_a(12) As Byte
                              Dim Mmonth_a(12) As Byte
                              ' } Miladi be Shamsi


                              Config Sda = Portc.4
                              Config Scl = Portc.3

                              ' address of ds1307 {
                              Const Ds1307w = &HD0 ' Addresses of Ds1307 clock
                              Const Ds1307r = &HD1
                              ' } address of ds1307

                              Config Clock = User

                              ' dim other needed variables {
                              Dim Weekday As Byte
                              '} dim other needed variables

                              Waitms 100

                              ' For Blink LED {
                              Config Timer1 = Timer , Prescale = 64
                              Enable Interrupts
                              Enable Timer1
                              Timer1 = 34276
                              On Ovf1 Ov1
                              Stop Timer1
                              ' } For Blink LED

                              ' I/O {
                              Ddrd = &B00011111
                              Portd = &B11100000

                              Min_day_key Alias Pind.7
                              Hour_month_key Alias Pind.6
                              Dip_key Alias Pind.5
                              Menu_key Alias Pinb.0

                              Com4 Alias Portd.4
                              Com3 Alias Portd.3
                              Com2 Alias Portd.1
                              Com1 Alias Portd.0
                              Com_dot Alias Portd.2

                              Ddrb = &B00111110
                              Portb = &HFF

                              Seg_a Alias Portb.1
                              Seg_g Alias Portb.2
                              Seg_b Alias Portb.3
                              Seg_c Alias Portb.4
                              Seg_f Alias Portb.5

                              Point_up Alias Portb.1
                              Point_dg Alias Portb.4

                              Ddrc = &B00000111

                              Point_dn Alias Portc.2
                              Seg_e Alias Portc.0
                              Seg_d Alias Portc.1
                              ' } I/O

                              'Main prog start here:

                              ' Tanzime meghdare avaliye sa@ va tarikh {
                              If Dip_key = 0 Then
                              Time$ = "20:00:00"
                              Date$ = "12-29-14" ' 29 december 2014
                              End If
                              ' } Tanzime meghdare avaliye sa@ va tarikh

                              Start Timer1

                              Point_dn = 1

                              ' namayeshe avaliye {
                              Call Wait4key
                              ' } namayeshe avaliye

                              ' Loope Asli {
                              Do
                              Call Keyscan
                              Loop
                              ' } Loope Asli

                              End

                              ' tabe'e tabdile shamsi {
                              Sub Tabdil
                              Mmonth_a(1) = 31
                              '——–28 Ya 29 Agar Sall Kabiseh Bashad In Mah 29 Roz Mibashad—————— –
                              Mmonth_a(2) = 28
                              Mmonth_a(3) = 31

                              Mmonth_a(4) = 30
                              Mmonth_a(5) = 31
                              Mmonth_a(6) = 30

                              Mmonth_a(7) = 31
                              Mmonth_a(8) = 31
                              Mmonth_a(9) = 30

                              Mmonth_a(10) = 31
                              Mmonth_a(11) = 30
                              Mmonth_a(12) = 31

                              Gnumdayofyear = 365


                              Myear = _year + 2000 'sample Miladi(gregorian) Year
                              Mday = _day 'sample Miladi Day
                              Mmonth = _month 'sample Miladi Month
                              Mdayofyear = 0
                              '————–shart Kabiseh Bodane Sall———— -
                              Temp3 = Myear Mod 4
                              Temp4 = Myear Mod 100
                              Temp5 = Myear Mod 400
                              Temp6 = Temp3 And Temp4

                              If Temp6 <> 0 Or Temp5 = 0 Then
                              Mmonth_a(2) = 28
                              Else
                              Mmonth_a(2) = 29
                              End If

                              Myear_ = Myear - 1
                              Temp3 = Myear_ Mod 4
                              Temp4 = Myear_ Mod 100
                              Temp5 = Myear_ Mod 400
                              Temp6 = Temp3 And Temp4

                              If Temp6 <> 0 Or Temp5 = 0 Then
                              Reset Isleapyearp
                              Else
                              Set Isleapyearp
                              End If

                              Temp3 = Mmonth - 1

                              For Iloop = 1 To Temp3
                              Mdayofyear = Mmonth_a(iloop) + Mdayofyear
                              Next
                              Mdayofyear = Mday + Mdayofyear

                              If Mdayofyear > 79 Then

                              Temp3 = Mdayofyear - 79
                              Jyear = Myear - 621

                              If Temp3 < 186 Then

                              Temp4 = Temp3 Mod 31
                              Temp5 = Temp3 / 31

                              If Temp4 = 0 Then
                              Jmonth = Temp5
                              Jday = 31
                              Else
                              Jmonth = Temp5 + 1
                              Jday = Temp4
                              End If

                              Else

                              Temp4 = Temp3 - 186
                              Temp5 = Temp4 Mod 30
                              Temp6 = Temp4 / 30

                              If Temp5 = 0 Then
                              Jmonth = Temp6 + 6
                              Jday = 30
                              Else
                              Jmonth = Temp6 + 7
                              Jday = Temp5
                              End If

                              End If

                              Else

                              Jyear = Myear - 622

                              If Isleapyearp = 1 Then
                              Mdayofyear = Mdayofyear + 11
                              Else
                              Mdayofyear = Mdayofyear + 10
                              End If

                              Temp4 = Mdayofyear Mod 30
                              Temp5 = Mdayofyear / 30

                              If Temp4 = 0 Then
                              Jmonth = Temp5 + 9
                              Jday = 30
                              Else
                              Jmonth = Temp5 + 10
                              Jday = Temp4
                              End If

                              Waitms 1

                              End If
                              End Sub
                              ' } tabe'e tabdile shamsi

                              Sub Refresh
                              Gosub Getdatetime
                              Gosub Tabdil

                              ' Show Temp {
                              If Temp_clock >= 22 And Temp_clock <= 26 Then
                              Com1 = 0 : Com2 = 1 : Com3 = 0 : Com4 = 0 : Com_dot = 0
                              Temp = W \ 10 : Call Send
                              Com1 = 0 : Com2 = 0 : Com3 = 1 : Com4 = 0 : Com_dot = 0
                              Temp = W Mod 10 : Call Send
                              Com1 = 0 : Com2 = 0 : Com3 = 0 : Com4 = 1 : Com_dot = 0
                              Temp = 10 : Call Send
                              Com1 = 0 : Com2 = 0 : Com3 = 0 : Com4 = 0 : Com_dot = 1
                              Point_dg = 0
                              Waitms 2
                              Point_dg = 1
                              ' } Show Temp

                              ' Show Date miladi {
                              Elseif Temp_clock >= 17 And Temp_clock <= 21 Then
                              Com1 = 1 : Com2 = 0 : Com3 = 0 : Com4 = 0 : Com_dot = 0
                              Temp = _month \ 10 : Call Send
                              Com1 = 0 : Com2 = 1 : Com3 = 0 : Com4 = 0 : Com_dot = 0
                              Temp = _month Mod 10 : Call Send
                              Com1 = 0 : Com2 = 0 : Com3 = 1 : Com4 = 0 : Com_dot = 0
                              Temp = _day \ 10 : Call Send
                              Com1 = 0 : Com2 = 0 : Com3 = 0 : Com4 = 1 : Com_dot = 0
                              Temp = _day Mod 10 : Call Send
                              Com1 = 0 : Com2 = 1 : Com3 = 0 : Com4 = 0 : Com_dot = 0
                              Point_dn = 0
                              Waitms 2
                              Point_dn = 1
                              ' } Show Date miladi


                              ' Show Date shamsi {
                              Elseif Temp_clock >= 12 And Temp_clock <= 16 Then
                              Com1 = 1 : Com2 = 0 : Com3 = 0 : Com4 = 0 : Com_dot = 0
                              Temp = Jmonth \ 10 : Call Send
                              Com1 = 0 : Com2 = 1 : Com3 = 0 : Com4 = 0 : Com_dot = 0
                              Temp = Jmonth Mod 10 : Call Send
                              Com1 = 0 : Com2 = 0 : Com3 = 1 : Com4 = 0 : Com_dot = 0
                              Temp = Jday \ 10 : Call Send
                              Com1 = 0 : Com2 = 0 : Com3 = 0 : Com4 = 1 : Com_dot = 0
                              Temp = Jday Mod 10 : Call Send
                              Com1 = 0 : Com2 = 1 : Com3 = 0 : Com4 = 0 : Com_dot = 0
                              Point_dn = 0
                              Waitms 2
                              Point_dn = 1
                              ' } Show Date shamsi


                              ' Show Time {
                              Else
                              ' Mohasebate Temp {
                              W = Getadc(5)
                              W = W / 4
                              W = W - 2 ' Temp Calibration
                              ' } Mohasebate Temp

                              Com1 = 1 : Com2 = 0 : Com3 = 0 : Com4 = 0 : Com_dot = 0
                              Temp = _hour \ 10 : Call Send
                              Com1 = 0 : Com2 = 1 : Com3 = 0 : Com4 = 0 : Com_dot = 0
                              Temp = _hour Mod 10 : Call Send
                              Com1 = 0 : Com2 = 0 : Com3 = 1 : Com4 = 0 : Com_dot = 0
                              Temp = _min \ 10 : Call Send
                              Com1 = 0 : Com2 = 0 : Com3 = 0 : Com4 = 1 : Com_dot = 0
                              Temp = _min Mod 10 : Call Send
                              Com1 = 0 : Com2 = 0 : Com3 = 0 : Com4 = 0 : Com_dot = 1
                              Point_up = Sec_blink
                              Waitms 2
                              Point_up = 1
                              ' }Show Time

                              End If

                              End Sub

                              ' ijade menu {
                              Sub Refreshtime
                              Gosub Getdatetime
                              If Temp_clock >= 0 And Temp_clock <= 26 Then
                              Com1 = 1 : Com2 = 0 : Com3 = 0 : Com4 = 0 : Com_dot = 0
                              Temp = _hour \ 10 : Call Send
                              Com1 = 0 : Com2 = 1 : Com3 = 0 : Com4 = 0 : Com_dot = 0
                              Temp = _hour Mod 10 : Call Send
                              Com1 = 0 : Com2 = 0 : Com3 = 1 : Com4 = 0 : Com_dot = 0
                              Temp = _min \ 10 : Call Send
                              Com1 = 0 : Com2 = 0 : Com3 = 0 : Com4 = 1 : Com_dot = 0
                              Temp = _min Mod 10 : Call Send
                              Com1 = 0 : Com2 = 0 : Com3 = 0 : Com4 = 0 : Com_dot = 1
                              Point_up = Sec_blink
                              Waitms 2
                              Point_up = 1
                              End If
                              End Sub

                              Sub Refreshdate
                              Gosub Getdatetime
                              If Temp_clock >= 0 And Temp_clock <= 26 Then
                              Com1 = 1 : Com2 = 0 : Com3 = 0 : Com4 = 0 : Com_dot = 0
                              Temp = _month \ 10 : Call Send
                              Com1 = 0 : Com2 = 1 : Com3 = 0 : Com4 = 0 : Com_dot = 0
                              Temp = _month Mod 10 : Call Send
                              Com1 = 0 : Com2 = 0 : Com3 = 1 : Com4 = 0 : Com_dot = 0
                              Temp = _day \ 10 : Call Send
                              Com1 = 0 : Com2 = 0 : Com3 = 0 : Com4 = 1 : Com_dot = 0
                              Temp = _day Mod 10 : Call Send
                              Com1 = 0 : Com2 = 1 : Com3 = 0 : Com4 = 0 : Com_dot = 0
                              Point_dn = 0
                              Waitms 2
                              Point_dn = 1
                              End If
                              End Sub
                              ' } ijade menu

                              Sub Send
                              Select Case Temp
                              Case 0:
                              Seg_a = 0
                              Seg_b = 0
                              Seg_c = 0
                              Seg_d = 0
                              Seg_e = 0
                              Seg_f = 0
                              Seg_g = 1
                              Case 1:
                              Seg_a = 1
                              Seg_b = 0
                              Seg_c = 0
                              Seg_d = 1
                              Seg_e = 1
                              Seg_f = 1
                              Seg_g = 1
                              Case 2:
                              Seg_a = 0
                              Seg_b = 0
                              Seg_c = 1
                              Seg_d = 0
                              Seg_e = 0
                              Seg_f = 1
                              Seg_g = 0
                              Case 3:
                              Seg_a = 0
                              Seg_b = 0
                              Seg_c = 0
                              Seg_d = 0
                              Seg_e = 1
                              Seg_f = 1
                              Seg_g = 0
                              Case 4:
                              Seg_a = 1
                              Seg_b = 0
                              Seg_c = 0
                              Seg_d = 1
                              Seg_e = 1
                              Seg_f = 0
                              Seg_g = 0
                              Case 5:
                              Seg_a = 0
                              Seg_b = 1
                              Seg_c = 0
                              Seg_d = 0
                              Seg_e = 1
                              Seg_f = 0
                              Seg_g = 0
                              Case 6:
                              Seg_a = 0
                              Seg_b = 1
                              Seg_c = 0
                              Seg_d = 0
                              Seg_e = 0
                              Seg_f = 0
                              Seg_g = 0
                              Case 7:
                              Seg_a = 0
                              Seg_b = 0
                              Seg_c = 0
                              Seg_d = 1
                              Seg_e = 1
                              Seg_f = 1
                              Seg_g = 1
                              Case 8:
                              Seg_a = 0
                              Seg_b = 0
                              Seg_c = 0
                              Seg_d = 0
                              Seg_e = 0
                              Seg_f = 0
                              Seg_g = 0
                              Case 9:
                              Seg_a = 0
                              Seg_b = 0
                              Seg_c = 0
                              Seg_d = 0
                              Seg_e = 1
                              Seg_f = 0
                              Seg_g = 0
                              Case 10:
                              'C
                              Seg_a = 0
                              Seg_b = 1
                              Seg_c = 1
                              Seg_d = 0
                              Seg_e = 0
                              Seg_f = 0
                              Seg_g = 1
                              End Select

                              '============================================ ===========================
                              For X = 0 To 255
                              Waitus 7
                              If X = Photocell Then Exit For
                              Next
                              '============================================ ===========================

                              Seg_a = 1
                              Seg_b = 1
                              Seg_c = 1
                              Seg_d = 1
                              Seg_e = 1
                              Seg_f = 1
                              Seg_g = 1

                              '============================================ ===========================
                              For X = X To 255
                              Waitus 7
                              Next
                              '============================================ ===========================

                              End Sub

                              Ov1:
                              Timer1 = 34276
                              Toggle Sec_blink
                              Incr Temp_clock
                              If Temp_clock > 26 Then Temp_clock = 0 ' modate namayesh saat - tarikh ha - dama

                              '============================================ ===========================
                              X2 = Getadc(7) / 4
                              Photocell = 255 - X2
                              '============================================ ===========================

                              Return

                              ' DS1307 {
                              Getdatetime:
                              I2cstart ' Generate start code
                              I2cwbyte Ds1307w ' send address
                              I2cwbyte 0 ' start address in 1307

                              I2cstart ' Generate start code
                              I2cwbyte Ds1307r ' send address
                              I2crbyte _sec , Ack
                              I2crbyte _min , Ack ' MINUTES
                              I2crbyte _hour , Ack ' Hours
                              I2crbyte Weekday , Ack ' Day of Week
                              I2crbyte _day , Ack ' Day of Month
                              I2crbyte _month , Ack ' Month of Year
                              I2crbyte _year , Nack ' Year
                              I2cstop
                              _sec = Makedec(_sec) : _min = Makedec(_min) : _hour = Makedec(_hour)
                              _day = Makedec(_day) : _month = Makedec(_month) : _year = Makedec(_year)
                              Return

                              Setdate:
                              _day = Makebcd(_day) : _month = Makebcd(_month) : _year = Makebcd(_year)
                              I2cstart ' Generate start code
                              I2cwbyte Ds1307w ' send address
                              I2cwbyte 4 ' starting address in 1307
                              I2cwbyte _day ' Send Data to SECONDS
                              I2cwbyte _month ' MINUTES
                              I2cwbyte _year ' Hours
                              I2cstop
                              Return

                              Settime:
                              _sec = Makebcd(_sec) : _min = Makebcd(_min) : _hour = Makebcd(_hour)
                              I2cstart ' Generate start code
                              I2cwbyte Ds1307w ' send address
                              I2cwbyte 0 ' starting address in 1307
                              I2cwbyte _sec ' Send Data to SECONDS
                              I2cwbyte _min ' MINUTES
                              I2cwbyte _hour ' Hours
                              I2cstop
                              Return
                              ' } DS1307

                              Sub Keyscan
                              ' Date and time setting in menu mode {
                              If Hour_month_key = 0 And Kelid2 = 0 Then
                              Kelid2 = 1
                              If Menu1 = 1 And Menu2 = 0 Then Incr _hour
                              If _hour > 23 Then _hour = 0
                              If Menu1 = 1 And Menu2 = 1 Then Incr _month
                              If _month > 12 Then _month = 1
                              Gosub Setdate
                              Gosub Settime
                              End If

                              If Min_day_key = 0 And Kelid3 = 0 Then
                              Kelid3 = 1
                              If Menu1 = 1 And Menu2 = 0 Then Incr _min
                              If _min > 59 Then _min = 0
                              If Menu1 = 1 And Menu2 = 1 Then Incr _day
                              If _day > 31 Then _day = 1
                              Gosub Settime
                              Gosub Setdate
                              End If
                              ' } Date and time setting in menu mode

                              ' marboot be menu ( entekhabe halat ) {
                              If Menu_key = 0 And Menu1 = 0 And Kelid = 0 Then
                              Kelid = 1
                              Menu1 = 1
                              Menu2 = 0
                              Call Wait4keytime
                              End If

                              If Menu_key = 0 And Menu1 = 1 And Menu2 = 0 And Kelid = 0 Then
                              Kelid = 1
                              Menu2 = 1
                              Call Wait4keydate
                              End If

                              If Menu_key = 0 And Menu1 = 1 And Menu2 = 1 And Kelid = 0 Then
                              Kelid = 1
                              Menu1 = 0
                              Menu2 = 0
                              Call Wait4key
                              End If



                              If Menu_key <> 0 Then
                              Kelid = 0
                              End If

                              If Hour_month_key <> 0 Then
                              Kelid2 = 0
                              End If

                              If Min_day_key <> 0 Then
                              Kelid3 = 0
                              End If
                              ' } marboot be menu ( entekhabe halat )

                              End Sub
                              '-----------------------
                              '-----------------------
                              '-----------------------
                              Sub Wait4key
                              Do
                              Call Refresh
                              Call Keyscan
                              Loop
                              End Sub
                              '-----------------------
                              Sub Wait4keytime
                              Do
                              Call Refreshtime
                              Call Keyscan
                              Loop
                              End Sub
                              '-----------------------
                              Sub Wait4keydate
                              Do
                              Call Refreshdate
                              Call Keyscan
                              Loop
                              End Sub
                              [/code]

                              با سپاس ...
                              [b]چگونه همه پایه های میکروکنترلر AVR را PWM کنیم؟
                              معرفی نرم افزارEasy 7segment (برای راه اندازی آسانتر 7segment )
                              معرفی نرم افزار Codewizard PWM
                              با من بیشتر آشنا شوید

                              دیدگاه


                                پاسخ : [پروژه] ساعت دقیق (باDS1307) + تاریخ (شمسی,میل&#157

                                سلام دوستان
                                من کلیدها با ADC تست کردم، و چون مقاومت 10 کیلو 1 درصد نداشتم و 5 درصد گذاشتم درست کار نمیکنه کلیدها
                                یکی از دوستان با 1 درصد تست کنه، امروز فردا خودم با مقاومت 5 درصد ست میکنم اگر وقت کردم
                                راستی تو برنامه ای که من گذاشتم و کلیدهارو تغییر دادم، در قسمتی که پورتهارو ورودی یا خروجی شده اون موقع یادم رفت PORTB.0 رو خروجی و PORTC.0 هم ورودی کنم، خودتون اینکارو انجام بدید.
                                وصل کردن تمام کلیدها به یک ADC به نظر من از نظر محاسبه ای خیلی سخته چون بجز مقاومت منبع تغذیه مدار 5 ولت ثابت نیست و در خواندن ورودی و بررسیش توسط شرط اختلال ایجاد میشه، مگر اینکه روشه دیگه ای باشه که تغذیه روی خواندن تاثیر نذاره
                                حالا دوباره با زنر به جای مقاومت هم تست میکنم ببینم حل میشه یا نه

                                اضافه شده در تاریخ :
                                سلام دوباره
                                آقا وحید ببخشید در مورد pcb 7سگمنت BQ-M362RD-A هم سوال داشتم
                                توی مدار من tp دماسنج روشن نمیشه یعنی موقع نشون دادن دما tp روشن نمیشه
                                توی pcb دو تا جا پایه گذاشتید یکیش پایه 16 7سگمنت و یکی هم پایه 9، اینا باید جامپر بزنیم؟
                                این دو پایه رو میگم :

                                دیدگاه

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