اطلاعیه

Collapse
No announcement yet.

مشکل در برنامه بسکام

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

    مشکل در برنامه بسکام

    سلام دوستان به کمک فوریتون نیاز دارم مرسی
    من PCB مدار کنترل رله و المنت رو درست کردم متاسفانه طراحیم مشکل داشته و الان تو بازه دمایی که نباید هیچکدوم روشن باشن جفتشون با هم روشنن
    کجای برنامه رو تغییر بدم که این اشتباهم رو حل کنه
    درضمن جای فن و المنت LED استفاده کردم ممنونم از همتون.

    اینم برنامه:
    کد:
    $regfile = "m8def.dat"
    $crystal = 1000000
    
    Config Lcdpin = Pin , Db7 = Portb.0 , Db6 = Portd.7 , Db5 = Portd.6 , Db4 = Portd.5 , E = Portb.7 , Rs = Portb.6
    Config Lcd = 16 * 2
    Config 1wire = Portc.0
    Config Pind.0 = Output
    Config Pind.1 = Output
    
    Dim Byte0 As Byte
    Dim Byte1 As Byte
    Dim Sign As String * 1
    Dim T As String * 4
    Dim T1 As Single
    Dim T2 As Single
    Dim L As Single
    Dim H As Single
    Dim Ll As String * 4
    Dim Hh As String * 4
    
    Cls
    
    Cursor Off
    
    Dim A As Single
    Dim B As String * 5
    Dim C As Word
    
    Lcd "--->A<---"
    Locate 2 , 1
    Lcd "--->R<---"
    Wait 3
    
    Cls
    
    L = 27.4
    H = 37.7
    Ll = Fusing(l , "#.#")
    Hh = Fusing(h , "#.#")
    
    Do
    1wreset
    Waitms 100
    If Err = 1 Then
       Cls
       Lcd "No DS18B20"
       Wait 1
      Else
       1wwrite &HCC
       1wwrite &H44
       1wreset
       1wwrite &HCC
       1wwrite &HBE
       Byte0 = 1wread()
       Byte1 = 1wread()
    
      If Byte1 > 248 Then
       Byte0 = &HFF - Byte0
       Byte1 = &HFF - Byte1
       Sign = "-"
      Else
       Sign = "+"
      End If
    
      T1 = Byte0 / 16
      T2 = Byte1 * 16
      T1 = T1 + T2
    
    
      If Sign = "-" Then
       T1 = T1 + 1
      End If
    
      If Sign = "+" And T1 = 0 Then
       Sign = " "
      End If
    
      T = Fusing(t1 , "#.&&")
    
      Home
      Cls
      Lcd "   " ; Sign ; T ; Chr(223) ; "C" ; "   "
      Locate 2 , 1
      Lcd "L" ; Ll ; "   H" ; Hh
      Waitms 500
    End If
    
    Deflcdchar 1 , 31 , 28 , 29 , 29 , 13 , 19 , 27 , 27
    
    
    If T1 > L And T1 < H Then
      Locate 2 , 9
      Lcd Chr(1)
    End If
    
    If T1 < L Then
      Locate 2 , 7
      Lcd "<--"
      Set Portd.1
      Waitms 250
      Else
      Reset Portd.1
      Waitms 250
    End If
    
    If T1 > H Then
      Locate 2 , 8
      Lcd "-->"
      Set Portd.0
      Waitms 100
      Else
      Reset Portd.0
      Waitms 100
    End If
    
    Loop
    
    End                             'end program

    #2
    پاسخ : مشکل در برنامه بسکام

    سلام
    اینو یه امتحان بکن
    چرا خروجی ها رو پین تعریف کرده بودی؟

    من عملکردشو برعکس کردم اگه کار نکنه دیگه باید پی سی بی رو از اول بزنی
    موفق باشی

    کد:
    $regfile = "m8def.dat"
    $crystal = 1000000
    
    Config Lcdpin = Pin , Db7 = Portb.0 , Db6 = Portd.7 , Db5 = Portd.6 , Db4 = Portd.5 , E = Portb.7 , Rs = Portb.6
    Config Lcd = 16 * 2
    Config 1wire = Portc.0
    Config Portd.0 = Output
    Config Portd.1 = Output
    
    Dim Byte0 As Byte
    Dim Byte1 As Byte
    Dim Sign As String * 1
    Dim T As String * 4
    Dim T1 As Single
    Dim T2 As Single
    Dim L As Single
    Dim H As Single
    Dim Ll As String * 4
    Dim Hh As String * 4
    
    Cls
    
    Cursor Off
    
    Dim A As Single
    Dim B As String * 5
    Dim C As Word
    
    Lcd "--->A<---"
    Locate 2 , 1
    Lcd "--->R<---"
    Wait 3
    
    Cls
    
    L = 27.4
    H = 37.7
    Ll = Fusing(l , "#.#")
    Hh = Fusing(h , "#.#")
    
    Do
    1wreset
    Waitms 100
    If Err = 1 Then
       Cls
       Lcd "No DS18B20"
       Wait 1
      Else
       1wwrite &HCC
       1wwrite &H44
       1wreset
       1wwrite &HCC
       1wwrite &HBE
       Byte0 = 1wread()
       Byte1 = 1wread()
    
      If Byte1 > 248 Then
       Byte0 = &HFF - Byte0
       Byte1 = &HFF - Byte1
       Sign = "-"
      Else
       Sign = "+"
      End If
    
      T1 = Byte0 / 16
      T2 = Byte1 * 16
      T1 = T1 + T2
    
    
      If Sign = "-" Then
       T1 = T1 + 1
      End If
    
      If Sign = "+" And T1 = 0 Then
       Sign = " "
      End If
    
      T = Fusing(t1 , "#.&&")
    
      Home
      Cls
      Lcd "   " ; Sign ; T ; Chr(223) ; "C" ; "   "
      Locate 2 , 1
      Lcd "L" ; Ll ; "   H" ; Hh
      Waitms 500
    End If
    
    Deflcdchar 1 , 31 , 28 , 29 , 29 , 13 , 19 , 27 , 27
    
    
    If T1 > L And T1 < H Then
      Locate 2 , 9
      Lcd Chr(1)
    End If
    
    If T1 < L Then
      Locate 2 , 7
      Lcd "<--"
     Reset Portd.1
      Waitms 250
      Else
      Set Portd.1
      Waitms 250
    End If
    
    If T1 > H Then
      Locate 2 , 8
      Lcd "-->"
      Reset Portd.0
      Waitms 100
      Else
      Set Portd.0
      Waitms 100
    End If
    
    Loop
    
    End
    برد جوجه کشی:
    مطالعه پست 1 (حتما مطالعه کنید)


    مطالعه پست 2 (برای مطلع شدن از تغییرات برنامه مطالعه کنید)

    دانلود

    توجه:
    این برد نیمه صنعتی و خانگی هست...
    برای صنعتی شدن حتما برد مخصوص خودتون رو بزنید...

    آی دی کانال تلگرامی مربوط به برد جوجه کشی : electr0o0nic@

    دیدگاه


      #3
      پاسخ : مشکل در برنامه بسکام

      نوشته اصلی توسط mohammad...
      سلام
      اینو یه امتحان بکن
      چرا خروجی ها رو پین تعریف کرده بودی؟

      من عملکردشو برعکس کردم اگه کار نکنه دیگه باید پی سی بی رو از اول بزنی
      موفق باشی

      کد:
      $regfile = "m8def.dat"
      $crystal = 1000000
      
      Config Lcdpin = Pin , Db7 = Portb.0 , Db6 = Portd.7 , Db5 = Portd.6 , Db4 = Portd.5 , E = Portb.7 , Rs = Portb.6
      Config Lcd = 16 * 2
      Config 1wire = Portc.0
      Config Portd.0 = Output
      Config Portd.1 = Output
      
      Dim Byte0 As Byte
      Dim Byte1 As Byte
      Dim Sign As String * 1
      Dim T As String * 4
      Dim T1 As Single
      Dim T2 As Single
      Dim L As Single
      Dim H As Single
      Dim Ll As String * 4
      Dim Hh As String * 4
      
      Cls
      
      Cursor Off
      
      Dim A As Single
      Dim B As String * 5
      Dim C As Word
      
      Lcd "--->A<---"
      Locate 2 , 1
      Lcd "--->R<---"
      Wait 3
      
      Cls
      
      L = 27.4
      H = 37.7
      Ll = Fusing(l , "#.#")
      Hh = Fusing(h , "#.#")
      
      Do
      1wreset
      Waitms 100
      If Err = 1 Then
         Cls
         Lcd "No DS18B20"
         Wait 1
        Else
         1wwrite &HCC
         1wwrite &H44
         1wreset
         1wwrite &HCC
         1wwrite &HBE
         Byte0 = 1wread()
         Byte1 = 1wread()
      
        If Byte1 > 248 Then
         Byte0 = &HFF - Byte0
         Byte1 = &HFF - Byte1
         Sign = "-"
        Else
         Sign = "+"
        End If
      
        T1 = Byte0 / 16
        T2 = Byte1 * 16
        T1 = T1 + T2
      
      
        If Sign = "-" Then
         T1 = T1 + 1
        End If
      
        If Sign = "+" And T1 = 0 Then
         Sign = " "
        End If
      
        T = Fusing(t1 , "#.&&")
      
        Home
        Cls
        Lcd "   " ; Sign ; T ; Chr(223) ; "C" ; "   "
        Locate 2 , 1
        Lcd "L" ; Ll ; "   H" ; Hh
        Waitms 500
      End If
      
      Deflcdchar 1 , 31 , 28 , 29 , 29 , 13 , 19 , 27 , 27
      
      
      If T1 > L And T1 < H Then
        Locate 2 , 9
        Lcd Chr(1)
      End If
      
      If T1 < L Then
        Locate 2 , 7
        Lcd "<--"
       Reset Portd.1
        Waitms 250
        Else
        Set Portd.1
        Waitms 250
      End If
      
      If T1 > H Then
        Locate 2 , 8
        Lcd "-->"
        Reset Portd.0
        Waitms 100
        Else
        Set Portd.0
        Waitms 100
      End If
      
      Loop
      
      End
      مرسی از لطفت

      دیدگاه

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