ورود به حساب ثبت نام جدید فراموشی کلمه عبور
برای ورود به حساب کاربری خود، نام کاربری و کلمه عبورتان را در زیر وارد کرده و روی «ورود به سایت» کلیک کنید.





اگر فرم ورود برای شما نمایش داده نمیشود، اینجا را کلیک کنید.









اگر فرم ثبت نام برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.









اگر فرم بازیابی کلمه عبور برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.





کاربران برچسب زده شده

صفحه 7 از 25 نخست 1234567891011121314151617 ... آخرین
نمایش نتایج: از 61 به 70 از 246
  1. #61
    2010/08/15
    تهران
    1,032
    232

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

    نقل قول نوشته اصلی توسط hamidelectroniic
    يک سوال، اون کليد که بايد يک بار فقط وصل باشه درست متوجه نشدم، يعني هر بار که مدار رو روشن کرديم يک بار بايد روشن باشه؟ اگر اينطوري باشه ميشه اونو به پورت يکي از سويچها وصل کرد و يک پورت خالي ديگه داشته باشيم...
    سلام ، فکر کنم درست توضيح ندادم ...
    اون کليد فقط براي مقدار دهي اوليه تاريخ و ساعت به کار ميره و فقط و فقط بايد اولين زماني که مدار رو ميخواهيم روشن کنيم وصل شده باشه ، بعد بايد اتصال باز بشه تا زماني که باطري بکاپ تموم بشه و مدار هم از منبع جدا بشه اونوقت بايد دوباره مدار رو راه اندازي کنيم ...

    اضافه شده در تاریخ :
    [shadow=red,left]93.10.22
    شروع برنامه نويسي پروژه به زبان C :
    افزودن برخي امکانات + اضافه شدن ورودي تاريخ شمسي[/shadow]
    - اَللّهُمَّ عَجِّل لِوَليِّکَ الفَرَج -
    ارتباط با من : Hidden Content
    Hidden Content
  2. #62
    2012/12/27
    شهر راز (شیراز)
    1,733
    97

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

    درود بر ایرانیان
    آقا من تغییراتی در کد دادم و کاملا مشخص هست که کدوم قسمتها را تغییر دادم
    از اونجایی که این سون سگمنت ساعتی مخصوص نتونستم جور کنم فقط تونستم با همون سون سگمنتی که قبلا از تهران خرید کرده بودم کار کنم
    و برنامه من هم با کدویژن و بدون آی سی ساعت DS1307 هست ولی هدف این هست که یه سنسور فتوسل بگذاریم و نور سون سگمنتها را با توجه به نور محیط کنترل کنیم ...
    دوستانی که مدار را با BQ-M362RD-A ساخته اند برنامه ای که میگذارم امتحان کنند تا ببینم مشکلی داره یا نه ...
    [code=vb]'******************************************** ***********************************
    '* 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]
    این هم مدارش

    مقدار خازن هم 100نانو خوبه نگذاشتین هم مهم نیست ... ولی باشه بهتره ...

    فقط یه چیزی ...
    چون پایه ADC خالی نداشتیم فعلا کانال 7 گذاشتم که باید خودتون برنامه را اصلاح کنید ...
    کد:
    Photocell = Getadc(7) / 4
    این هم فیلم گرفته شده از مدار من ...
    http://s5.picofile.com/file/8163421000/Photocell_7segment.mp4.html
    اگر بد شده به بزرگواری خودتون ببخشید ...

    پیروز باد ایرانیان

    برنامه در تاریخ 1393/11/07 ویرایش شد
  3. #63
    2012/12/30
    کرمان
    1,119
    57

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

    مثل هميشه عالي است سامان
  4. #64
    2014/11/08
    441
    86

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

    سلام
    وای تو این سفارش آخرم یادم رفت فتوسل بگیرم :(
    خب من فعلا چند قطعه از مدار ساعتم نرسیده واسه همین نتونستم تغییری بدم و تست کنم
    برای همین روی یک LCD کم کردن کلیدهارو تست کردم
    خب بجای کدهای مربوط به کلید Dip_key کدهای زیر بنویسیم، اینجوری یک پورت باز داریم و هم جای کمتر میگیره و کلید اضافه نمیزاریم :
    [code=vb]' Tanzime meghdare avaliye sa@ va tarikh {
    If Min_day_key = 0 And Hour_month_key = 0 Then
    Time$ = "20:00:00"
    Date$ = "12-29-14" ' 29 december 2014
    End If
    ' } Tanzime meghdare avaliye sa@ va tarikh[/code]
    اینجوری انجام میدیم :
    قبل وصل کردن تغذیه مدار، دو کلید متصل به PORTD.6 و PORTD.7 همزمان پایین نگه میداریم و سپس تغذیه مدار در همین حالت وصل میکنیم و بعد چند ثانیه کلیدهارو رها میکنیم
    حالا فعلا دوستان تست کنند ببینند جواب میده، سفارشم برسه هم اینو تست میکنم هم PIR و دوباره کم کردن یک کلید دیگه اگر بشه

    اضافه شده در تاریخ : 24 دي 1393 - 01:08:30
    سلام دوباره
    این کد اصلاح شده مربوط به کلید Dip_key هست که فکر کنم هیچ مشکلی نداره دیگه :
    [code=vb]' Tanzime meghdare avaliye sa@ va tarikh {
    If Min_day_key = 0 And Hour_month_key = 0 Then
    Time$ = "20:00:00"
    Date$ = "12-29-14" ' 29 december 2014
    While Pind.7 = 0 : Wend
    While Pinb.6 = 0 : Wend
    End If
    ' } Tanzime meghdare avaliye sa@ va tarikh[/code]
    فقط حتما باید قبل اینکه تغذیه مدار وصل کنیم دو کلید رو پایین نگه داریم و تغذیه وصل کنیم و چند ثانیه بعد از وصل کردن تغذیه کلیدهارو رها کنیم.
  5. #65
    2010/08/15
    تهران
    1,032
    232

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

    نقل قول نوشته اصلی توسط hamidelectroniic
    اين کد اصلاح شده مربوط به کليد Dip_key هست که فکر کنم هيچ مشکلي نداره ديگه :
    [code=vb]' Tanzime meghdare avaliye sa@ va tarikh {
    If Min_day_key = 0 And Hour_month_key = 0 Then
    Time$ = "20:00:00"
    Date$ = "12-29-14" ' 29 december 2014
    While Pind.7 = 1 : Wend
    While Pinb.6 = 1 : Wend
    End If
    ' } Tanzime meghdare avaliye sa@ va tarikh[/code]
    فقط حتما بايد قبل اينکه تغذيه مدار وصل کنيم دو کليد رو پايين نگه داريم و تغذيه وصل کنيم و چند ثانيه بعد از وصل کردن تغذيه کليدهارو رها کنيم.
    سلام ، دوست عزيز من دليل تغيير کد قبليتون رو متوجه نشدم ، ممنون ميشم بيشتر توضيح بديد ...

    آقا سامان شما هم لطف کنيد بيشتر در مورد کدهاتون توضيح بديد ، روند کلي رو متوجه نشدم ...
    باتشکر
    - اَللّهُمَّ عَجِّل لِوَليِّکَ الفَرَج -
    ارتباط با من : Hidden Content
    Hidden Content
  6. #66
    2014/11/08
    441
    86

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

    نقل قول نوشته اصلی توسط ir02x6
    سلام ، دوست عزيز من دليل تغيير کد قبليتون رو متوجه نشدم ، ممنون ميشم بيشتر توضيح بديد ...

    آقا سامان شما هم لطف کنيد بيشتر در مورد کدهاتون توضيح بديد ، روند کلي رو متوجه نشدم ...
    باتشکر
    سلام
    کد قبلی مشکلش این بود که، در دستورات دیگه اختلال ایجاد میکرد، یعنی وقتی ما دو کلید با هم فشار میدیم هم شرط قبلی که گذاشتم اجرا میشد هم شرط مربوط به دو کلید Min_day_key و Hour_month_key اجرا میشدند. یعنی شرط های زیر هم با شرط قبلی اجرا میشدند :
    [code=vb]' 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[/code]
    و :
    [code=vb] If Hour_month_key <> 0 Then
    Kelid2 = 0
    End If

    If Min_day_key <> 0 Then
    Kelid3 = 0
    End If[/code]

    اما در کد جدید که از حلقه While استفاده شده میاد بررسی میکنه اگر دو کلید پایین باشن و وصل باشن ادامه برنامه اجرا نمیشه و تا وقتی دو کلید رها نکنیم به ادامه برنامه نمیره (در پست قبلیم اشتباهی Pind.7 = 1 و Pind.6 = 1 نوشتم، فکر کردم ورودی هستتند پورتها اما خروجی هستند و باید مساوی 0 باشند) :
    [code=vb]While Pind.7 = 0 : Wend
    While Pinb.6 = 0 : Wend[/code]
    این دو خط هم میشه اینجوری هم بنویسیم :
    [code=vb]While Min_day_key = 0 : Wend
    While Hour_month_key = 0 : Wend[/code]
  7. #67
    2012/12/27
    شهر راز (شیراز)
    1,733
    97

    پاسخ : پاسخ : پاسخ : [پروژه] ساعت دقيق (باDS1307) + تاري&#

    نقل قول نوشته اصلی توسط ir02x6
    آقا سامان شما هم لطف کنيد بيشتر در مورد کدهاتون توضيح بديد ، روند کلي رو متوجه نشدم ...
    درود
    به روی چشم آقای اسدی
    تغییرات خاصی ندادم ...
    دو تا متغیر تعریف کردم ...
    [code=vb]'============================================ ===========================
    DIM Photocell AS Byte , X AS Byte , X2 AS Word 'for photocell
    '============================================ ===========================[/code]
    از طریق یکی از کانالهای ADC شدت نور تابیده شده بر روی حسگر فتوسل اندازه گیری میشود و بعد مکمل گیری هم کردم ...
    با دستور NOT هم میشه مکمل گیری کرد ...
    دلیل اینکه مکمل گیری کردم این هست که موقعی که نور به حسگر تابیده میشود عدد خوانده شده از ADC به صفر نزدیکتر است ...
    پس باید شدت نور نمایشگر بیشتر باشد ...
    [code=vb]'============================================ ===========================
    X2 = Getadc(7) / 4
    Photocell = 255 - X2
    '============================================ ===========================[/code]
    توی زیر برنامه Sub Send که وظیفه آن نمایش اعداد و علایم روی نمایشگر 7segment هست یک سری تغییراتی دادم ...
    ببینید دوستان برای نمایش دادن باید ابتدا پورت را مساوی یک عددی کنیم که نمایش بده و بعد تاخیر و بعد همه پایه های پورت را صفر یا یک میکنیم که خاموش بشه ...
    حالا ما برای اینکه بخواهیم شدت نور صفحه نمایشگر 7Segment را کم یا زیاد کنیم باید ابتدا یک زمانی را در نظر بگیریم مثلا اگر همان زمان تاخیر 2 میلی ثانیه باشد و آن را به 256 قسمت کنیم حدودا میشه 7.8 میکرو ثانیه ...
    حالا اگر ما بیایم به جای اینکه 2 میلی ثانیه تاخیر ایجاد کنیم به اندازه چند تا 7.8 میکرو ثانیه تاخیر در روشن و به اندازه 255 منهای اون چندتا 7.8 میکروثانیه تاخیر در خاموش ماندن نمایشگر ایجاد کنیم ...
    به عبارت بهتر بگم که میخوایم یه PWM مصنوعی درست کنیم یا اینکه PWM نرم افزاری درست کنیم ...
    یه مثال میزنم که بهتر متوجه بشوید ...
    مثلا عدد خوانده شده از ADC توسط حسگر فتوسل 150 است ...
    255-150=105
    پس باید به اندازه 150 ضرب در 7.8 میکروثانیه تاخیر در روشن بودن ایجاد شود که باید کد زیر ایجاد شود
    [code=vb]'============================================ ===========================
    For X = 0 To 255
    Waitus 7
    If X = Photocell Then Exit For
    Next
    '============================================ ===========================[/code]
    به جای کد بالا قبلا 2 میلی ثانیه بود که به جای اون این را نوشتم ...
    و بعد خاموش
    [code=vb] Seg_a = 1
    Seg_b = 1
    Seg_c = 1
    Seg_d = 1
    Seg_e = 1
    Seg_f = 1
    Seg_g = 1[/code]
    و به اندازه 105 ضرب در 7.8 میکروثانیه تاخیر در خاموش ماندن ایجاد گردد
    [code=vb]'============================================ ===========================
    For X = X To 255
    Waitus 7
    Next
    '============================================ ===========================[/code]
    دلیل اینکه 7 میکروثانیه گذاشتم این بود که 0.8 میکروثانیه را گذاشتم برای تاخیر در اجرای دستورات ... البته بیشتر میشه ولی دیگه همین خوبه ...

    خوب حالا رسیدیم به مدار :
    مداری که گذاشتم تحلیلش خیلی سادست ...
    از اونجایی که در مدار ساعت دیجیتالی یک سنسور دمای LM35 و از ولتاژ مرجع داخلی 2.56 ولت به کار رفته باید مدار را طوری طراحی کنیم که از حد 2.56 ولت بیشتر نشود ...
    با یک تقسیم ولتاژ بسیار ساده میتوان به این مدار دست پیدا کرد یعنی دو مقاومت سری شده مساوی (10کیلو اهم)
    حالا طرز کارکرد حسگر فتوسل به این صورت است که در تاریکی مطلق مقاومت آن به بالای 500 کیلو اهم میرسد و در زمان روشنایی کامل مقاومت آن به صفر نزدیکتر میشود ...
    حالا باید این حسگر را با مقاومت 10 کیلوی پایینی موازی کنیم که ولتاژ نقطه وسط بین 0 تا 2.5 ولت تغییر پیدا کند ...
    برای تنظیم کردن آن هم از یک پتانسیومتر استفاده شده که باید آن را به جای مقاومت پایینی 10 کیلو قرار داد ...
    برای تثبیت ولتاژ باید یک خازن را موازی با فتوسل گذاشت تا ناگهان ولتاژ آن تغییر نکند ...
    برای جلوگیری از پردازش در خواندن ADC روی تایمر تنظیم شده هر نیم ثانیه یکبار از روی حسگر خوانده میشود ...
    [code=vb]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[/code]

    دیگه ... فکر نکنم چیزی را جا انداخته باشم ...

    پیروزباد ایرانیان

    برنامه در تاریخ 1393/11/07 ویرایش شد
  8. #68
    2010/08/15
    تهران
    1,032
    232

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

    نقل قول نوشته اصلی توسط hamidelectroniic
    کد قبلي مشکلش اين بود که، در دستورات ديگه اختلال ايجاد ميکرد، يعني وقتي ما دو کليد با هم فشار ميديم هم شرط قبلي که گذاشتم اجرا ميشد هم شرط مربوط به دو کليد Min_day_key و Hour_month_key اجرا ميشدند. يعني شرط هاي زير هم با شرط قبلي اجرا ميشدند :
    سلام ممنون بابت توضيحات اما فکر کنم کد اول هم به درستي کار کنه ، چرا ؟ چون وقتي مدار به برق زده ميشه فقط يک بار دستورات مربوط به تنظيمات اوليه چک ميشه ، و بعد از اينکه مدار تو لوپ اصلي بيفته ديگه فشار دادن باهم اون کليد ها هيچ تاثيري نخواهد داشت ...
    ضمنا کليد هاي Hour_month_key و Min_day_key فقط و فقط هنگامي که مدار در حالت هاي منو ( تنظيم ساعت و تاريخ باشه ) عمل ميکنن ، و در حالت عادي فشردن تک تک يا با هم آنها تاثيري نداره ...
    اما از ايدتون واقعا خوشم اومد ، احتمالا بشه با ترکيب کليد ها کار هاي ديگري هم کرد.

    نقل قول نوشته اصلی توسط سامان اسدي
    ديگه ... فکر نکنم چيزي را جا انداخته باشم ...
    ممنون دوست عزيز ، ديگه تو PWM صاحب سبک شدي شما :job:
    - اَللّهُمَّ عَجِّل لِوَليِّکَ الفَرَج -
    ارتباط با من : Hidden Content
    Hidden Content
  9. #69
    2012/12/27
    شهر راز (شیراز)
    1,733
    97

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

    نقل قول نوشته اصلی توسط ir02x6
    ممنون دوست عزيز ، ديگه تو PWM صاحب سبک شدي شما :job:
    خواهش میکنم ... اختیار دارید دوست خوبم ...
    همین الان مدرک PHD در رشته PWM رو بدید برم :mrgreen:
    راستی نظرتون درباره اینکه همه کلیدها رو از یک کانال ADC بگیریم چیه ؟؟
    اینطوری

    آقا یه سوال :
    کسی برنامه من رو امتحان نکرده ؟؟
  10. #70
    2014/11/08
    441
    86

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

    نقل قول نوشته اصلی توسط ir02x6
    سلام ممنون بابت توضيحات اما فکر کنم کد اول هم به درستي کار کنه ، چرا ؟ چون وقتي مدار به برق زده ميشه فقط يک بار دستورات مربوط به تنظيمات اوليه چک ميشه ، و بعد از اينکه مدار تو لوپ اصلي بيفته ديگه فشار دادن باهم اون کليد ها هيچ تاثيري نخواهد داشت ...
    ضمنا کليد هاي Hour_month_key و Min_day_key فقط و فقط هنگامي که مدار در حالت هاي منو ( تنظيم ساعت و تاريخ باشه ) عمل ميکنن ، و در حالت عادي فشردن تک تک يا با هم آنها تاثيري نداره ...
    اما از ايدتون واقعا خوشم اومد ، احتمالا بشه با ترکيب کليد ها کار هاي ديگري هم کرد.
    ممنون دوست عزيز ، ديگه تو PWM صاحب سبک شدي شما :job:
    بله حق با شماست، من برنامه رو دقیق نخوندم و فکر کردم بصورت جدا کار میکنند، اینجوری که این دو کلید بعد زدن کلید منو کار میکنند کد اولی هم کار میکنه
    اما یک مشکل میتونه به وجود بیاد
    اینکه بعد وصل کردن تغذیه مدار اگر دو کلید زیاد نگه داریم پشت سر هم شرط اجرا میشه و دو متغییر ساعت و تاریخ پی در پی مساوی با رشته مورد نظر میشه که این کار در LCD باعث نامنظم شدن نوشته رو LCD میشه اما در 7 سگمن تست نکردم و شاید اینجوری نباشه
    ایده هم مال مهندس سامان اسدی عزیز هستش و ایشون برای یک برنامه کمک کردند و این روش حلقه While بهم گقتند
    بله میشه کلیدهارو ترکیب کرد، مثلا کار کلید منو و کلید Min_day_key توسط یک کلید انجام بشه، (یعنی کلا 2 کلید داشته باشیم،به عنوان مثال یکی برای منو و Min_day_key و یکی هم برای Hour_month_key) این کار رو تو برنامه ی دیگه ای انجام دادم و شده.
    و همونطور که مهندس اسدی گفتند میتونیم هردو کلید هم به یک ADC وصل کنیم...
    اگر کسی اینجوری بهتر میدونه من روش کار کنم و دو کلیده کنم با استفاده از یک ADC
صفحه 7 از 25 نخست 1234567891011121314151617 ... آخرین
نمایش نتایج: از 61 به 70 از 246

موضوعات مشابه

  1. سورس تبديل تاريخ ميلادي، هجري و شمسي به يكديگر
    توسط radshid در انجمن سایر مطالب مرتبط با ميکرو ها و پروسسورها
    پاسخ: 4
    آخرين نوشته: 2018/04/30, 16:53
  2. پاسخ: 6
    آخرين نوشته: 2016/06/13, 09:28
  3. دانلود پروژه برنامه ساعت با مبدل شمسي به ميلادي و برعکس با PCF8586
    توسط شاهرخ مستقیمی در انجمن میکروکنترلرهای PIC
    پاسخ: 3
    آخرين نوشته: 2014/07/14, 19:41
  4. برنامه تبديل تاريخ ميلادي به شمسي با ds1307 به زبان بيس(کمک)
    توسط کوروش22 در انجمن میکروکنترلرهای AVR
    پاسخ: 10
    آخرين نوشته: 2014/07/10, 20:10
  5. تبديل تاريخ ميلادي به شمسي ds1307
    توسط r.p در انجمن میکروکنترلرهای AVR
    پاسخ: 9
    آخرين نوشته: 2009/10/19, 08:39

کلمات کلیدی این موضوع

علاقه مندي ها (Bookmarks)

علاقه مندي ها (Bookmarks)

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •